Почему в отчете «Остатки товаров по складам» не выводятся характеристики в отдельных колонках и как это исправить?

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

При настройке типовых отчетов в конфигурации «Управление торговлей 10.3» разработчики и пользователи часто сталкиваются с ситуацией, когда добавление определенных полей в список «Дополнительные поля» с размещением «В отдельной колонке» не дает ожидаемого результата. Например, реквизит Артикул выводится корректно рядом с номенклатурой, а такие поля, как Характеристика номенклатуры, Серия номенклатуры или Качество, остаются пустыми либо вовсе не отображаются в результирующей таблице, если они не выбраны в группировках строк. Разберем техническую природу этой проблемы и рассмотрим практические способы ее решения.

Анализ проблемы: почему Построитель отчета ведет себя подобным образом

Типовой отчет «Остатки товаров на складах» построен на базе механизма УниверсальныйОтчет, ядром которого выступает объект платформы ПостроительОтчета. При формировании отчета строится запрос с секцией расчета итогов (конструкция ИТОГИ ... ПО).

Проанализируем разницу между полями, которые выводятся без проблем, и полями, с которыми возникают сложности:

  1. Реквизиты номенклатуры (отношение 1:1). Такие поля, как Артикул, БазоваяЕдиницаИзмерения или СтавкаНДС, однозначно функционально зависят от группировочного поля Номенклатура. На уровне строки номенклатуры значение артикула единственное. Платформа 1С способна однозначно сопоставить это значение и вывести его в строку итогов.
  2. Измерения регистров (отношение 1:N). Поля Характеристика номенклатуры, Серия номенклатуры и Качество являются самостоятельными измерениями регистра остатков. Для одной позиции номенклатуры может существовать множество характеристик или серий. При расчете итогов по группировке Номенклатура платформа не применяет к текстовым или ссылочным измерениям агрегатные функции. Соответственно, на уровне группировочной строки значение такого поля не определено (возвращается NULL).

Именно поэтому ПостроительОтчета штатно выводит значения измерений только тогда, когда они либо включены в список группировок (измерений строк), либо отчет выводится с детализацией до детальных записей.

Способ 1. Доработка отчета в рамках Построителя отчета

Если требуется сохранить отчет строго на базе механизма УниверсальныйОтчет без смены структуры оформления, разберем возможные программные обходные пути.

Вариант А: Автоматическое добавление измерения в группировки. Мы можем перехватить процедуру формирования отчета и проверить, какие поля пользователь выбрал в списке дополнительных полей. Если среди них есть измерения регистра (например, характеристика), мы программно добавляем их в коллекцию ИзмеренияСтроки построителя отчета. Чтобы не создавать вложенную ступенчатую структуру (древовидную иерархию), настраиваем вывод в одной строке:


// Пример настройки вывода группировки в отдельной колонке
ИзмерениеСтроки = УниверсальныйОтчет.ПостроительОтчета.ИзмеренияСтроки.Добавить("ХарактеристикаНоменклатуры");
ИзмерениеСтроки.ТипИтогов = ТипИтогов.Элементы;
ИзмерениеСтроки.РазмещениеРеквизитовВСтроках = РазмещениеРеквизитовВСтроках.ВОтдельнойКолонке;

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

Способ 2. Реализация отчета на Системе компоновки данных (СКД)

Перевод отчета на Систему компоновки данных — наиболее универсальный, масштабируемый и правильный подход. В СКД управление выводом полей, иерархией и детальными записями устроено значительно гибче, чем в ПостроительОтчета.

Разберем по шагам, как решить задачу на СКД, включая вывод свойств характеристик (аналог типового флага «Использовать свойства и категории»):

  1. Создание схемы и набора данных. Создаем внешний отчет и добавляем схему компоновки данных. В наборе данных-запросе выбираем данные из виртуальной таблицы РегистрНакопления.ТоварыНаСкладах.Остатки. В поля выборки включаем номенклатуру, склад, характеристику, серию и количество.
  2. Настройка структуры отчета. В настройках варианта отчета создаем группировку строк. Если требуется вывести номенклатуру и характеристику в одной строке в отдельных колонках без создания лишних подуровней, добавляем группировку, в которую одновременно включаем поля Номенклатура и ХарактеристикаНоменклатуры, либо настраиваем параметр структуры Расположение полей группировок в значение В отдельной колонке.
  3. Настройка вкладки «Характеристики». Чтобы в СКД была возможность выбирать произвольные свойства номенклатуры и характеристик через точку (как в типовом универсальном отчете), используем встроенный механизм характеристик СКД.

Рассмотрим подробнее настройку вкладки Характеристики в конструкторе схемы компоновки данных для конфигурации «Управление торговлей 10.3»:

В конструкторе запроса переходим на вкладку Характеристики и добавляем описание связи для характеристик номенклатуры:

  1. Тип объекта: выбираем тип ссылочного поля, для которого настраиваются дополнительные реквизиты — СправочникСсылка.ХарактеристикиНоменклатуры.
  2. Таблица источников (виды свойств): указываем таблицу плана видов характеристик — ПланВидовХарактеристик.СвойстваОбъектов. Для отбора свойств, относящихся к характеристикам номенклатуры, указываем поле связи назначения (или оставляем общую таблицу при едином хранении).
  3. Таблица значений: выбираем регистр сведений, хранящий значения — РегистрСведений.ЗначенияСвойствОбъектов.
  4. Поля связи:
    • Поле объекта: Объект
    • Поле свойства: Свойство
    • Поле значения: Значение

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

Оформление отчета: Чтобы отчет визуально соответствовал стандартным отчетам типовой конфигурации и не вызывал вопросов у заказчика, в параметрах вывода отчета СКД (вкладка «Другие настройки») устанавливаем параметр Макет оформления в значение Классический или Основной.

← На главную