СКД при генерации Запроса МакетаКомпоновщика добавляет в запросы дополнительные условия:
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ЗНАЧЕНИЕ(Справочник.Спецификации.ПустаяСсылка)
после преобразования превращается в
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ЗНАЧЕНИЕ(Справочник.Спецификации.ПустаяСсылка)
ГДЕ
NULL = &П
И NULL = &П2
исходный запрос:
ВЫБРАТЬ
ЗаявкиОпт.Заявка КАК Заявка,
ЗаявкиОпт.Номенклатура КАК Номенклатура,
ЗаявкиОпт.КоличествоШтЗаказОстаток КАК ОстатокЗаявки,
ЗаявкиОпт.Спецификация КАК Спецификация,
ЗаявкиОпт.Размер КАК Размер,
ЗаявкиОпт.КатегорияКамней КАК КатегорияКамней
ПОМЕСТИТЬ _ЗаявкиОпт_
ИЗ
РегистрНакопления.Заявки.Остатки(
,
Номенклатура = &Номенклатура
И Размер = &Размер
И КатегорияКамней = &КатегорияКамней) КАК ЗаявкиОпт
ГДЕ
ЗаявкиОпт.КоличествоШтЗаказОстаток > 0
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
_ОстаткиЗаявки_.Спецификация КАК Спецификация
ПОМЕСТИТЬ _СписокСпецификаций_
ИЗ
_ЗаявкиОпт_ КАК _ОстаткиЗаявки_
ГДЕ
_ОстаткиЗаявки_.Спецификация <> ЗНАЧЕНИЕ(справочник.Спецификации.ПустаяССылка)
СГРУППИРОВАТЬ ПО
_ОстаткиЗаявки_.Спецификация
;
ВЫБРАТЬ РАЗЛИЧНЫЕ
СпецификацииСоставКамней.Ссылка КАК Ссылка
ПОМЕСТИТЬ _ОбрабатываемыеСпецификации_
ИЗ
_СписокСпецификаций_ КАК СписокСпецификаций
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Спецификации.СоставКамней КАК СпецификацииСоставКамней
ПО (СпецификацииСоставКамней.Ссылка = СписокСпецификаций.Спецификация)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Спецификации.Ссылка КАК Спецификация
ПОМЕСТИТЬ _КатегорииКамней_
ИЗ
_ОбрабатываемыеСпецификации_ КАК Спецификации
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ЗНАЧЕНИЕ(Справочник.Спецификации.ПустаяСсылка)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЗаявкиОпт.Заявка КАК Заявка,
ЗаявкиОпт.Номенклатура КАК Номенклатура,
ЗаявкиОпт.ОстатокЗаявки КАК ОстатокЗаявки,
ЗаявкиОпт.Размер КАК Размер,
ЗаявкиОпт.КатегорияКамней КАК КатегорияКамней
ИЗ
_ЗаявкиОпт_ КАК ЗаявкиОпт
ВНУТРЕННЕЕ СОЕДИНЕНИЕ _КатегорииКамней_ КАК КатегорииКамней
ПО (КатегорииКамней.Спецификация = ЗаявкиОпт.Спецификация)
Запрос после преобразования СКД (в отчете устанавливались несколько отборов!!):
ВЫБРАТЬ
ЗаявкиОпт.Заявка КАК Заявка,
ЗаявкиОпт.Номенклатура КАК Номенклатура,
ЗаявкиОпт.КоличествоШтЗаказОстаток КАК ОстатокЗаявки,
ЗаявкиОпт.Спецификация КАК Спецификация,
ЗаявкиОпт.Размер КАК Размер,
ЗаявкиОпт.КатегорияКамней КАК КатегорияКамней
ПОМЕСТИТЬ _ЗаявкиОпт_
ИЗ
РегистрНакопления.Заявки.Остатки(
,
((Номенклатура = &Номенклатура
И Размер = &Размер
И КатегорияКамней = &КатегорияКамней) И Номенклатура.НоменклатурнаяГруппа = &П) И КонтрагентСклад = &П2) КАК ЗаявкиОпт
ГДЕ
ЗаявкиОпт.КоличествоШтЗаказОстаток > 0
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
_ОстаткиЗаявки_.Спецификация КАК Спецификация
ПОМЕСТИТЬ _СписокСпецификаций_
ИЗ
_ЗаявкиОпт_ КАК _ОстаткиЗаявки_
ГДЕ
_ОстаткиЗаявки_.Спецификация <> ЗНАЧЕНИЕ(справочник.Спецификации.ПустаяССылка)
СГРУППИРОВАТЬ ПО
_ОстаткиЗаявки_.Спецификация
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
СпецификацииСоставКамней.Ссылка КАК Ссылка
ПОМЕСТИТЬ _ОбрабатываемыеСпецификации_
ИЗ
_СписокСпецификаций_ КАК СписокСпецификаций
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Спецификации.СоставКамней КАК СпецификацииСоставКамней
ПО (СпецификацииСоставКамней.Ссылка = СписокСпецификаций.Спецификация)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Спецификации.Ссылка КАК Спецификация
ПОМЕСТИТЬ _КатегорииКамней_
ИЗ
_ОбрабатываемыеСпецификации_ КАК Спецификации
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ЗНАЧЕНИЕ(Справочник.Спецификации.ПустаяСсылка)
ГДЕ
NULL = &П
И NULL = &П2
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЗаявкиОпт.Заявка КАК Заявка,
ЗаявкиОпт.Номенклатура КАК Номенклатура,
ЗаявкиОпт.ОстатокЗаявки КАК ОстатокЗаявки,
ЗаявкиОпт.Размер КАК Размер,
ЗаявкиОпт.КатегорияКамней КАК КатегорияКамней
ИЗ
_ЗаявкиОпт_ КАК ЗаявкиОпт
ВНУТРЕННЕЕ СОЕДИНЕНИЕ _КатегорииКамней_ КАК КатегорииКамней
ПО (КатегорииКамней.Спецификация = ЗаявкиОпт.Спецификация)
Видно что в текст запроса были добавлены условия! (выделено)
А т.к. необходимо было в результате связь по пустым значениям выводить тоже - то отчет просто перестал выдавать результат!
Найдено описание изменения в релизе:
Система компоновки данных. | При добавлении отбора в запрос набора данных схемы компоновки данных, содержащего объединения, отбор обязательно добавляется во все части объединения, если отбор удалось поместить хотя бы в одну часть объединения. При этом, в тех частях объединения, в которых отбор применить не удается из-за отсутствия в них полей, использующихся в отборе, в добавляемые условия вместо отсутствующего поля проставляется выражение NULL.
В режиме совместимости с версией 8.3.12 поведение не изменилось. |
При добавлении отбора в запрос набора данных схемы компоновки данных, содержащего объединения, отбор помещался только в те части объединения, в которых было доступно поле, к которому применяется отбор. | Унифицировано применение отборов в системе компоновки данных между набором данных-объединение и набором данных-запрос с объединением в запросе. |
Найденный вариант обхода:
ВЫБРАТЬ ПЕРВЫЕ 1
ЗНАЧЕНИЕ(Справочник.Спецификации.ПустаяСсылка)
из _ЗаявкиОпт_