В каких конфигурациях 1С реализованы дополнительные реквизиты и свойства у документов и справочников?

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

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

Различия механизмов: БСП против обычных форм

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

  1. Современные конфигурации на управляемых формах с БСП (Библиотекой стандартных подсистем): к ним относятся 1С:ERP Управление предприятием, Комплексная автоматизация 2, Управление торговлей 11, Бухгалтерия предприятия 3.0, Управление нашей фирмой, Зарплата и управление персоналом 3.1. В них задействован план видов характеристик ДополнительныеРеквизитыИСведения.
  2. Конфигурации предыдущего поколения на обычных формах: Управление торговлей 10.3, Управление производственным предприятием 1.3, Комплексная автоматизация 1.1, Бухгалтерия предприятия 2.0. В них подсистема БСП отсутствует, а механизм реализован через план видов характеристик СвойстваОбъектов и регистр сведений ЗначенияСвойствОбъектов. Для номенклатуры этот механизм присутствует практически во всех решениях, однако для документов состав доступных типов в измерении Объект регистра был существенно ограничен разработчиками типовых решений.

Дополнительные реквизиты или дополнительные сведения: принципиальная разница

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

  1. Дополнительные реквизиты:

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

  2. Дополнительные сведения:

    Хранятся вне объекта — в независимом непериодическом регистре сведений ДополнительныеСведения (измерения Объект, Свойство, ресурс Значение). Их можно считывать и записывать автономно, не перезаписывая сам документ или элемент справочника. Это исключает блокировки по дате запрета изменения документов и не увеличивает версию данных объекта, что делает дополнительные сведения предпочтительными для фоновых интеграций и веб-сервисов.

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

Как универсально проверить поддержку свойств в коде

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

Разберем программную проверку доступности обоих механизмов:


// 1. Проверяем наличие табличной части доп. реквизитов у конкретного объекта
МетаданныеОбъекта = СсылкаНаОбъект.Метаданные();
ЕстьТабличнаяЧасть = (МетаданныеОбъекта.ТабличныеЧасти.Найти("ДополнительныеРеквизиты") <> Неопределено);

// 2. Проверяем поддержку механизма дополнительных сведений (БСП)
РегистрДопСведения = Метаданные.РегистрыСведений.Найти("ДополнительныеСведения");
ПоддерживаетДопСведения = (РегистрДопСведения <> Неопределено)
    И РегистрДопСведения.Измерения.Объект.Тип.СодержитТип(ТипЗнч(СсылкаНаОбъект));

// 3. Проверяем поддержку старого механизма свойств (УТ 10.3 / УПП 1.3)
РегистрСтарыхСвойств = Метаданные.РегистрыСведений.Найти("ЗначенияСвойствОбъектов");
ПоддерживаетСтарыеСвойства = (РегистрСтарыхСвойств <> Неопределено)
    И РегистрСтарыхСвойств.Измерения.Объект.Тип.СодержитТип(ТипЗнч(СсылкаНаОбъект));

Чтение и запись данных без зависимости от версий БСП

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


НаборЗаписей = РегистрыСведений.ДополнительныеСведения.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Объект.Установить(СсылкаНаОбъект);
НаборЗаписей.Отбор.Свойство.Установить(ПланВидовХарактеристикСвойство);

НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Объект = СсылкаНаОбъект;
НоваяЗапись.Свойство = ПланВидовХарактеристикСвойство;
НоваяЗапись.Значение = ТребуемоеЗначение;

НаборЗаписей.Записать();

Что делать, если у документа нет поддержки свойств?

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

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