Проблема получения правильного результата в СКД. Обычный запрос работает правильно.

1. milkers 2936 20.01.23 13:16 Сейчас в теме
Столкнулся с интересной ситуацией, когда СКД неправильно оптимизирует запрос.

Дано: есть документ маршрутный лист, в нем различные строки с номерами рейсов. Строки могут повторяться.
Нужно посчитать количество различных номеров рейсов за месяц в пределах маршрутного листа.
Если мы этим и ограничимся, то результат верный в запросе и СКД.

Если же мы выгрузим результат во временную таблицу и присоединим ее к другой ТЗ, причем в связке не будет упоминания маршрутного листа (он больше не нужен) то тут результаты будут отличаться.

Такое впечатление, что маршрутный лист исчезает из всего запроса СКД.

Я выкрутился, рассчитав ТЗ в запросе и передав в расчет, но может есть более красивое решение?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
3. milkers 2936 20.01.23 14:31 Сейчас в теме
Извините, пока ждал ответа уже сам нашел отличную статью https://infostart.ru/1c/articles/1600909/?ysclid=ld4fvda6br430656454
Там есть совет который помог:
Недавно я узнал еще один способ решения этой проблемы, и он гораздо проще. Чтобы поле одной из временных таблиц пакета не исключалось из запроса, нужно оставить его в секции «СГРУППИРОВАТЬ», но убрать из секции «ВЫБРАТЬ». В этом случае поле из секции «СГРУППИРОВАТЬ» не исключается, а именно это часто является одной из частых проблем некорректной оптимизации.
Alexwarsis; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. booksfill 20.01.23 14:03 Сейчас в теме
Я не понял, что такое "другая ТЗ", временная таблица это не тз.
И уж точно не понял по какому полю вы делаете связь с загадочной ТЗ, не по кол-ву же номеров?


Но есть несколько вариантов, куда можно посмотреть:
1. Отключите автозаполнение

2. Попробуйте для поля СсылкаНаМаршрутныйЛист установить ограничение на использование в условиях

3. Я так понимаю, что во временной таблице идет группировка по маршрутному листу (т.е. это, как ни крути, измерение) - ну и оставьте это поле в виртуальной таблице и в результатах соединения, а в настройках укажите для него "обязательное". Вас же никто не заставляет выводить это поле в отчет.
3. milkers 2936 20.01.23 14:31 Сейчас в теме
Извините, пока ждал ответа уже сам нашел отличную статью https://infostart.ru/1c/articles/1600909/?ysclid=ld4fvda6br430656454
Там есть совет который помог:
Недавно я узнал еще один способ решения этой проблемы, и он гораздо проще. Чтобы поле одной из временных таблиц пакета не исключалось из запроса, нужно оставить его в секции «СГРУППИРОВАТЬ», но убрать из секции «ВЫБРАТЬ». В этом случае поле из секции «СГРУППИРОВАТЬ» не исключается, а именно это часто является одной из частых проблем некорректной оптимизации.
Alexwarsis; +1 Ответить
4. 1cmailru 5 25.01.23 06:13 Сейчас в теме
Я раньше где-то читал, что оптимизатор не смотрит во вложенные запросы и когда оптимизатор мешал, всегда писал что то типа:

Выбрать вз.*
из
(
...
) как вз

Сейчас не знаю, давно разногласий с оптимизатором не было.
Оставьте свое сообщение

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