В типовых конфигурациях 1С, таких как «Управление торговлей 11», «ERP» или «Комплексная автоматизация», механизм дополнительных реквизитов и сведений является крайне мощным инструментом. Он позволяет пользователям добавлять новые поля в документы и справочники без изменения кода программы. Однако иногда возникают ситуации, когда для конкретного документа (например, ВозвратТоваровПоставщику в старых релизах) этот функционал не предусмотрен разработчиками «из коробки». В данной статье мы подробно разберем, как самостоятельно внедрить этот механизм, проанализируем различия между реквизитами и сведениями и выясним, какие изменения в конфигураторе для этого потребуются.
Прежде чем приступать к технической реализации, давайте разберем, какой инструмент лучше подходит для вашей задачи. В 1С подсистема «Свойства» из Библиотеки стандартных подсистем (БСП) разделяет эти понятия:
ДополнительныеСведения. Они не изменяют структуру документа и отображаются в отдельном окне, вызываемом по кнопке. Это самый «безопасный» метод, не требующий модификации табличных частей объекта.Если ваша задача — добавить простую «галочку» (например, «Не выгружать»), и вы не хотите глубоко вмешиваться в код, стоит рассмотреть вариант со сведениями. Если же поле критически важно для оперативной работы на форме, выбираем дополнительные реквизиты.
Рассмотрим ситуацию, когда документ уже поддерживает механизм сведений, но он скрыт или не настроен. Для этого выполним следующие действия в режиме «1С:Предприятие»:
Возврат товаров поставщику. Если его там нет, значит, документ не включен в состав подсистемы в конфигураторе (см. Метод 2).Булево и наименованием «Не выгружать».После этого в форме документа появится кнопка (обычно с иконкой «i»), при нажатии на которую можно будет установить данную галочку.
Если вы обнаружили, что в списке доступных объектов для настройки нет нужного документа, или вам принципиально нужно вывести реквизит именно на форму, придется воспользоваться конфигуратором. Рассмотрим этот процесс по шагам, используя принципы БСП.
Шаг 1: Добавление табличной части
Проанализируем структуру любого документа, где доп. реквизиты уже работают (например, ПриходныйКассовыйОрдер). Мы увидим, что у него есть табличная часть ДополнительныеРеквизиты. Нам нужно создать аналогичную в документе ВозвратТоваровПоставщику со следующими реквизитами:
Свойство — Тип: ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения.Значение — Тип: Характеристика.ДополнительныеРеквизитыИСведения. Связь по типу устанавливается по полю Свойство.ТекстоваяСтрока — Тип: Строка (необязательно, для длинных текстов).Шаг 2: Настройка определяемых типов
Система БСП «узнает» о том, что объект поддерживает свойства, через Определяемые типы. Нам необходимо найти их в дереве метаданных и добавить туда наш документ:
ВладелецДополнительныхРеквизитов — добавьте ссылку на документ ВозвратТоваровПоставщику.ВладелецДополнительныхСведений — если планируете использовать и сведения.ДополнительныеРеквизитыИСведенияОбъект — добавьте сам объект документа.Шаг 3: Настройка свойств «Характеристики»
Это критически важный момент, о котором часто забывают новички. Откроем окно редактирования документа ВозвратТоваровПоставщику, перейдем на вкладку Данные и нажмем кнопку Характеристики. Здесь нужно прописать правила, по которым платформа будет считывать данные:
ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ДополнительныеРеквизиты.Свойство.Значение.Шаг 4: Работа со справочником «Наборы дополнительных реквизитов и сведений»
Чтобы в режиме «1С:Предприятие» вы могли назначать реквизиты документу, для него должен существовать «Набор». В конфигураторе найдем справочник НаборыДополнительныхРеквизитовИСведений и проверим его предопределенные элементы. Если группы для возврата товаров нет, ее следует создать. Имя предопределенного элемента обычно формируется как Документ_ВозвратТоваровПоставщику.
Шаг 5: Программный код в модуле формы
Даже если метаданные настроены верно, форма документа не выведет реквизиты автоматически без соответствующих вызовов процедур БСП. Давайте проанализируем необходимые изменения в модуле формы документа:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Интеграция с подсистемой ДополнительныеРеквизитыИСведения
ПараметрыПодсистемы = УправлениеСвойствами.ПараметрыУправленияСвойствами();
ПараметрыПодсистемы.ГруппаДополнительныхРеквизитов = Элементы.ГруппаДополнительныеРеквизиты; // Имя группы на форме
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, Объект, ПараметрыПодсистемы);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ПриИзмененииРеквизита(ЭтотОбъект, Элемент);
КонецПроцедуры
Не забудьте создать на форме документа группу (обычно обычную группу без отображения), в которую программно будут добавляться элементы дополнительных реквизитов. В приведенном выше коде она называется ГруппаДополнительныеРеквизиты.
Выясним, как сделать то же самое, не снимая конфигурацию с поддержки. Начиная с современных версий платформы (8.3.15+), все вышеописанные действия можно выполнить в Расширении. Это позволит вам сохранить возможность автоматического обновления типовой конфигурации.
ВозвратТоваровПоставщику.&После или &Вместо для внедрения кода в модули формы.Разберем ситуации, когда «все сделано по инструкции», но галочка не появляется:
ДополнительныеСведения или использование планов видов характеристик.НаборыДополнительныхРеквизитовИСведений не совпадает с ожидаемым БСП, механизм не инициализируется.Проанализировав все способы, можно сделать вывод: для разовой задачи «добавить одну галочку» в уже измененную конфигурацию проще всего добавить обычный реквизит документа. Но если вы стремитесь к гибкости и соблюдению стандартов разработки 1С, то внедрение через механизм дополнительных реквизитов (лучше всего через расширение) — это наиболее правильный и профессиональный путь.