Имя: Пароль:
1C
1С v8
Объект для записи ZIP-архива в поток.
0 mistergluck
 
25.02.21
17:53
Всем привет, на сайте ИТС
https://its.1c.ru/db/execobj202020#content:710:hdoc:записьzip-zipwriter
Нашел такой метод: (но конфигуратор не понимает такой код, да и сам объект ЗаписьZip)
Это планируется сделать в будущих версиях или что-то можно подключить, как в с# какую нибудь библиотеку

ЗаписьZip (ZipWriter)
Объект для записи ZIP-архива в поток.

Пример
метод СформироватьАрхив(Каталог: Файл, ВыходнойАрхив: Файл)
    исп ПотокЗаписи = ВыходнойАрхив.ОткрытьПотокЗаписи()
    пер ЗаписьZip = новый ЗаписьZip(ПотокЗаписи, "password",
        УровеньСжатияZip.Нормальный, МетодШифрованияZip.Aes256)
    
    для Файл из Каталог.Дочерние
        если Файл.Расширение == "doc"
            ЗаписьZip.Добавить(Файл.ОткрытьПотокЧтения(), Файл.Имя)
        ;
    ;

    ЗаписьZip.Записать()
;
1 ДенисЧ
 
25.02.21
17:54
ЗаписьZipФайла (ZipFileWriter)
На основании потока
Синтаксис:
Новый ЗаписьZipФайла(<Поток>, <Пароль>, <Комментарий>, <МетодСжатия>, <УровеньСжатия>, <МетодШифрования>)

Когда копируешь - внимательней надо быть )))
2 polosov
 
25.02.21
17:57
(0) Ты смотришь язык 1С:Исполнителя.
3 mistergluck
 
25.02.21
17:57
(1) зайдите по ссылке на итс
4 mistergluck
 
25.02.21
18:00
(2) Жаль.
Может кто знает тогда как поместить в Архив (в поток)

ЗаписьZip.Добавить(Файл.ОткрытьПотокЧтения(), Файл.Имя)

Двоичные данные из другого потока?
5 polosov
 
25.02.21
18:01
(4) Ты наркоман?
См. (1)
6 mistergluck
 
25.02.21
18:04
(5) Хотел, что-то вроде такого:

    Поток = новый ПотокВПамяти();
    ЗаписьТекста = новый ЗаписьДанных(Поток,"CESU-8",,,Символы.ПС);
    ЗаписьТекста.ЗаписатьСимволы("Пусть бегут неуклюже пешеходы по лужам А вода по асфальту рекой И не ясно прохожим в этот день непогожий Почему я веселый такой");
    
    ЗаписьТекста.Закрыть();

    ДвоичныеДанные = Поток.ЗакрытьИПолучитьДвоичныеДанные();
    
    
    
    ПотокZIP = новый ПотокВПамяти();
                      ZipWriter
        Сжатие = новый ЗаписьZipФайла(ПотокZIP,,,,  УровеньСжатияZIP.Максимальный);
        
        Сжатие.Добавить(Поток, РежимСохраненияПутейZIP.НеСохранятьПути);
        Сжатие.Записать();
7 polosov
 
25.02.21
18:05
(6) Да кто же тебя за руки то держит...
8 mistergluck
 
25.02.21
18:07
(7) ругается Сжатие.Добавить(Поток, РежимСохраненияПутейZIP.НеСохранятьПути);
Пробовал и так
        Сжатие.Добавить(ДвоичныеДанные.ОткрытьПотокДляЧтения(), РежимСохраненияПутейZIP.НеСохранятьПути);

Некорректное имя файла: Поток
по причине:
Файл не обнаружен 'Поток'. 2(0x00000002): Не удается найти указанный файл.
9 polosov
 
25.02.21
18:14
(8) Изначально что хочешь сделать?
Не с http-сервисами ли работаешь?
10 mistergluck
 
25.02.21
18:18
(9) да
11 polosov
 
25.02.21
18:21
(10) А дальше что?
Хочешь в gzip запихать свою байтики?
12 mistergluck
 
25.02.21
18:23
(11) да, есть код, который это делает, но записывает во временный файл. Хотел исключить запись на диск
13 polosov
 
25.02.21
18:25
(12) Не получится. Метод Добавить() у ЗаписьZipФайла ожидает только имени файла.
14 sitex
 
naïve
25.02.21
20:40
(0) Если ты хочет упаковать в HTTP запрос со сжатием GZIP средствами 1С то гугли -> gzip deflate 1C.