Запрос в цикле (обороты за разные периоды) #604376


#0 by badboychik
Такая ситуация - надо получить таблицу "Клиент, Долг клиента на сегодня, Обороты за период", но период для оборотов у каждого клиента разный - число дней указано в договоре. Коррелированные подзапросы в 1С не поддерживаются (нельзя во вложенном подставить поле из внешнего запроса), остается циклом? Еще в СКД можно передать в набор параметр из другого, пробую пока
#1 by mirosh
придется вытаскивать на каждый день
#2 by Cube
Возьми полную таблицу регистра, не виртуальную.
#3 by badboychik
а дальше что с ней делать
#4 by Cube
Условие по периоду накладывай и вперде
#5 by John83
да можно и виртуальную, только периодичность поставить
#6 by John83
посмотри тут
#7 by badboychik
значение в условии оно одно для всех, а мне надо чтоб для каждого клиента обороты считались за разные периоды
#8 by Cube
Да ты не в условия пихай свой отбор по периоду а делай вычисляемое поле запроса, типа такого: ВЫБОР КОГДА Обороты.Период <= Договор.ДатаОкончания И Обороты.Период >= Договор.ДатаНачала ТОГДА    Обороты.СуммаОборот ИНАЧЕ    0 КОНЕЦ
#9 by badboychik
хм.. похоже на решение, только надо выборку по регистру за 45 дней делать, т.к. период может колебаться от 5 до 45 дней
#10 by badboychik
удалось в СКД сделать
#11 by Kashemir
Коррелированные запросы поддерживаются, но только для конструкций В
#12 by badboychik
Точно? Из этих скобок можно обращаться к полям главного запроса?
#13 by Cube
Нет, можно туда вписать ещё один мини-запросик: ИЗ                    Справочник.Валюты КАК Валюты
#14 by Kashemir
Можно В развитие примера (суть масло масленная) ВЫБРАТЬ    КурсыВалютСрезПоследних.Валюта,    КурсыВалютСрезПоследних.Курс,    КурсыВалютСрезПоследних.Кратность ИЗ
#15 by Cube
Тупой копипастинг!!! :D
#16 by Cube
+ Так, что-то я поторопился с выводами... :)
#17 by badboychik
это обычный подзапрос! Вот в корреляция есть. Только я сомневаюсь что он заработает
#18 by Cube
Не фурычит, ошибка: Поле не найдено "КурсыВалютСрезПоследних.Валюта"
#19 by badboychik
тото и оно :D
#20 by Kashemir
ВЫБРАТЬ
#21 by ssh2006
>...Коррелированные подзапросы в 1С не поддерживаются Поддерживаются. Можно использовать поле внешней таблицы в подзапросе в условии соединения или в условии запроса.
#22 by Kashemir
Имитация среза последних по физической таблице
#23 by badboychik
интересно... У 1С что, свой скуль-движок в ядре, который в корне отличается от MS SQL и не умеет такие вещи делать?
#24 by Kashemir
Не - просто SDBL это упрощенная модель TSQL имеющая ряд ограничений, правда и плюсов (в читаемости)
#25 by badboychik
"в условии запроса" ? в это сделано и не пашет. А условие соединения это не корреляция
#26 by Kashemir
В 14 просто виртуальная таблица ... я навскидку написал. Посмотри 20.
#27 by ssh2006
> ... "в условии запроса" секция ГДЕ
#28 by Cube
Ну... Что ж вы нам тухлые помидоры под видом спелых мандарин продаете?))))
#29 by Kashemir
Что не так ?
#30 by Axel2009
НАЧАЛОПЕРИОДА(Период, зависит от условий договора) ОБОРОТЫ (, , День)
#31 by badboychik
На СКД медленно работает. Кажется оно просто за меня выполняет в цикле запрос по второму набору
#32 by Cube
Запрос в студию
#33 by badboychik
там два запроса и три связи между наборами
#34 by Cube
А че в одном запросе не сделал?
#35 by badboychik
чтоб как в ? Решил все таки СКД победить :)
#36 by badboychik
Вот пример запроса со вложенным кореллированным. Тупой запрос, но все равно не работает. ВЫБРАТЬ
#37 by ssh2006
Нет такого поля во внешнем запросе - Т.Контрагент
#38 by badboychik
и что? в SQL будет работать, потому что Т это таблица и доступны все ее поля
#39 by badboychik
даже если добавить Т.Контрагент в главный, все равное не работает
#40 by Kashemir
Ты ж к ТЧ обращаешся. Там нет контрагента. Так надо:
#41 by badboychik
оппппа! работает )
#42 by Cube
Может я чего не догднал, но:    ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента,    ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток Строк в запросе 1519, время выполнения меньше секунды...
#43 by ssh2006
копи паст из документации на эту тему: "Заметим, что из запроса операции В возможно обращение к полям таблиц, которые встречались во внешнем запросе до появления операции. Пример: Копировать в буфер обмена
#44 by Kashemir
+ Хотя нафига тут корреляционный запрос не пойму. Чем отличается результат от :
#45 by badboychik
я ж для примера привел, ничего лучше не придумал )
#46 by Kashemir
Ааа ок :)
#47 by Cube
Так на чем остановились-то?
#48 by badboychik
Вот черт, похоже это реально проще вариант
#49 by Kashemir
Группировка по остатку - тебе так реально и надо ?
#50 by Cube
Не вижу в этом ничего плохого. Задачу из выполняет на ура.
#51 by Kashemir
А чем к примеру агрегация через максимум хуже ?
#52 by Cube
Отличия?
#53 by Kashemir
Логичнее и наверняка быстрее (нет индексов для ресурса)
#54 by Cube
Хз... Мне кажется без разницы. Да, к тому же, куда уж быстрее :)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С