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