Предыстория:
Многим известна утилита v8unpack, которая способна распаковывать и запаковывать разные форматы файлов, таких как epf, erf и cf. Однако, в процессе разработки столкнулись с проблемами, связанными с ошибками хеш-сумм файлов при запаковке файлов *.cfe. Кроме того, утилита не может работать с файлами *.cfu и т.д.
Решил отказаться от использования утилиты v8unpack в пользу 1С. В 1С есть параметры, например, DumpExternalDataProcessorOrReportToFiles, DumpConfigToFiles и т.д., которые могут быть использованы для этой цели. Однако, они имеют недостаток - без указания параметров подключения к информационной базе "/F <база> /N <пользователь> /P <пароль>" происходит некорректная запаковка (ссылки на реквизиты теряются), пропадают заимствованные объекты после выгрузки-загрузки, изменяются права у всех ролей и т.д.
Позже нашел описание формата файлов *.epf, *.erf, *.cf и т.д. и обработку, которая работает с контейнером 1с, но возникла проблема - его не стало, и в ней не было распаковки нового формата файла, запаковки файлов (алгоритма сжатия deflate) и медленный алгоритм распаковки inflate. Поэтому было решено обратиться к другим авторам и собрать по частям все расширения файлов. В результате написал распаковщик файлов и наполовину запаковщик файлов.
Инструкция:
- Выберите файл 1с (bin, epf, erf, cf, cfe, cfu, hbk, res, efd, dt, 1cd, 1cm).
- Нажмите кнопку "Распаковать", чтобы распаковать файл в указанную папку.
- Откройте папку, нажав на кнопку "Открыть" рядом с полем "Каталог". При распаковке файла данные будут загружены в папки "Расп" (распакованные файлы) и "Доп" (дополнительные файлы).
- Если нужно, установите флажки "Извлечь конфигурации поставщиков" и т.д., а также "Не создавать копию" и т.д.
- Нажмите кнопку "Запаковать", чтобы запаковать содержимое распакованного файла из папки в результирующий файл 1с (bin, epf, erf, cf, cfe, cfu, hbk) с добавкой "_зап" в имени.
Заметки из Зазеркалья:
- Развитие средств работы с двоичными данными
- Расширение функциональности работы с двоичными данными
- Поддержка регулярных выражений во встроенном языке
ИТС:
- Обязательные таблицы информационной базы
- Размещение данных 1С:Предприятия 8. Таблицы и поля
- Механизм быстрого частичного перевода ресурсов платформы
Описание формата файлов:
- Формат 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
Выражаю благодарность авторам за описания формата файлов!
Список публикаций, использованных при разработке:
- Распаковщик
- Сжатие/распаковка данных
- Yard
- Антидекомпилятор
- Просмотр ресурсов
- 1CDBin
- YellowPacker
- Регулярные выражения без внешних компонент? Легко!
Замеры по времени проводились на машине i7-10700k + SSD.
Версия 1.1.5.1:
Файл |
Версия |
Описание |
Размер файла |
Распаковка |
Выгружено файлов/папок |
Запаковка |
bin | - | модуль | 349 КБ | 000:00:00:016 | 3/2 | 000:00:00:016 |
epf | 80320 | обработка | 2,04 МБ | 000:00:00:234 | 63/3 | 000:00:00:231 |
erf | 80320 | отчет | 6,85 КБ | 000:00:00:015 | 10/3 | 000:00:00:016 |
cf | 80314 80317 |
конфигурация | 576 МБ 1,36 ГБ |
000:03:33:581 000:04:46:295 |
36299/5362 |
000:02:23:717 000:02:58:424 |
cfe | 80309 | расширение конфигурации | 7,38 МБ | 000:00:09:523 |
1492/295 |
000:00:03:902 |
cfu | - | обновление конфигурации | 154 МБ | 000:00:14:743 |
13357/1785 |
000:00:35:957 |
hbk |
- | справочная информация | 37,2 МБ | 000:00:00:062 | 7/2 | 000:00:00:101 |
res | - | ресурс | 38,0 МБ | 000:00:01:901 | 237/2 | - |
efd | - | архив шаблонов конфигураций | 1,40 ГБ | 000:00:11:056 | 83/28 | - |
dt |
8.1 (1) 8.3 (3) |
информационная база |
95,4 МБ 728 МБ |
000:02:13:851 000:05:48:643 |
6706/6 34597/4 |
- - |
1cv8.1cd | 8.3.8.0 | база данных | 1,64 ГБ | 000:03:24:117 | 34627/16 | - |
1cv8ddb.1cd | - | хранилище конфигурации | - | - | - | - |
1cv8.1cm | 8.3.8.0 | мобильное приложение | 2,41 МБ | 000:00:00:516 | 35/17 | - |
10.08.2023 - Версия 1.1.6.1:
- Добавлена возможность извлечь конфигурации поставщиков (основное, базы данных) из файла *.dt формата 2 и 3.
- Исправлена ошибка "Неизвестный тип поля: VB" при распаковке файла 1cv8tmp.1cd.
26.07.2023 - Версия 1.1.5.1:
- Добавлена возможность извлечь основную конфигурацию и конфигурацию базы данных из файла *.dt формата 2 и 3.
11.07.2023 - Версия 1.1.4.1:
- Полностью переписан "с нуля" парсер файла *.dt формата 0 и 1.
- При извлечении текстового формата файла из файла *.dt формата 2 и 3 кавычки внутри текста удваиваются.
- Упразднен распаковщик / запаковщик архивов *.docx, *.xlsx, *.pptx, *.vsdx.
Причина:
- Не файлы 1С.
05.06.2023 - Версия 1.1.3.1:
- Добавлена возможность извлечь скобочный формат файла из файла *.dt формата 0, 1, 2 и 3.
12.12.2022 - Версия 1.1.2.4:
- Добавлена проверка регулярных выражений без внешних компонент.
- Упразднен COM объект "RegExp".
21.11.2022 - Версия 1.1.1.3:
- Добавлена возможность извлечь основную конфигурацию и конфигурацию базы данных из файла *.dt формата 0 и 1. Рекомендуемый размер файла (базы) небольшой.
- Откорректированы пути извлечения к распакованным файлам/каталогам из файла *.1cd.
12.11.2022 - Версия 1.1.0.2:
- Исправлена ошибка при открытии запакованного файла.
10.11.2022 - Версия 1.1.0.1:
- Добавлена возможность извлечь снимки конфигурации из хранилища конфигурации 1cv8ddb.1cd.
- Добавлена возможность распаковки файла *.1cm.
- Добавлен флажок "Не создавать копию". Распаковывает и запаковывает непосредственно исходный файл. В этом случае рекомендуется создавать резервную копию файла.
- Добавлена кнопка "Открыть". Открывает выбранный/запакованный файл *.epf.
- Папки "Расп"(распакованные файлы) и "Доп"(дополнительные файлы) теперь создаются в одном каталоге распаковки.
09.10.2022 - Версия 1.0.15.1:
- Добавлена возможность извлечь конфигурации поставщиков из файла *.cf.
- Добавлена возможность извлечь конфигурации и расширения конфигурации из файла *.1cd:
-основную конфигурацию;
-конфигурацию базы данных;
-конфигурации поставщиков (основное);
-конфигурации поставщиков (базы данных);
-расширения конфигурации (основное);
-расширения конфигурации (базы данных). - Добавлено поле "Доп. каталог" для извлечения отдельных файлов (конфигурации, расширения конфигурации и т.д.) в дополнительный каталог.
- Добавлена возможность конвертировать файл *.cf в старый формат.
- Исправлена ошибка при запаковке файла *.cfe:
В процессе работы с объектом 'ЗаписьДанных' произошло изменение позиции нижележащего потока извне.
14.09.2022 - Версия 1.0.14.8:
- Добавлена возможность запаковки файла *.cfu.
- Добавлена возможность распаковки файла *.1cd версии 8.0.3.0 и 8.0.5.0.
08.09.2022 - Версия 1.0.13.7:
- Добавлена возможность запаковки файлов *.cf и *.cfe.
- Переделан запаковщик файлов *.epf и *.erf.
- Добавлена возможность распаковки файла *.1cd версии 8.1.0.0 и 8.2.0.0.
23.08.2022 - Версия 1.0.12.6:
- Добавлена возможность распаковки файла *.1cd версии 8.3.8.0.
22.08.2022 - Версия 1.0.11.5:
- Реализована обработка под обычные формы.
14.08.2022 - Версия 1.0.10.4:
- Добавлена возможность распаковки файла *.1cd версии 8.2.14.0.
11.08.2022 - Версия 1.0.9.3:
- Добавлена возможность запаковки архивов *.docx, *.xlsx, *.pptx, *.vsdx.
- Ускорена запаковка файлов.
10.08.2022 - Версия 1.0.8.2:
- Добавлена возможность запаковки файла *.hbk.
09.08.2022 - Версия 1.0.7.2:
- Добавлена возможность распаковки файла *.cf версии 80316.
- Добавлена возможность распаковки архивов *.docx, *.xlsx, *.pptx, *.vsdx.
- Скорректировано построение структуры папок файла *.efd.
28.07.2022 - Версия 1.0.6.1:
- Скорректирован вывод времени. Пример: 2 д. 1 ч. 2 мин. 40,44 сек.
27.07.2022 - Версия 1.0.6.0:
- Добавлена возможность распаковки файла. *.res
26.07.2022 - Версия 1.0.5.0:
- Добавлена возможность распаковки файла *.dt формата 0 и 1. Чем больше размер файла, тем очень очень сильно дольше проходит распаковка.
- Добавлена возможность запаковки файла *.epf и *.erf.
- Упразднен переключатель алгоритма распаковки "обратное от lZ77 и хаффмана". По умолчанию выбран алгоритм распаковки "обратное от deflate ZIP".
- Упразднен пункт "Извлекать вложенные контейнеры". Извлекать вложенные контейнеры теперь будет всегда.
- Добавлен вывод времени распаковки / запаковки (дни, часы, минуты, секунды).
- Ускорена распаковка файлов.
13.07.2022 - Версия 1.0.4.0:
- Добавлена возможность запаковки файла *.bin.
- Добавлена возможность запаковать файлы средствами 1С без внешних компонентов и сторонних программ.
10.07.2022 - Версия 1.0.3.0:
- Добавлена возможность распаковки файла *.efd.
09.07.2022 - Версия 1.0.2.0:
- Добавлена возможность распаковки файла *.bin.
08.07.2022 - Версия 1.0.1.0:
- Добавлена возможность распаковки файлов *.cfu и *.hbk.
08.07.2022 - Версия 1.0.0.0:
- Добавлена возможность распаковки файлов *.epf, *.erf, *.cf и *.cfe.
- Добавлена возможность распаковать файлы средствами 1С без внешних компонентов и сторонних программ.
- Добавлена возможность выбора алгоритма распаковки. Доступны 2 переключателя: обратное от lZ77 и хаффмана - распаковать можно только небольшие файлы(чем больше размер файла, тем очень очень сильно дольше проходит распаковка); обратное от deflate zip (SerVer1C) - распаковать можно любые файлы.
- Добавлена возможность извлекать вложенные контейнеры.