1С 8.3 RAR
Данные > Примеры кода 1С > 1С 8.3 RAR
Платформа 1С 8.3 с расширением RAR так и "не научилась" работать с помощью встроенных функций. Данный формат - проприетарный (являющийся частной собственностью автора) и поэтому ждать его в официальной поддержки 1С не имеет смысла. Но платформа 1С поддерживает формат ZIP для архивации и распаковки данных. Что же делать если в 1С 8 нужно работать с входящими файлами*.RAR (или 7ZIP)? Поможет только народный метод "костыли". Есть два способа: запускать c параметрами программу WinRAR (Rar.exe (платная) / Unrar.exe (бесплатная, но только распаковка)) с помощью встроенной функции КомандаСистемы() или стартовать Bat-файл через функцию ЗапуститьПриложение() и все действия описывать непосредственно в файле с расширением Bat.
Оглавление:
Создаем Rar архив с файлами в 1С 8.3:
&НаКлиенте
Процедура СоздаемRARАрхивСФайлами()
ИспользоватьМакет=Истина;
Если ИспользоватьМакет Тогда
RarExe = ПолучитьИмяВременногоФайла("exe");
ПолучитьМакетНаСервере().Записать(RarExe); // Сохраняем exe-шник в макете, чтобы использовать когда нужно
КомандаСистемы(RarExe+" a -ep D:\Avto_Arhiv\Backup_File.rar D:\Base1C\");// Запуск с параметрами
Иначе // стартуем через инсталлированный WinRAR с параметрами
КомандаСистемы("C:\Program File\WinRAR\Rar.exe a -ep D:\Avto_Arhiv\Backup_File.rar D:\Base1C\");
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПолучитьМакетНаСервере()
Возврат ПолучитьОбщийМакет("RAR");
КонецФункции
Процедура СоздаемRARАрхивСФайлами()
ИспользоватьМакет=Истина;
Если ИспользоватьМакет Тогда
RarExe = ПолучитьИмяВременногоФайла("exe");
ПолучитьМакетНаСервере().Записать(RarExe); // Сохраняем exe-шник в макете, чтобы использовать когда нужно
КомандаСистемы(RarExe+" a -ep D:\Avto_Arhiv\Backup_File.rar D:\Base1C\");// Запуск с параметрами
Иначе // стартуем через инсталлированный WinRAR с параметрами
КомандаСистемы("C:\Program File\WinRAR\Rar.exe a -ep D:\Avto_Arhiv\Backup_File.rar D:\Base1C\");
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПолучитьМакетНаСервере()
Возврат ПолучитьОбщийМакет("RAR");
КонецФункции
Распаковываем Rar архив в 1С 8.3:
&НаКлиенте
Процедура РаспаковываемRARАрхив()
RarExe = ПолучитьИмяВременногоФайла("exe");
ПолучитьМакетНаСервере().Записать(RarExe); // Сохраняем exe-шник в макете, чтобы использовать когда нужно
КомандаСистемы(RarExe+" e D:\Avto_Arhiv\Backup_File.rar D:\Base1C_copy\"); // Запуск
КонецПроцедуры
&НаСервере
Функция ПолучитьМакетНаСервере()
Возврат ПолучитьОбщийМакет("RAR");
КонецФункции
Процедура РаспаковываемRARАрхив()
RarExe = ПолучитьИмяВременногоФайла("exe");
ПолучитьМакетНаСервере().Записать(RarExe); // Сохраняем exe-шник в макете, чтобы использовать когда нужно
КомандаСистемы(RarExe+" e D:\Avto_Arhiv\Backup_File.rar D:\Base1C_copy\"); // Запуск
КонецПроцедуры
&НаСервере
Функция ПолучитьМакетНаСервере()
Возврат ПолучитьОбщийМакет("RAR");
КонецФункции
Запуск Bat-файла из 1С 8.3:
&НаКлиенте
Процедура РаботаСRarАрхивомЧерезBatФайл()
ЗапуститьПриложение("D:\Starter\Run.bat"); // См. ниже gример Bat-файла для запуска авто-архива из 1С
// Или КомандаСистемы("D:\Starter\Run.bat"); Если нужно через командный интерпретатор
КонецПроцедуры
Процедура РаботаСRarАрхивомЧерезBatФайл()
ЗапуститьПриложение("D:\Starter\Run.bat"); // См. ниже gример Bat-файла для запуска авто-архива из 1С
// Или КомандаСистемы("D:\Starter\Run.bat"); Если нужно через командный интерпретатор
КонецПроцедуры
Часто используемые параметры для работы с bat-файлом в 1С 8.3:
D:\Base1C // Путь к базе данных 1С (папке или файлу) которую архивируемD:\Avto_Arhiv\Backup_File*.rar // Директория хранения архивов"C:\Program Files\WinRAR\WinRAR.exe" // Путь к стартовому файлу архиватора// Прописываются в строке запуска:-ag, к имени архива добавить текущую дату и время"C:\Program Files\WinRAR\Rar.exe" a -ag D:\Avto_Arhiv\Backup_File.rar D:\Base1C-df, удалить файлы после архивации"C:\Program Files\WinRAR\Rar.exe" a -ag -df D:\Avto_Arhiv\Backup_File.rar D:\Base1C-hp[pass12345], (только без квадратных скобок), зашифровать создаваемый архив паролем pass12345"C:\Program Files\WinRAR\Rar.exe" a -ag -pass12345 D:\Avto_Arhiv\Backup_File.rar D:\Base1C-m[5], (только без квадратных скобок), устанавливает степень сжатия (от 0 до 5, где 5 – максимальный уровень компрессии)"C:\Program Files\WinRAR\Rar.exe" a -ag -m5 D:\Avto_Arhiv\Backup_File.rar D:\Base1C-r, добавить в архив вложенные в D:\Base1C папки и файлы в них"C:\Program Files\WinRAR\Rar.exe" a -ag -m5 -r D:\Avto_Arhiv\Backup_File.rar D:\Base1C-x*, исключает из обработки указанные файлы и папки при создании и распаковке архивовПоддерживаются шаблоны. Укажите -x*.pdf, чтобы не добавлять в архив из папки D:\Base1C файлыс расширением PDF"C:\Program Files\WinRAR\Rar.exe" a -ag -x*.pdf D:\Avto_Arhiv\Backup_File.rar D:\Base1C-x, распаковывает созданный архив"C:\Program Files\WinRAR\Rar.exe" x D:\Avto_Arhiv\Backup_File.rar D:\Base1C// Пример: a -r -m5 // Параметры архивирования: a (добавить файл в архив), r (учитывать вложенные папки), (m5) использовать метод сжатия// Команда проверяет нахождение файла во временной папке и удаляет его если он есть, это надо для того, чтобы файлы там не дублировались:if exist D:\Temp_folder\Backup_File_01*.rar del D:\Temp_folder\Backup_File_01*.rar
Справочно: Пример Bat-файла (Run.bat) для запуска из 1С 8.3:
// chcp 1251 - для распознавания русскоязычных символов находящихся в указании пути к файлу (если есть русские буквы)@echo offset day=%DATE:~0,2%set month=%DATE:~3,2%set year=%DATE:~6,4%if exist D:\Temp_folder\Backup_File_01*.rar del D:\Temp_folder\Backup_File_01*.rar"C:\Program Files\WinRAR\WinRAR.exe" a -r -m5 D:\Temp_folder\Backup_File_01_%year%-%month%-%day%.rar D:\Base1Cif exist D:\Avto_Arhiv\Backup_File_03*.rar del D:\Avto_Arhiv\Backup_File_03*.rarif exist D:\Avto_Arhiv\Backup_File_02*.rar ren D:\Avto_Arhiv\Backup_File_02*.rar Backup_File_03.rarif exist D:\Avto_Arhiv\Backup_File_01*.rar ren D:\Avto_Arhiv\Backup_File_01*.rar Backup_File_02.rarxcopy D:\Temp_folder\Backup_File_01_*.rar D:\Avto_Arhiv\
💡 Шаблоны (готовые модели) кода 1С 8.3 с тегом #RAR:
📰 Актуальные новости с тегом #Rar:
- В версии 8.3.26 реализована поддержка распаковки GZIP и RAR
2
комментарии
Santa
03 дек 2020
спасибо. долго мучался. по другому никак
Vmi
10 ноя 2020
Кстати метод сжатия BZIP2 доступен начиная с 1С 8.3.7 напрямую. Так что скоро и с RAR можно будет работать с платформы
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник