IE2017

Пример обработки для распаковки архивов с помощью 7-zip внутри 1с

Программирование - Практика программирования

Пример обработки для распаковки архивов с помощью 7-zip внутри 1с. Алгоритм может использоваться в прикладных системах для прозрачной работы с архивами внутри 1С.

Данная внешняя обработка распаковывает архивный файл в любой каталог, указанный пользователем. Поддерживаются архивы *.rar,*.zip,*.arj,*.cab,*.gz,*.tar,*.7z. Поддерживаются запароленные архивы.

Скачать файлы

Наименование Файл Версия Размер
Файл обработки
.erf 7,84Kb
05.03.12
46
.erf 7,84Kb 46 Скачать

См. также

Комментарии
1. Dimon (klel) 13.03.12 22:47 Сейчас в теме
Хороший вариантик и не нужно архиватором пользоваться
2. Сергей Ожерельев (Поручик) 3592 14.03.12 02:34 Сейчас в теме
(0) Для какой платформы? Может лучше код выложить?
romanuil; +1 Ответить
3. Алексей Шиянов (A-Lex-Is) 3 15.03.12 22:13 Сейчас в теме
Для платформы 8.1. Код могу Вам выслать....
4. romanuil romanuil (romanuil) 18.03.12 15:35 Сейчас в теме
а где ert файл? В описании вообще два расширения заявлено, а файл один выложен.
Файла нет , а 1$m за скачку скушало.

И не как не пойму, где посмотреть, где платные а где бесплатные файлы?

"----------------------------"
Скачать "Файл обработки"

Тип: Внешний отчет (ert, epf)
Размер: 7.84 kb
Доступ: Пользователи
Скачиваний: 13
"----------------------------"
5. romanuil romanuil (romanuil) 18.03.12 15:47 Сейчас в теме
Нужна именно прозрачная работа с архивами внутри 1С 7,7.
как в данной работе это посмотреть? Где описание?
6. Алексей Шиянов (A-Lex-Is) 3 18.03.12 16:19 Сейчас в теме
У меня это реализовано так:


Файл = Новый Файл(ИмяФайла);
Если НЕ Файл.Существует() Тогда
Сообщить ("Файл для распаковки не найден!",СтатусСообщения.Важное);
Возврат;
КонецЕсли;

Каталог = Новый Файл(ИмяКаталога);
Если НЕ Каталог.Существует() Тогда
ИмяКаталога = Файл.Путь+Файл.ИмяБезРасширения;
КонецЕсли;

НайтиАрхиватор();

Архиватор = Новый Файл (ПутьКАрхиватору);
Если НЕ Архиватор.Существует() Тогда
Возврат;
КонецЕсли;

ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt");
//ВременныйФайл = Новый Файл (ИмяВременногоФайла);
//кИмяВременногоФайла = ВременныйФайл.Имя;
p = ? (НЕ ПустаяСтрока(Пароль)," -p"+Пароль," -p");
СтрокаДляВыполнения = """"+ПутьКАрхиватору +""""+" " + "e " + ИмяФайла +" -aoa" +" -o" + ИмяКаталога+p+" -y"+" > "+ ИмяВременногоФайла;
//Сообщить (СтрокаДляВыполнения);
КомандаСистемы (СтрокаДляВыполнения);
АнализРезультата = Новый ЧтениеТекста(ИмяВременногоФайла,КодировкаТекста.OEM);
СписокРаспакованныхФайлов = Новый Массив();
Стр = АнализРезультата.ПрочитатьСтроку();
Пока Стр <> Неопределено Цикл
ПозСтрокаИмениФайла = Найти(Стр, "Extracting ");
Если ПозСтрокаИмениФайла Тогда
ИмяРаспакованногоФайла = Прав (Стр, СтрДлина(Стр)-СтрДлина("Extracting "));
СписокРаспакованныхФайлов.Добавить(ИмяРаспакованногоФайла);
КонецЕсли;
Стр = АнализРезультата.ПрочитатьСтроку();
КонецЦикла;

АнализРезультата = Новый ЧтениеТекста(ИмяВременногоФайла,КодировкаТекста.OEM);
Стр = АнализРезультата.ПрочитатьСтроку();
Пока Стр <> Неопределено Цикл
РезУспешно = Найти (Стр,"Everything is Ok");
Если РезУспешно Тогда
Прервать;
КонецЕсли;
Стр = АнализРезультата.ПрочитатьСтроку();
КонецЦикла;

Если РезУспешно Тогда
Предупреждение ("Все файлы распакованы успешно!");
RunApp ("explorer.exe "+ИмяКаталога);
Иначе
Предупреждение ("При распаковке файлов произошли ошибки! Подробности в служебном сообщении!");
АнализРезультата = Новый ЧтениеТекста(ИмяВременногоФайла,Кодировкатекста.OEM);
Стр = АнализРезультата.ПрочитатьСтроку();
Пока Стр <> Неопределено Цикл
НеверныйПароль = Найти(Стр,"═хюяючэрээр ю°шсър");
Если НеверныйПароль Тогда
Сообщить (СтрЗаменить(Стр,"═хюяючэрээр ю°шсър","Неверный пароль"),СтатусСообщения.Внимание);
Иначе
Сообщить (Стр,СтатусСообщения.Внимание);
КонецЕсли;
Стр = АнализРезультата.ПрочитатьСтроку();

КонецЦикла;
КонецЕсли;

Попытка
УдалитьФайлы (ИмяВременногоФайла);
Исключение
КомандаСистемы ("del "+""""+ИмяВременногоФайла+"""");
КонецПопытки;
КонецПроцедуры
Alexander.Shvets; romanuil; +2 Ответить
7. romanuil romanuil (romanuil) 18.03.12 17:55 Сейчас в теме
c 8ой не знаком. Насколько понят всё под неё реализовано.
Хорошо бы в заголовке темы это все озвучивать:
-для какой платформы;
-какие компоненты (не стандартные) используются;
-если используются, то как подключить, или ссылки;
-какой установленое ПО необходимо на компе;
-последовательность дейстий при использовании.

А то такие начинающие как я долго могут не вьехать что к чему (((
Например в яндексе набрав "1C 7.7 файл с расширением erf" долго можно читать и не понять почему 7,7 его не видит

Спасибо за оперативный ответ!

P.S. Задача проще некуда: в 1C 7.7 получить список имен файлов в архиве zip, без наличия стороннего ПО.
Оставьте свое сообщение