Как правильно перенести объекты метаданных и настроить ссылочные типы в расширении конфигурации 1С?

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

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

Основные принципы работы с расширениями

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

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

Как решать проблемы с типами реквизитов

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

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

  1. Заимствуйте объект, содержащий реквизит, в расширение.
  2. В дереве расширения раскройте ветку заимствованного объекта и найдите нужный реквизит.
  3. Нажмите на него и выберите «Заимствовать» (если это еще не сделано).
  4. Теперь вы можете изменить тип данных в палитре свойств. Платформа позволит это сделать, хотя и может выдать предупреждение о контролируемом типе.

Автоматизация и управление составом метаданных

На текущий момент в конфигураторе 1С нет кнопки «добавить всё по подсистеме», поэтому для переноса больших объемов данных рекомендуем использовать следующие подходы:

Что делать, если расширение не применяется?

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

Пример работы с кодом в расширении:


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

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

← На главную