При переносе данных из устаревших баз часто возникает задача отредактировать уже существующие правила обмена. На входе мы имеем только внешнюю обработку выгрузки (файл с расширением .ert) для 1С 7.7, которая осуществляет перенос данных в 1С 8.х. Рассмотрим подробнее, как получить исходные правила обмена в формате XML для последующей загрузки в «Конвертацию данных» (КД) и с какими трудностями мы можем столкнуться.
Очень часто разработчики стараются упростить жизнь пользователям и не заставляют их носить с собой два отдельных файла (саму обработку и файл правил). Для этого готовый XML-файл правил помещается непосредственно внутрь обработки .ert в виде макета. Разберем по шагам, как извлечь эти данные.
.ert в Конфигураторе 1С 7.7..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» поставляются специальные инструменты для получения структур баз (метаданных). Рассмотрим, как правильно начать процесс разработки.
MD77Exp.ert. Запустите её в базе 1С 7.7. Она просканирует старую конфигурацию и сгенерирует XML-файл с описанием структуры справочников, документов и регистров источника.MD82Exp.epf (или аналогичную для 8.3) и запустите её в базе-приемнике 1С 8.х. Она также создаст XML-файл, но уже со структурой новой базы.Подведем итог: При работе со старыми файлами .ert первым делом ищите правила в макетах и следите за кодировкой. Если правила были сгенерированы в виде программного модуля, восстановить визуальную структуру в КД уже не выйдет, и самым надежным решением станет повторная выгрузка структур конфигураций и написание правил с чистого листа.