1С 8.3 RAR - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 RAR

Реклама:
Платформа 1С 8.3 с расширением RAR так и не научилась работать с помощью встроенных функций. Но поддерживает формат 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 архив в 1С 8.3:
&НаКлиенте
Процедура Распаковываем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"); Если нужно через командный интерпретатор

КонецПроцедуры
Часто используемые параметры для работы с 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 off

set 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:\Base1C

if exist D:\Avto_Arhiv\Backup_File_03*.rar del D:\Avto_Arhiv\Backup_File_03*.rar
if exist D:\Avto_Arhiv\Backup_File_02*.rar ren D:\Avto_Arhiv\Backup_File_02*.rar Backup_File_03.rar
if exist D:\Avto_Arhiv\Backup_File_01*.rar ren D:\Avto_Arhiv\Backup_File_01*.rar Backup_File_02.rar
xcopy D:\Temp_folder\Backup_File_01_*.rar D:\Avto_Arhiv\

Шаблоны (готовые модели) кода 1С 8.3 с тегом #RAR:
Поиск кода
2
комментарии
Santa
03 дек 2020
спасибо. долго мучался. по другому никак
Vmi
10 ноя 2020
Кстати метод сжатия BZIP2 доступен начиная с 1С 8.3.7 напрямую. Так что скоро и с RAR можно будет работать с платформы
____________________
Copyright by 1Cnik.by©, «Программист 1С в г.Минске», 12.10.2020
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому