-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathreadme.htm
125 lines (123 loc) · 11.7 KB
/
readme.htm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Утилита работы с файлами CF/CFE/CFU/EPF/ERF и подобными</title>
</head>
<body>
<a href=https://osminog.biz><img src=promo-osminog.png></a><br>
Создано при поддержке проекта - решение всех вопросов с 1С
<p>
Утилита pfCFTools предназначена для распаковки/упаковки файлов со структурой как у CF. Является аналогом известной V8Unpack. Работает в режиме командной строки. Есть поддержка файлов CFU<br>
Для компиляции требуется Free Pascal 3.0.2+. Проверено на Win32/Win64/Linux64/macOS64
</p>
<p style="color:red">
Внимание! Официально 1С не описывала данный формат файлов, претензии не принимаются.
</p>
<p>
Утилита предназначена для технических специалистов, например для целей восстановления поврежденных баз данных,
диагностики и исправления целостности конфигураций.<br>
При разработке во многом вдохновлялся утилитой V8Unpack, но делал под свои нужды, в первую очередь для диагностики и исправления ошибок.
</p>
<p>
Кратко о формате CF:<br>
Данный формат - формат-"контейнер", может содержать в себе несколько файлов без иерархии. <br>
При необходимости иерархия может достигаться включением файлов-контейнеров.<br>
Файлы конфигураций и расширений CF/CFE и обработок EPF/ERF обычно содержат дополнительно сжатые файлы по алгоритму deflate.<br>
Файлы обновлений CFU сами сжаты алгоритмом deflate, после распаковки представляют собой контейнер несжатых объектов.<br>
Изначальный формат ограничивал размер контейнера в 2Гб, поэтому некоторое время назад 1С обновила формат, убрав ограничение на общий размер контейнера.<br>
Что интересно, в обновленном формате часто (но не обязательно) присутствует "заглушка" в виде почти пустого контейнера в старом формате.
</p>
<p>
Кратко о формате CFU:<br>
В файлах CFU распространяются обновления для конфигураций 1С. В отличие от файлов CF сжимаются не объекты внутри контейнера, а сам контейнер.
Если файл распаковать (например с помощью данной утилиты pf1CTool inflate 1Cv8.cfu 1Cv8.cfu.unp ), на выходе будет корректный файл формата CF.
</p>
<p>
При запуске без параметров программа показывает краткую справку о возможных параметрах.<br>
Параметры командной строки:<br>
<table>
<tr><td>Команды:</td></tr>
<tr><td>-h | --help | help</td><td> показать краткую справку о параметрах и выйти</td></tr>
<tr><td>-l | list <file> </td><td> показать список файлов в контейнере "file"</td></tr>
<tr><td>-u | unpack <file> </td><td> распаковать (извлечь файлы) контейнер "file"<br>
При распаковке сжатых объектов с опцией "-c deflate" разжатые объекты получают расширение .deflate<br>
При распаковке в опцией "-r" вложенные контейнеры распаковываются как подкаталоги<br>
При распаковке контейнера в новом формате "заглушка" сохраняется в файл ".stub" </td></tr>
<tr><td>-p | pack <file> </td><td> упаковать контейнер "file".</td></tr>
<tr><td>-t | test <file> </td><td> протестировать контейнер "file", аналогично распаковке без сохранения файлов</td></tr>
<tr><td>compare <file1> <file2> </td><td> сравнить контейнеры "file1" и "file2"<br>
Если объект в контейнере отсутствует - выводится <missed><br>
Одинаковые объекты отмечаются как equal, различные different<br>
Если объекты сжаты - распаковываются и сравниваются
</td></tr>
<tr><td>convert <file1> <file2> </td><td> конвертировать формат контейнера "file1" и сохранить как "file2". См. опции -cv и -cnv</td></tr>
<tr><td>inflate <file1> <file2> </td><td> разжать произвольный файл "file1", сжатый алгоритмом deflate, и сохранить как "file2"</td></tr>
<tr><td>deflate <file1> <file2> </td><td> сжать произвольный файл "file1" алгоритмом deflate, и сохранить как "file2"</td></tr>
<tr><td>cfuinfo <file.cfu> </td><td> Вывести краткую информацию о файле обновления CFU. <br>
Включает имя и версию конфигурации, и конфигурации к которым применимо обновление</td></tr>
<tr><td>cfupdate <file1.cf> <file2.cfu> <file3.cf> </td><td> Применить файл обновления file2.cfu к файлу file1.cf и сохранить результат как file3.cf </td></tr>
<tr><td>Опции:</td></tr>
<tr><td>-force</td><td> применимо для команды cfupdate - отключает проверку применимости файла обновления к конфигурации</td></tr>
<tr><td>-d <dir></td><td> указывает путь для распаковки контейнера/путь к файлам для упаковки в контейнер</td></tr>
<tr><td>-r </td><td> рекурсивная обработка, применимо для распаковки контейнера</td></tr>
<tr><td>-c raw|deflate|auto </td><td> обработка сжатых файлов в контейнере - использовать как есть (raw), считать сжатыми (deflate), авторежим</td></tr>
<tr><td>-cv 0|auto|1|classic|2|new </td><td> использовать формат контейнера входного файла - авто, старый, новый</td></tr>
<tr><td>-cnv 0|auto|1|classic|2|new </td><td> использовать формат контейнера выходного файла контейнера - авто, старый, новый. <br>
При конвертации "авто" меняет формат исходного контейнера на противоположный.<br>
При применении обновления "авто" использует формат исходного контейнера</td></tr>
<tr><td>-stub <file> </td><td> использовать указанный файл в качестве "заглушки" для контейнера нового формата. По умолчанию используется встроенная заглушка<br>
Только для отладки.</td></tr>
<tr><td>-nostub </td><td> не использовать "заглушку" для контейнера нового формата.</td></tr>
<tr><td>-M <mask> </td><td> Использовать DOS-подобную маску файлов (вида *.*) при распаковке или листинге контейнера</td></tr>
<tr><td>-m <regexp> </td><td> Использовать регулярное выражение как маску файлов при распаковке или листинге контейнера</td></tr>
</table>
Во время работы при конвертации контейнеров или применении обновления активно используются временные файлы.<br>
Операции распаковки, упаковки и применения обновления показывают прогресс выполнения.
</p>
<p>
</p>
<p>
Примеры:<br>
pfCFTool -l 1Cv8.cf -M ver* <br>
Вывести список объектов с именами начинающимися на "ver"<br>
pfCFTool -u 1Cv8.cf -m ^.{1,9}$ -c auto -d .\unp <br>
Распаковать с разжатием в каталог unp объекты с именами не длиннее 9 символов<br>
pfCFTool -u 1Cv8.cf -c auto -d .\unp -r <br>
Распаковать контейнер с разжатием в каталог unp с распаковкой вложенных контейнеров<br>
pfCFTool -p 1Cv8.cf -c auto -d .\unp -r <br>
Упаковать обратно контейнер с автоматическим сжатием из каталога unp с упаковкой вложенных контейнеров<br>
pfCFTool -t 1Cv8.cf -c deflate <br>
Протестировать контейнер с разжатием объектов. Утилита сообщит о "битых" объектах <br>
pfCFTool compare 1Cv8.cf 1Cv8-2.cf -c deflate <br>
Сравнить содержимое двух контейнеров с разжатием объектов <br>
pfCFTool convert 1Cv8.cf 1Cv8-2.cf -cv new -cnv 1 <br>
Изменить формат контейнера 1Cv8.cf из нового в старый, результат записать как 1Cv8-2.cf <br>
pfCFTool inflate root root.txt <br>
Разжать сжатый алгоритмом deflate файл "root", результат сохранить как root.txt <br>
pfCFTool deflate root.txt root <br>
Сжать алгоритмом deflate файл "root.txt", результат сохранить как "root" <br>
pfCFTool cfupdate 1Cv8.cf 1cv8.cfu 1Cv8-new.cf <br>
Применить файл обновления 1Cv8.cfu к конфигурации 1Cv8.cf, результат сохранить как 1Cv8-new.cf <br>
pfCFTool cfuinfo 1cv8.cfu <br>
Получить информацию об обновлении. Результат выглядит примерно так: <br>
<pre>
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
</pre>
</p>
<p>
Не забываем сказать "спасибо"
<pre>
BTC 13MfKnF2Db4CVReAhTaCqW6NrFiwwjtH3C
<a href=https://yoomoney.ru/to/41001287590231>ЮMoney (в т.ч. картами)</a>
</pre>
</p>
</body>
</html>