Переход на разработку через расширения требует смены парадигмы работы с объектами метаданных. Часто разработчики, привыкшие к объединению с файлами cf, сталкиваются с проблемой: при добавлении справочников в расширение, их реквизиты со ссылочными типами теряют связь с объектами основной конфигурации, превращаясь в Строку. Давайте разберем, как правильно организовать перенос и настройку объектов.
Чтобы расширение видело объекты основной конфигурации и корректно работало с типами данных, необходимо следовать правилу заимствования. Когда вы просто копируете справочник, расширение создает его «копию» в изоляции. Чтобы эта копия «узнала» об объектах типа СправочникСсылка.Номенклатура, эти объекты должны быть явно включены в состав расширения.
Номенклатура) в дереве конфигурации, нажмите правой кнопкой мыши и выберите «Добавить в расширение». Это не меняет типовой объект, но «регистрирует» его внутри вашего расширения, позволяя использовать в качестве типа данных.Ранее существовало ограничение на изменение свойств типовых реквизитов, однако современные версии платформы 1С значительно упростили этот процесс. Теперь вы можете менять размерность полей или даже состав типов прямо в расширении.
Если вам необходимо изменить тип реквизита, который уже существует в типовой конфигурации:
На текущий момент в конфигураторе 1С нет кнопки «добавить всё по подсистеме», поэтому для переноса больших объемов данных рекомендуем использовать следующие подходы:
EDT (Enterprise Development Tools) позволяет более гибко управлять составом расширений.Важно понимать поведение системы при ошибках. Если расширение не применяется или содержит критические ошибки, данные в основной базе не будут удалены или повреждены. Происходит лишь отключение исполняемого кода расширения. Это дает разработчику возможность исправить ситуацию, не рискуя целостностью данных пользователей.
Пример работы с кодом в расширении:
// В модуле объекта расширения используем заимствованный справочник
Процедура ПриЗаписи()
// Обращение к ссылке на справочник из основной конфигурации
НовыйКаталог = Справочники.КаталогТоваров.СоздатьЭлемент();
НовыйКаталог.Номенклатура = ВыбраннаяНоменклатура; // Тип СправочникСсылка.Номенклатура
НовыйКаталог.Записать();
КонецПроцедуры
Следуя этим рекомендациям, вы сможете бесшовно встраивать свои подсистемы в типовые решения, сохраняя их на поддержке и обеспечивая стабильную работу пользовательских интерфейсов.