Автоматическое обновление конфигурации базы 1C 8.2 при помощи регламентного задания


Автоматическое обновление конфигурации базы 1C 8.2 при помощи регламентного задания

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

Общий принцип следующий:
 
1. Создается регламентное задание (например с именем «ОбновлениеБазы«).
Управление регламентным заданием осуществляется при помощи обработки КонсольЗаданий. В ней можно запустить задание принудительно или настроить расписание запуска, можно отключить его выполнение или снова включить.

2. В модуле регламентного задания нужно прописать следующие переменные — 

ИмяЗаданияОбновления — точное название регламентного задания («ОбновлениеБазы»). Используется для того чтобы при обновлении не отключить наше фотновое задание.
Пользователь — имя пользователя с административными правами
Пароль — пароль пользователя с административными правами
КодБлокировки — произвольный код для блокировки запуска сеансов пользователей во время обновления

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

4. В результате получаем обновленную конфигурацию базы данных.

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

17 Comments

  1. Yashazz

    Без системного администратора, говорите? Ага, а потом в самый неподходящий момент какому-нибудь фрагменту вашей последовательности действий не хватает прав доступа на что-то куда-то.

    Reply
  2. kiba

    (1) Yashazz, а можно поподробнее, какой фрагмент кода не отрабатывает? Я проверял обновление на сервере 1С-предприятия, к которому прав доступа в принципе не было, все отрабатывало. Может конечно на сервере права были не сильно урезаны. Но в принципе все что делает регламентное задание, это создание командного файла в каталоге временных файлов и его запуск. А после его запуска просто вызывается конфигуратор 1С к ключами обновления. Ничего крамольного нет. Одним словом, если у Вас возникла ошибка при обновлении, напишите пожалуйста какая

    Reply
  3. soba

    А вот тоже самое, но в несколько баз? Частенько ведь такое встречается

    Reply
  4. kiba

    (3) soba, В смысле организовать обновление конфигураций нескольких баз сразу? Проще всего просто добавить данный механизм во все конфигурации. И в каждой базе настроить разовый запуск регламентного задания на обновление когда это нужно. Все же «пакетное обновление» лучше реализовывать по стандартной схеме — через командный файл, который запускается на сервере через механизм назначенных заданий Windows. Только в этом случае он будет запускаться автоматически по расписанию, которое будет настраивать системный администратор. А моя реализация позволяет управлять обновлением без системного администратора. разница в принципе только в этом.

    Reply
  5. v.l.

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

    Reply
  6. kiba

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

    Reply
  7. v3rter

    Проверялось на Server 2003 или 2008? На 2008-м у пользователя сервера предриятия прав на запуск чего-либо из %temp% может и не быть.

    Reply
  8. kiba

    (7) v3rter, проверялось только на Server 2003. Если кто-нибудь может проверить на 2008, отпишитесь потом.

    Reply
  9. v.l.

    (6) я и не говорил, чтобы жестко. Их надо получить для начала, прочитать из системы а потом играться с батниками. Вот здесь подробное описание: http://infostart.ru/public/104469/

    Вам только сделать обертку. Возможно, уже есть готовое решение.

    Reply
  10. KonstB

    Подтверждение легальности обновления проходит?

    Reply
  11. kiba

    (10) KonstB, так сообщение насколько я понимаю появляется не при обновлении конфигурации а при запуске в режиме 1С — Предприятие? Значит все что нужно сделать, это при первом после обновления запуске 1С ответить ДА, ну или НЕТ, это у кого как :)))

    Reply
  12. v3rter

    Если что, самообновление некоторых конфигураций 1С выполняется из них же самих с помощью .hta-файла со скриптами, как в популярных версиях «драйверпаков».

    Reply
  13. KonstB

    (11)

    Да я именно про это сообщение)

    Могу сказать за БП — рядовой бух, гл.бух — не сможет запустить базу, если у них выскочит данное окно. Т.к. действия которые проводятся, при подтверждении легальности, проходят ТОЛЬКО под ПолнымиПравами! (это легко обходится, но все же — у «рядового» бух будет ступор…).

    Если обновление проходит со стороны сервера, то это окно не выскакивает.

    Вот я и хотел узнать, при использовании Вашего механизма — выскакивает это окно или нет.

    Reply
  14. adhocprog

    Интересная тема )

    Reply
  15. Puk2

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

    Reply
  16. check2

    Всё хорошо, но вот когда доступно демоническое обновление, лучше бы использовать его (некоторые всё ещё боятся, но многие уже используют) Кроме того, блокировка пользователей достаточно жёсткая. За это могут и по голове настучать. Надо как то помягче, например, используя механизм установки блокировки типовой УПП. Там пользователей можно заранее предупредить, что будет блокировка, и лишь спусти пару минут назначенного времени всех «мочить». Как говориться — кто не спрятался я не виноват 🙂

    Reply
  17. chmv

    Меня интересует вопрос о легальности обновления.

    Как сделать его автоматически

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *