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