Имя: Пароль:
1C
 
Динамический список. Результат на форме отличается от консоли запросов
0 andadra
 
26.11.24
00:43
Есть сложный запрос в динамическом списке.

1 из временных таблиц

Выглядит как:
ВЫБРАТЬ
    ВТ.Организация КАК Организация
    ВТ.Номенклатура КАК Номенклатура,
    ВТ.Характеристика КАК Характеристика,
    ВТ.Склад КАК Склад,
    ВТ.Количество КАК Количество,
    ВТ.Резерв КАК Резерв    
ПОМЕСТИТЬ ВТ_ОстаткиПредв

После нее идет много таблиц, которые в итоге превращаются в ВТ_ИТОГОВАЯ.

Результирующая таблица:

Справочник.Ссылка КАК Ссылка
Итоговая_ВТ.Количество КАК Количество
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ИТОГОВАЯ КАК ВТ_ИТОГОВАЯ
        ПО Номенклатура.Ссылка = Итоговая_ВТ.Ссылка
{ВЫБРАТЬ
    Ссылка.*,
    Количество}

Некоторые поля удалил, смысла не несут

В итоге заметил, что на некоторых позициях некорректный остаток. Начал проверять через "Анализ исполняемых СКД запросов". ПРи сравнении с исходным текстом заметил, что мой первый запрос выглядит как:
ВЫБРАТЬ
    ВТ.Номенклатура КАК Номенклатура,
    ВТ.Количество КАК Количество,
    ВТ.Резерв КАК Резерв    
ПОМЕСТИТЬ ВТ_ОстаткиПредв
т.е. система удаляет поля, которые потом не используются в результирующем запросе.

Вопрос. Как это можно исправить? Что почитать на эту тему?
1 Franchiser
 
26.11.24
02:30
исключить из полей пропадающие поля и добавить их только в группировки
2 Лодырь
 
26.11.24
04:57
(0) на эту тему можно почитать устройство СКД.
3 Web00001
 
26.11.24
05:50
Ох сколько копий было сломано. Возможно тебе стоит научиться пользоваться поиском https://www.google.com/search?q=site:forum.mista.ru+СКД+удаляет+поля
4 Web00001
 
26.11.24
05:53
Мне помогло, таблицу из которой пропадают данные поместить в другую ВТ и еще указывать эти поля как обязательные. Но не всегда это работает.
5 GenAcid
 
26.11.24
07:49
В настройках динамического списка у полей есть флаг "Использовать всегда".
6 TormozIT
 
26.11.24
22:30
https://www.hostedredmine.com/issues/923054
Способ обхода

Чтобы удаления поля не происходило, достаточно в последний запрос добавить нейтральное выражение отбора с обращением к нужному полю. Например в моем примере

ГДЕ НЕ врГруппировка.Партнер ЕСТЬ NULL