Разработка скрипта резервного копирования БД 1С

Автор: Федотов В.А.

Журнал: Форум молодых ученых @forum-nauka

Статья в выпуске: 8 (36), 2019 года.

Бесплатный доступ

Статья посвящена разработке скрипта резервного копирования БД 1С.

Скрипт, резервное копирование, , базы данных

Короткий адрес: https://sciup.org/140287025

IDR: 140287025

Текст научной статьи Разработка скрипта резервного копирования БД 1С

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

Скрипт будем разрабатывать в Visual Studio Code. Для начала необходимо разработать алгоритм создания директорий для бэкапа. Директории будут следующие:

  • -    год;

  • -    месяц;

  • -    неделя;

  • -    день.

Директории должны содержать в названии даты, соответствующие дате создания папки. Поэтому для создания имени папок необходимо использовать параметр «ТекущаяДата()». Текущую дату можно узнать в любой момент, следовательно, можно высчитать текущий (любой) год, текущий (любой) месяц, текущую (любую) неделю, границы недели (201907-01 --- 2019-07-07), текущий день и так далее. Например, для того чтобы узнать границы предыдущей недели используем следующий алгоритм, представленный в листинге 4.2.2.1.

Листинг 4.2.2.1 – Границы предыдущей недели

НачалоПредНедели = Формат(НачалоДня(ТекущаяДата()) -(86400*(ДеньНедели(ТекущаяДата()) + 6)), "ДФ=гггг-ММ-дд");

КонецПредНедели = Формат(ТекущаяДата() + (86400*(0-

ДеньНедели(ТекущаяДата()))), "ДФ=гггг-ММ-дд");

ПапкаПредНеделя = НачалоПредНедели + " --- " +

КонецПредНедели;

При создании бэкапа необходимо чтобы выполнялись следующие действия:

  • -    должны храниться ежедневные резервные копии в течение недели и записываться в архив;

  • -    после истечения текущей недели и начала следующей необходимо оставить самую последнюю копию за предыдущую неделю и удалить остальные (недельный бэкап);

  • -    после истечения текущего месяца и начала следующего необходимо оставить самый последний недельный бэкап и удалить остальные (месячный бэкап);

  • -    после истечения текущего года и начала следующего необходимо оставить самый последний месячный бэкап и удалить остальные (годовой бэкап).

При выполнении дневной резервной копии необходимо проверять следующие условия:

  • -    если существует резервная копия за сегодняшний день, тогда система удаляет существующий файл и записывает новый;

  • -    если бэкап не был выполнен, система создает каталог, учитывая текущую дату и производит копирование файла.

Алгоритм выполнения дневного бэкапа представлен в листинге 4.2.2.2.

Листинг 4.2.2.2 – Дневной бэкап

//ДНЕВНОЙ БЭКАП

ЕСЛИ ФС.ФайлСуществует(ПутьДниНедели + "\" + Файл) ТОГДА

ПутьКопированияФайла = ПутьДниНедели + "\" + Файл;

МБ.ПовторноеКопирование(ПутьДниНедели, ПутьНахожденияФайла, ПутьКопированияФайла, Файл);

ИНАЧЕ

ФС.ОбеспечитьКаталог(ПутьДниНедели);

КопироватьФайл(ПутьНахожденияФайла, ПутьДниНедели + "\" +

Файл);

Сообщить("Дневной БЭКАП выполнен!");

КОНЕЦЕСЛИ;

При выполнении недельной резервной копии необходимо проверять следующие условия:

  • -    если существует бэкап за последнюю неделю, тогда система выведет сообщение о его существовании;

  • -    если бэкап не был выполнен, тогда система должна найти последнюю неделю в этом месяце, где выполнялись дневные бэкапы и в ней выполнить резервную копию, взяв последний дневной бэкап.

Алгоритм выполнения недельного бэкапа представлен в листинге 4.2.2.3.

Листинг 4.2.2.3 – Недельный бэкап

ЕСЛИ ФС.ФайлСуществует(ПутьПредНеделя + "\" + Файл) ТОГДА

Сообщить("БЭКАП за предыдущую неделю уже был ВЫПОЛНЕН!");

ИНАЧЕ

МБ.БэкапЗаПредНеделю(ПутьПредНеделя, ПутьМесяц, ПутьПредМесяц, ПапкаПредНеделя, Файл, ПапкаНеделя);

ЕСЛИ ФС.ФайлСуществует(ПутьПредНеделя + "\" + Файл) ИЛИ

ФС.ФайлСуществует(ПутьПредМесяц + "\" + ПапкаПредНеделя + "\"

+ Файл) ТОГДА

Сообщить("БЭКАП за предыдущую неделю ВЫПОЛНЕН!");

КОНЕЦЕСЛИ;

КОНЕЦЕСЛИ;

При выполнении месячной резервной копии необходимо проверять следующие условия:

  • -    если существует бэкап за последний месяц, тогда система выведет сообщение о его существовании;

  • -    если бэкап не был выполнен, тогда система обратится к папке предыдущего месяца, в ней выберет последний недельный бэкап и выполнит формирование месячной резервной копии.

Алгоритм выполнения месячного бэкапа представлен в листинге 4.2.2.4.

Листинг 4.2.2.4 – Месячный бэкап

ЕСЛИ ФС.ФайлСуществует(ПутьПредМесяц + "\" + Файл) ТОГДА

Сообщить("БЭКАП за предыдущий месяц уже был ВЫПОЛНЕН!");

ИНАЧЕ

МБ.БэкапЗаПредМесяц(ПутьГод, ПутьПредМесяц, Файл);

ЕСЛИ ФС.ФайлСуществует(ПутьПредМесяц + "\" + Файл) ТОГДА

Сообщить("БЭКАП за предыдущий месяц ВЫПОЛНЕН!");

КОНЕЦЕСЛИ;

КОНЕЦЕСЛИ;

При выполнении годовой резервной копии необходимо проверять следующие условия:

  • -    если существует бэкап за последний год, тогда система выведет сообщение о его существовании;

  • -    если бэкап не был выполнен, тогда система обратится к папке предыдущего года, в ней выберет последний месячный бэкап и выполнит формирование годовой резервной копии.

Алгоритм выполнения годового бэкапа представлен в листинге 4.2.2.5.

Листинг 4.2.2.5 – Годовой бэкап

ЕСЛИ ФС.ФайлСуществует(ПутьПредГод + "\" + Файл) ТОГДА

Сообщить("БЭКАП за предыдущий год уже был ВЫПОЛНЕН!");

ИНАЧЕ

МБ.БэкапЗаПредГод(ПутьПредГод, ПапкаПредМесяц, Файл);

ЕСЛИ ФС.ФайлСуществует(ПутьПредГод + "\" + Файл) ТОГДА

Сообщить("БЭКАП за предыдущий год ВЫПОЛНЕН!");

КОНЕЦЕСЛИ;

КОНЕЦЕСЛИ;

Список литературы Разработка скрипта резервного копирования БД 1С

  • Сорокина, Л.Н. Информационные технологии в бухгалтерском учете: методические рекомендации и сквозная задача по изучению программы 1C: предприятие - бухгалтерия предприятия (типовая конфигурация) : методические рекомендации / Л.Н. Сорокина, В.А. Кукса. - Москва : НИЯУ МИФИ, 2011. - 52 с. - - Текст : электронный // Электронно-библиотечная система «Лань» : [сайт]. - URL: https://e.lanbook.com/book/75793 (дата обращения: 19.07.2019). - Режим доступа: для авториз. пользователей. ISBN: 978-5-7262-1495-5
  • Расторгуев, О.П. Сайт на 1C-Битрикс: создание, поддержка и продвижение. Базовое практическое руководство: руководство / О.П. Расторгуев, Р.Г. Прокди. - Санкт-Петербург: Наука и Техника, 2012. - 256 с. - - Текст: электронный // Электронно-библиотечная система «Лань»: [сайт]. - URL: https://e.lanbook.com/book/39612 (дата обращения: 19.07.2019). - Режим доступа: для авториз. пользователей. ISBN: 978-5-94387-903-6
Статья научная