Почему внешний отчет в 1С:УТ 11.5 работает на демо-базе, но не показывает данные в рабочей базе?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При переходе с версии 1С:Управление торговлей 11.4 на 11.5 многие разработчики сталкиваются с ситуацией, когда внешние отчеты, успешно работавшие годами, перестают выводить данные или выдают ошибки. Особенно часто это проявляется при переносе отчета с демо-базы на рабочую. Рассмотрим причины этого явления и разберем по шагам, как адаптировать отчет под новые требования платформы.

Выясняем причину: смена версии ценообразования

Основная причина, по которой отчеты "ломаются" в УТ 11.5, заключается в масштабном изменении архитектуры подсистемы ценообразования. В версии 11.5 был совершен переход с версии 2.0 на 2.5. Проанализируем, почему это создает проблемы:

Шаг 1. Замена базовых регистров в запросе

Если в вашем отчете используются прямые запросы к регистрам сведений, первым делом необходимо заменить источники данных. Разберем типичный пример трансформации кода запроса. Вместо старого регистра теперь следует использовать новый.

Старый вариант (версия 2.0):


ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Характеристика КАК Характеристика,
    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних

Новый вариант (версия 2.5):


ВЫБРАТЬ
    ЦеныНоменклатуры25СрезПоследних.Номенклатура КАК Номенклатура,
    ЦеныНоменклатуры25СрезПоследних.ХарактеристикаЦО КАК Характеристика,
    ЦеныНоменклатуры25СрезПоследних.Цена КАК Цена
ИЗ
    РегистрСведений.ЦеныНоменклатуры25.СрезПоследних(&Период, ) КАК ЦеныНоменклатуры25СрезПоследних

Обратите внимание, что измерение Характеристика в новом регистре получило суффикс — ХарактеристикаЦО (Ценообразования). Это критически важно для корректной работы запроса.

Шаг 2. Особенности работы с характеристиками и упаковками

Проанализируем ситуацию, когда отчет формируется, но цены "не подтягиваются" к остаткам. В версии 2.5 механизм работы с характеристиками стал более гибким. Теперь поле ХарактеристикаЦО может содержать не только конкретную характеристику, но и ценовую группу характеристик.

Посмотрим на типичную ошибку при соединении таблиц цен и остатков. Попытка использовать условие ИЛИ в соединении LEFT JOIN является грубой ошибкой, которая приводит к некорректным данным или резкому замедлению отчета.

Неправильное соединение:


ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК СвободныеОстатки 
ПО ЦеныНоменклатуры25СрезПоследних.Номенклатура = СвободныеОстатки.Номенклатура 
ИЛИ ЦеныНоменклатуры25СрезПоследних.ХарактеристикаЦО = СвободныеОстатки.Характеристика

Правильный подход заключается в использовании функции ЕСТЬNULL и четкой привязке по обоим измерениям. Если товар ведется в разрезе характеристик, соединение должно идти и по номенклатуре, и по характеристике одновременно.

Шаг 3. Учет коэффициентов упаковок

В ценообразовании 2.5 появилась возможность устанавливать цену за конкретную упаковку (измерение УпаковкаЦО). Рассмотрим, как это влияет на расчет остатков. Если в запросе вы видите параметр &ТекстЗапросаКоэффициентУпаковки, это означает, что отчет пытается привести цену к базовой единице измерения.

Выясним причину отсутствия данных: если цена установлена за "Коробку", а остатки хранятся в "Штуках", простой выбор цены без учета коэффициента упаковки из регистра цен даст неверный результат. Проанализируем конструкцию ВЫБОР в запросе:


ВЫБОР 
    КОГДА ЦеныНоменклатуры25СрезПоследних.УпаковкаЦО = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) 
    ТОГДА СвободныеОстатки.ВНаличииОстаток 
    ИНАЧЕ СвободныеОстатки.ВНаличииОстаток / &ТекстЗапросаКоэффициентУпаковки 
КОНЕЦ КАК ВНаличииОстаток

Здесь крайне важно проверить, как в программном модуле отчета вычисляется значение &ТекстЗапросаКоэффициентУпаковки. В УТ 11.5 алгоритм получения этого коэффициента должен обращаться к метаданным упаковки, указанной именно в регистре ЦеныНоменклатуры25.

Шаг 4. Проверка функциональных опций

Если после исправления запроса отчет все равно не работает на рабочей базе, проанализируем настройки самой системы. В 1С:УТ 11.5 многие поля в виртуальных таблицах физически недоступны для запроса, если отключены соответствующие функциональные опции.

  1. Убедимся, что в рабочей базе завершен переход на ценообразование 2.5 (НСИ и администрирование — Настройка НСИ и разделов — CRM и маркетинг — Маркетинг).
  2. Проверим, включена ли опция "Характеристики номенклатуры". Если в демо-базе она включена, а в рабочей нет, запрос к полю ХарактеристикаЦО может возвращать пустой результат.
  3. Проанализируем права доступа. Даже под полными правами внешние отчеты могут ограничиваться профилями безопасности в справочнике "Дополнительные отчеты и формы".

Рекомендации по отладке

Для окончательного решения проблемы рекомендуем выполнить следующие действия:

Во-первых, используйте Консоль запросов непосредственно в рабочей базе. Скопируйте туда текст запроса из отчета и посмотрите, на каком этапе пропадают данные (после соединения с ценами или после фильтра по остаткам).

Во-вторых, обратите внимание на тип пустых значений. В УТ 11.5 часто встречается ситуация, когда в одном регистре пустая характеристика — это NULL, а в другом — Значение(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка). Всегда используйте приведение типов в условиях соединения ПО.

В-третьих, если отчет использует СКД, проверьте вкладку "Параметры". Часто там жестко прописаны ссылки на конкретные "Виды цен", которые существуют в демо-базе, но отсутствуют (имеют другой ГУИД) в рабочей базе. В этом случае отчет будет пытаться найти цены по несуществующему идентификатору.

← На главную