Как добавить и отобразить дополнительные реквизиты для групп номенклатуры в 1С:Бухгалтерия 3.0

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

При работе с типовыми конфигурациями на платформе 1С:Предприятие 8.3, такими как «Бухгалтерия предприятия 3.0», пользователи часто сталкиваются с необходимостью классификации данных. Механизм дополнительных реквизитов идеально подходит для добавления новых полей без изменения конфигурации. Однако по умолчанию этот механизм работает только для элементов справочников. В этой статье мы подробно разберем, почему группы (папки) справочника Номенклатура лишены этой возможности «из коробки», и рассмотрим пошаговые методы обхода этого ограничения.

Анализ архитектурного ограничения БСП

Для начала проанализируем, как устроена подсистема «Свойства» в Библиотеке стандартных подсистем (БСП). Дополнительные реквизиты хранятся в специальной табличной части ДополнительныеРеквизиты, которая добавляется в метаданные справочника. Если мы откроем конфигуратор и посмотрим на свойства этой табличной части в справочнике Номенклатура, то увидим свойство Использование, установленное в значение Для элементов. Это означает, что на уровне базы данных у папок (групп) этой таблицы просто не существует.

Кроме того, программный интерфейс БСП, реализованный в общем модуле УправлениеСвойствами, при построении формы проверяет тип объекта. Если это группа, система игнорирует вывод панели дополнительных реквизитов, даже если вы попытаетесь добавить их в настройках. Разберем два пути решения: простой (через дополнительные сведения) и профессиональный (через расширение).

Способ 1: Использование механизма «Дополнительные сведения»

Если ваша задача — просто хранить какую-то информацию о группе номенклатуры (например, ответственный менеджер за категорию или особые условия хранения для всей группы), и вам не критично, чтобы это поле отображалось прямо в карточке на первой вкладке, воспользуйтесь Дополнительными сведениями.

Рассмотрим преимущества этого метода:

  1. Техническая доступность: Сведения хранятся не в самом справочнике, а во внешнем регистре сведений ДополнительныеСведения. Ключом связи выступает ссылка на объект (ЛюбаяСсылка). Для регистра нет разницы между элементом и группой.
  2. Отсутствие программирования: Вам не нужно менять код или создавать расширение.
  3. Доступ в отчетах: Вы сможете выводить эти сведения в большинстве типовых отчетов через механизм «Изменить вариант».

Чтобы настроить это, перейдем в раздел Администрирование — Общие настройки — Дополнительные реквизиты и сведения. Выберем пункт «Дополнительные сведения», найдем в списке справочник Номенклатура и добавим новое свойство. При записи оно будет доступно по кнопке «Дополнительные сведения» (с иконкой в виде буквы «i») как в элементе, так и в группе.

Способ 2: Реализация через расширение конфигурации

Если же бизнес-процесс требует, чтобы реквизиты были видны непосредственно в форме группы (папки), нам потребуется использовать расширение. Рассмотрим этот процесс пошагово.

Шаг 1: Изменение метаданных в расширении

Добавим справочник Номенклатура в расширение. В расширении необходимо найти табличную часть ДополнительныеРеквизиты и изменить ее свойство Использование на значение Для элементов и групп. Это создаст необходимые таблицы в базе данных для хранения значений свойств в папках.

Шаг 2: Модификация формы группы

Типовая форма группы (обычно это ФормаГруппы) не содержит программного кода для инициализации дополнительных реквизитов. Нам нужно добавить форму группы в расширение и перехватить процедуру ПриСозданииНаСервере. Разберем примерный алгоритм кода, который нужно реализовать:


&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    
    // Параметры для инициализации дополнительных реквизитов
    ПараметрыСвойств = УправлениеСвойствами.ПараметрыРедактированияСвойств();
    ПараметрыСвойств.ИмяГруппыДляРазмещения = "ГруппаДополнительныеРеквизиты";
    
    // Вызов метода БСП для отрисовки реквизитов на форме
    УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ПараметрыСвойств);
    
КонецПроцедуры

Шаг 3: Переопределение логики БСП

Выясним причину, по которой БСП может все равно скрывать реквизиты. В общем модуле УправлениеСвойствами существуют проверки, которые определяют доступные наборы свойств. Для групп справочника часто не определен «Вид номенклатуры», к которому обычно привязаны наборы реквизитов. Вы можете столкнуться с тем, что система не найдет подходящий НаборДополнительныхРеквизитовИСведений для папки.

Проанализируем ситуацию: чтобы реквизиты появились, необходимо создать в справочнике Наборы дополнительных реквизитов и сведений отдельный набор, который будет применяться ко всему справочнику в целом, а не к конкретным видам. Либо программно в расширении подменять НаборСвойств при инициализации формы группы.

Важные нюансы и ограничения

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

Рассмотрим пример: вы создали реквизит «Сезонность» для группы «Обувь». Если вы установите значение «Лето» для группы, стандартные механизмы подбора и заполнения документов (например, в «Реализации товаров и услуг») не будут «видеть» это значение при выборе конкретных кроссовок из этой группы. Если вам нужно именно наследование, придется дорабатывать логику запросов в расширении, чтобы система проверяла реквизиты родительских групп.

Резюме по внедрению

Подведем итог нашему исследованию. Если вам нужно быстрое решение для аналитики — используйте Дополнительные сведения. Если же требуется глубокая интеграция в интерфейс:

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

← На главную