Конвертация внешних обработок 1С:8 из 8.2 в 8.1

Скрипт на Python 3 для конвертации внешних обработок 1С8 из 8.2 в 8.1

Исходники: https://github.com/volodkindv/epf_82_to_81

Использование:

1. Установить интерпретатор Python 3 версии: https://www.python.org/downloads/
2. Клонировать/скачать репозиторий.
3. Положить в корень репозитория нужную внешнюю обработку, например, test.epf
4. В корне репозитория выполнить команду: python downgrade.py test.epf. Появится файл test_81.epf. Его надо открыть в конфигураторе 8.1 и обязательно пересохранить еще раз.

Скрипт отлаживался на версии 3.5.2.

Внешние обработки должны коректно открываться в платформе 8.2.16. Если внешнюю обработку сохраняли на платформе 8.3, то она может не сконвертироваться.

При установке Python обязательно поставить флаг "add to path", или вручную потом добавить.

Возможны проблемы с конвертацией макетов типа "СхемаКомпоновкиДанных" и какой-нибудь экзотикой вроде "ГрафическаяСхема".

Макеты "ТекстовыйДокумент", "ТабличныйДокумент", "ДвоичныеДанные" конвертируются нормально.

Макеты "СхемаКомпоновкиДанных" тоже конвертируются, но костыльно. Возможны ошибки.

Конвертация макетов остальных типов не проверялась.

В папке epf2src лежит библиотека для работы с внутренним форматом файлов 1С8 ("фигурные скобки и запятые").

Благодарности:

Автору V83Unpack за распаковщик/запаковщик;

Авторам V8Reader за идеи.

Проекту "Инструменты доктора Шатца" (Assembla).

Авторам GComp для 7.7 за скрипт попроцедурной нарезки текста модуля (использован в другом проекте, являющемся базой для данного). 

4 Comments

  1. Lem0n

    В 8.2 изменилось обращение к метаданным, что-то вроде этого(сейчас искать не буду) :

    8.2 Метаданные.Справочники.МойСправочник.СтандартныеРеквизиты.Код

    8.1 Метаданные.Справочники.МойСправочник..Код

    и бог знает что еще. Это учитывается?

    Reply
  2. skif47

    (1) Ни в коем случае. Код переносится как есть. Дальше его можно регулярными выражениями допилить.

    Главная проблема в нашем случае была именно с формами, элементами управления, привязками и т.д. Собственно, эта задача и решалась.

    Навскидку, с 8.1 по 8.2 изменились параметры у методов ПодключитьВнешнююОбработку, ПодключитьВнешнююКомпоненту, строковое представление булева («Ложь» -> «Да»). Вот про метаданные не помню, кажется, с ними как раз все хорошо.

    Reply
  3. artbear

    Наверное, это полезно, но ЗАЧЕМ?

    Reply
  4. skif47

    (3) Некрофилия ))

    Если серьезно, то у нас есть около 10 внешних обработок для 8.2, в каждой десятки форм и в среднем по 50 000 строк кода.

    И несколько тысяч клиентов, которые ими пользуются.

    Где-то 1-2% из них сидят на платформе 8.1 и ни в какую не собираются с нее слезать. Как правило, это крупные предприятия, которые внедряли какую-нибудь УПП 1.1, например. Огребли все баги конфигурации, платформы, забодали их, переписали свои базы. Кое-как перелезли с 8.0 на 8.1, обросли кучей сторонних интеграций, которые в эти базы стучатся. И больше такого не хотят ни за что.

    Дак вот, обычно это очень крупные конторы, которые иногда просят обновление этих обработок под 8.1. А ручная конвертация отнимает много времени, сил, и адски демотивирует.

    Собственно, и семерка до сих пор как Ленин, всегда молодая и популярная.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *