Как добиться 100% защиты архивов баз 1С от шифровальщиков

  оглавление  Учимся писать скрипты на OneScript

Обновлятор-1с. Учимся писать пакетные (batch) скрипты

О чём вообще идёт речь?

Речь идёт  о возможности написания пакетных скриптов для автоматизации операций над группой баз вот на этой вкладке обновлятора:

Что такое пакетный скрипт?

Пакетный скрипт - это текстовый файл для Windows, содержащий последовательность команд, предназначенных для исполнения командным интерпретатором (подробнее).

Такие файлы обычно имеют расширение bat или cmd.

Я сам подсматриваю синтаксис таких скриптов здесь и здесь.

Зачем писать и запускать эти скрипты именно в обновляторе?

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

А именно.

Список баз для обработки

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

Передача параметров базы

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

Все эти параметры мы можем использовать в своём скрипте, делая его универсальным для выполнения над любым количеством выбранных баз.

Примеры таких скриптов мы можем найти в списке шаблонов обновлятора:

Предварительная архивация базы

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

Эта резервная копия будет согласована с общей системой архивации, то есть её также можно подвергать "тюнингу" в дополнительных настройках обновлятора. Такая копия всегда будет иметь метку "перед опасной операцией".

Блокировка, разблокировка базы

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

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

Нужно "разрулить" текущие подключения пользователей, административные подключения, выполнение фоновых задач. И всё это через общение напрямую с кластером 1с.

Сохранение отчётов

Обновлятор сохраняет историю выполнения таких скриптов в менеджере отчётов.

Как в общем виде:

Так и в детальном:

Кстати, вы обратили внимание, что в отчётах скрываются имя и пароль пользователя, под которым выполнялся пакетный запуск конфигуратора? Эта конфиденциальная информация намеренно заменяется на символ звёздочка.

Уведомление на почту

Если у вас настроены уведомления на почту (все или только при ошибках)...

... то информация о выполнении скриптов (включая детальные отчёты) будет приходить к вам точно также, как и информация о выполнении других операций из обновлятора:

Запуск скрипта по расписанию

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

Облачный мониторинг

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

Что ещё полезно изучить перед написанием скриптов?

Ну, конечно же, пакетные команды конфигуратора. Куда же без них... :)

Прежде всего есть достаточно полная статья на Инфостарте. Но, к сожалению, и эта статья уже не может считаться исчерпывающей, так как в ней нет информации о командах, реализованных в последних версиях платформы.

Чтобы увидеть все возможные команды именно для нашей версии 1с - заходим в конфигуратор и выбираем пункт меню "Справка"-"Содержание справки":

В открывшемся окне нас интересует вот эта ветка:

Здесь есть всё, информация исчерпывающая. Возможно не будет хватать примеров использования, поэтому к справке конфигуратора советую переходить уже после того как освоитесь с выполнением простейших пакетных команд согласно всё той же статьи Инфостарта.

Ну, поехали!

Хватит говорить про скрипты - давайте их писать :)

Выводим на экран имя базы

Для этого нам понадобится команда echo (именно она отвечает за вывод на экран) и параметр %base_name% (его нам передаёт в скрипт обновлятор).

Так и напишем:

И запустим наш скрипт над выбранной группой баз:

Пересчитываем итоги

Здесь уже речь идёт о том, чтобы выполнить пакетную команду конфигуратора, которая называется IBCheckAndRepair с ключом RecalcTotals.

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

Вместо этого мы просто напишем:

%run_1c_d% /IBCheckAndRepair -RecalcTotals

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

Почему он называется именно run_1c_d? Это сокращение "run 1c designer". Designer означает режим конфигуратора.

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

Делаем выгрузку базы

За выгрузку базы отвечает команда DumpIB, которая принимает в качестве параметра путь к файлу, куда нужно выгрузить базу.

Получается наша команда могла бы быть такой:

%run_1c_d% /DumpIB "x:\work\base.dt"

Но что будет, если мы запустим такой скрипт сразу для нескольких баз? Они все будут писать выгрузку в один и тот же файл, перезатирая данные друг друга.

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

Эта метка включает в себя имя базы и текущую дату и время.

Чтобы сделать наш скрипт универсальным перепишем его вот так:

%run_1c_d% /DumpIB "x:\work\%stamp%.dt"

Вы спросите - откуда я беру все эти полезные параметры для скрипта?

А я ещё раз напомню вам вот об этом меню:

Открываем базу с запуском внешней обработки

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

Для этого мы сначала пишем обработку для 1с, при открытии которой выполняется нужный код, а затем автоматически закрывается база.

А затем пишем следующий пакетный скрипт:

%run_1c_e% /Execute "c:\Report.epf"

Обратите внимание, что здесь уже не идёт речи о пакетном запуске конфигуратора. Здесь мы запускаем 1с в режиме предприятия с ключом Execute, указав для последнего путь к обработке, которую нужно открыть сразу после запуска базы.

За запуск базы в режиме предприятия отвечает параметр run_1c_e. Почему он называется именно так? Это сокращение от "run 1c enterprise". Enterprise означает запуск базы в режиме предприятия (пользовательский режим).

Выполняем регламентные задачи

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

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

Речь идёт вот об этой группе команд:

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

Например, вот так будет выглядеть команда запуска регламентного задания "ЗагрузкаКурсовВалют":

@jobs_run(
    only_using:False,
    jobs:", ЗагрузкаКурсовВалют",
    wait_for_completion: False
)

При этом такие команды можно комбинировать друг с другом, но их нельзя комбинировать с другими командами пакетного скрипта (которые не были выбраны из меню Обновлятор-Методы).

Как мне придумывать свои скрипты?

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

Ну а затем изучайте пакетные возможности конфигуратора (см. справку по ним выше) и если какая-то команда вас заинтересовала - пробуйте её применять подобно тому, как мы делали выше.

 Я написал классный скрипт и хочу поделиться

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

Хотите прислать мне свой скрипт? Прошу вас сюда (ссылка).

С уважением, (преподаватель школы 1С программистов и разработчик обновлятора).



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

Нажмите одну из кнопок, чтобы поделиться:



Как добиться 100% защиты архивов баз 1С от шифровальщиков

  оглавление  Учимся писать скрипты на OneScript