Предыстория:
Многие знают об утилите v8unpack, которая используется для работы с файлами epf, erf и cf. Однако в процессе разработки возникли некоторые проблемы, связанные с новым форматом, ошибками хеш-сумм и т.д.
Решил отказаться от использования утилиты в пользу 1С. В 1С есть параметры, например, DumpConfigToFiles и т.д., которые могут быть использованы для этой цели. Однако, они тоже имеют недостаток: без указания параметров подключения к информационной базе "/F <база> /N <пользователь> /P <пароль>" происходит некорректная запаковка (ссылки на реквизиты теряются), пропадают заимствованные объекты, изменяются права у ролей и т.д.
Позже нашел описание форматов файлов *.epf, *.erf, *.cf и обработку для работы с ними. Однако и здесь не обошлось без проблем, т.к. в обработке нет сжатия данных по алгоритму deflate, медленная распаковка данных по алгоритму inflate и т.д. В итоге написал распаковщик файлов и наполовину запаковщик файлов, ориентируясь на описания форматов файлов.
Инструкция:
- Выбрать файл.
- Нажать кнопку "Распаковать".
- Нажать кнопку "Запаковать".
Описание форматов файлов:
- Описание формата файлов конфигурации (CF, EPF, ERF)
- Описание CF-формата
- Изменения формата файлов конфигурации (CF) в 8.3.16
- Описание формата EFD-файлов
- Формат файлов выгрузки DT
- Краткое описание формата файлов *.1CD
- Формат баз 1CD - классические и 8.3.8
- Файловые базы *.1CD. Физическая структура
- Краткое описание формата файлов *.1CM
Список инструментов, использованных при разработке:
- Сжатие/распаковка данных
- Распаковка на лету
- YellowPacker
- Распаковщик EFD файлов
- Просмотр ресурсов
- 1CDBin
1.4.6
Теперь при распаковке efd устанавливает файлам корректное время изменения.
1.4.5
Проведена небольшая оптимизация кода:
- Разделители путей "\" заменены на функцию ПолучитьРазделительПути.
Исправлены выявленные ошибки.
1.4.4
Добавлена возможность запаковки dt.
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
Добавлена возможность сохранить последнее расширение конфигурации хранилища.
Вступайте в нашу телеграмм-группу Инфостарт