Сравнение Обновлятора-1С с другими инструментами обновления

оглавлениеСобираем статистику из баз (аудит)

Настраиваем полноценную архивацию баз при помощи Обновлятора-1С

Статья устарела и требует переработки?

Как известно, основная функция обновлятора - это обновление баз. Но многие, наверное, уже обратили внимание на дополнительную закладку "Администрирование баз", которая появилась в программе с начала 2016 года.

И если вы владеете навыками написания скриптов (3 варианта - пакетные cmd скрипты, vbs и onescript, он же 1C), то сможете на этой закладке творить "чудеса",  не связанные напрямую с обновлением :)

В этой статье рассмотрим такой насущный вопрос как архивация баз 1с. Возможности обновлятора в этой части достаточно мощные.

Самое простое, что вы можете сделать  - это настроить архивацию баз совместно с обновлением вне зависимости от того есть обновление или нет (статья об этом здесь). Ниже рассмотрим более продвинутые варианты.

Вообще у меня уже есть продукт для архивации баз - Бэкапер-1С, но он не умеет выгонять пользователей и не умеет работать с серверными базами. Во всём остальном - он хорош. Я надеюсь ещё к нему вернуться.

А пока я расскажу как можно настроить полноценную архивацию баз через программу Обновлятор-1С:

  • по расписанию
  • с отчётами на почту
  • в том числе серверных
  • с возможностью завершения работы пользователей, а также регламентных заданий на сервере и зависших сессий
  • в zip, dt и формат sql сервера

Но обо всём по порядку. Не пожалейте времени - разберитесь с возможностями обновлятора в этой части. Их много и все они очень гибкие.

Как создать архивную копию выбранной базы

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

Для этого нажмите на любой базе правой кнопкой - появится возможность создать архивную копию базы или выгрузку:

Из открывшегося контекстного меню выбираем первый или второй пункт.

Как создать архивную копию группы баз

Но что если мы хотим сделать копию сразу нескольких баз? Для этого отмечаем нужные базы (или группы) галками и нажимаем на кнопку с дополнительными возможностями справа от кнопки "Обновить...":

Из открывшегося меню дополнительных возможностей выбираем первый или второй пункт.

Полноценная архивация по расписанию

Наконец, настроем запуск архивации по расписанию и, к примеру, с отправкой отчётов нам на почту (всегда или в случае ошибок).

Тут можно "накрутить" практически что угодно и мы сейчас рассмотрим некоторые фокусы, но сразу предупреждаю, что для этого материала от вас нужны уверенные навыки администрирования.

Переходим на закладку "Администрирование баз":

Здесь мы напишем скрипт для архивации наших баз.

Прежде всего выбираем нужные базы (или группу баз), для которых будем создавать копии:

Далее выбираем тип скрипта:

Наконец, пишем такой пакетный скрипт:

IF "%base_srv%" EQU "" (
	"%seven_zip%" a "X:\Backups\%stamp%.zip" "%base_path%\1Cv8.1CD" -tzip -mx3
) ELSE (
	%run_1c_d% /DumpIB "X:\Backups\%stamp%.dt"
)

Он очень простой. Мы проверяем является ли база файловой (в этом случае у неё не будет заполнен параметр "%base_srv%") и в этом случае при помощи 7-zip архивируем файл базы ...

"%seven_zip%" a "X:\Backups\%stamp%.zip" "%base_path%\1Cv8.1CD" -tzip -mx3

... в папку x:\Backups.

В параметр %stamp% обновлятором будет передано уникальное имя для архива базы, содержащее имя базы, версию платформы, дату и время.

Если же база серверная, то создаём выгрузку базы в dt:

%run_1c_d% /DumpIB "X:\Backups\%stamp%.dt"

Я согласен с тем, что dt нельзя считать полноценной архивной копией серверной базы и мы вернёмся к этому вопросу в конце статьи.

Далее устанавливаем галки "Блокировать" и "Разблокировать", чтобы выгнать пользователей на время создания архива:

В общем-то всё.

Во-первых, мы можем запустить этот скрипт через кнопку "Запустить".

Во-вторых, мы можем сохранить его в виде внешнего файла. Так и поступим.

Нажимаем кнопку "Сохранить...":

Указываем нужные нам параметры и готово:

На диске X появилось два файла - txt (сам текст скрипта) и cmd (запуск обновлятора с параметрами командной строки на выполнение этого скрипта).

Мы можем запускать этот скрипт как нам угодно, в том числе через планировщик.

Кстати, чтобы изменить параметры скрипта - мы всегда можем открыть его через кнопку "Открыть" на закладке "Администрирование баз".

Для проверки запустим скрипт вручную:

Запустится обновлятор и выполнит архивацию. Созданные архивы окажутся в папке X:\Backups:

Настраиваем бэкап серверных баз при помощи утилиты sqlcmd

Известно, что формат выгрузки dt не может считаться полноценным бэкапом. Именно поэтому для файловых баз - я использую архивацию файла базы 1Cv8.1CD.

Но для серверных по умолчанию идёт выгрузка в dt, что, конечно, вполне допустимый вариант, если это автоматическая архивация перед обновлением, но совершенно не подходит, если мы настраиваем основное решение для архивации наших серверных баз.

Есть такая замечательная утилита sqlcmd, которая идёт в комплекте с Microsoft SQL Server (я не специалист по администрированию серверных баз, но уверен, что аналогичные утилиты есть и для других СУБД).

Полный код скрипта, учитывающий архивацию файловых и серверных баз (для них оставим два варианта - dt и родной формат) будет таким:

IF "%base_srv%" EQU "" (
	"%seven_zip%" a "X:\Backups\%stamp%.zip" "%base_path%\1Cv8.1CD" -tzip -mx3
) ELSE (
	%run_1c_d% /DumpIB "X:\Backups\%stamp%.dt"
	Sqlcmd -S "VOLK\SQLEXPRESS" -Q "BACKUP DATABASE [%base_ref%] TO DISK = N'x:Backups/%stamp%.bak' WITH NOFORMAT, INIT, NAME = N'%stamp%', NOSKIP, REWIND, NOUNLOAD, STATS = 10"	
)

Обращаю ваше внимание на то, что VOLK\SQLEXPRESS - это полный путь к экземпляру sql сервера на моём компьютере (с именем VOLK). У вас будет свой вариант - его можно легко увидеть в SQL Server Management Studio.

В этом случае процесс архивации серверной базы средствами sql будет представлен в отчёте так:

Получившиеся архивы:

Обратите внимание, что для базы "Серверная" создалось сразу два архива - dt (выгрузка из 1с) и bak (выгрузка из sql server).

А если мы захотим сжимать полученный bak файл в zip и удалять его после этого, то получится вот такой скрипт:

IF "%base_srv%" EQU "" (
	"%seven_zip%" a "X:\Backups\%stamp%.zip" "%base_path%\1Cv8.1CD" -tzip -mx3
) ELSE (
	%run_1c_d% /DumpIB "X:\Backups\%stamp%.dt"
 
	Sqlcmd -S "VOLK\SQLEXPRESS" -Q "BACKUP DATABASE [%base_ref%] TO DISK = N'x:Backups/%stamp%.bak' WITH NOFORMAT, INIT, NAME = N'%stamp%', NOSKIP, REWIND, NOUNLOAD, STATS = 10"
	"%seven_zip%" a "X:\Backups\%stamp%.zip" "x:\Backups\%stamp%.bak" -tzip -mx7
	del /q "x:\Backups\%stamp%.bak"
)

Напоследок я покажу вам ключ 7-zip отвечающий за архивацию с паролем:

	"%seven_zip%" a "X:\Backups\%stamp%.zip" "%base_path%\1Cv8.1CD" -tzip -mx3 -p"secret"

А ведь ещё можно и расширения у архивов менять и ... пожалуй, на этом я остановлюсь.

Теперь и вы знаете, что при помощи обновлятора можно настроить архивацию баз практически любой сложности.

С уважением, (школа 1С программистов).

Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю).

Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.

Владимир Милькин
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.



Сравнение Обновлятора-1С с другими инструментами обновления

оглавлениеСобираем статистику из баз (аудит)