Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/43: Рейтинг темы: голосов - 43, средняя оценка - 4.91
 Аватар для Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
1C 8.x

Создать архив zip

16.01.2014, 19:51. Показов 9638. Ответов 55
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите почему в архив попадают только последние файлы а не все
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
МассивФайлов = НайтиФайлы(Файл, "*.txt");
    Для каждого ТекущийФайл из МассивФайлов Цикл
        ПолноеИмяФайл = СтрЗаменить(ТекущийФайл.Имя, "_",Символы.ПС);
        ИмяФайлаTXT = СтрПолучитьСтроку(ПолноеИмяФайл, 1);
        ФайлПТЗZip = "ptz.zip";
        ФайлПИТZip = "pit.zip";
        ФайлСЕГZip = "seg.zip";
        Если ИмяФайлаTXT = "пит" Тогда
            ЗаписьZIP =  Новый ЗаписьZipФайла(Файл + ?(Прав(Файл,1)="\","","\") + ФайлПИТZip);
            ЗаписьZIP.Добавить(Файл + ?(Прав(Файл,1)="\","","\") + ТекущийФайл.Имя);
            ЗаписьZIP.Записать();
        ИначеЕсли ИмяФайлаTXT = "птз" Тогда
            ЗаписьZIP =  Новый ЗаписьZipФайла(Файл + ?(Прав(Файл,1)="\","","\") + ФайлПТЗZip);
            ЗаписьZIP.Добавить(Файл + ?(Прав(Файл,1)="\","","\") + ТекущийФайл.Имя);
            ЗаписьZIP.Записать();
        ИначеЕсли ИмяФайлаTXT = "сег" Тогда
            ЗаписьZIP =  Новый ЗаписьZipФайла(Файл + ?(Прав(Файл,1)="\","","\") + ФайлСЕГZip);
            ЗаписьZIP.Добавить(Файл + ?(Прав(Файл,1)="\","","\") + ТекущийФайл.Имя);
            ЗаписьZIP.Записать();
        Иначе
            Предупреждение("Ошибка!");  
        КонецЕсли;
 
    КонецЦикла;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.01.2014, 19:51
Ответы с готовыми решениями:

ZIP-архив
1С:Предприятие 8.2. Подскажите, пожалуйста, необходимо сделать такую задачу: есть реквизит ФайлКартинки (тип ХранилищеЗначения), необходимо...

Создать zip архив
При нажатии на кнопку собирается csv файл и выдается пользователю на скачивание. Как сделать, чтоб этот файл выдавался заархивированным?...

Создать запароленый zip-архив
как создать архив zip с паролем? похоже универсального решения нет. может кто-то все же знает волшебную библиотеку?

55
 Аватар для Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
16.01.2014, 23:19  [ТС]
Студворк — интернет-сервис помощи студентам
duk337, значит тоже самое и здесь нужно сделать
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
16.01.2014, 23:20
Цитата Сообщение от Ermak27 Посмотреть сообщение
duk337, я не понимаю вы пишете что новый создается один раз, но в нем прописывается имя файла и пароль, а у меня имя файла и пароль определяется по условию, как мне заранее добавить имя файла и пароль. мне не понятно это
ВАУ!!! Наконец то вопрос по делу =))
0
 Аватар для Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
16.01.2014, 23:20  [ТС]
Dethmontt, дак файл один только помещает
0
 Аватар для duk337
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
16.01.2014, 23:22
Цитата Сообщение от Ermak27 Посмотреть сообщение
а у меня имя файла и пароль определяется по условию
ну так и ТЗ.Свернуть() тоже по условию

Добавлено через 1 минуту
Цитата Сообщение от Ermak27 Посмотреть сообщение
а у меня имя файла и пароль определяется по условию, как мне заранее добавить имя файла и пароль.
не зная условия?
1
 Аватар для Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
16.01.2014, 23:23  [ТС]
duk337, ок тогда буду записывать в тз
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
16.01.2014, 23:24
duk337, у меня закралось такое чувство, что ОН вообще не понимает что такое ЦИКЛ

Добавлено через 1 минуту
Цитата Сообщение от Ermak27 Посмотреть сообщение
Dethmontt, дак файл один только помещает
Подожди... Ты же сам написал:
мне нужно чтобы при нахождении значение пит или птз или сег создавались новые архив с этим название и помещал туда файлы начинающие с имени пит, птз и сег
0
16.01.2014, 23:26

Не по теме:

ну да, у него процессор без регистров смещения стека

0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
16.01.2014, 23:29
Проход Цикла 1.
1.1 Создали новый архив
1.2 Поместили туда файл
1.3 Записали архив
Проход Цикла 2
2.1 Создали новый архив
2.2 Поместили туда файл
2.3 Записали архив (затерся архив в первом проходе цикла)
Проход Цикла 3
и т.д. (аналогично проходу в цикле 2)

Добавлено через 1 минуту
Ermak27, Что лишнее в этом цикле?
1
 Аватар для Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
16.01.2014, 23:36  [ТС]
Dethmontt, я уже запутался
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
16.01.2014, 23:43
Цитата Сообщение от Ermak27 Посмотреть сообщение
я уже запутался
это самые азы
0
16.01.2014, 23:43

Не по теме:

Цитата Сообщение от Ermak27 Посмотреть сообщение
я уже запутался
или "ещё"?

0
 Аватар для Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
17.01.2014, 00:06  [ТС]
че такое, записал все файлы в последний архив сег

1C
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
ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("ИмяФайла",,"Имя файла");
    ТЗ.Колонки.Добавить("ПрефиксФайла",,"Префикс файла");
    ТЗ.Колонки.Добавить("ИмяАрхива",,"Имя архива");
    МассивФайлов = НайтиФайлы(Файл, "*.txt");
    Для каждого ТекущийФайл из МассивФайлов Цикл
        СтрокаТЗ = ТЗ.Добавить();
        ПолноеИмяФайл = СтрЗаменить(ТекущийФайл.Имя, "_",Символы.ПС);
        СтрокаТЗ.ИмяФайла = ТекущийФайл.Имя;
        СтрокаТЗ.ПрефиксФайла = СтрПолучитьСтроку(ПолноеИмяФайл, 1);
        Если СтрокаТЗ.ПрефиксФайла = "птз" Тогда
            СтрокаТЗ.ИмяАрхива = "ptz.zip";
        ИначеЕсли СтрокаТЗ.ПрефиксФайла = "пит" Тогда
            СтрокаТЗ.ИмяАрхива = "pit.zip";
        ИначеЕсли СтрокаТЗ.ПрефиксФайла = "сег" Тогда
            СтрокаТЗ.ИмяАрхива = "seg.zip";
        Иначе
            Предупреждение("Ошибка в имени архива!"); 
            Возврат;
        КонецЕсли; 
    КонецЦикла;
    ТЗ.Сортировать("ПрефиксФайла");
    ЗаписьZIP =  Новый ЗаписьZipФайла(Файл + ?(Прав(Файл,1)="\","","\") + СтрокаТЗ.ИмяАрхива);
    Для каждого Стр Из ТЗ Цикл
        
        Если Стр.ПрефиксФайла = "птз" Тогда
            ЗаписьZIP.Добавить(Файл + ?(Прав(Файл,1)="\","","\") + Стр.ИмяФайла);
        ИначеЕсли Стр.ПрефиксФайла = "пит" Тогда
            ЗаписьZIP.Добавить(Файл + ?(Прав(Файл,1)="\","","\") + Стр.ИмяФайла);
        ИначеЕсли Стр.ПрефиксФайла = "сег" Тогда
            ЗаписьZIP.Добавить(Файл + ?(Прав(Файл,1)="\","","\") + Стр.ИмяФайла);
        Иначе
            Предупреждение("Ошибка!");
            Возврат;
        КонецЕсли;
    КонецЦикла;
    ЗаписьZIP.Записать();
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
17.01.2014, 00:11
Посмотри на свой код еще раз и скажи сколько архивов ты создаешь в этом коде?

(Подсказка тут - https://www.cyberforum.ru/post5649498.html)
(И тут - https://www.cyberforum.ru/post5650397.html)

Добавлено через 45 секунд

Не по теме:

Ребус блин... Одно и тоже повторяем 4ую страницу...

0
 Аватар для Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
17.01.2014, 00:15  [ТС]
Dethmontt, один архив создаю
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
17.01.2014, 00:20
Цитата Сообщение от Ermak27 Посмотреть сообщение
че такое, записал все файлы в последний архив сег
Вопрос отпал?
0
 Аватар для Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
17.01.2014, 00:30  [ТС]
Dethmontt, все эта жопа, я уже не могу понять почему он не создает архивы

Добавлено через 31 секунду


Добавлено через 48 секунд
Я так и не могу понять как запихать файлы в архивы!!!!
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
17.01.2014, 00:34
Цитата Сообщение от Ermak27 Посмотреть сообщение
уже не могу понять почему он не создает архивы
Создает, сколько архивов ты написал создавать столько программа и создает... (еще раз "Новый")

Добавлено через 1 минуту
Цитата Сообщение от Ermak27 Посмотреть сообщение
Я так и не могу понять как запихать файлы в архивы!!!!
Рано еще... Ты еще не понял как архивы создать правильно и нужное количество (пока можно пустые)
1
 Аватар для duk337
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
17.01.2014, 00:36
Поразительно! Предыдущую тему добили - и 100 постов не прошло. А тут то же самое!!!
ТЗ
копия
свернуть
по копии цикл
создание архива
по ТЗ отбор
цикл по отбору
запись архива.

На рекорд идём?
1
 Аватар для Ermak27
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
17.01.2014, 01:10  [ТС]
Dethmontt, вот создаю три архива
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Если Стр.ПрефиксФайла = "птз" Тогда
            ЗаписьZIP.Добавить(Файл + ?(Прав(Файл,1)="\","","\") + Стр.ИмяФайла);
            ЗаписьZIP.Записать();
        ИначеЕсли Стр.ПрефиксФайла = "пит" Тогда
            ЗаписьZIP =  Новый ЗаписьZipФайла(Файл + ?(Прав(Файл,1)="\","","\") + Стр.ИмяАрхива);
            ЗаписьZIP.Добавить(Файл + ?(Прав(Файл,1)="\","","\") + Стр.ИмяФайла);
            ЗаписьZIP.Записать();
            
        ИначеЕсли Стр.ПрефиксФайла = "сег" Тогда
            ЗаписьZIP =  Новый ЗаписьZipФайла(Файл + ?(Прав(Файл,1)="\","","\") + Стр.ИмяАрхива);
            ЗаписьZIP.Добавить(Файл + ?(Прав(Файл,1)="\","","\") + Стр.ИмяФайла);
            ЗаписьZIP.Записать();
            
        Иначе
            Предупреждение("Ошибка!");
            Возврат;
        КонецЕсли;
они создаются и записывает последние файлы только

Добавлено через 7 минут
duk337, так вы имели ввиду

1C
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
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("ИмяФайла",,"Имя файла");
    ТЗ.Колонки.Добавить("ПрефиксФайла",,"Префикс файла");
    ТЗ.Колонки.Добавить("ИмяАрхива",,"Имя архива");
    МассивФайлов = НайтиФайлы(Файл, "*.txt");
    Для каждого ТекущийФайл из МассивФайлов Цикл
        СтрокаТЗ = ТЗ.Добавить();
        ПолноеИмяФайл = СтрЗаменить(ТекущийФайл.Имя, "_",Символы.ПС);
        СтрокаТЗ.ИмяФайла = ТекущийФайл.Имя;
        СтрокаТЗ.ПрефиксФайла = СтрПолучитьСтроку(ПолноеИмяФайл, 1);
        Если СтрокаТЗ.ПрефиксФайла = "птз" Тогда
            СтрокаТЗ.ИмяАрхива = "ptz.zip";
        ИначеЕсли СтрокаТЗ.ПрефиксФайла = "пит" Тогда
            СтрокаТЗ.ИмяАрхива = "pit.zip";
        ИначеЕсли СтрокаТЗ.ПрефиксФайла = "сег" Тогда
            СтрокаТЗ.ИмяАрхива = "seg.zip";
        Иначе
            Предупреждение("Ошибка в имени архива!"); 
            Возврат;
        КонецЕсли; 
        КопияТаблицы = ТЗ.Сортировать("ПрефиксФайла");
        КопияТаблицы.Свернуть("ПрефиксФайла");
        Для каждого Стр Из КопияТаблицы Цикл
            ЗаписьZIP =  Новый ЗаписьZipФайла(Файл + ?(Прав(Файл,1)="\","","\") + Стр.ИмяАрхива);
            СтруктураОтбор = Новый Структура("ПрефиксФайла",Стр.ПрефиксФайла);
            Строки = ТЗ.НайтиСтроки(СтруктураОтбор);
            Для каждого кСтр Из Строки Цикл
                Для каждого кол Из ТЗ.Колонки Цикл
                    ЗаписьZIP.Добавить(Файл + ?(Прав(Файл,1)="\","","\") + кСтр.ИмяФайла);  
                КонецЦикла; 
                ЗаписьZIP.Записать();
            КонецЦикла;
        КонецЦикла;
         КонецЦикла;
выдает почему то ошибку
{Форма.Форма.Форма(879)}: Обращение к процедуре объекта как к функции (Сортировать)
КопияТаблицы = ТЗ.Сортировать("ПрефиксФайла");
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
17.01.2014, 01:18
Жесть... Мои нервы не выдержали

1C
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
 
   СоответствиеФайловАрхивам = Новый Соответствие;
   СоответствиеФайловАрхивам.Вставить("птз", Новый Структура("Архив, КоличествоФайлов",Новый ЗаписьZipФайла(Файл + ?(Прав(Файл,1)="\","","\")+"ptz.zip"), 0));
   СоответствиеФайловАрхивам.Вставить("пит", Новый Структура("Архив, КоличествоФайлов",Новый ЗаписьZipФайла(Файл + ?(Прав(Файл,1)="\","","\")+"pit.zip"), 0));
   СоответствиеФайловАрхивам.Вставить("сег", Новый Структура("Архив, КоличествоФайлов",Новый ЗаписьZipФайла(Файл + ?(Прав(Файл,1)="\","","\")+"seg.zip"), 0));
   
   МассивФайлов = НайтиФайлы(Файл, "*.txt");
   
   Для каждого ТекущийФайл Из МассивФайлов Цикл
       
        ПолноеИмяФайл = СтрЗаменить(ТекущийФайл.Имя, "_",Символы.ПС);
        ПрефиксФайла = СтрПолучитьСтроку(ПолноеИмяФайл, 1);
        ПрефиксФайла = НРег(ПрефиксФайла);
        
        СтруктураАрхива = СоответствиеФайловАрхивам[ПрефиксФайла];
        Если СтруктураАрхива <> Неопределено Тогда
            
            СтруктураАрхива.Архив.Добавить(ТекущийФайл.ПолноеИмя);
            СтруктураАрхива.КоличествоФайлов = СтруктураАрхива.КоличествоФайлов + 1;
            
        КонецЕсли; 
        
    КонецЦикла;
    
    Для каждого гЭлементы Из СоответствиеФайловАрхивам Цикл
        
        Если гЭлементы.Значение.КоличествоФайлов > 0 Тогда
            
            гЭлементы.Значение.Архив.Записать();
            
        КонецЕсли; 
        
    КонецЦикла;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.01.2014, 01:18

Создать пустой ZIP архив с комментарием
Ребятушки, как создать пустой zip архив с комментарием? Так почему-то не работает: ZipOutputStream out = new...

Как создать архив ZIP на PErl?
Може кто подскажет как запихнуть в архив ZIP содержимое папки?

Программно создать zip-архив из txt-файла помощью WSH
Добрый день! Как программно создать zip-архив из txt-файла, используя объекты Windows Scripting Host ? И можно ли это сделать вообще?...

Как программно незаметно создать zip/rar архив и отправить на хост?
C++(лучше C++/CLI). Например: моя программа на компьютере с именем пользователя &quot;User01&quot;. Она берет файли из нужных мне папок и пакует...

Как создать ZIP-архив, который распаковывается сам в себя много раз?
Как можно сделать на python ZIP-архив, который распаковывается сам в себя много раз? Спасибо.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru