Поддерживаемые форматы распаковки архивов:
ZIP, JAR, XPI, BZ2, BZIP2, TBZ2,TBZ,RAR, R00, ARJ, Z, TAZ, LZH, LHA, 7Z, CAB, LZMA, LZMA86, ISO, XAR, MSI,RPM, TAR, GZ, TGZ, TPZ
Компонента выполнена по технологии Native, не требует регистрации в реестре и, соответственно, особых прав пользователя.
Компонента реализует некоторые методы работы с файлами (архивами).
Поддерживаемые форматы распаковки архивов:
ZIP, JAR, XPI, BZ2, BZIP2, TBZ2,TBZ,RAR, R00, ARJ, Z, TAZ, LZH, LHA,
7Z, CAB, LZMA, LZMA86, ISO, XAR, MSI,RPM, TAR, GZ, TGZ, TPZЗагрузка компоненты (пример загрузки в модуле обычного приложения)
Перем Файлы Экспорт;
Функция КаталогИБ() Экспорт
КаталогИБ = СтрокаСоединенияИнформационнойБазы();
КаталогИБ = Сред(КаталогИБ,7,СтрДлина(КаталогИБ)-8) + "";
Возврат КаталогИБ;
КонецФункции
Процедура ПриНачалеРаботыСистемы()
ФайлВК=КаталогИБ()+"FilesNative.dll";
ПодключитьВнешнююКомпоненту(ФайлВК,"FilesNative",AddInType.Native);
Файлы = Новый("AddIn.FilesNative.Files"); // переменная класса
КонецПроцедуры
Методы компоненты (класса Files):
РаспаковатьАрхив(ПолноеИмяАрхивногоФайла,ПапкаКуда)
Распаковывает указанный архивный файл в указанную папку.
Распаковка ведется «до последнего», т.е. если внутри архивного файла
содержатся другие архивные файлы такого же или другого формата (а внутри их, возможно, и ещё),
в указанную папку распакуется всё.
ПапкаКуда — необязательный, по умолчанию = «c: emp»
Если указанная папка не существет, она будет создана.
Пример:
Архив="c:СервисМTESTTTT.RAR";
ПапкаКуда="c:555";
Файлы.РаспаковатьАрхив(Архив,ПапкаКуда);
УпаковатьПапку(ПолноеИмяПапки,ПолноеИмяФайлаРезультата,Тип);
Упаковывает указанную папку со всем содержимым в архивный файл формата 7Z или ZIP
Тип — строка вида «.7Z» или «.ZIP», необязательный, по умолчанию = «.7Z»
Пример:
Папка="c:СервисМTaxi";
Тип=".7Z";
ФайлРезультат="c:Taxi"+Тип;
Файлы.УпаковатьПапку(Папка,ФайлРезультат,Тип);
УпаковатьФайл(ПолноеИмяФайла,ПолноеИмяФайлаРезультата,Тип)
Практически аналогичен предыдущему, но для отдельного файла.
Пример:
Тип=".7Z";
Файл="c:СервисМ1Cv8.1CD";
ФайлРезультат="c:1Cv8_1CD"+Тип;
Файлы.УпаковатьФайл(Файл,ФайлРезультат,Тип)
ШифроватьФайл(ПолноеИмяИсходногоФайла,ПолноеИмяШифрованногоФайла,Пароль)
Шифрует указанный файл побайтно и создает результирущий зашифрованный файл.
Пароль — строка, необязательный, по умолчанию внутренний пароль компоненты.
Пример:
Пароль="{EC8F1BED-19BB-401B-B448-8EF2150C6FF4}";
ФайлИсх="c:СервисМПоддерживаемые форматы.txt";
ФайлШифр="c:СервисМПоддерживаемые форматы_шифр.txt";
Файлы.ШифроватьФайл(ФайлИсх,ФайлШифр,Пароль);
ДешифроватьФайл(ПолноеИмяИсходногоФайла,ПолноеИмяДешифрованногоФайла,Пароль)
Противоположен предыдущему.
Пример:
Пароль="{EC8F1BED-19BB-401B-B448-8EF2150C6FF4}";
ФайлШифр="c:СервисМПоддерживаемые форматы_шифр.txt";
ФайлДеШифр="c:СервисМПоддерживаемые форматы_дешифр.txt";
Файлы.ДешифроватьФайл(ФайлШифр,ФайлДеШифр,Пароль);
MD5(ПолноеИмяФайла)
Подсчитывает MD5-хеш содержимого указанного файла.
(удобно для отслеживания факта изменения)
Пример:
MD5=Файлы.MD5("c:СервисМNativeFilesFilesNative.dll");
ВерсияФайла(ПолноеИмяФайла)
Возвращает строку вида Версия;Производитель;ДатаВремяФайла,
например: 1.0.0.3;Сервис-М;18.06.2014 11:42:20
Пример:
Версия=Файлы.ВерсияФайла("c:СервисМNativeFilesFilesNative.dll");
Примечание: только для файлов exe и dll.
GUID() — без параметров, возвращает сгенерированную строку GUID,
например: {8435EA89-6585-4F86-8C12-6E9556638C97}
Удобно для генерации случайных строк.
Пример:
Сообщить(Файлы.GUID());
ВАЖНО:
для работы компоненты необходимо наличие в системе (или в каталоге компоненты)
файла 7z.dll (прилагается)
Содержимое архива: Описание.txt, 7z.dll и FilesNative.dll
(текущая версия 1.0.0.3)
© Кучер А.А. Красноярск, 2014
Новый УникальныйИдентификатор()
да и вообще, многое из описанного легко и непринужденно делается стандартными средствами.
(1) asved.ru,
Примерчик в студию, кроме Новый УникальныйИдентификатор()
Например, распаковка архивов, кроме формата ZIP? Или MD5? Или производитель и версия из Файл=Новый Файл(БлаБла)?
(2) Насчёт MD5 вроде в 8.3 есть, или скоро обещали.
В целом вещь полезная однозначно. Мне пока совершенно не нужно, тем не менее заранее спасибо и плюс.
(1) Не факт, кстати, что UUID от 1С это действительно настоящий GUID. Были, помнится, публикации на эту тему…
(3) Yashazz, ага, MD5 таки появилась в 8.3. Хрен за ними уследишь ;)))
(3) Yashazz,
Новый УникальныйИдентификатор() возвращает такой же GUID, как и Windows.
А вот хранение в базе, т.е. идентификатор под «_Ref», формируется уже по другому. Именно он отображается, когда объект не находится.
(0)
LZMA SDK и к примеру вот тут 7-Zip-JBinding 7z у них получился кросс-платформенным и много что поддерживает.
А попробуй использовать 7z как кросс-платформенный (что бы не зависит от dll).
(4) MD5 вроде как уже давно в 8.3. С момента выхода ознакомительной 🙂
(0) ты же дельфист. А для него есть вполне full source библиотека. Иначе просто так компоненту в базу не запихаешь. Придется еще с 7z таскаться.
В минувшие выходные (14.09.14), на 56-году ушел из жизни Кучер Аркадий (aka Abadonna).
RIP