Исходники: 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 за скрипт попроцедурной нарезки текста модуля (использован в другом проекте, являющемся базой для данного).
В 8.2 изменилось обращение к метаданным, что-то вроде этого(сейчас искать не буду) :
8.2 Метаданные.Справочники.МойСправочник.СтандартныеРеквизиты.Код
8.1 Метаданные.Справочники.МойСправочник..Код
и бог знает что еще. Это учитывается?
(1) Ни в коем случае. Код переносится как есть. Дальше его можно регулярными выражениями допилить.
Главная проблема в нашем случае была именно с формами, элементами управления, привязками и т.д. Собственно, эта задача и решалась.
Навскидку, с 8.1 по 8.2 изменились параметры у методов ПодключитьВнешнююОбработку, ПодключитьВнешнююКомпоненту, строковое представление булева («Ложь» -> «Да»). Вот про метаданные не помню, кажется, с ними как раз все хорошо.
Наверное, это полезно, но ЗАЧЕМ?
(3) Некрофилия ))
Если серьезно, то у нас есть около 10 внешних обработок для 8.2, в каждой десятки форм и в среднем по 50 000 строк кода.
И несколько тысяч клиентов, которые ими пользуются.
Где-то 1-2% из них сидят на платформе 8.1 и ни в какую не собираются с нее слезать. Как правило, это крупные предприятия, которые внедряли какую-нибудь УПП 1.1, например. Огребли все баги конфигурации, платформы, забодали их, переписали свои базы. Кое-как перелезли с 8.0 на 8.1, обросли кучей сторонних интеграций, которые в эти базы стучатся. И больше такого не хотят ни за что.
Дак вот, обычно это очень крупные конторы, которые иногда просят обновление этих обработок под 8.1. А ручная конвертация отнимает много времени, сил, и адски демотивирует.
Собственно, и семерка до сих пор как Ленин, всегда молодая и популярная.