Возможно ли автоматическое выполнение обработчиков обновления для базовой платформы?

  оглавление  Настройка другой иконки и метки в заголовке.

Настраиваем файловые базы, опубликованные через web-сервер для обновлятора-1с

 Внимание. Эта статья устарела, новая версия здесь

Итак, ситуация. У нас есть файловая база, опубликованная через web-сервер (в нашем случае Apache), с которой мы хотим работать из обновлятора.

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

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

Для этого заходим в свойства нужной базы:

Настраиваем блокировку

Переходим на закладку "События"->"Перед блокировкой" и пишем сюда следующий скрипт:

Что я делаю? Я останавливаю службу по имени Apache2.4, запущенную на сетевом компьютере tezis (этот тот компьютер, на котором крутится веб-сервер Apache).

После этого я жду 10 секунд, чтобы быть уверенным, что служба точно остановилась.

Если обновлятор запускается на том же компьютере, что и веб-сервер - команда остановки службы будет проще:

net stop Apache2.4
ping 127.0.0.1 -n 10 > nul

Настраиваем разблокировку

Для этого там же (в свойствах) переходим на закладку "После разблокировки" и пишем сюда скрипт для запуска службы, которую мы остановили при блокировке:

Если обновлятор запускается на том же компьютере, что и веб-сервер - команда запуска службы будет проще:

net start Apache2.4
ping 127.0.0.1 -n 10 > nul

Проверяем в деле

Запустим архивацию, настроенной нами базы:

Видно, что в перед блокировкой базы служба Apache на компьютере с веб-сервером была остановлена.

Затем была осуществлена блокировка доступа к базе. Сделана архивная копия.

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

Возможные трудности

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

В этом случае вам может понадобиться дать пользователю разрешение на запуск и остановку служб. Вот инструкция: ссылка.

Спасибо одному из пользователей обновлятора - Андрей, спасибо ;) - что разобрался с ситуацией и поделился решением.

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



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

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



Возможно ли автоматическое выполнение обработчиков обновления для базовой платформы?

  оглавление  Настройка другой иконки и метки в заголовке.