Универсальный скрипт на языке 1С для OneScript

Универсальный скрипт на языке 1С для OneScript

Представляем Вашему вниманию универсальный супер-скрипт, выполняющий множество действий и автоматизирующий рутинные ежедневные операции, которые обычно делает пользователь или программист 1С.
Повторю, скрипт универсален. Просто запускаем его из командной строки, передавая ему необходимые параметры (действие, информационная база, логин, пароль и т.д.) и он выполняет нужные действия. При этом нет необходимости изменения самого скрипта. Все необходимые данные передаются через параметры запуска.
Зачем это все? Чтобы облегчить себе жизнь =)
Почему я это должен использовать? Данный универсальный скрипт позволяет делать не простые и рутинные действия одновременно. Например, запуск резервного копирования информационных баз - это последовательность действий:

  1. Завершение работы пользователей ИБ и активных сеансов
  2. Установка блокировки информационной базы с текстом - уведомлением, чтобы те, кто пытался войти, смогли это сделать только после выполнения резервной копии
  3. Выгрузка в нужную директорию резервной копии по заданному шаблону
  4. Очистка устаревших резервных копий ИБ в директории резервного копирования (оставляем последние N-копий, например)
  5. Разблокирование информационной базы
  6. Записываем все в лог
Как видите, такой бэкап базы 1С - это последовательность мелких действий, которые в сумме, если их собрать, не такие уж и мелкие, если делать вручную... А наш скрипт решает это одной строкой. Интересно? Тогда перечислим возможности (в будущем будет расширено).

Возможности

  • Резервное копирование ИБ
  • Восстановление базы из архивной копии ИБ
  • Установка и снятие блокировки сеансов пользователей
  • Прерывание активных/зависших сеансов работы пользователей в ИБ (опционально по времени последней активности пользователей)
  • Удаление устаревших резервных копий
  • Ведения лог-файла выполненных действий.
Скрипт демонстрирует возможности такого мощного инструмента как OneScript (виртуальной машины, исполняющей скрипты на языке 1С:Предприятие) и может служить примером для создания собственных скриптов. Ниже приведены команды и параметры команд, обрабатываемые скриптом, а также даны примеры использования команд.
Скрипт тестировался и используется нами начиная с версии платформы 1С Предприятие 8.3.7.1970 для тиражных и собственных конфигураций. Во вложении архив с самим скриптом и bat – файлами из примеров. bat-файлы предназначены для просмотра возможностей запуска скриптов с параметрами, в боевых условиях это лишнее, можно запускать OneScript напрямую, без bat-файлов, передавая нужные параметры.
В общем случае, все команды нашего скрипта обрабатываются следующим образом:

oscript uni_script.os /КОМАНДА /Параметр1 ЗначениеПараметра1 /Параметр2 ЗначениеПараметра2 ...

При этом oscript - это либо путь к файлу oscript.exe либо переменная среды для этого файла. uni_script.os - путь к нашему универсальному скрипту. Команда - то, что будет выполнено. Параметры команды отвечают за передаваемые значения в скрипт.
Возможно последовательное выполнение скрипта с разными командами и параметрами.

Команда /DumpIB

Предназначена для создания резервной копии (выгрузки dt – файла), в случае серверной базы будет установлена блокировка сеансов пользователей, прерывание активных/зависших сеансов пользователей (все несохраненные данные, с которыми работают в данный момент пользователи будут утеряны!!!), выгрузка в dt – файл, снятие блокировки сеансов, в случае файловой базы – попытка выгрузки в dt – файл без анализа наличия активных пользователей.
Параметры команды:
- /F <путь> (используется в случае файловой базы; через пробел должен быть указан путь к ИБ, например, D:\1СDB);
- /S <адрес> (используется в случае серверной базы; через пробел должны быть указаны имя компьютера, работающего сервером приложений\ссылочное имя информационной базы, известное в рамках сервера «1С: Предприятия 8», например, server1c\buh2016);
Обязательным является указание одного из двух параметров, описанных выше.
- /N <логин администратора ИБ> (логин пользователя с правами «Администратор» в ИБ, необязательный параметр для базы, в которой не создано ни одного пользователя; если не указан, то указание пароля не требуется, например, Администратор);
- /P <пароль администратора ИБ> (пароль пользователя с правами «Администратор» в ИБ, необязательный параметр, например, ci5577);
- /CN <логин администратора кластера серверов> (только для серверной ИБ, не обязательный параметр, если на кластере серверов не требуется авторизация; если не заполнен, то указание пароля администратора кластера серверов не требуется);
- /CP <пароль администратора кластера серверов> (только для серверной ИБ, не обязательный параметр, если на кластере серверов не требуется авторизация);
- /UC <код блокировки сеансов пользователей> (необязательный параметр, если не указан, код блокировки установлен не будет);
- /Pref <префикс в имени файла бэкапа> (необязательный параметр, имя файла бэкапа по умолчанию формируется как <Префикс><ФорматДаты>.dt, если не указан, то для серверной базы имя файла будет формироваться как <ИмяБазы><ФорматДаты>.dt, для файловой- <ФорматДаты>.dt);
- /Format <формат даты> (формат даты и времени для имени файла бэкапа, если не задано, то будет использован формат "yyyyMMddHHmmss");
- /UCMsg <текст> (необязательный параметр, текст сообщения пользователям при блокировке сеансов работы в ИБ);
- /LOG <путь> (необязательный параметр, путь к файлу логов, записи добавляются в конец (в виде Дата, Тип сообщения: [INFO], [ERROR], [WARNG], Сообщение), если не указан, то сообщения выводятся на экран);
- /UPath <путь> (обязательный параметр, путь к каталогу выгрузки ИБ);
- /UCount <количество> (необязательный параметр, количество файлов выгрузки, которые необходимо оставлять в каталоге выгрузки, если архивов в каталоге будет больше указанного количества, то файлы с более ранней датой изменения будут удаляться).

Команда /RestoreIB

Команда восстановления ИБ из резервной копии (dt - файла), в случае серверной базы будет установлена блокировка сеансов пользователей, прерывание активных/зависших сеансов пользователей (все несохраненные данные, с которыми работают в данный момент пользователи будут утеряны!!!), загрузка из dt – файла, снятие блокировки сеансов, в случае файловой базы – попытка загрузки из dt – файла без анализа активных пользователей; параметры команды:
- /F <путь> (путь к ИБ, см. команду /DumpIB);
- /S <адрес> (адрес ИБ, см. команду /DumpIB);
Обязательным является указание одного из двух параметров, описанных выше.
- /N <логин администратора ИБ> (необязательный п-р, см. команду /DumpIB);
- /P <пароль администратора ИБ> (необязательный п-р, см. команду /DumpIB);
- /CN <логин администратора кластера серверов> (необязательный п-р, см. команду /DumpIB);
- /CP <пароль администратора кластера серверов> (необязательный п-р, см. команду /DumpIB);
- /UC <код блокировки сеансов пользователей> (необязательный п-р, см. команду /DumpIB);
- /UCMsg <текст> (необязательный п-р, см. команду /DumpIB)
- /LOG <имя файла> (необязательный п-р, см. команду /DumpIB);
- /UPath <путь> (обязательный п-р, см. команду /DumpIB)

Команда /Lock

устанавливает блокировку сеансов пользователей, параметры команды:
- /F <путь> (путь к ИБ, см. команду /DumpIB);
- /S <адрес> (адрес ИБ, см. команду /DumpIB);
Обязательным является указание одного из двух параметров, описанных выше.
- /N <логин администратора ИБ> (необязательный п-р, см. команду /DumpIB);
- /P <пароль администратора ИБ> (необязательный п-р, см. команду /DumpIB);
- /UC <код блокировки сеансов пользователей> (необязательный п-р, см. команду /DumpIB);
- /UCMsg <текст> (необязательный п-р, см. команду /DumpIB)
- /LOG <имя файла> (необязательный п-р, см. команду /DumpIB);
- /LockBegin <ДатаВремя> (необязательный п-р, время начала блокировки сеансов пользователей, если не установлен, блокировка сеансов будет установлена с текущей датой и временем);
- /LockEnd <ДатаВремя>(необязательный п-р, время окончания блокировки сеансов пользователей).

Команда /Unlock

Отключает блокировку сеансов пользователей, параметры команды:
- /F <путь> (путь к ИБ, см. команду /DumpIB);
- /S <адрес> (адрес ИБ, см. команду /DumpIB);
Обязательным является указание одного из двух параметров, описанных выше.
- /N <логин администратора ИБ> (необязательный п-р, см. команду /DumpIB);
- /P <пароль администратора ИБ> (необязательный п-р, см. команду /DumpIB);
- /LOG <имя файла> (необязательный п-р, см. команду /DumpIB);

Команда /Terminate

Прерывает активные/зависшие сеансы работы пользователей (все несохраненные данные, с которыми работают в данный момент пользователи будут утеряны!!!), параметры команды:
- /F <путь> (путь к ИБ, см. команду /DumpIB);
- /S <адрес> (адрес ИБ, см. команду /DumpIB);
Обязательным является указание одного из двух параметров, описанных выше.
- /N <логин администратора ИБ> (необязательный п-р, см. команду /DumpIB);
- /P <пароль администратора ИБ> (необязательный п-р, см. команду /DumpIB);
- /CN <логин администратора кластера серверов> (необязательный п-р, см. команду /DumpIB);
- /CP <пароль администратора кластера серверов> (необязательный п-р, см. команду /DumpIB);
- /UTime <количество секунд> (необязательный, время в секундах, с последней активности пользователя для удаления сеанса, если не указан, то скрипт будет пытаться разорвать все соединения с базой!!!);
- /LOG <имя файла> (необязательный п-р, см. команду /DumpIB).

Команда /ClearOldFiles

Удаление файлов по заданной маске с учетом последней даты изменения (устаревших), параметры команды:
- /UPath <путь> (обязательный п-р, путь к каталогу с файлами)
- /UMask <маска> (необязательный п-р, маска имени файла для отбора файлов, если не задан - в отбор попадут все файлы с расширением dt)
- /UCount <количество> (обязательный п-р, количество файлов, которые необходимо оставить)

Примеры использования скрипта (предполагаем, что установка «OneScript» уже выполнена ранее, как описано здесь).

Установка блокировки сеансов пользователей. В командной строке (или в bat – файле) необходимо набрать следующий текст:

oscript uni_script.os /Lock /S server1\mybase /N Администратор /P qwerty /UC 123 /LockBegin 20160505230000 /UCMsg “Будут проведены регламентные работы. Просьба выйти из программы!”

Рассмотрим подробнее, что же мы передали на вход «OneScript»:

oscript uni_script.os – указываем, что будет обработан файл скрипта «uni_script.os».
/Lock – первым параметром передаем саму команду (установить блокировку сеансов работы пользователей).
/S server1\mybase - параметром «/S» указали, что будем подключаться к ИБ, расположенной на сервере «server1» и именем базы «mybase» (серверная ИБ).
/N Администратор /P qwerty - следующими параметрами передаем логин и пароль администратора ИБ («/N» - имя пользователя – «Администратор», «/P» - пароль пользователя – «qwerty»).
/UC 123 – задаем код блокировки сеансов пользователей как «123».
/LockBegin 20160505230000 – указываем, что блокировка сеансов будет включена 05.05.2016г в 23:00:00.
/UCMsg “Будут проведены регламентные работы. Просьба выйти из программы!” – сообщение для пользователей, которые в данный момент работают с базой.
В результате выполнения этой команды будет установлена блокировка сеансов с базой, пользователи, работающие с базой, за 5 минут до включения блокировки, будут уведомлены о необходимости выхода из программы.

Создание резервной копии при помощи скрипта. В командной строке (или в bat – файле) необходимо набрать следующий текст:

oscript uni_script.os /DumpIB /S server1\mybase /N Администратор /P qwerty /UC 123 /Pref mybase_ /UPath D:\Backup\mybase /LOG D:\Backup\usLog.txt /CopyCount 5 /UCMsg “Вход в программу не возможен. Проводятся регламентные работы.”

Теперь подробнее, что было передано на вход «OneScript»:

oscript uni_script.os – тут указано, что будет обработан файл скрипта «uni_script.os».
/DumpIB – первым параметром передается команда (выполнить выгрузку ИБ).
/S server1\mybase – параметром «/S» указали, что будем подключаться к ИБ, расположенной на сервере «server1» и именем базы «mybase» (серверная ИБ).
/N Администратор /P qwerty –логин и пароль администратора ИБ («/N» - имя пользователя – «Администратор», «/P» - пароль пользователя – «qwerty»).
Авторизация на кластере серверов в нашем примере не требуется, поэтому параметры «/CN» и «/CP» опущены.
/UC 123 – задаем код блокировки сеансов пользователей как «123».
/Pref mybase_ - указываем, что префиксом в имени файла выгрузки должен быть «mybase_».
/UPath D:\Backup\mybase – путь, где будет храниться файл выгрузки «D:\Backup\mybase».
/LOG D:\Backup\usLog.txt – тут указываем, что файл логов «usLog.txt» должен быть в «D:\Backup».
/UCount 5 – указываем, что количество одновременно хранимых архивов (dt – файлов) должно быть 5 шт.
/UCMsg “Вход в программу не возможен. Проводятся регламентные работы.” – сообщение пользователям, которые будут пытаться подключиться к базе.
В результате выполнения этой команды, мы устанавливаем блокировку сеансов пользователей на время выгрузки из ИБ, прерываем текущие активные/зависшие сеансы (если такие к этому моменту все ещё есть), разрываем все соединения с базой, выгружаем ИБ в файл и снимаем блокировку сеансов.

Загрузка ИБ из резервной копии (dt - файла) при помощи скрипта.

oscript uni_script.os /RestoreIB /S server1\mybase /N Администратор /P qwerty /UC 123 /UPath D:\Backup\mybase\mybase_1Cv8.dt

Параметры команды:

oscript uni_script.os – обрабатываем файл скрипта «uni_script.os».
/RestoreIB – указана команда восстановления ИБ из файла.
/S server1\mybase – параметром «/S» указали, что будем подключаться к ИБ, расположенной на сервере «server1» и именем базы «mybase» (серверная ИБ).
/N Администратор /P qwerty –логин и пароль администратора ИБ («/N» - имя пользователя – «Администратор», «/P» - пароль пользователя – «qwerty»).
Авторизация на кластере серверов в нашем примере не требуется, поэтому параметры «/CN» и «/CP» опущены.
/UC 123 – задаем код блокировки сеансов пользователей как «123».
/UPath D:\Backup\mybase\mybase_1Cv8.dt – путь к файлу, из которого будет загружена ИБ.
В результате выполнения команды будет установлена блокировка сеансов работы пользователей, прерваны текущие активные/зависшие сеансы, разорваны соединения с ИБ, произведена загрузка ИБ из файла, снята блокировка сеансов.

Отключение сеансов пользователей при длительном отсутствии активности.

oscript uni_script.os /Terminate /S server1\mybase /N Администратор /P qwerty /UTime 1200

Параметры команды:

oscript uni_script.os – обрабатываем скрипт из файла «uni_script.os».
/RestoreIB – указана команда прерывания сеансов пользователей.
/S server1\mybase – параметром «/S» указали, что будем подключаться к ИБ, расположенной на сервере «server1» и именем базы «mybase» (серверная ИБ).
/N Администратор /P qwerty –логин и пароль администратора ИБ («/N» - имя пользователя – «Администратор», «/P» - пароль пользователя – «qwerty»).
Авторизация на кластере серверов в нашем примере не требуется, поэтому параметры «/CN» и «/CP» опущены.
/UTime 1200 – количество секунд (20 минут), в течении которых у сеанса пользователя не наблюдается активности.
В результате выполнения команды для указанной базы сеансы пользователей, у которых в течении указанного времени нет активности, будут отключены (все не сохраненные данные этих пользователей будут потеряны!).

Удаление файлов по заданной маске с учетом времени изменения.

oscript uni_script.os /ClearOldFiles /UPath D:\Backup\mybase /UMask "mybase_*.dt" /UCount 5

Параметры команды:

oscript uni_script.os – обрабатываем скрипт из файла «uni_script.os».
/ClearOldFiles – указана команда удаления файлов.
/UPath D:\Backup\mybase – путь к каталогу с файлами.
/UMask "mybase_*.dt" – маска имени файла для отбора.
/UCount 5 – количество файлов, которое необходимо оставить.
В результате выполнения команды в указанном каталоге будут оставлены последние по времени изменения пять файлов, имена которых попадают под указанную маску, остальные файлы будут удалены.

Теперь остается настроить планировщик на запуск команд или исполнения bat- файлов в следующей последовательности: установка блокировки сеансов пользователей с ИБ, затем, создание архивной копии ИБ. По окончании выгрузки, блокировка сеансов будет отключена.

А вот видео с консольным интерфейсом, который создал Андрей Ош.

Файлы

НаименованиеДатаРазмер
Uni_script.zip 06.05.16 7.19 КБ Скачать
 05.05.2016 
 Автор:
 OneScript, резервное копирование, скрипт, backup


Системные решения для 1С
Универсальный скрипт на языке 1С для OneScript
SoftOnIT.RU
Скрипт, написанный на языке 1С:Предприятие и исполняемый с помощью OneScript, позволяет выполнять такие опе... 2017-04-07T10:16:47+03:00
Универсальный скрипт на языке 1С для OneScript
Универсальный скрипт на языке 1С для OneScript
https://softonit.ru

Возврат к списку