Как обновить структуру конфигурации в 1С:Конвертация данных 2.1 без полной перезагрузки

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

Работа с инструментом «1С:Конвертация данных 2.1» (КД 2.1) часто подбрасывает задачи, требующие оперативности. Типичная ситуация: вы уже настроили сотни правил обмена, и вдруг в конфигурации-источнике или приемнике появляется один новый реквизит. Традиционный путь — полная выгрузка структуры через обработку MD82Exp.epf и ее последующая загрузка в КД — может занять много времени, особенно на тяжелых конфигурациях типа ERP или УПП. В этой статье мы разберем, как добавить новый реквизит в структуру метаданных КД 2.1 более эффективно.

Метод 1. Селективная выгрузка через MD82Exp.epf (Штатный и безопасный)

Многие разработчики ошибочно полагают, что использование обработки MD82Exp.epf всегда подразумевает полную выгрузку всей конфигурации. Однако в современных версиях этой обработки предусмотрены механизмы фильтрации. Рассмотрим, как выполнить точечное обновление структуры.

Разберем алгоритм действий:

  1. Откроем обработку MD82Exp.epf в конфигураторе или в режиме «Предприятие» той базы, где изменилась структура.
  2. Перейдем на вкладку «Настройка выгрузки».
  3. Проанализируем дерево метаданных: вместо того чтобы оставлять все галочки включенными, нажмем кнопку «Снять пометки со всех объектов».
  4. Найдем конкретный справочник или документ, в который был добавлен реквизит, и отметим только его.
  5. Сформируем файл выгрузки (XML). Он будет весить считанные килобайты, так как содержит описание только одного объекта.
  6. В базе «Конвертация данных» запустим загрузку структуры. При загрузке крайне важно выбрать режим «Добавлять новые и обновлять существующие», но ни в коем случае не «Заменять полностью».

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

Метод 2. Ручное добавление через программный обход ограничений

Иногда нет возможности запустить выгрузку из информационной базы (например, нет доступа к конфигуратору или база слишком велика для любого анализа). В КД 2.1 формы справочников метаданных по умолчанию закрыты для редактирования (установлен режим ТолькоПросмотр). Но мы можем обойти это ограничение.

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

  1. Откроем КД в режиме «Конфигуратор».
  2. Найдем форму элемента справочника КонвертируемыеСвойстваМетаданных и временно разрешим добавление и редактирование полей.
  3. Либо (что более профессионально) воспользуемся внешней обработкой, которая программно создаст нужный элемент.

Пример кода для программного добавления реквизита в существующий объект метаданных:


НовоеСвойство = Справочники.КонвертируемыеСвойстваМетаданных.СоздатьЭлемент();
НовоеСвойство.Наименование = "НовыйРеквизит";
НовоеСвойство.Имя = "НовыйРеквизит";
НовоеСвойство.Владелец = СсылкаНаОбъектМетаданных; // Ссылка на справочник/документ в КД
НовоеСвойство.ТипДанных = "Строка"; // Или "СправочникСсылка.ИмяСправочника"
НовоеСвойство.Записать();

Важный момент: При ручном добавлении строго соблюдайте регистр имени реквизита. Если в конфигураторе он называется ДатаРождения, то и в КД он должен быть записан именно так. Ошибка в одной букве приведет к тому, что правило обмена не сработает.

Метод 3. Редактирование XML-файла правил

Если вам нужно быстро добавить ПКС (Правило конвертации свойства) для реквизита, которого нет в структуре, можно воспользоваться методом прямого редактирования XML. Рассмотрим этот процесс подробнее:

  1. Выгрузим текущие правила обмена в файл XML.
  2. Откроем файл в текстовом редакторе (лучше всего подойдет Notepad++ или VS Code).
  3. Найдем узел ПравилаКонвертацииОбъектов для нужного нам типа.
  4. Внутри узла Свойства найдем существующее ПКС и скопируем его структуру.
  5. Изменим имя свойства источника и приемника на наше новое имя.
  6. Загрузим правила обратно в КД.

При загрузке КД увидит, что в правилах описано свойство, которого нет в ее справочниках метаданных, и предложит создать его автоматически. Это один из самых быстрых способов «подтянуть» структуру под правила без использования MD82Exp.

Метод 4. Использование «Виртуальных» свойств в ПКС

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

Рассмотрим порядок настройки:

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

Значение = Источник.НайтиНужныйДанный(); // Логика получения значения

Или через ВходящиеДанные, если мы формируем структуру вручную. Этот метод позволяет не захламлять дерево метаданных временными или специфическими реквизитами, сохраняя при этом работоспособность обмена.

Риски и рекомендации при ручном изменении структуры

Проанализируем основные опасности, с которыми можно столкнуться при игнорировании штатной выгрузки через MD82Exp.epf:

Итог: Если вам нужно добавить один простой реквизит (строка, число, дата), быстрее всего воспользоваться Методом 3 (редактирование XML) или Методом 4 (виртуальные свойства). Если же реквизитов много или они имеют ссылочные типы, крайне рекомендуем использовать Метод 1 с фильтрацией в MD82Exp.epf — это сэкономит вам время в долгосрочной перспективе и убережет от ошибок сопоставления данных.

← На главную