Что такое ДополнительныеСвойства документа в 1С и где их настроить?

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

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

Природа свойства ДополнительныеСвойства

Свойство ДополнительныеСвойства является встроенным системным свойством платформы 1С:Предприятие. Добавлять его в структуру метаданных через конфигуратор не требуется — оно доступно по умолчанию у всех прикладных объектов (ДокументОбъект, СправочникОбъект, ПланВидовХарактеристикОбъект, БизнесПроцессОбъект, ЗадачаОбъект), а также у всех наборов записей регистров (РегистрНакопленияНаборЗаписей, РегистрСведенийНаборЗаписей, РегистрБухгалтерииНаборЗаписей, РегистрРасчетаНаборЗаписей).

По типу данных это свойство представляет собой обычную платформенную Структура. Это означает, что в него можно программно помещать любые пары «Ключ — Значение» без предварительного описания в конфигураторе.


// Пример записи произвольных данных в дополнительные свойства объекта
ДокументОбъект.ДополнительныеСвойства.Вставить("ОтказОтКонтроляОстатков", Истина);
ДокументОбъект.ДополнительныеСвойства.Вставить("ИнициаторЗаписи", "ФоновыйОбмен");

Жизненный цикл и область видимости

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

Проанализируем правила и ограничения жизненного цикла структуры:

  1. Доступность только на сервере: Свойство принадлежит серверному объекту. В контексте управляемой формы у клиентской структуры данных (ДанныеФормыСтруктура / Объект) этого свойства нет.
  2. Потеря данных при конвертации: При преобразовании данных формы в объект и обратно (методы ДанныеФормыВЗначение и ЗначениеВДанныеФормы) значения из ДополнительныеСвойства не переносятся автоматически.
  3. Сквозная передача в рамках транзакции записи: Если мы заполняем свойство перед записью объекта, эти данные будут доступны во всей цепочке событий: в обработчиках ПередЗаписью, ОбработкаПроведения, в подписках на события (ПодпискаНаСобытие), а также в модулях наборов записей движений этого документа.

Типовые сценарии использования

Выясним, в каких практических задачах применяется ДополнительныеСвойства:

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

Безопасное чтение значений из структуры

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


ЗначениеПараметра = Неопределено;
Если ДокументОбъект.ДополнительныеСвойства.Свойство("ОтказОтКонтроляОстатков", ЗначениеПараметра) Тогда
    Если ЗначениеПараметра = Истина Тогда
        // Пропускаем контроль остатков
    КонецЕсли;
КонецЕсли;

Что использовать, если данные нужно хранить постоянно?

Если задача заключается не во временной передаче параметров при записи, а в постоянном хранении дополнительных реквизитов документа в базе данных, используются другие механизмы:

  1. Табличная часть объекта: Создание табличной части (например, ДополнительныеРеквизиты, как это реализовано в Библиотеке Стандартных Подсистем). Данные хранятся внутри самого объекта, но любая их правка перезаписывает объект и меняет номер его версии.
  2. Регистр сведений: Использование непериодического независимого регистра сведений (концепция ДополнительныеСведения в БСП). Позволяет хранить любые пользовательские свойства отдельно от документа, не блокируя сам объект и позволяя вносить изменения даже в закрытых периодах.
← На главную