Как СКД оптимизирует запрос? Мистика в отчете на СКД
Привет всем, Коллеги!
Бьюсь над вопросом третий день, не оставьте в беде :(
История вопроса такова: требуется написать отчет, в котором выводится количество месяцев неоплаченных контрагентом. Сначала все шло хорошо, отчет работал как надо, но затем выяснилось, что за месяц клиенту могут выписываться несколько реализаций и они должны учитываться как одна. На закладке ресурсы на уровне группировке я сделал Максимум, а на уровне контрагента ВычислитьВыражениеСГруппировкойМассив, в отчет все выходило красиво и так, как нужно, но возникла другая проблема - перестал работать отбор по глубине долга (он в настройках на уровне группировки "Контрагент"). Тогда, я решил найти нужные значения напрямую в запросе, подкорректировал запрос в консоли, там все выходило правильно, глубина долга по контрагенту считалась как надо. НО! Когда я загрузил этот же запрос в СКД, он начал выдавать мне совсем другую картину (на скриншоте 1). Откуда он берет 1? В Консоли же видно что там должно быть 3 на уровне документов.
Подскажите, пожалуйста, куда копать?
Скриншоты, текст запроса, а также сам отчет прилагаю. Отчет для типовой БП, но в коде устанавливается отбор по номенклатуре в актах (параметр). Спасибо!
Бьюсь над вопросом третий день, не оставьте в беде :(
История вопроса такова: требуется написать отчет, в котором выводится количество месяцев неоплаченных контрагентом. Сначала все шло хорошо, отчет работал как надо, но затем выяснилось, что за месяц клиенту могут выписываться несколько реализаций и они должны учитываться как одна. На закладке ресурсы на уровне группировке я сделал Максимум, а на уровне контрагента ВычислитьВыражениеСГруппировкойМассив, в отчет все выходило красиво и так, как нужно, но возникла другая проблема - перестал работать отбор по глубине долга (он в настройках на уровне группировки "Контрагент"). Тогда, я решил найти нужные значения напрямую в запросе, подкорректировал запрос в консоли, там все выходило правильно, глубина долга по контрагенту считалась как надо. НО! Когда я загрузил этот же запрос в СКД, он начал выдавать мне совсем другую картину (на скриншоте 1). Откуда он берет 1? В Консоли же видно что там должно быть 3 на уровне документов.
Подскажите, пожалуйста, куда копать?
Скриншоты, текст запроса, а также сам отчет прилагаю. Отчет для типовой БП, но в коде устанавливается отбор по номенклатуре в актах (параметр). Спасибо!
Прикрепленные файлы:
Запрос.txt
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(6), (2) в общем, докопался до сути, выяснилось, что СКД меняет временную таблицу:
на
Может кто-то знает как это побороть?
ВЫБРАТЬ РАЗЛИЧНЫЕ
ВТ_Долги.Контрагент КАК Контрагент,
МАКСИМУМ(1) КАК ГлубинаДолга1,
НАЧАЛОПЕРИОДА(ВТ_ВсеАкты.Ссылка.Дата, МЕСЯЦ) КАК Месяц
ПОМЕСТИТЬ Вт_ПолучениеГлубины
ИЗ
ВТ_Долги КАК ВТ_Долги
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ВсеАкты КАК ВТ_ВсеАкты
ПО ВТ_Долги.Акт = ВТ_ВсеАкты.Ссылка
СГРУППИРОВАТЬ ПО
ВТ_Долги.Контрагент,
НАЧАЛОПЕРИОДА(ВТ_ВсеАкты.Ссылка.Дата, МЕСЯЦ)
;
Показатьна
ВЫБРАТЬ РАЗЛИЧНЫЕ
ВТ_Долги.Контрагент КАК Контрагент,
МАКСИМУМ(1) КАК ГлубинаДолга1
ПОМЕСТИТЬ Вт_ПолучениеГлубины
ИЗ
ВТ_Долги КАК ВТ_Долги
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ВсеАкты КАК ВТ_ВсеАкты
ПО ВТ_Долги.Акт = ВТ_ВсеАкты.Ссылка
СГРУППИРОВАТЬ ПО
ВТ_Долги.Контрагент
;
ПоказатьМожет кто-то знает как это побороть?
(7) там в конструкторе запроса есть закладка компоновка данных, вот по идее это там надо экспериментировать.
(Правда я не эксперт по этой закладке, приходилось только параметры виртуальных таблиц прописывать там, чтобы скд их не меняла по своему усмотрению).
В самом тексте запроса при этом появляются дополнительные параметры в фигурных скобках.
(Правда я не эксперт по этой закладке, приходилось только параметры виртуальных таблиц прописывать там, чтобы скд их не меняла по своему усмотрению).
В самом тексте запроса при этом появляются дополнительные параметры в фигурных скобках.
(8)
Спасибо всем за помощь!
Разобрался, экспериментировал по разному, в итоге выяснил следующее: оказалось, скд как-то оптимизирует запрос таким образом, что выкидывает неиспользуемые поля во временных таблицах. Попробовал включить это поле в компоновку - результат не изменился, а помогло только включение данного поля в итоговую таблицу, после этого данные стали выводиться корректно.
ам в конструкторе запроса есть закладка компоновка данных, вот по идее это там надо экспериментировать.
(Правда я не эксперт по этой закладке, приходилось только параметры виртуальных таблиц прописывать там, чтобы скд их не меняла по своему усмотрению).
В самом тексте запроса при этом появляются дополнительные параметры в фигурных скобках.
(Правда я не эксперт по этой закладке, приходилось только параметры виртуальных таблиц прописывать там, чтобы скд их не меняла по своему усмотрению).
В самом тексте запроса при этом появляются дополнительные параметры в фигурных скобках.
Спасибо всем за помощь!
Разобрался, экспериментировал по разному, в итоге выяснил следующее: оказалось, скд как-то оптимизирует запрос таким образом, что выкидывает неиспользуемые поля во временных таблицах. Попробовал включить это поле в компоновку - результат не изменился, а помогло только включение данного поля в итоговую таблицу, после этого данные стали выводиться корректно.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот