Доброго дня, коллеги!
В рамках курса по СКД слушатели изучают, как система компоновки данных автоматически трансформирует текст запроса наиболее оптимальным способом при использовании тех или иных настроек и учатся просматривать тексты запросов, которые реально исполняются системой при формировании отчета. И здесь важно понимать, что результат слушателя может отличаться от результата тренера, так как механизм оптимизации текста запроса полностью зависит от версии платформы и используемой СУБД.
Вопрос
ВЫБРАТЬ Товары.Ссылка КАК Товар, Товары.Представление КАК ТоварПредставление, Товары.Наименование КАК ТоварНаименование, ВЫБОР КОГДА Товары.Ссылка.Ссылка ЕСТЬ NULL ТОГДА 0 ИНАЧЕ 1 КОНЕЦ КАК ТоварПолеУпорядочивания1, Товары.Ссылка.Наименование КАК ТоварПолеУпорядочивания2 ИЗ Справочник.Товары КАК Товары УПОРЯДОЧИТЬ ПО ТоварПолеУпорядочивания1, ТоварПолеУпорядочивания2, Товар
Откуда это появилось?
Ответ
Добрый день!
В описании новых возможностей платформы 8.3.15 есть вот такой пункт:
Упорядочивание в динамическом списке по полю, которое может принимать значение NULL, приведено к таковому в отчетах: в начале идут значения NULL, потом – все остальные значения.
…
В режиме совместимости с версией 8.3.12 поведение не изменилось.
После прочтения этого пункта становится понятнее, почему платформа так трансформировала запрос. Система компоновки данных добавила в запрос поля для единообразия упорядочивания в разных механизмах системы – отчетах, динамических списках. ТоварПолеУпорядочивания1 предназначено для того, чтобы при выводе отчета в первую очередь сначала шли значения типа NULL, потом – все остальные значения. ТоварПолеУпорядочивания2 предназначено для сортировки по наименованию справочника. Таким образом, вне зависимости от используемой СУБД и механизма платформы (отчет или динамический список) мы получаем всегда одинаковый порядок следования элементов.
Профессиональная разработка отчетов в 1С 8.3 на СКД.