gifts2017

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

Опубликовал Николай Павлучинский (mykolap) в раздел Администрирование - Системное

Установить блокировку соединений, выгнать всех из базы, перезапустить агент сервера,
обновить конфигурацию базы данных, сделать выгрузку базы, произвести тестирование и исправление, разрешить работу пользователей, сохранить в лог и в журнал регистрации - все это можно сделать одним скриптом. Теперь и на 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-администрирования или консоли сервера стали мешать получению монопольного доступа к базе.

Скачать файлы

Наименование Файл Версия Размер
create_upd_file_v82.epf 511
.epf 20,96Kb
20.12.10
511
.epf 20,96Kb Скачать
create_upd_file.epf 185
.epf 20,71Kb
08.12.10
185
.epf 20,71Kb Скачать
confupdate_ps1_tmplt.txt 85
.txt 18,93Kb
08.12.10
85
.txt 18,93Kb Скачать
confupdate_vbs_tmplt.txt 83
.txt 18,56Kb
08.12.10
83
.txt 18,56Kb Скачать
confupdate.vbs 475
.vbs 13,81Kb
08.12.10
475
.vbs 13,81Kb Скачать

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение
Комментарии
1. Владислав Томашевич (tomvlad) 09.02.10 11:57
Было бы круто написать еще и обработку для автоматической генерации текста скрипта для визуальной настройки.
2. Николай Павлучинский (mykolap) 09.02.10 16:08
1. На самом деле указанный скрипт и был сгенерирован автоматически.
В моей базе есть справочник с параметрами различных баз - имя сервера, имя базы, каталог скриптов и др. параметры (те что в начале файла). Этот справочник привязан к плану обмена. И у каждой базы файл генерируется и запускается автоматически по расписанию...

Причем с различными параметрами, у дневных заданий - файл с минимумом функций - только обновить базу если нужно, у ночных заданий - максимум функций (перезапустить, сделать выгрузку, раз в месяц тестирование и исправление)
megatrend; +1 Ответить
3. Николай Сенаторов (Mortal) 15.02.10 10:07
Ваша вещь очень кстати. Спасибо. Поюзаю, постараюсь отписаться еще. ;)
4. Наталья (fox_haus) 16.02.10 08:15
Подскажите, пожалуйста, как запускать этот скрипт. (для новичка)
5. Николай Павлучинский (mykolap) 16.02.10 10:48
(4). Двойным щелчком по нему.
Но предварительно его нужно отредактировать, забить имя вашего сервера, имя вашей базы и пр.
Вообще то скрипт разрабатывался для автоматизации а не ручного запуска.
В таком случае его нужно включить в задания планировщика Windows (Мой компьютер - Панель управления - Назначенные задания)
6. Николай Павлучинский (mykolap) 27.05.10 19:03
(1). Добавил обработку. Сделал визуальную настройку файла. В обработке формируется скрипт на одном из двух языков: PowerShell или VBScript.
Также есть возможность сокращенного или полного файла.
Сокращенного - если например днем нужно обновить конфигурации УРБД узлов без доп действий.
Полное - с выполнением различных дополнительных действий.
8. Николай Павлучинский (mykolap) 04.06.10 11:30
(7) Спасибо за замечание насчет образца обычной аутентификации. Исправил в обработке.

Шаблоны скриптов оставлены только чтобы посмотреть образец что получается на выходе. Они не обновляются при обновлении обработки. Для формирования рабочих скриптов используйте обработку.

Правда в обработке по умолчанию используется Windows аутентификация (не люблю хранить пароли в открытом виде в скриптах).
Если же вы по какой то причине не используете этот способ аутентификации, в начале скрипта есть в комментарии образец что нужно изменить. Этот образец учитывает уже ваши замечания.
megatrend; +1 Ответить
9. megatrend - (megatrend) 28.01.11 11:17
Спасибо за классную программу (за скрипт и за обработку его генерации)!

Но в этом скрипте не хватает параметра "порт агента сервера". У меня агент сервера работает на 1740 порту, а кластер с базами данных - на 1741 порту.

Порт 1740 просто некуда было "вбить" в скрипт, пришлось в скрипт добавлять новую переменную.
10. Олег Шалимов (CaSH_2004) 23.09.11 18:37
Оба файла (create_upd_file.epf и v82) не открываються, а пишут:
Неверный формат хранилища данных 'file://G:/create_upd_file_v82.epf'
Перезалейе что-ли!
11. Alex Tim (Qseft) 05.10.11 15:43
А если работает два экземляра сервера 1С одной версии, оба агента рестартанет?
12. megatrend - (megatrend) 05.10.11 16:20
(11) Qseft, нет. Перезапустится только тот сервер, агент которого "сидит" на порту 1540.
13. Николай Павлучинский (mykolap) 05.10.11 17:34
(11) Скрипт не рассчитан на работу с несколькими агентами.
Будет перезапущен тот агент, который указан в параметрах службы.
А другой будет аварийно завершен и не запущен.
У меня на самом деле агентов 2, но я вместо перезапуска делаю
смену активности рабочих процессов.
Количество их у меня вдвое больше нужного,
и каждую ночь они меняются местами.
14. Николай Павлучинский (mykolap) 05.10.11 17:36
(12) Все зависит от настроек скрипта,
можно задать другой порт и название дополнительной службы.
Тогда правильно будет перезапущена доп служба, а основная на порту 1540 завершена аварийно.
Только суть от этого не меняется, скрипт не поддерживает несколько агентов.
15. Serheo Nikolis (Serheo) 10.11.11 01:31
Что-то не могу запустить обработку. В Конфигураторе открывается окно редактирования самой обработки, в Предприятии - пустое окно. Версия 1С:Предприятие 8.2.13.202
Помогите разобраться.
16. Николай Павлучинский (mykolap) 09.02.12 14:39
(15) Serheo, Обработка работает только на толстом обычном клиенте.
17. Serheo Nikolis (Serheo) 11.02.12 00:00
Спасибо, я уже разобрался. Причем случайно.
18. А К (Вася_Пупкин) 19.03.12 08:17
Спасибо за скрипт. Правда хотел скопировать VBS, а скопировал .epf =(. Но всё равно вроде разобрался - заработало! Давно искал. Перешол недавно на SQl версию базы. Быкапить лучше средствами 1С. Спасибо за обработку!
19. А К (Вася_Пупкин) 19.03.12 08:20
А разобрался! Там можно .VBS получить! +
20. Василий Кожуховский (yavasilek) 20.06.12 10:50
очень полезная обработка! Автору респект!
21. Дмитрий Шарнин (xdim) 29.10.12 16:36
Николай, добрый день!
Очень хорошая вещь.
У самих развернутая УРБД на 15 услов не типовая.
Реализовал на регламентных заданиях с созданием скрипта.
Но обработку нашел обкромсаную, а прав скачивать еще нет.
не поделитесь по почте ?
Можно обсудить бартер )
xdim2006(бульдог)я тчк ру
22. lees lees (lees) 05.06.13 16:00
скачал и давно использую, спасибо