Как добавить дополнительные реквизиты и сведения в документ «Возврат товаров поставщику»

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

В типовых конфигурациях 1С, таких как «Управление торговлей 11», «ERP» или «Комплексная автоматизация», механизм дополнительных реквизитов и сведений является крайне мощным инструментом. Он позволяет пользователям добавлять новые поля в документы и справочники без изменения кода программы. Однако иногда возникают ситуации, когда для конкретного документа (например, ВозвратТоваровПоставщику в старых релизах) этот функционал не предусмотрен разработчиками «из коробки». В данной статье мы подробно разберем, как самостоятельно внедрить этот механизм, проанализируем различия между реквизитами и сведениями и выясним, какие изменения в конфигураторе для этого потребуются.

Различие между дополнительными реквизитами и сведениями

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

  1. Дополнительные реквизиты — хранятся непосредственно в самом объекте (в специальной табличной части). Они отображаются прямо в форме документа, их удобно использовать, когда поле должно быть всегда «перед глазами» у пользователя. Однако их добавление требует изменения структуры метаданных документа.
  2. Дополнительные сведения — хранятся во внешнем регистре сведений ДополнительныеСведения. Они не изменяют структуру документа и отображаются в отдельном окне, вызываемом по кнопке. Это самый «безопасный» метод, не требующий модификации табличных частей объекта.

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

Метод 1: Настройка дополнительных сведений (без изменения кода)

Рассмотрим ситуацию, когда документ уже поддерживает механизм сведений, но он скрыт или не настроен. Для этого выполним следующие действия в режиме «1С:Предприятие»:

  1. Перейдем в раздел Администрирование — Общие настройки — Дополнительные реквизиты и сведения.
  2. Выберем гиперссылку Дополнительные сведения.
  3. В открывшемся списке найдем наш документ Возврат товаров поставщику. Если его там нет, значит, документ не включен в состав подсистемы в конфигураторе (см. Метод 2).
  4. Если документ присутствует, нажмем кнопку Добавить — Новое.
  5. Создадим элемент с типом значения Булево и наименованием «Не выгружать».

После этого в форме документа появится кнопка (обычно с иконкой «i»), при нажатии на которую можно будет установить данную галочку.

Метод 2: Внедрение дополнительных реквизитов через конфигуратор

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

Шаг 1: Добавление табличной части

Проанализируем структуру любого документа, где доп. реквизиты уже работают (например, ПриходныйКассовыйОрдер). Мы увидим, что у него есть табличная часть ДополнительныеРеквизиты. Нам нужно создать аналогичную в документе ВозвратТоваровПоставщику со следующими реквизитами:

Шаг 2: Настройка определяемых типов

Система БСП «узнает» о том, что объект поддерживает свойства, через Определяемые типы. Нам необходимо найти их в дереве метаданных и добавить туда наш документ:

  1. ВладелецДополнительныхРеквизитов — добавьте ссылку на документ ВозвратТоваровПоставщику.
  2. ВладелецДополнительныхСведений — если планируете использовать и сведения.
  3. ДополнительныеРеквизитыИСведенияОбъект — добавьте сам объект документа.

Шаг 3: Настройка свойств «Характеристики»

Это критически важный момент, о котором часто забывают новички. Откроем окно редактирования документа ВозвратТоваровПоставщику, перейдем на вкладку Данные и нажмем кнопку Характеристики. Здесь нужно прописать правила, по которым платформа будет считывать данные:

Шаг 4: Работа со справочником «Наборы дополнительных реквизитов и сведений»

Чтобы в режиме «1С:Предприятие» вы могли назначать реквизиты документу, для него должен существовать «Набор». В конфигураторе найдем справочник НаборыДополнительныхРеквизитовИСведений и проверим его предопределенные элементы. Если группы для возврата товаров нет, ее следует создать. Имя предопределенного элемента обычно формируется как Документ_ВозвратТоваровПоставщику.

Шаг 5: Программный код в модуле формы

Даже если метаданные настроены верно, форма документа не выведет реквизиты автоматически без соответствующих вызовов процедур БСП. Давайте проанализируем необходимые изменения в модуле формы документа:


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

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
    УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
    УправлениеСвойствамиКлиент.ПриИзмененииРеквизита(ЭтотОбъект, Элемент);
КонецПроцедуры

Не забудьте создать на форме документа группу (обычно обычную группу без отображения), в которую программно будут добавляться элементы дополнительных реквизитов. В приведенном выше коде она называется ГруппаДополнительныеРеквизиты.

Метод 3: Использование расширений (рекомендуемый)

Выясним, как сделать то же самое, не снимая конфигурацию с поддержки. Начиная с современных версий платформы (8.3.15+), все вышеописанные действия можно выполнить в Расширении. Это позволит вам сохранить возможность автоматического обновления типовой конфигурации.

  1. Создайте новое расширение.
  2. Добавьте в него документ ВозвратТоваровПоставщику.
  3. Добавьте в расширение определяемые типы (см. Шаг 2) и включите в них ваш документ.
  4. Добавьте табличную часть в документ внутри расширения.
  5. Используйте аннотации &После или &Вместо для внедрения кода в модули формы.

Типичные ошибки при внедрении

Разберем ситуации, когда «все сделано по инструкции», но галочка не появляется:

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

← На главную