Суть
Распаковка архивных файлов *.gz(*.gzip), сжатых по методу Deflate (в частности из интернета), встроенными средствами 1С (без применения внешних компонент).
Для ускорения загрузки сайты часто отдают данные (файлы), сжатые по методу Defate:
Content-Type: application/x-gzip
Content-Disposition: attachment; filename=*******
Встроенных классов для чтения формата *.gz(*.gzip) нет. Но ситуацию можно обойти, так как тело данного архива сжато Deflate.
Идея взята от необходимости получать/обрабатывать файлы полученные из интернета в сжатом виде.
Вдохновение взято от публикаций: //infostart.ru/public/618906/, //infostart.ru/public/844121/
Под капотом
Распаковка архивных файлов *.gz(*.gzip), сжатых по алгоритму Deflate:
1) читаем все возможные заголовки GZIP(вначале и в конце) и само сжатое тело-Deflate.
2) формируем корректный ZIP-файл:
- перерабатываем заголовки-GZIP (включая имя файла если есть в заголовке, с поддержкой кириллических символов)
- добавляем тело-Deflate
- добавляем недостающие заголовки-ZIP
3) получим чистый ZIP, читаем полученный файл стандартными средствами 1С.
Получаем
Распакованный файл, с корректным именем и содержанием.
Не вызывает ошибок, отсутствия CRC32.
Тестировалось на платформах 8.3.12 - 8.3.18, обычные формы.