Распаковщик / запаковщик файлов

05.03.24

Разработка - Инструментарий разработчика

Инструмент "Распаковщик / запаковщик файлов" написан полностью на чистом 1С. Реализация исключительно на работе с двоичными данными, буферами и потоками. Работает только в файловом варианте на платформе 8.3.9 и выше х64. Протестировано на платформе 8.3.23.1739.

Скачать файлы

Наименование Файл Версия Размер
Распаковщик / запаковщик файлов:
.epf 83,08Kb
81
.epf 1.1.6.1 83,08Kb 81 Скачать

Предыстория:

Многим известна утилита v8unpack, которая способна распаковывать и запаковывать разные форматы файлов, таких как epf, erf и cf. Однако, в процессе разработки столкнулись с проблемами, связанными с ошибками хеш-сумм файлов при запаковке файлов *.cfe. Кроме того, утилита не может работать с файлами *.cfu и т.д.

Решил отказаться от использования утилиты v8unpack в пользу 1С. В 1С есть параметры, например, DumpExternalDataProcessorOrReportToFiles, DumpConfigToFiles и т.д., которые могут быть использованы для этой цели. Однако, они имеют недостаток - без указания параметров подключения к информационной базе "/F <база> /N <пользователь> /P <пароль>" происходит некорректная запаковка (ссылки на реквизиты теряются), пропадают заимствованные объекты после выгрузки-загрузки, изменяются права у всех ролей и т.д. 

Позже нашел описание формата файлов *.epf, *.erf, *.cf и т.д. и обработку, которая работает с контейнером 1с, но возникла проблема - его не стало, и в ней не было распаковки нового формата файла, запаковки файлов (алгоритма сжатия deflate) и медленный алгоритм распаковки inflate. Поэтому было решено обратиться к другим авторам и собрать по частям все расширения файлов. В результате написал распаковщик файлов и наполовину запаковщик файлов.

Инструкция:

  1. Выберите файл 1с (bin, epf, erf, cf, cfe, cfu, hbk, res, efd, dt, 1cd, 1cm).
  2. Нажмите кнопку "Распаковать", чтобы распаковать файл в указанную папку.
  3. Откройте папку, нажав на кнопку "Открыть" рядом с полем "Каталог". При распаковке файла данные будут загружены в папки "Расп" (распакованные файлы) и "Доп" (дополнительные файлы).
  4. Если нужно, установите флажки "Извлечь конфигурации поставщиков" и т.д., а также "Не создавать копию" и т.д.
  5. Нажмите кнопку "Запаковать", чтобы запаковать содержимое распакованного файла из папки в результирующий файл 1с (bin, epf, erf, cf, cfe, cfu, hbk) с добавкой "_зап" в имени.

Заметки из Зазеркалья:

ИТС:

Описание формата файлов:

Выражаю благодарность авторам за описания формата файлов!

Список публикаций, использованных при разработке:

 
 Замеры тестов

Замеры по времени проводились на машине 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
41071/6142

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) - распаковать можно любые файлы.
  • Добавлена возможность извлекать вложенные контейнеры.

 

разборка распаковка извлечение запаковка упаковка сборка bin epf erf cf cfe cfu hbk res efd dt 1cd 1cm

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122180    670    389    

714

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 15300 руб.

06.10.2023    7298    21    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8000 руб.

10.11.2023    3546    11    1    

34

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177760    1073    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99349    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18118    6    8    

40

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28111    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23605    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Borisych 503 10.07.22 11:32 Сейчас в теме
Как применять эту разработку?
31. ZhokhovM 724 08.09.22 13:49 Сейчас в теме
(1)инструкция в публикации.
4. fishca 1254 20.07.22 17:08 Сейчас в теме
7. SerVer1C 748 27.07.22 13:49 Сейчас в теме
CF запакует и создаст валидный конфиг. файл для 1с ?
30. ZhokhovM 724 08.09.22 13:47 Сейчас в теме
9. SerVer1C 748 27.07.22 13:52 Сейчас в теме
>>> "Файл - можно выбрать файл формата ..., dt." - вот так просто можно распаковать ЛЮБУЮ версию DT и заново запаковать???
10. ZhokhovM 724 27.07.22 14:15 Сейчас в теме
(9)Нет, реализован распаковщик dt версии 0 или 1(для платформ 8.0 и 8.1). Упаковщика dt нет.
29. Steelvan 302 25.08.22 11:04 Сейчас в теме
Приветствую сообщество !

Скачал обработку для целей автоматического создания обработок кодом 1Ски без внешних компонент.

Почему интересует именно встроенный код 1Ски ?

Первое:
Это избавление от сторонних зависимостей.

Второе:
Работа на линуксе.
Допускаю, что в один непрекрасный момент по вине наглов нам придется массово переходить на линуксоснованные оси.

---

Сама обработка работает как надо для моих целей сборки epf файлов.
puga1chev; ZhokhovM; +2 Ответить
32. puga1chev 24.10.22 15:10 Сейчас в теме
Подскажите:
1. после покупки обработки, выходящие обновления будут платные?
2. cfe в режиме совместимости 8.3.17 получится обрабатывать? (извиняюсь, не читал описание форматов)
33. ZhokhovM 724 24.10.22 15:13 Сейчас в теме
(32)
Подскажите:
1. после покупки обработки, выходящие обновления будут платные?
2. cfe в режиме совместимости 8.3.17 получится обрабатывать? (извиняюсь, не читал описание форматов)
Ответил в ЛС.
puga1chev; +1 Ответить
34. user711584_y475 02.12.22 14:55 Сейчас в теме
Версия 1.1.1.3 не работает на управляемых формах, и в тонком и в толстом клиенте.
Прикрепленные файлы:
35. ZhokhovM 724 02.12.22 15:02 Сейчас в теме
(34)Напишите в ЛС, отвечу.
36. elso_programmist 04.12.22 18:04 Сейчас в теме
словил ошибку
Недопустимое значение аргумента функции
Неверный формат шестнадцатеричной строки
[core83 - src\Numeric.cpp (3460)]
{ВнешняяОбработка.ZhokhovM_РаспаковщикЗапаковщикФайлов.МодульОбъекта(3237)}: ДлинаБлока = ЧислоИзШестнадцатеричнойСтроки("0x"+Чтение.ПрочитатьСимволы(8));
{ВнешняяОбработка.ZhokhovM_РаспаковщикЗапаковщикФайлов.МодульОбъекта(3110)}: ПотокОглавления = ПолучитьПотокИзКонтейнера(Поток,,СтарыйФормат);
{ВнешняяОбработка.ZhokhovM_РаспаковщикЗапаковщикФайлов.МодульОбъекта(1369)}: РаспаковатьПотокВКаталог(ПотокКонтейнера, п_Параметры.Каталог, ФайлыУпакованы, п_Параметры.РасширениеФайла);
{ВнешняяОбработка.ZhokhovM_РаспаковщикЗапаковщикФайлов.МодульОбъекта(26)}: РаспаковкаФайлаBIN_EPF_ERF_CF_CFE_CFU_HBK(п_Параметры);
{ВнешняяОбработка.ZhokhovM_РаспаковщикЗапаковщикФайлов.Форма.ФормаУправляемая.Форма(53)}: п_Объект.Распаковать();
{ВнешняяОбработка.ZhokhovM_РаспаковщикЗапаковщикФайлов.Форма.ФормаУправляемая.Форма(44)}: РаспаковатьНаСервере();

по причине:
Недопустимое значение аргумента функции
Неверный формат шестнадцатеричной строки
[core83 - src\Numeric.cpp (3460)]
37. ZhokhovM 724 04.12.22 21:08 Сейчас в теме
(36)Напишите в ЛС, отвечу.
38. dhurricane 12.12.22 15:24 Сейчас в теме
При открытии ошибка:
Ошибка инициализации модуля: ВнешняяОбработка.ZhokhovM_РаспаковщикЗапаковщикФайлов.МодульОбъекта
по причине:
Ошибка при вызове конструктора (COMОбъект)
{ВнешняяОбработка.ZhokhovM_РаспаковщикЗапаковщикФайлов.МодульОбъекта(5905)}:RegExp = Новый COMОбъект("VBScript.RegExp");

по причине:
COM-объекты поддерживается только в операционных системах Windows
39. пользователь 12.12.22 22:29
Сообщение было скрыто модератором.
...
40. пользователь 12.12.22 23:02
Сообщение было скрыто модератором.
...
49. ZhokhovM 724 05.06.23 12:02 Сейчас в теме
(38)В версии 1.1.2.4 была добавлена проверка регулярных выражений без внешних компонентов по ссылке Регулярные выражения без внешних компонентов? Легко!. Так же будет переделана проверка регулярных выражений без внешних компонентов по ссылке Поддержка регулярных выражений во встроенном языке.
41. MarryJane 31 26.02.23 14:17 Сейчас в теме
Скажите, а можно ли понять где находится пароль на модуль.
42. ZhokhovM 724 26.02.23 14:36 Сейчас в теме
(41)Файл text содержит исходный текст модуля, зашифрованный ключом, полученным из пароля. Ни пароль, ни ключ шифрования 1С не хранит, поэтому, не зная пароль, расшифровать исходный текст нельзя.
43. user1830299 06.03.23 08:39 Сейчас в теме
Подскажите пожалуйста, после извлечения конфигурации из файла 1Cv8.1CM в конфигурации отсутствует код модуля общей команды. Сама команда есть, а кода в модуле нет.
44. ZhokhovM 724 06.03.23 08:42 Сейчас в теме
45. vovafr1 4 08.04.23 20:40 Сейчас в теме
добрый день, извлечь из dt базу можно? через конфигуратор не загрузить (большая)
46. ZhokhovM 724 08.04.23 21:34 Сейчас в теме
(45)добрый. Пишите в лс, отвечу.
47. vovafr1 4 08.04.23 21:41 Сейчас в теме
(46) есть dt размер 9,5 гиг выгрузил из sql при загрки в файловую более 15 гиг не разворачивает, при загрузке в sql ошибка, хотел попытаться в файловой починить
Прикрепленные файлы:
51. Borisych 503 12.07.23 13:34 Сейчас в теме
(47) эту проблему можно решить при загрузке в PostgreSQL
Необходимо создать функцию (триггер вроде), которая перед записью будет отсекать ошибки
Сам не делал, видел статью. Поищите. Либо здесь, либо на мисте
48. vovafr1 4 08.04.23 21:42 Сейчас в теме
реально база около 50гиг
50. пользователь 12.07.23 09:37
Сообщение было скрыто модератором.
...
52. vitek1 27.11.23 09:22 Сейчас в теме
файл мобильного приложения 1CM полностью распаковывается со всеми кодами модулей? Можно ли с помощью этого инструмента восстановить файл конфигурации cf по файлу 1CM, если исходная конфигурация потеряна?
53. ZhokhovM 724 27.11.23 11:18 Сейчас в теме
(52) С помощью инструмента можно извлекать только cf-файл мобильного приложения.
54. vitek1 27.11.23 15:51 Сейчас в теме
(53) мне и нужна конфигурация. Данные не нужны. Получается смогу вытащить этим инструментом?
55. vitek1 27.11.23 16:09 Сейчас в теме
Скачал, попробовал распаковать файл 1CM. Получил cf файл. Он открывается, есть метаданные и код модулей форм, но нет кода общих модулей. А мне именно они нужны были
56. ZhokhovM 724 27.11.23 17:12 Сейчас в теме
Оставьте свое сообщение