gifts2017

Проверка флага "Блокировка регламентных заданий включена"(ScheduledJobsDenied) в свойствах баз на Кластере серверов 1С82

Опубликовал artur rakhmatulin (нормальный такой) в раздел Администрирование - Сервисные утилиты

Автоматическая проверка свойства "Блокировка регламентных заданий включена" (ScheduledJobsDenied) у указанных баз на кластере серверов 1С 82, логирование и рассылка результатов проверки

25.07.2013

Версия 1.01 - исправлены выявленые ошибки

- если в кластере добавлены резервные процессы, то попытка подключиться и прочитать свойства баз заканчивалась ошибкой, сейчас добавлена проверка на свойство процесса Use = 1 (т.е рабочий)

- прочие недочеты


Интро:

Однажды так случилось, что в свойствах боевой базы установили флаг "Блокировать фоновые задания", и очень важный регламент не выполнился и все получили по шапке. Собственно тогда и встал вопрос, как так сделать, что бы каждый вечер мониторилось такое свойство и результат рапортовался на e-mail. Надо - сделаем!


Сразу скажу, что идея не нова, и есть ренее созданные похожие публикации

вот сходу нашел такие варианты:

Скрипт на VBS, который проверяет работают ли регламентные/фоновые задания

и вот, уже на 1С, но с вполне конкретной целью "наоборот"

Отключение регламентных заданий в копии базы

Нюансы:

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

В кластере серверов могут быть несколько баз, и у этих базах могут быть разные пользователи с ролью "Администратор", и нужно выполнить метод AddAuthentication([пользователь БД],[пароль пользователя БД]) для каждого такого пользователя.

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

Подход:

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

Создается объект "V82.ComConnector", подымается коннект к кластеру серверов и выполняет нужные нам действия. Все шаги логирует и высылает на заданные e-mail адреса, и так же отдельно сохраняет log файл.

Все нужные нам методы и свойства описаны в синтаксис помощнике 1С Предприятия, в разделе "Средства интеграции и администрироования" - "Менеджер COM-Соединений" 

По порядку:

  1. создать объект V82.COMConnector
  2. подключиться кластеру серверов connectAgent([строка подключения кластера]) 
  3. получить кластреы GetClusters()
  4. залогиниться под Администратором кластера Authenticate([cluster],[админ крастера],[пароль админа кластера] )
  5. получить рабочие процессы GetWorkingProcesses([cluster])
  6. подключиться к рабочему процессу ConnectWorkingProcess([строка подключения к рабочему процессу])
  7. залогиниться под всеми Администраторами AddAuthentication([пользователь БД],[пароль пользователя БД])
  8. получаем список баз GetInfoBases()
  9. проверяем свойство базы ScheduledJobsDenied

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

Так же можно указать несколько адресов для рассылки лога выполненой операции

  


Иерархия файлов параметров


.\config
.\config\srv.txt
.\config\srvMail.txt
.\config\auth.txt
.\config\emails.txt
.\config\base.txt


* - Обязательные параметры

1. .\config\srv.txt
Файл параметров подключения к серверу 1С
*Первая строка: *[IPадрес/Имя менеджера кластера серверов],*[порт подключения к кластеру серверов]
Вторая строка:    [админ кластера],[пароль админа кластера]

2. .\config\srvMail.txt
Файл содержит описание подключения к почтовому серверу
*Первая строка: *[ящик от чьего имени отсылать],*[адрес почтового сервера],[порт, если не указано то = 25]

3. .\config\auth.txt
Файл содержит параметры аутентификации пользователей баз с ролью Администратор
[user1],[pass1]
[user2],[pass2]
….
[userN],[passN]

4. .\config\emails.txt
Файл содержит строки с e-mail адресами для рассылки
[email1]
[email2]

[emailN]

5. .\config\base.txt
Файл содержит строки с именами баз для проверки установленной блокировки, если файл пустой,
то проверяются все базы
[base1]
[base2]

[baseN]



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

Писалось на MsVS2012

Минусы:

Все параметры хранятся в простых *.txt  файлах, и поэтому это неочень безопасно. Но если у вас "всякие нехорошие"  не имеют доступ к серверу, то это не сильно страшно.

Но опять же, все на ваше усмотрение.


прошу критику и предложения в комменты или личку.

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

Наименование Файл Версия Размер Кол. Скачив.
CheckScheduledJobsDeniedOnServer.zip
.zip 194,01Kb
04.06.13
12
.zip 194,01Kb 12 Скачать
CheckScheduledJobsDeniedOnServer_1.01.zip
.zip 194,59Kb
25.07.13
23
.zip 194,59Kb 23 Скачать

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение

Комментарии

1. Максим Шадрин (mixperm) 01.12.14 09:16
Нужно переделать под 83 коннектор и добавить опцию включить или отключить блокировку регламентных заданий на все базы. у меня их 150+ штук
2. artur rakhmatulin (нормальный такой) 01.12.14 13:39
(1) mixperm, привет.
прикольно, попробую с 83.

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