Скрипт для регламентного обслуживания 1С


Установить блокировку соединений, выгнать всех из базы, перезапустить агент сервера,
обновить конфигурацию базы данных, сделать выгрузку базы, произвести тестирование и исправление, разрешить работу пользователей, сохранить в лог и в журнал регистрации - все это можно сделать одним скриптом. Теперь и на 8.2.

Итак возможности скрипта:

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

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

- Если в течении периода ожидания (настраивается, по умолчанию 10 мин.) не завершатся все ragent, rmngr, rphost - они будут завершены принудительно,

- Старт агента сервера (с блокировкой соединений),

- Обновление конфигурации базы данных,

- Опциональная выгрузка базы данных,

- Опциональное тестирование и исправление - с тестированием логической целостности и пересчетом итогов,

- Разрешение работы пользователей,

- Сохранение произведенных действий в лог на диске и в журнале регистрации,

- Зачистка старых выгрузок (по умолчанию старше 7 дней)

- Копирование лога на сетевой ресурс.

Можно сделать автоматическую генерацию этого скрипта из 1С и автоматический его запуск по регламентному заданию 1С.

Обновлено:

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

Запуск файла в рабочем варианте осуществляю в процедуре приемки сообщения от главного узла УРБД.

Если КонфигурацияИзменена() Тогда

    Ком = Новый COMObject("WScript.Shell");

    Ком.Run("""" + ПолныйПутьКФайлуСкрипта + """");

КонецЕсли;

27/05/10 - Добавлена обработка для формирования файлов регламентного обслуживания на одном из двух языков: PowerShell или VBScript

Добавил функцию ресайклинга rphost.

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

Отдельного признака в настройке нет - если стоит галочка перезапуск агента -

перезапускается агент, если галочка снята - выполняется ресайклинг.

Для ресайклинга необходимо минимум 2 rphost, минимум один включенный и минимум один выключенный.

04/06/10 - Как лучше запускать скрипты. Полное обслуживание понятно - назначить по графику регламентное задание. А вот время для сокращенного скрипта выбирается автоматом в процедуре приемки сообщения:

    Попытка
        ПланыОбмена.ПрочитатьИзменения(ЧтениеСообщения, СтруктураНастроекОбменаДанными.КоличествоЭлементовВТранзакцииНаЗагрузкуДанных);
       
        ЧтениеСообщения.ЗакончитьЧтение();
        ЧтениеXML.Закрыть();
       
    Исключение
       
        СообщитьИнформациюОбОшибкеОбмена("Ошибка при чтении изменений при обмене РИБ: " + ОписаниеОшибки(), СтруктураНастроекОбменаДанными, Истина, Ложь);
       
        // ошибка может быть связана с тем, что изменилась конфигурация информационной базы
        Если ПланыОбмена.ГлавныйУзел() <> Неопределено
            И КонфигурацияИзменена() Тогда
           
            Ком = Новый COMObject("WScript.Shell");
            Ком.Run("""" + ПутьККаталогуСкриптов + "confup_hh.vbs" + """");
           
        Конецесли;
       
        Возврат;
                       
    КонецПопытки;

В типовых это: ПроцедурыОбменаДанными.ЗагрузитьCообщениеСИзменениямиОтРИБУзла

По количеству скачиваний вижу в основном скачивают образец vbs, но он не обновляется и не содержит последних исправлений и всех функций. Пользуйтесь обработкой для формирования файлов vbs/ps1.

08/12/10 - Добавил версию на 8.2. Простой конвертации версии под 8.1 недостаточно. В версии на 8.2 изменилась работа с соединениями, теперь вместо соединений мы имеем сессии, сессии могут не исчезать после рестарта, поэтому добавлено повторную попытку разрыва соединений после рестарта. Также постарался избавится от регистрозависимости имени базы.

20/12/10 - Исправлена ошибка в обработке когда из-за служебных соединений могли не происходить выгрузка или обновление конфигурации. В платформе 8.2 почему-то соединения COM-администрирования или консоли сервера стали мешать получению монопольного доступа к базе.

Файлы обработки:

-