Как обновить состав общего реквизита в расширении 1С после обновления основной конфигурации?

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

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

Выясним причину платформенного поведения

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

Из-за этого в редакторе заимствованной формы у основного реквизита Объект реквизит не появляется до тех пор, пока состав общего реквизита не будет принудительно обновлен в Конфигураторе расширения.

Способ 1. Ручная синхронизация состава в Конфигураторе

Рассмотрим стандартный порядок действий для актуализации состава реквизита:

  1. Откроем дерево метаданных расширения конфигурации.
  2. Найдем заимствованный общий реквизит и откроем его окно свойств.
  3. Перейдем в настройку свойства Состав.
  4. В списке объектов вручную установим флажки напротив документов или справочников, которые были добавлены в состав в основной конфигурации.
  5. Сохраним изменения.

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

Способ 2. Повторное заимствование общего реквизита

Если состав объектов изменился существенно, проще перезаимствовать объект заново:

  1. Убедимся, что на заимствованный общий реквизит в расширении не завязаны другие специфические настройки или программный код.
  2. Удалим общий реквизит из расширения.
  3. Выполним повторное заимствование общего реквизита из основной конфигурации.

При повторном заимствовании платформа сразу подтянет актуальный состав объектов из основной конфигурации.

Способ 3. Программное добавление элемента на форму

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


&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    // Динамически создаем поле формы и связываем его с реквизитом объекта
    ЭлементРеквизита = Элементы.Добавить("ПолеОбщийРеквизит1", Тип("ПолеФормы"), Элементы.Шапка);
    ЭлементРеквизита.Вид = ВидПоляФормы.ПолеВвода;
    ЭлементРеквизита.ПутьКДанным = "Объект.ОбщийРеквизит1";
КонецПроцедуры

При использовании метода Элементы.Добавить() и явном указании свойства ПутьКДанным элемент корректно отобразится в интерфейсе без дополнительной настройки состава реквизита в Конфигураторе расширения.

← На главную