В распределенных системах, где используется связка «Сервер приложений 1С — Сервер клиентских приложений (RDP / RemoteApp) — Локальный ПК пользователя», периодически возникают сбои. Это могут быть сетевые разрывы, остановка служб кластера или проблемы на стороне СУБД. Часто техническая поддержка узнает о проблеме с задержкой — только после обращений пользователей. Проанализируем, как автоматизировать регулярную проверку доступности системы и настроить оперативное отправление почтовых уведомлений администраторам.
Одним из самых эффективных и гибких подходов является создание автономного скрипта на языке 1С с помощью утилиты OneScript (OScript). Это решение не требует открытого веб-сервера или установленного Zabbix на стороне пользователя.
Разберем процесс настройки по шагам:
opm install InternetMail
Рассмотрим пример проверки доступности хоста из 1С с помощью обращения к утилите MSScriptControl.ScriptControl и вызова VBScript-кода:
Попытка
scrptCtrl = Новый COMОбъект("MSScriptControl.ScriptControl");
scrptCtrl.language = "vbscript";
scrptCtrl.addcode("
|Function Avaible
|Set objWMIService = GetObject(""winmgmts:{impersonationLevel=impersonate}"")
|Set objPing = objWMIService.ExecQuery(""select * from Win32_PingStatus where address = '"+Hostname+"'"")
|For Each objStatus in objPing
|If IsNull(objStatus.StatusCode) Or objStatus.StatusCode <> 0 Then
| Avaible = 0
|Else
| Avaible = 1
|End If
|Next
|End function
|");
Доступен = scrptCtrl.Run("Avaible");
Исключение
Доступен = Ложь;
КонецПопытки;
Если необходимо проверить всю цепочку подключения (от эмуляции терминального сеанса до ввода логина/пароля в окне авторизации 1С), воспользуемся утилитой AutoIt. Этот инструмент позволяет записывать и воспроизводить нажатия клавиш, клики мыши и отслеживать появление конкретных окон Windows.
Ссформируем поэтапный алгоритм работы проверки в AutoIt:
1cv8c.exe, передаем учетные данные.smtpsender). Если все этапы прошли успешно, скрипт завершает работу без вызова тревоги.Для полноценной проверки авторизации в самой базе 1С без сложной эмуляции кликов мыши применим запуск тонкого клиента 1С в командном режиме с перенаправлением системных сообщений в лог-файл.
Посмотрим, как выглядит структура команды для проверки:
1cv8c.exe ENTERPRISE /S "Server1C\BaseName" /N "TestUser" /P "Password" /Out "C:\Logs\check_status.txt"
Разберем логику работы управляющего скрипта (PowerShell или CMD):
C:\Logs\check_status.txt.1cv8c.exe с указанными выше ключами.1cv8c.exe.check_status.txt. Если в файле зафиксированы ошибки аутентификации, блокировки СУБД или отсутствие лицензий, отправляется e-mail администратору.Обычная команда ping проверяет только доступность сетевого интерфейса (ICMP-протокол), но не дает представления о состоянии процессов 1С. Чтобы убедиться, что службы кластера работают и принимают соединения, проверим открытые сетевые порты:
ragent);rmngr);rphost).Выполнить точечную проверку порта можно с помощью команды PowerShell:
Test-NetConnection -ComputerName "Server1C" -Port 1541
Если порт закрыт или не отвечает, это свидетельствует о падении службы 1С:Предприятия или о блокировке трафика брандмауэром, что позволяет мгновенно локализовать проблему еще до обращения пользователей.