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

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

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

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

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

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

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

Сейчас не знаю, давно разногласий с оптимизатором не было.
Оставьте свое сообщение
Вакансии
Архитектор 1С
Новосибирск
зарплата от 300 000 руб. до 300 000 руб.
Полный день

Ведущий программист 1С/удаленно
Красноярск
зарплата от 160 000 руб. до 180 000 руб.
Полный день

Программист 1С
Иркутск
зарплата от 120 000 руб. до 160 000 руб.
Полный день

Аналитик 1С
Москва
зарплата от 110 000 руб. до 130 000 руб.
Полный день

1С разработчик
Москва
зарплата от 150 000 руб. до 200 000 руб.
Полный день