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

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

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

Вариант 1: Использование механизма дополнительных реквизитов и сведений (БСП)

Это самый «чистый» способ, рекомендуемый фирмой «1С» для типовых конфигураций. Механизм ДополнительныеРеквизитыИСведения позволяет добавлять новые поля к объектам без модификации конфигурации.

  1. Почему это удобно: Вам не нужно создавать расширения, затрагивающие структуру метаданных документа.
  2. Вывод на форму: Дополнительные реквизиты, настроенные в системе, автоматически могут быть выведены на форму документа и даже в списки документов через стандартные настройки Формы.
  3. Программный доступ: Если требуется программная работа, используйте процедуры общего модуля УправлениеСвойствами. Это обеспечит соблюдение прав доступа и корректную запись данных в регистры сведений, используемые БСП.

Вариант 2: Добавление реквизита через расширение конфигурации

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

Разберем по шагам, как организовать хранение и вывод:

  1. Создание реквизита: Добавьте новый реквизит в объект через расширение. Тип данных выберите Булево.
  2. Размещение на форме: В расширении добавьте форму документа, в которую нужно вынести новый реквизит. Просто перетащите созданный реквизит из дерева метаданных расширения на элементы формы.
  3. Программная запись: Если вы хотите управлять записью вручную, используйте методы ПередЗаписью или ПриЗаписи в расширении модуля объекта.

Пример реализации программной записи при использовании собственного регистра сведений:


// Пример записи в регистр сведений в расширении
&НаСервере
Функция ЗаписатьЗначениеПокупкиССайта(СсылкаНаОбъект, Значение)
    МенеджерЗаписи = РегистрыСведений.МойРегистрСведений.СоздатьМенеджерЗаписи();
    МенеджерЗаписи.Объект = СсылкаНаОбъект;
    МенеджерЗаписи.Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("МойРеквизит");
    МенеджерЗаписи.Значение = Значение;
    МенеджерЗаписи.Записать();
КонецФункции

Как выбрать оптимальный подход?

Проанализируем ситуацию для принятия верного решения:

Важное примечание: При записи данных программно всегда проверяйте необходимость этой операции. Вместо того чтобы записывать данные при каждом нажатии кнопки Записать, проанализируйте, изменилось ли значение реквизита. Это поможет избежать блокировок таблиц базы данных и повысит производительность системы при массовой обработке документов.

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

← На главную