Работа с инструментом «1С:Конвертация данных 2.1» (КД 2.1) часто подбрасывает задачи, требующие оперативности. Типичная ситуация: вы уже настроили сотни правил обмена, и вдруг в конфигурации-источнике или приемнике появляется один новый реквизит. Традиционный путь — полная выгрузка структуры через обработку MD82Exp.epf и ее последующая загрузка в КД — может занять много времени, особенно на тяжелых конфигурациях типа ERP или УПП. В этой статье мы разберем, как добавить новый реквизит в структуру метаданных КД 2.1 более эффективно.
Многие разработчики ошибочно полагают, что использование обработки MD82Exp.epf всегда подразумевает полную выгрузку всей конфигурации. Однако в современных версиях этой обработки предусмотрены механизмы фильтрации. Рассмотрим, как выполнить точечное обновление структуры.
Разберем алгоритм действий:
MD82Exp.epf в конфигураторе или в режиме «Предприятие» той базы, где изменилась структура.Этот способ является наиболее «кошерным», так как сохраняет все внутренние идентификаторы (GUID) метаданных, которые генерирует сама 1С. Это гарантирует, что в будущем, когда вы решите обновить структуру целиком, у вас не возникнет дублей свойств.
Иногда нет возможности запустить выгрузку из информационной базы (например, нет доступа к конфигуратору или база слишком велика для любого анализа). В КД 2.1 формы справочников метаданных по умолчанию закрыты для редактирования (установлен режим ТолькоПросмотр). Но мы можем обойти это ограничение.
Проанализируем ситуацию: метаданные в КД — это обычные элементы справочников КонвертируемыеОбъектыМетаданных и КонвертируемыеСвойстваМетаданных. Чтобы добавить реквизит вручную, выполним следующие шаги:
КонвертируемыеСвойстваМетаданных и временно разрешим добавление и редактирование полей.Пример кода для программного добавления реквизита в существующий объект метаданных:
НовоеСвойство = Справочники.КонвертируемыеСвойстваМетаданных.СоздатьЭлемент();
НовоеСвойство.Наименование = "НовыйРеквизит";
НовоеСвойство.Имя = "НовыйРеквизит";
НовоеСвойство.Владелец = СсылкаНаОбъектМетаданных; // Ссылка на справочник/документ в КД
НовоеСвойство.ТипДанных = "Строка"; // Или "СправочникСсылка.ИмяСправочника"
НовоеСвойство.Записать();
Важный момент: При ручном добавлении строго соблюдайте регистр имени реквизита. Если в конфигураторе он называется ДатаРождения, то и в КД он должен быть записан именно так. Ошибка в одной букве приведет к тому, что правило обмена не сработает.
Если вам нужно быстро добавить ПКС (Правило конвертации свойства) для реквизита, которого нет в структуре, можно воспользоваться методом прямого редактирования XML. Рассмотрим этот процесс подробнее:
ПравилаКонвертацииОбъектов для нужного нам типа.Свойства найдем существующее ПКС и скопируем его структуру.При загрузке КД увидит, что в правилах описано свойство, которого нет в ее справочниках метаданных, и предложит создать его автоматически. Это один из самых быстрых способов «подтянуть» структуру под правила без использования MD82Exp.
Выясним, обязательна ли вообще регистрация реквизита в дереве метаданных. В «Конвертации данных 2.1» есть механизм, позволяющий передавать данные, не привязываясь к жесткой структуре. Это полезно, когда реквизит добавлен в приемнике, а в источнике его нет (или наоборот).
Рассмотрим порядок настройки:
ПередВыгрузкой для этого ПКС мы можем программно передать значение:
Значение = Источник.НайтиНужныйДанный(); // Логика получения значения
Или через ВходящиеДанные, если мы формируем структуру вручную. Этот метод позволяет не захламлять дерево метаданных временными или специфическими реквизитами, сохраняя при этом работоспособность обмена.
Проанализируем основные опасности, с которыми можно столкнуться при игнорировании штатной выгрузки через MD82Exp.epf:
Справочник.Номенклатура вместо СправочникСсылка.Номенклатура), платформа не сможет корректно привести типы при загрузке данных, и реквизит останется пустым.Итог: Если вам нужно добавить один простой реквизит (строка, число, дата), быстрее всего воспользоваться Методом 3 (редактирование XML) или Методом 4 (виртуальные свойства). Если же реквизитов много или они имеют ссылочные типы, крайне рекомендуем использовать Метод 1 с фильтрацией в MD82Exp.epf — это сэкономит вам время в долгосрочной перспективе и убережет от ошибок сопоставления данных.