Как выгрузить правила обмена из обработки 1С 7.7 (.ert) в Конвертацию данных?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

При переносе данных из устаревших баз часто возникает задача отредактировать уже существующие правила обмена. На входе мы имеем только внешнюю обработку выгрузки (файл с расширением .ert) для 1С 7.7, которая осуществляет перенос данных в 1С 8.х. Рассмотрим подробнее, как получить исходные правила обмена в формате XML для последующей загрузки в «Конвертацию данных» (КД) и с какими трудностями мы можем столкнуться.

Вариант 1: Извлечение правил из макетов обработки

Очень часто разработчики стараются упростить жизнь пользователям и не заставляют их носить с собой два отдельных файла (саму обработку и файл правил). Для этого готовый XML-файл правил помещается непосредственно внутрь обработки .ert в виде макета. Разберем по шагам, как извлечь эти данные.

  1. Откройте файл внешней обработки .ert в Конфигураторе 1С 7.7.
  2. Перейдите в структуру обработки и найдите раздел с макетами (Таблицы / Тексты).
  3. Проанализируем содержимое: если среди макетов есть текстовый документ, содержащий XML-теги и логику правил, это именно то, что нам нужно.
  4. Сохраните этот текст на жесткий диск. При сохранении вручную укажите расширение файла .xml.

Важный нюанс с кодировкой: Платформа 1С 7.7 исторически работает в кодировке Windows-1251, в то время как Конвертация данных обычно ожидает файлы в формате UTF-8. Если после выгрузки КД выдает ошибку при чтении файла, откройте полученный XML-файл в стандартном Блокноте (или Notepad++) и пересохраните его, явно указав кодировку UTF-8.

Почему правила могут быть зашиты прямо в программный код?

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

Когда программист пишет нестандартные обработчики событий для правил обмена в Конвертации данных, КД не может просто сохранить их в XML и передать платформе 7.7 на исполнение. Вместо этого КД генерирует готовый огромный текстовый модуль на языке 1С 7.7. Разработчик копирует этот код и полностью заменяет им программный модуль стандартной обработки выгрузки (например, V77Exp.ert).

В такой ситуации правила обмена буквально растворяются в процедурном коде 1С 7.7. Выполнить обратную декомпиляцию — то есть превратить этот процедурный код обратно в структурированный XML, который поймет Конвертация данных — практически невозможно. Если исходной базы КД или XML-файла не осталось, редактировать алгоритмы придется либо вручную прямо в конфигураторе 7.7 (что крайне неудобно), либо писать правила заново.

Вариант 2: Создание правил с нуля (стандартный механизм КД)

Если извлечь правила не удалось, создадим их заново. В комплекте поставки конфигурации «Конвертация данных 2» поставляются специальные инструменты для получения структур баз (метаданных). Рассмотрим, как правильно начать процесс разработки.

  1. Найдите в каталоге шаблонов КД обработку MD77Exp.ert. Запустите её в базе 1С 7.7. Она просканирует старую конфигурацию и сгенерирует XML-файл с описанием структуры справочников, документов и регистров источника.
  2. Далее возьмите обработку MD82Exp.epf (или аналогичную для 8.3) и запустите её в базе-приемнике 1С 8.х. Она также создаст XML-файл, но уже со структурой новой базы.
  3. Запустите саму базу «Конвертация данных». Загрузите в неё обе полученные структуры.
  4. Только после этого наступает время настройки правил обмена — создаются связи между объектами, настраивается маппинг реквизитов и прописываются обработчики событий.

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

← На главную