Модули для задач\Директория\Создать архив директории
Функция ПередОткрытием()
Задача = Этот.Владелец.Параметр;
Если (Задача=0) Тогда Возврат 0; Конец;
Параметры = Задача.Определить(0, Объекты.Список, Свойства.Наименование, "Параметры");
Параметры.Колонки.Определить(Свойства.Наименование, 0, 150, 1, 0);
Параметры.Колонки.Определить(Свойства.Значение, 0, 200, 1, 1);
Параметры.Колонки.Определить(Свойства.Описание, 0, 450, 1, 0);
Параметры.'Отключить канву объекта' = 1;
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Архиватор");
Если (П.Новый()) Тогда
П.Отмечен = 1;
П.Значение = "Resources\7za.exe";
П.Описание = "путь к архиватору";
Конец;
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Расширение");
Если (П.Новый()) Тогда
П.Отмечен = 1;
П.Значение = "zip";
П.Описание = "расширение архива";
Конец;
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Параметры");
Если (П.Новый()) Тогда
П.Отмечен = 1;
П.Значение = "a";
П.Описание = "параметры для архиватора, остальные параметры можно посмотреть в файле 7-zip.chm";
Конец;
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Версия");
Если (П.Новый()) Тогда
П.Отмечен = 1;
П.Значение = "-[Дата]";
П.Описание = "версия архива, добавляется в конец файла";
Конец;
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Архивы");
Если (П.Новый()) Тогда
П.Значение = "D:\Archives";
П.Описание = "путь к каталогу с архивами, если не задан, то архив кладется уровнем выше";
Конец;
Задача.Выбранный(Параметры);
Конец
Функция Выполнить()
// Создание архива всей директории в заданную папку с архивами
Задача = Этот.Владелец.Параметр;
Если (Задача=0) Тогда Возврат 0; Конец;
Параметры = Задача.Определить(0, Объекты.Список, Свойства.Наименование, "Параметры");
Результаты = Задача.Определить(0, Объекты.Список, Свойства.Наименование, "Результат");
Результаты.Колонки.Определить(Свойства.'Момент начала выполнения задачи', 0, 128, 1, 0);
Результаты.Колонки.Определить(Свойства.'Момент начала выполнения задачи', 0, 128, 1, 0);
Результаты.Колонки.Определить(Свойства.'Момент окончания выполнения задачи', 0, 128, 1, 0);
Результаты.Колонки.Определить(Свойства.Интервал, 0, 120, 1, 0);
Результаты.Колонки.Определить(Свойства.Состояние, 0, 135, 1, 0);
Результаты.Колонки.Определить(Свойства.'Путь к архиву', 0, 350, 1, 0);
Результаты.'Отключить канву объекта' = 1;
Результаты.'Отключить отметку' = 1;
КорневаяПапка = Задача.Владелец.Путь;
// формируем и запускаем создание архива в отдельном процессе
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Архиватор");
ПутьКАрхиватору = П.Значение;
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Расширение");
РасширениеАрхива = П.Значение;
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Параметры");
ПараметрыАрхиватора = П.Значение;
ПутьКАрхиву = Файлы.Имя(КорневаяПапка);
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Архивы");
Если (П.Отмечен=1) Тогда
ПутьКАрхиву = П.Значение + Символы.ОС + ПутьКАрхиву;
Иначе
ПутьКАрхиву = КорневаяПапка;
Конец;
П = Параметры.Определить(0, Объекты.Объект, Свойства.Наименование, "Версия");
Если (П.Отмечен=1) Тогда
ПутьКАрхиву = ПутьКАрхиву + Строки.Заменить(П.Значение,"[Дата]",Моменты.Строка(Моменты.Текущий,"гггг-ММ-дд"));
Конец;
ПутьКАрхиву = ПутьКАрхиву + "." + РасширениеАрхива;
Результат = Результаты.Определить(0, Объекты.Объект, Свойства.'Момент начала выполнения задачи', Моменты.Текущий);
Результат.Состояние = "Идет создание архива";
Результат.'Путь к архиву' = ПутьКАрхиву;
ПараметрыАрхиватора = ПараметрыАрхиватора + " """ + ПутьКАрхиву + """ """ + КорневаяПапка + """";
//Сообщить(ПараметрыАрхиватора);
Запустить(ПутьКАрхиватору,ПараметрыАрхиватора);
Задача.Выбранный(Результаты);
// запускаем задачу в активные
Задача.Интервал = 3;
Задача.Отмечен = 1;
Задача.'Текст ожидания' = "Задача выполняется";
Возврат 1;
Конец
Функция Таймер()
// проверяем что архив уже создан
Задача = Этот.Владелец.Параметр;
Если (Задача=0) Тогда Возврат 0; Конец;
Результаты = Задача.Определить(0, Объекты.Список, Свойства.Наименование, "Результат");
Результат = Результаты.Определить(0, Объекты.Объект, Свойства.Интервал, 0);
ПутьКАрхиву = Результат.'Путь к архиву';
Состояние = "";
Если (Файлы.Занят(ПутьКАрхиву)=0) Тогда
Состояние = "Выполнено";
Конец;
Если (Состояние<>"") Тогда
Результат.'Момент окончания выполнения задачи' = Моменты.Текущий;
Т1 = Результат.'Момент окончания выполнения задачи';
Т2 = Результат.'Момент начала выполнения задачи';
Результат.Интервал = Т1 - Т2;
Результат.Состояние = Состояние;
Задача.Интервал = 0;
Задача.Отмечен = 0;
Задача.'Текст ожидания' = "";
Результаты.Обновить();
Конец;
Возврат 1;
Конец