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