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

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

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

Пошаговый порядок обновления метаданных конфигурации в КД 2.1

Частая ошибка разработчиков — попытка создать в базе 1С:Конвертация данных новые объекты конфигураций с последующим ручным переносом всех алгоритмов и правил. В КД 2.1 предусмотрен штатный механизм обновления существующей структуры метаданных без потери созданных правил конвертации объектов (ПКО), свойств (ПКС) и значений (ПКЗ).

Рассмотрим правильную последовательность действий:

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

Почему правила подсвечиваются красным цветом после обновления

Многие разработчики пугаются, когда после обновления метаданных список ПКО и ПКС окрашивается в красный цвет. Проанализируем причину такого поведения конфигурации.

Красная подсветка в КД 2.1 — это штатный диагностический механизм, предназначенный для привлечения внимания разработчика к несоответствиям. Красным цветом выделяются:

  1. Правила конвертации свойств (ПКС), чьи реквизиты или табличные части были переименованы, удалены или изменили свой тип в новом релизе конфигурации.
  2. Правила конвертации объектов (ПКО), если соответствующий класс метаданных (документ, справочник, регистр) был удален или переименован.
  3. Правила с незаполненными или битыми ссылками на объекты метаданных источника или приемника.

Для исправления подсветки переходим по проблемным ПКО и выполняем корректировку: удаляем устаревшие ПКС, перевыбираем изменившиеся реквизиты либо используем кнопку «Синхронизировать свойства» на вкладке «Правила конвертации свойств» для автоматического сопоставления новых полей.

Автоматизация проверки правил в КД 2.1

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

  1. Обработка «Проверка правил конвертации»: открываем пункт меню Сервис -> Проверка правил. Данная обработка выполняет поиск некорректных ссылок на реквизиты, несуществующих ПКО и невалидных обработчиков, позволяя пакетно очистить или скорректировать правила.
  2. Групповая обработка правил: с помощью обработки Сервис -> Групповая обработка правил можно массово отключать неиспользуемые ПКС, менять флаги выгрузки и переназначать правила конвертации без открытия каждой формы вручную.

Исправление ошибки сравнения и объединения правил обмена

При попытке выполнить сравнение и объединение двух конвертаций через обработку СравнениеИОбъединениеПравилОбмена разработчики часто сталкиваются с критической ошибкой:

{Обработка.СравнениеИОбъединениеПравилОбмена.Форма.Форма.Форма(2754)}: Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата) Если ИндексКартинки >= 0 Тогда

Выясним причину ошибки: при формировании дерева объектов в процедуре УстановитьИндексКартинки обработка заполняет соответствие индексов и картинок для типов метаданных. Однако для объектов типа БизнесПроцесс, ТочкаМаршрутаБизнесПроцесса и Задача соответствия не определены. В результате функция возвращает значение Неопределено вместо числового индекса, и операция сравнения ИндексКартинки >= 0 завершается аварийно.

Для устранения ошибки откроем конфигуратор базы КД 2.1, перейдем в форму обработки СравнениеИОбъединениеПравилОбмена и найдем процедуру УстановитьИндексКартинки. В блоке инициализации соответствия добавим недостающие типы объектов:


СоответствияИндексов = Новый Соответствие;
СоответствияИндексов.Вставить(Неопределено, -1);
СоответствияИндексов.Вставить(Перечисления.ТипыОбъектов.Справочник, 35);
СоответствияИндексов.Вставить(Перечисления.ТипыОбъектов.Документ, 36);

// Добавляем обработку бизнес-процессов и задач
СоответствияИндексов.Вставить(Перечисления.ТипыОбъектов.БизнесПроцесс, 35);
СоответствияИндексов.Вставить(Перечисления.ТипыОбъектов.ТочкаМаршрутаБизнесПроцесса, 35);
СоответствияИндексов.Вставить(Перечисления.ТипыОбъектов.Задача, 35);

После внесения изменений обработка сравнения и объединения правил обмена отработает корректно и без аварийных завершений.

Исправление ошибки «Реквизит недоступен для элемента» при загрузке конвертации

Еще одна распространенная проблема при загрузке конвертации из файла XML через обработку ЗагрузкаКонвертации — ошибка:

{Обработка.ЗагрузкаКонвертации.МодульОбъекта(3024)}: Ошибка при установке значения атрибута контекста (ВыгружатьГруппуЧерезФайл): Реквизит недоступен для элемента

Причина заключается в том, что реквизит ВыгружатьГруппуЧерезФайл в справочнике ПравилаКонвертацииСвойств предназначен только для групп (папок) свойств, а обработка загрузки в цикле пытается присвоить значение обычному элементу.

Для решения проблемы в модуле объекта обработки ЗагрузкаКонвертации перед строкой присвоения необходимо добавить проверку признака группы:


Если НоваяГруппаПКС.ЭтоГруппа Тогда
    НоваяГруппаПКС.ВыгружатьГруппуЧерезФайл = Строка.ВыгружатьГруппуЧерезФайл;
КонецЕсли;

Либо можно использовать безопасное заполнение через функцию платформы:

ЗаполнитьЗначенияСвойств(НоваяГруппаПКС, Строка, "ВыгружатьГруппуЧерезФайл");

Применение описанных исправлений позволит успешно загружать конвертации из внешних XML-файлов и полноценно работать со структурой метаданных любых конфигураций 1С.

← На главную