Каталог решений - Бэкапирование внешних обработок на этапе разработки

Описание

Немного бекапирования никогда не повредит. А уж если сделать этом методами самой 1С, то можно будет допиливать как угодно.

Когда может быть полезным? 

Один из сценариев: разработка внешних отчетов и обработок. Что-то правим, 1С упала — обработка пустая. Бывает редко, но бывает. Что-то правим, вспоминаем что в предыдущем варианте что-то было лучше реализовано.

Как организовать:

1. Посмотреть какие данные в последний раз заливались в каталог хранения резервных данных.

2. Посмотреть какие данные с тех пор появились в каталоге данных.

3. Скопировать новые данные.

4. Сделать эти действия повторяемыми. С помощью регламентного задания или планировщика (если использовать oscript).

5. Профит.

Нам понадобятся: 
    методы: "ПолучитьВремяИзменения", "ИмяБезРасширения", "Расширение";
    команды: НайтиФайлы, КопироватьФайл;
 

Процесс:  
    
Шаг 1 — получаем дату последнего изменения в каталоге хранения резервных данных:

  	ДатаПредыдущегоИзменения = Дата(1, 1, 1);
  	
  	НайденныеФайлы = НайтиФайлы(ПолучитьКаталогРезервированияКуда(), "*.*");
  	Для каждого ТекФайл Из НайденныеФайлы Цикл
  		ДатаИзменения =  ТекФайл.ПолучитьВремяИзменения();
  		Если ДатаИзменения > ДатаПредыдущегоИзменения Тогда
  			ДатаПредыдущегоИзменения = ДатаИзменения;
  		КонецЕсли; 
  	КонецЦикла; 
  	
  	Возврат ДатаПредыдущегоИзменения;
  
  

Шаг 2 — находим новые \ измененные файлы в каталоге данных.

  	МассивФайлов = Новый Массив;
  	
  	НайденныеФайлы = НайтиФайлы(ПолучитьКаталогРезервированияОткуда(), "*.*");
  	Для каждого ТекФайл Из НайденныеФайлы Цикл
  		Если ТекФайл.ЭтоФайл() Тогда
  			ДатаИзменения = ТекФайл.ПолучитьВремяИзменения();
  			Если ДатаИзменения > ДатаПредыдущегоИзменения Тогда
  				МассивФайлов.Добавить(ТекФайл);
  			КонецЕсли;
  		КонецЕсли;
  	КонецЦикла; 
  

Шаг 3 — копируем найденныефайлы в в каталог хранения резервных данных.

  	Процедура РезервироватьНовыеИзмененныеФайлы(МассивФайлов)
  	
  		Для каждого ТекФайл Из МассивФайлов Цикл
  			ИмяФайла = ПолучитьИмяФайлаРезервирования(ТекФайл);
  			КопироватьФайл(ТекФайл.ПолноеИмя, ИмяФайла);
  		КонецЦикла; 
  	
  	КонецПроцедуры
  
  

Шаг 3,5 — именуем файлы бекапа, что было понятно что за файл и когда изменялся. Примерно тек:
    ИмяФайла 2021_06_02_15_48_07 .epf
    ИмяФайла 2021_06_02_17_58_35 .epf

  	ДатаРезервированияСтрокой = Формат(ТекФайл.ПолучитьВремяИзменения(), "ДФ=yyyy-MM-dd-ЧЧ-мм-сс");
  	ДатаРезервированияСтрокой = СтрЗаменить(ДатаРезервированияСтрокой, "-", "_");
  	
  	ИмяФайла = ТекФайл.ИмяБезРасширения + " " + ДатаРезервированияСтрокой + " " + ТекФайл.Расширение;
  	ИмяФайла = ПолучитьКаталогРезервированияКуда() + "\" + ИмяФайла;
  
  

Шаг 4 — добавляем регламентное задание. Вставляем туда весь этот код. Устанавливаем необходимую частоту проверки и бэкапа.

Если нет желания изменять конфигурацию, то можно этот же скрипт использовать в планировщике с помощью oscript.

Шаг 5 Получаем бэкапы нужных нам файлов. 

 

P.S. В вложении ничего интересного нет. Просто методы из статьи в виде программы или скрипта. 

has been added to your cart:
Оформление заказа