Как СКД оптимизирует запрос? Мистика в отчете на СКД

1. Dmitri93 12 18.07.18 10:50 Сейчас в теме
Привет всем, Коллеги!
Бьюсь над вопросом третий день, не оставьте в беде :(
История вопроса такова: требуется написать отчет, в котором выводится количество месяцев неоплаченных контрагентом. Сначала все шло хорошо, отчет работал как надо, но затем выяснилось, что за месяц клиенту могут выписываться несколько реализаций и они должны учитываться как одна. На закладке ресурсы на уровне группировке я сделал Максимум, а на уровне контрагента ВычислитьВыражениеСГруппировкойМассив, в отчет все выходило красиво и так, как нужно, но возникла другая проблема - перестал работать отбор по глубине долга (он в настройках на уровне группировки "Контрагент"). Тогда, я решил найти нужные значения напрямую в запросе, подкорректировал запрос в консоли, там все выходило правильно, глубина долга по контрагенту считалась как надо. НО! Когда я загрузил этот же запрос в СКД, он начал выдавать мне совсем другую картину (на скриншоте 1). Откуда он берет 1? В Консоли же видно что там должно быть 3 на уровне документов.
Подскажите, пожалуйста, куда копать?
Скриншоты, текст запроса, а также сам отчет прилагаю. Отчет для типовой БП, но в коде устанавливается отбор по номенклатуре в актах (параметр). Спасибо!
Прикрепленные файлы:
заспрос глубина.sel
Запрос.txt
+
Найденные решения
9. mad375 18.07.18 12:38 Сейчас в теме
Поле Месяц далее в запросе не используется, как я понимаю, надо его добавить в результирующий запрос и галку "Обязательное" поставить
Dmitri93; Jimbo; +2
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. vadim1011985 99 18.07.18 11:49 Сейчас в теме
(1) а схему СКД можешь выложить ?
+
6. Dmitri93 12 18.07.18 12:13 Сейчас в теме
(5)
а схему СКД можешь выложить ?

Да, конечно
Прикрепленные файлы:
Настройки.xml
+
7. Dmitri93 12 18.07.18 12:27 Сейчас в теме
(6), (2) в общем, докопался до сути, выяснилось, что СКД меняет временную таблицу:
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ВТ_Долги.Контрагент КАК Контрагент,
	МАКСИМУМ(1) КАК ГлубинаДолга1,
	НАЧАЛОПЕРИОДА(ВТ_ВсеАкты.Ссылка.Дата, МЕСЯЦ) КАК Месяц
ПОМЕСТИТЬ Вт_ПолучениеГлубины
ИЗ
	ВТ_Долги КАК ВТ_Долги
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ВсеАкты КАК ВТ_ВсеАкты
		ПО ВТ_Долги.Акт = ВТ_ВсеАкты.Ссылка

СГРУППИРОВАТЬ ПО
	ВТ_Долги.Контрагент,
	НАЧАЛОПЕРИОДА(ВТ_ВсеАкты.Ссылка.Дата, МЕСЯЦ)
;
Показать


на

ВЫБРАТЬ РАЗЛИЧНЫЕ
	ВТ_Долги.Контрагент КАК Контрагент,
	МАКСИМУМ(1) КАК ГлубинаДолга1
ПОМЕСТИТЬ Вт_ПолучениеГлубины
ИЗ
	ВТ_Долги КАК ВТ_Долги
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ВсеАкты КАК ВТ_ВсеАкты
		ПО ВТ_Долги.Акт = ВТ_ВсеАкты.Ссылка

СГРУППИРОВАТЬ ПО
	ВТ_Долги.Контрагент
;
Показать

Может кто-то знает как это побороть?
+
8. Boneman 298 18.07.18 12:35 Сейчас в теме
(7) там в конструкторе запроса есть закладка компоновка данных, вот по идее это там надо экспериментировать.
(Правда я не эксперт по этой закладке, приходилось только параметры виртуальных таблиц прописывать там, чтобы скд их не меняла по своему усмотрению).
В самом тексте запроса при этом появляются дополнительные параметры в фигурных скобках.
+
10. Dmitri93 12 18.07.18 13:02 Сейчас в теме
(8)
ам в конструкторе запроса есть закладка компоновка данных, вот по идее это там надо экспериментировать.
(Правда я не эксперт по этой закладке, приходилось только параметры виртуальных таблиц прописывать там, чтобы скд их не меняла по своему усмотрению).
В самом тексте запроса при этом появляются дополнительные параметры в фигурных скобках.

Спасибо всем за помощь!
Разобрался, экспериментировал по разному, в итоге выяснил следующее: оказалось, скд как-то оптимизирует запрос таким образом, что выкидывает неиспользуемые поля во временных таблицах. Попробовал включить это поле в компоновку - результат не изменился, а помогло только включение данного поля в итоговую таблицу, после этого данные стали выводиться корректно.
+
2. Boneman 298 18.07.18 10:55 Сейчас в теме
поставь отладчик, в своем СКД, в модуле объекта в процедуре при компоновке результата, ближе к концу.
И раскопай там отладчиком текст запроса.
Сравни его со своим. И увидишь, изменился он или нет
sergpogo; +1
3. Dmitri93 12 18.07.18 11:14 Сейчас в теме
(2)
оставь отладчик, в своем СКД, в модуле объекта в процедуре при компоновке результата, ближе к концу.
И раскопай там отладчиком текст запроса.
Сравни его со своим. И увидишь, изменился он или нет

Спасибо за совет, сейчас попробую
+
4. Dmitri93 12 18.07.18 11:23 Сейчас в теме
(2) При комопоновке результата запрос не меняется (
+
9. mad375 18.07.18 12:38 Сейчас в теме
Поле Месяц далее в запросе не используется, как я понимаю, надо его добавить в результирующий запрос и галку "Обязательное" поставить
Dmitri93; Jimbo; +2
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот