Предыстория:
Многие знают об утилите v8unpack, которая используется для работы с файлами epf, erf и cf. Однако в процессе разработки возникли некоторые проблемы, связанные с новым форматом, ошибками хеш-сумм и т.д.
Решил отказаться от использования утилиты в пользу 1С. В 1С есть параметры, например, DumpConfigToFiles и т.д., которые могут быть использованы для этой цели. Однако, они тоже имеют недостаток: без указания параметров подключения к информационной базе "/F <база> /N <пользователь> /P <пароль>" происходит некорректная запаковка (ссылки на реквизиты теряются), пропадают заимствованные объекты, изменяются права у ролей и т.д.
Позже нашел описание форматов файлов *.epf, *.erf, *.cf и обработку для работы с ними. Однако и здесь не обошлось без проблем, т.к. в обработке нет сжатия данных по алгоритму deflate, медленная распаковка данных по алгоритму inflate и т.д. В итоге написал распаковщик файлов и наполовину запаковщик файлов, ориентируясь на описания форматов файлов.
Инструкция:
- Выбрать файл.
- Нажать кнопку "Распаковать".
- Нажать кнопку "Запаковать".
Заметки:
Описание форматов файлов:
- Формат epf/erf файлов
- Описание формата файлов конфигурации (CF, EPF, ERF)
- Пример демонстрирующий реализацию описанного алгоритма
- Описание CF-формата
- Описание формата контейнера 1С (CF, EPF, ERF, CFE)
- Изменения формата файлов конфигурации (CF) в 8.3.16
- Описание формата EFD-файлов
- Формат файлов выгрузки DT
- Краткое описание формата файлов *.1CD (часть 1, часть 2)
- Формат баз 1CD - классические и 8.3.8
- Файловые базы *.1CD. Физическая структура
- Краткое описание формата файлов *.1CM
Список инструментов, использованных при разработке:
1.4.3
Исправлена ошибка при вызове метода контекста (Сдвинуть).
1.4.2
Проведена небольшая оптимизация кода:
- Нерекомендуемые синхронные вызовы исключены из модулей форм.
- Передача константы/значения напрямую без промежуточных переменных.
- Устаревший метод "Найти" заменен на новый.
Исправлены выявленные ошибки.
1.4.1
Сведения о внешней обработке перенесены в заголовок формы.
Проведена небольшая оптимизация кода:
- Конкатенации строк, сложные для восприятия, были заменены на функцию СтрШаблон.
- Устаревшие конструкторы ЗаписьZipФайла и ЧтениеZipФайла заменены на новые.
- Устаревший метод Base64Значение заменен на новый.
Исправлены выявленные ошибки:
- В некоторых файловых путях заменены передние слэши на обратные.
- Удалены повторяющиеся слэши из путей к файлам.
1.4.0
Теперь поддерживаются 2 формы: "Версия 8.5" и "Такси". Требуется платформа 8.5.1.1150 и выше.
Упразднена неуправляемая обычная форма.
1.3.4
Теперь deflate распаковывается в памяти без использования временных файлов.
1.3.3
Добавлена возможность сохранить объекты конфигурации или расширения конфигурации хранилища (кроме удаленных).
1.3.2
Теперь проверяет режим совместимости при сохранении расширений конфигураций базы.
1.3.1
Добавлено поле для указания номера версии хранилища при сохранении конфигурации или расширения конфигурации хранилища.
Ускорено сохранение конфигурации или расширения конфигурации хранилища в полтора раза.
1.3.0
Добавлена возможность сохранить последнее расширение конфигурации хранилища.
Вступайте в нашу телеграмм-группу Инфостарт
