Как добавить реквизиты из расширения в «Конвертацию данных» и выгрузить их метаданные

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

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

Однако при попытке получить структуру метаданных для программы Конвертация данных (версий 2.1 или 3.0) с помощью стандартной обработки MD83Exp.epf у специалистов нередко возникают трудности: добавленные реквизиты просто «не видны» в выгруженном файле. В рамках этой статьи мы подробно разберем, почему так происходит, как работает платформа с метаданными расширений и как правильно настроить процесс выгрузки, избежав досадных ошибок.

Как платформа 1С видит метаданные расширений в режиме «Предприятие»

Для начала разберем важную техническую особенность работы платформы 1С:Предприятие 8.3. Когда пользователь или разработчик запускает клиентский сеанс (в режиме Предприятие), система динамически формирует единую объединенную структуру метаданных.

В этот момент глобальный контекст Метаданные собирает воедино:

  1. Все стандартные объекты и свойства основной конфигурации.
  2. Заимствованные объекты из активных расширений.
  3. Новые (собственные) объекты, справочники, документы и реквизиты, добавленные во всех подключенных расширениях.

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

Разбор причин: в чем заключается «путаница в файлах»

Практический опыт показывает, что отсутствие реквизитов расширения в итоговом файле .xml почти всегда связано с организационными ошибками разработчика или особенностями окружения. Проанализируем основные сценарии, приводящие к этой проблеме:

  1. Выгрузка из «чистой» или неактуальной базы. Часто разработчики запускают обработку MD83Exp.epf в копиях баз данных, где расширение еще не подключено, отключено перед обновлением, либо база запущена в безопасном режиме, блокирующем часть функционала. В таком случае в контексте Метаданные новые реквизиты физически отсутствуют, и обработка их не выгружает.
  2. Смешивание путей и файлов выгрузки. В сложных проектах интеграции задействовано множество каталогов и баз. Очень легко запустить выгрузку в правильной базе, но случайно сохранить реквизиты в старый файл, либо загрузить в Конвертацию данных файл конфигурации-приемника вместо источника.
  3. Попытка выгрузки через Конфигуратор (.cf). Если вы пытаетесь получить структуру метаданных путем выгрузки файла конфигурации .cf непосредственно из Конфигуратора, объекты расширения туда гарантированно не попадут. Расширения хранятся изолированно в файлах формата .cfe и не смешиваются с основным конфигурационным файлом на уровне диска.

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


// Проверим программно, видит ли сеанс добавленный реквизит документа
ИмяДокумента = "РеализацияТоваровУслуг";
ИмяРеквизита = "Расш_ДополнительныйМетодДоставки";

ДокументМетаданные = Метаданные.Документы[ИмяДокумента];
Если ДокументМетаданные.Реквизиты.Найти(ИмяРеквизита) <> Неопределено Тогда
    Сообщить("Успешно: Реквизит расширения найден в структуре метаданных сеанса!");
Иначе
    Сообщить("Ошибка: Реквизит не найден. Проверьте активность расширения в этой базе.");
КонецЕсли;

Пошаговая инструкция по правильной выгрузке метаданных

Чтобы гарантированно выгрузить реквизиты расширения для последующей настройки правил обмена в Конвертации данных 2.1, выполним следующие шаги:

  1. Убедимся, что база данных, из которой планируется выгрузка, содержит актуальную и работоспособную версию расширения.
  2. Запустим базу в режиме 1С:Предприятие под пользователем с полными правами.
  3. Проверим в меню Администрирование — Печатные формы, отчеты и обработки — Расширения (в зависимости от интерфейса конфигурации), что у нашего расширения установлена галочка Активно, а также снят флажок Безопасный режим (если расширение использует вызовы серверного кода, требующие полных прав).
  4. Откроем внешнюю обработку MD83Exp.epf через меню Файл — Открыть.
  5. В окне настройки обработки укажем имя и путь для создания файла структуры метаданных (например, ERP_With_Extensions.xml).
  6. Нажмем кнопку Выгрузить. Полученный файл загрузим в базу Конвертации данных стандартным способом. Все реквизиты расширения успешно отобразятся в дереве метаданных.

Особенности работы с расширениями в «Конвертации данных 3.0»

Если интеграция строится по технологии универсального формата обмена (EnterpriseData) в КД 3.0, то подход к загрузке метаданных меняется кардинально. В современных версиях этой конфигурации разработчики отказываются от использования внешней обработки MD83Exp.epf.

Выясним, как правильно поступать в этом случае:

Важное предупреждение о безопасности данных в расширениях

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

Сценарий 1: Отключение расширения (снятие признака «Активно»).
В этом случае данные физически остаются в таблицах СУБД (например, MS SQL Server или PostgreSQL). Платформа просто перестает отображать эти реквизиты в интерфейсе и скрывает их из объектной модели. При повторной активации расширения все накопленные данные снова станут доступны без потерь.

Сценарий 2: Удаление расширения из списка в базе данных.
Это наиболее опасное действие. При удалении записи расширения из системы платформа выполняет реструктуризацию базы данных и физически удаляет (дропает) соответствующие таблицы и колонки из СУБД. Все накопленные данные по этим реквизитам будут безвозвратно утеряны.

Сценарий 3: Замена файла расширения (.cfe) новым файлом.
Если новое расширение содержит те же внутренние идентификаторы (GUID) и имена объектов, данные сохранятся. Однако если при разработке новой версии объекта или реквизита в расширении его создали «с нуля» вместо изменения существующего (даже при совпадении имени), уникальный идентификатор изменится, что приведет к очистке старых данных при обновлении расширения.

Рекомендация по безопасности: Перед любым обновлением, изменением или удалением расширений, содержащих уникальные реквизиты с данными, обязательно создавайте резервную копию базы данных (бэкап) или выгружайте информацию с помощью обработки «Универсальный обмен данными в формате XML» во временный файл!

← На главную