Каталог решений - Перевод конфигурации на 8.3.13

Перевод конфигурации на 8.3.13

Перевод конфигурации на 8.3.13

В наличии

Опыт решения проблем.

1. Проблема с СКД преобразованием запроса при отключении режима совместимости:

Категория:

Описание

СКД при генерации Запроса МакетаКомпоновщика добавляет в запросы дополнительные условия:

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ЗНАЧЕНИЕ(Справочник.Спецификации.ПустаяСсылка)

после преобразования превращается в

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ЗНАЧЕНИЕ(Справочник.Спецификации.ПустаяСсылка)
ГДЕ
    NULL = &П
    И NULL = &П2

исходный запрос:

 

ВЫБРАТЬ
    ЗаявкиОпт.Заявка КАК Заявка,
    ЗаявкиОпт.Номенклатура КАК Номенклатура,
    ЗаявкиОпт.КоличествоШтЗаказОстаток КАК ОстатокЗаявки,
    ЗаявкиОпт.Спецификация КАК Спецификация,
    ЗаявкиОпт.Размер КАК Размер,
    ЗаявкиОпт.КатегорияКамней КАК КатегорияКамней
ПОМЕСТИТЬ _ЗаявкиОпт_
ИЗ
    РегистрНакопления.Заявки.Остатки(
            ,
            Номенклатура = &Номенклатура
                И Размер = &Размер
                И КатегорияКамней = &КатегорияКамней) КАК ЗаявкиОпт
ГДЕ
    ЗаявкиОпт.КоличествоШтЗаказОстаток > 0
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    _ОстаткиЗаявки_.Спецификация КАК Спецификация
ПОМЕСТИТЬ _СписокСпецификаций_
ИЗ
    _ЗаявкиОпт_ КАК _ОстаткиЗаявки_
ГДЕ
    _ОстаткиЗаявки_.Спецификация <> ЗНАЧЕНИЕ(справочник.Спецификации.ПустаяССылка)

СГРУППИРОВАТЬ ПО
    _ОстаткиЗаявки_.Спецификация
;
ВЫБРАТЬ РАЗЛИЧНЫЕ
    СпецификацииСоставКамней.Ссылка КАК Ссылка
ПОМЕСТИТЬ _ОбрабатываемыеСпецификации_
ИЗ
    _СписокСпецификаций_ КАК СписокСпецификаций
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Спецификации.СоставКамней КАК СпецификацииСоставКамней
        ПО (СпецификацииСоставКамней.Ссылка = СписокСпецификаций.Спецификация)
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Спецификации.Ссылка КАК Спецификация
ПОМЕСТИТЬ _КатегорииКамней_
ИЗ
    _ОбрабатываемыеСпецификации_ КАК Спецификации

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ЗНАЧЕНИЕ(Справочник.Спецификации.ПустаяСсылка)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЗаявкиОпт.Заявка КАК Заявка,
    ЗаявкиОпт.Номенклатура КАК Номенклатура,
    ЗаявкиОпт.ОстатокЗаявки КАК ОстатокЗаявки,
    ЗаявкиОпт.Размер КАК Размер,
    ЗаявкиОпт.КатегорияКамней КАК КатегорияКамней
ИЗ
    _ЗаявкиОпт_ КАК ЗаявкиОпт
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ _КатегорииКамней_ КАК КатегорииКамней
        ПО (КатегорииКамней.Спецификация = ЗаявкиОпт.Спецификация)

Запрос после преобразования СКД (в отчете устанавливались несколько отборов!!):

ВЫБРАТЬ
    ЗаявкиОпт.Заявка КАК Заявка,
    ЗаявкиОпт.Номенклатура КАК Номенклатура,
    ЗаявкиОпт.КоличествоШтЗаказОстаток КАК ОстатокЗаявки,
    ЗаявкиОпт.Спецификация КАК Спецификация,
    ЗаявкиОпт.Размер КАК Размер,
    ЗаявкиОпт.КатегорияКамней КАК КатегорияКамней
ПОМЕСТИТЬ _ЗаявкиОпт_
ИЗ
    РегистрНакопления.Заявки.Остатки(
            ,
            ((Номенклатура = &Номенклатура
                И Размер = &Размер
                И КатегорияКамней = &КатегорияКамней) И Номенклатура.НоменклатурнаяГруппа = &П) И КонтрагентСклад = &П2) КАК ЗаявкиОпт
ГДЕ
    ЗаявкиОпт.КоличествоШтЗаказОстаток > 0
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    _ОстаткиЗаявки_.Спецификация КАК Спецификация
ПОМЕСТИТЬ _СписокСпецификаций_
ИЗ
    _ЗаявкиОпт_ КАК _ОстаткиЗаявки_
ГДЕ
    _ОстаткиЗаявки_.Спецификация <> ЗНАЧЕНИЕ(справочник.Спецификации.ПустаяССылка)

СГРУППИРОВАТЬ ПО
    _ОстаткиЗаявки_.Спецификация
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    СпецификацииСоставКамней.Ссылка КАК Ссылка
ПОМЕСТИТЬ _ОбрабатываемыеСпецификации_
ИЗ
    _СписокСпецификаций_ КАК СписокСпецификаций
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Спецификации.СоставКамней КАК СпецификацииСоставКамней
        ПО (СпецификацииСоставКамней.Ссылка = СписокСпецификаций.Спецификация)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Спецификации.Ссылка КАК Спецификация
ПОМЕСТИТЬ _КатегорииКамней_
ИЗ
    _ОбрабатываемыеСпецификации_ КАК Спецификации

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ЗНАЧЕНИЕ(Справочник.Спецификации.ПустаяСсылка)
ГДЕ
    NULL = &П
    И NULL = &П2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЗаявкиОпт.Заявка КАК Заявка,
    ЗаявкиОпт.Номенклатура КАК Номенклатура,
    ЗаявкиОпт.ОстатокЗаявки КАК ОстатокЗаявки,
    ЗаявкиОпт.Размер КАК Размер,
    ЗаявкиОпт.КатегорияКамней КАК КатегорияКамней
ИЗ
    _ЗаявкиОпт_ КАК ЗаявкиОпт
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ _КатегорииКамней_ КАК КатегорииКамней
        ПО (КатегорииКамней.Спецификация = ЗаявкиОпт.Спецификация)

 

Видно что в текст запроса были добавлены условия! (выделено)

А т.к. необходимо было в результате связь по пустым значениям выводить тоже — то отчет просто перестал выдавать результат!

Найдено описание изменения в релизе:

Система компоновки данных.При добавлении отбора в запрос набора данных схемы компоновки данных, содержащего объединения, отбор обязательно добавляется во все части объединения, если отбор удалось поместить хотя бы в одну часть объединения. При этом, в тех частях объединения, в которых отбор применить не удается из-за отсутствия в них полей, использующихся в отборе, в добавляемые условия вместо отсутствующего поля проставляется выражение NULL.

В режиме совместимости с версией 8.3.12 поведение не изменилось.

При добавлении отбора в запрос набора данных схемы компоновки данных, содержащего объединения, отбор помещался только в те части объединения, в которых было доступно поле, к которому применяется отбор.Унифицировано применение отборов в системе компоновки данных между набором данных-объединение и набором данных-запрос с объединением в запросе.

Найденный вариант обхода:

ВЫБРАТЬ ПЕРВЫЕ 1
    ЗНАЧЕНИЕ(Справочник.Спецификации.ПустаяСсылка)
из _ЗаявкиОпт_

 

has been added to your cart:
Оформление заказа