Skip to content

Утилита работы с файлами CF/CFE/CFU/EPF/ERF и подобными

Notifications You must be signed in to change notification settings

pasha1st/pfCFTools

Repository files navigation

pfCFTool - утилита работы с файлами CF/CFE/CFU/EPF/ERF и подобными

Внимание! Официально 1С не описывала данный формат файлов, претензии не принимаются.

Powered by Osminog project

Создано при поддержке проекта Осьминог - решение всех вопросов с 1С

Утилита pfCFTools предназначена для распаковки/упаковки файлов со структурой как у CF. Является аналогом известной V8Unpack. Работает в режиме командной строки. Есть поддержка файлов CFU

Утилита предназначена для технических специалистов, например для целей восстановления поврежденных баз данных, диагностики и исправления целостности конфигураций. При разработке во многом вдохновлялся утилитой V8Unpack, но делал под свои нужды, в первую очередь для диагностики и исправления ошибок. Для компиляции требуется Free Pascal 3.0.2+. Проверено на Win32/Win64/Linux64/macOS64

Кратко о формате CF:

Данный формат - формат-"контейнер", может содержать в себе несколько файлов без иерархии. При необходимости иерархия может достигаться включением файлов-контейнеров. Файлы конфигураций и расширений CF/CFE и обработок EPF/ERF обычно содержат дополнительно сжатые файлы по алгоритму deflate. Файлы обновлений CFU сами сжаты алгоритмом deflate, после распаковки представляют собой контейнер несжатых объектов. Изначальный формат ограничивал размер контейнера в 2Гб, поэтому некоторое время назад 1С обновила формат, убрав ограничение на общий размер контейнера. Что интересно, в обновленном формате часто (но не обязательно) присутствует "заглушка" в виде почти пустого контейнера в старом формате.

Кратко о формате CFU:

В файлах CFU распространяются обновления для конфигураций 1С. В отличие от файлов CF сжимаются не объекты внутри контейнера, а сам контейнер. Если файл распаковать (например с помощью данной утилиты pf1CTool inflate 1Cv8.cfu 1Cv8.cfu.unp ), на выходе будет корректный файл формата CF.

Параметры командной строки:

При запуске без параметров программа показывает краткую справку о возможных параметрах.

Команды:

-h | --help | help 
показать краткую справку о параметрах и выйти
-l | list <file>
показать список файлов в контейнере "file"
-u | unpack <file>
распаковать (извлечь файлы) контейнер "file"
При распаковке сжатых объектов с опцией "-c deflate" разжатые объекты получают расширение .deflate
При распаковке в опцией "-r" вложенные контейнеры распаковываются как подкаталоги
При распаковке контейнера в новом формате "заглушка" сохраняется в файл ".stub"
-p | pack <file> 
 упаковать контейнер "file".
-t | test <file>
протестировать контейнер "file", аналогично распаковке без сохранения файлов`
compare <file1> <file2>
сравнить контейнеры "file1" и "file2"
Если объект в контейнере отсутствует - выводится <missed>
Одинаковые объекты отмечаются как equal, различные different
Если объекты сжаты - распаковываются и сравниваются
convert <file1> <file2> 
конвертировать формат контейнера "file1" и сохранить как "file2". См. опции -cv и -cnv
inflate <file1> <file2> 
разжать произвольный файл "file1", сжатый алгоритмом deflate, и сохранить как "file2"
deflate <file1> <file2>
сжать произвольный файл "file1" алгоритмом deflate, и сохранить как "file2"
cfuinfo <file.cfu> 
Вывести краткую информацию о файле обновления CFU. 
Включает имя и версию конфигурации, и конфигурации к которым применимо обновление
cfupdate <file1.cf> <file2.cfu> <file3.cf> 
Применить файл обновления file2.cfu к файлу file1.cf и сохранить результат как file3.cf

Опции:

-force
применимо для команды cfupdate - отключает проверку применимости файла обновления к конфигурации
-d <dir>
указывает путь для распаковки контейнера/путь к файлам для упаковки в контейнер
-r
рекурсивная обработка, применимо для распаковки контейнера
-c raw|deflate|auto
обработка сжатых файлов в контейнере - использовать как есть (raw), считать сжатыми (deflate), авторежим
-cv 0|auto|1|classic|2|new 
использовать формат контейнера входного файла - авто, старый, новый
-cnv 0|auto|1|classic|2|new 
использовать формат контейнера выходного файла контейнера - авто, старый, новый.
При конвертации "авто" меняет формат исходного контейнера на противоположный.
При применении обновления "авто" использует формат исходного контейнера
-stub <file>
использовать указанный файл в качестве "заглушки" для контейнера нового формата. По умолчанию  используется встроенная заглушка.
Только для отладки
-nostub
не использовать "заглушку" для контейнера нового формата
-M <mask>
Использовать DOS-подобную маску файлов (вида *.*) при распаковке или листинге контейнера
-m <regexp> 
Использовать регулярное выражение как маску файлов при распаковке или листинге контейнера

Во время работы при конвертации контейнеров или применении обновления активно используются временные файлы. Операции распаковки, упаковки и применения обновления показывают прогресс выполнения.

Примеры:

pfCFTool -l 1Cv8.cf -M ver* 
Вывести список объектов с именами начинающимися на "ver"
pfCFTool -u 1Cv8.cf -m ^.{1,9}$ -c auto -d .\unp 
Распаковать с разжатием в каталог unp объекты с именами не длиннее 9 символов
pfCFTool -u 1Cv8.cf -c auto -d .\unp -r 
Распаковать контейнер с разжатием в каталог unp с распаковкой вложенных контейнеров
pfCFTool -p 1Cv8.cf -c auto -d .\unp -r 
Упаковать обратно контейнер с автоматическим сжатием из каталога unp с упаковкой вложенных контейнеров
pfCFTool -t 1Cv8.cf -c deflate 
Протестировать контейнер с разжатием объектов. Утилита сообщит о "битых" объектах 
pfCFTool compare 1Cv8.cf 1Cv8-2.cf -c deflate 
Сравнить содержимое двух контейнеров с разжатием объектов 
pfCFTool convert 1Cv8.cf 1Cv8-2.cf -cv new -cnv 1 
Изменить формат контейнера 1Cv8.cf из нового в старый, результат записать как 1Cv8-2.cf 
pfCFTool inflate root root.txt 
Разжать сжатый алгоритмом deflate файл "root", результат сохранить как root.txt 
pfCFTool deflate root.txt root 
Сжать алгоритмом deflate файл "root.txt", результат сохранить как "root" 
pfCFTool cfupdate 1Cv8.cf 1cv8.cfu 1Cv8-new.cf 
Применить файл обновления 1Cv8.cfu к конфигурации 1Cv8.cf, результат сохранить как 1Cv8-new.cf 
pfCFTool cfuinfo 1cv8.cfu 
Получить информацию об обновлении. Результат выглядит примерно так: 
Conf   : БухгалтерияПредприятияБазовая
Author : Фирма "1С"
Version: 1.6.21.6
Delete : 91
Insert : 3806
Root   : e0666db2-45d6-49b4-a200-061c6ba7d569
ReleaseID  : 80095800-cdbf-4398-b132-4771464b119d 1564a6c8-0001-0000-18a3-f400bce61200
Updates for:
 1 БухгалтерияПредприятияБазовая 1.6.20.6 07b4cfe0-9b02-424a-8271-60d424a67ef8

Не забываем сказать "спасибо"

BTC 13MfKnF2Db4CVReAhTaCqW6NrFiwwjtH3C ЮMoney (в т.ч. картами)

About

Утилита работы с файлами CF/CFE/CFU/EPF/ERF и подобными

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages