gifts2017

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

Опубликовал Алексей Шиянов (A-Lex-Is) в раздел Программирование - Практика программирования

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

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

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

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

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Dimon (klel) 13.03.12 22:47
Хороший вариантик и не нужно архиватором пользоваться
2. Сергей Ожерельев (Поручик) 14.03.12 02:34
(0) Для какой платформы? Может лучше код выложить?
romanuil; +1 Ответить
3. Алексей Шиянов (A-Lex-Is) 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) 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 "+""""+ИмяВременногоФайла+"""");
КонецПопытки;
КонецПроцедуры
romanuil; +1 Ответить
7. romanuil romanuil (romanuil) 18.03.12 17:55
c 8ой не знаком. Насколько понят всё под неё реализовано.
Хорошо бы в заголовке темы это все озвучивать:
-для какой платформы;
-какие компоненты (не стандартные) используются;
-если используются, то как подключить, или ссылки;
-какой установленое ПО необходимо на компе;
-последовательность дейстий при использовании.

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

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

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