При настройке типовых отчетов в конфигурации «Управление торговлей 10.3» разработчики и пользователи часто сталкиваются с ситуацией, когда добавление определенных полей в список «Дополнительные поля» с размещением «В отдельной колонке» не дает ожидаемого результата. Например, реквизит Артикул выводится корректно рядом с номенклатурой, а такие поля, как Характеристика номенклатуры, Серия номенклатуры или Качество, остаются пустыми либо вовсе не отображаются в результирующей таблице, если они не выбраны в группировках строк. Разберем техническую природу этой проблемы и рассмотрим практические способы ее решения.
Типовой отчет «Остатки товаров на складах» построен на базе механизма УниверсальныйОтчет, ядром которого выступает объект платформы ПостроительОтчета. При формировании отчета строится запрос с секцией расчета итогов (конструкция ИТОГИ ... ПО).
Проанализируем разницу между полями, которые выводятся без проблем, и полями, с которыми возникают сложности:
Артикул, БазоваяЕдиницаИзмерения или СтавкаНДС, однозначно функционально зависят от группировочного поля Номенклатура. На уровне строки номенклатуры значение артикула единственное. Платформа 1С способна однозначно сопоставить это значение и вывести его в строку итогов.Характеристика номенклатуры, Серия номенклатуры и Качество являются самостоятельными измерениями регистра остатков. Для одной позиции номенклатуры может существовать множество характеристик или серий. При расчете итогов по группировке Номенклатура платформа не применяет к текстовым или ссылочным измерениям агрегатные функции. Соответственно, на уровне группировочной строки значение такого поля не определено (возвращается NULL).Именно поэтому ПостроительОтчета штатно выводит значения измерений только тогда, когда они либо включены в список группировок (измерений строк), либо отчет выводится с детализацией до детальных записей.
Если требуется сохранить отчет строго на базе механизма УниверсальныйОтчет без смены структуры оформления, разберем возможные программные обходные пути.
Вариант А: Автоматическое добавление измерения в группировки. Мы можем перехватить процедуру формирования отчета и проверить, какие поля пользователь выбрал в списке дополнительных полей. Если среди них есть измерения регистра (например, характеристика), мы программно добавляем их в коллекцию ИзмеренияСтроки построителя отчета. Чтобы не создавать вложенную ступенчатую структуру (древовидную иерархию), настраиваем вывод в одной строке:
// Пример настройки вывода группировки в отдельной колонке
ИзмерениеСтроки = УниверсальныйОтчет.ПостроительОтчета.ИзмеренияСтроки.Добавить("ХарактеристикаНоменклатуры");
ИзмерениеСтроки.ТипИтогов = ТипИтогов.Элементы;
ИзмерениеСтроки.РазмещениеРеквизитовВСтроках = РазмещениеРеквизитовВСтроках.ВОтдельнойКолонке;
Вариант Б: Вывод детальных записей. Если отчет должен выводить плоскую таблицу строк с остатками по каждой характеристике, необходимо переключить режим построителя отчета на вывод детальных записей, минуя агрегацию на верхних уровнях группировок.
Перевод отчета на Систему компоновки данных — наиболее универсальный, масштабируемый и правильный подход. В СКД управление выводом полей, иерархией и детальными записями устроено значительно гибче, чем в ПостроительОтчета.
Разберем по шагам, как решить задачу на СКД, включая вывод свойств характеристик (аналог типового флага «Использовать свойства и категории»):
РегистрНакопления.ТоварыНаСкладах.Остатки. В поля выборки включаем номенклатуру, склад, характеристику, серию и количество.Номенклатура и ХарактеристикаНоменклатуры, либо настраиваем параметр структуры Расположение полей группировок в значение В отдельной колонке.Рассмотрим подробнее настройку вкладки Характеристики в конструкторе схемы компоновки данных для конфигурации «Управление торговлей 10.3»:
В конструкторе запроса переходим на вкладку Характеристики и добавляем описание связи для характеристик номенклатуры:
СправочникСсылка.ХарактеристикиНоменклатуры.ПланВидовХарактеристик.СвойстваОбъектов. Для отбора свойств, относящихся к характеристикам номенклатуры, указываем поле связи назначения (или оставляем общую таблицу при едином хранении).РегистрСведений.ЗначенияСвойствОбъектов.ОбъектСвойствоЗначениеПосле этой настройки в дереве доступных полей СКД пользователь сможет раскрыть узел Характеристика номенклатуры и выбрать любое назначенное дополнительное свойство (цвет, размер, плотность) в качестве отдельной колонки отчета без изменения текста основного запроса.
Оформление отчета: Чтобы отчет визуально соответствовал стандартным отчетам типовой конфигурации и не вызывал вопросов у заказчика, в параметрах вывода отчета СКД (вкладка «Другие настройки») устанавливаем параметр Макет оформления в значение Классический или Основной.