Command/com - конфигурация для управления сервером 1С из браузера

В данной статье я хотел бы рассказать о конфигурации “Command/com”, которая позволила нам облегчить процесс удаленного управления серверами 1С и размещенными на них конфигурациями с помощью любого устройства, в котором есть браузер.

Нас часто просят привести примеры работы с 1С посредством http-сервисов. Command/com является простой, готовой к использованию утилитой, которая позволяет выполнять заранее определенный набор действий на сервере 1С при нажатии кнопки в браузере. Состав кнопок и соответствующие им действия определяются в режиме предприятия, а формирование веб-интерфейса и обработка нажатия кнопок выполняются посредством http-сервиса 1С. Анализ кода Command/com поможет на простых примерах разобраться с работой http-сервисов, понять принцип формирования и обработки параметров GET-запросов.

Описание

Входящие в подсистему объекты

Утилита выполнена в виде отдельной конфигурации, которая также может быть интегрирована с любой другой конфигурацией 1С путем сравнения и объединения. В этом случае с помощью Command/com возможно удаленное управление родительской конфигурацией. Например, нажатием кнопки можно завершить сеансы пользователей, выполнить регламентные процедуры, перезапустить оборудование, исполнить любой произвольный код на языке 1С или команду системы. В качестве отдельной конфигурации Command/com может выполнять роль утилиты для управления сервером 1С. Наиболее часто используемые команды - остановка и запуск службы сервера 1С:Предприятия, перезагрузка сервера. Command/com позволяет максимально упростить процесс выполнения произвольного набора действий с серверами и базами данных 1С:Предприятия. Объекты конфигурации объединены в отдельную подсистему для удобства интеграции с другими конфигурациями:

Для работы конфигурации на сервере должен быть установлен веб-сервер IIS или Apache. Конфигурация разработана на управляемых формах. Код конфигурации открыт.

Установка

Публикация на веб-сервере
Пользователи

Возможны два варианта работы Command/com - автономный (отдельная конфигурация) и интегрированный (объединение с родительской конфигурацией).В автономном режиме Command/com устанавливается как обычная конфигурация. После установки необходимо опубликовать ее на веб сервере стандартными средствами платформы (Администрирование- Публикация на веб-сервере). Для доступа к http-сервису необходимо на закладке “Основные - HTTP-сервисы” установить флажок напротив сервиса “vcanCommand”:

После этого в режиме конфигуратора необходимо добавить пользователей и выдать им соответствующие права: “КэнКоммандАдминистратор” - для пользователей, которые смогут добавлять/изменять состав выполняемых команд, или “КэнКоммандПользователь” - для тех, кто сможет только выполнять команды из браузера. Также минимум одному из пользователей должны быть присвоены права“Администратор” для управления списком пользователей. Стоит заметить, что в автономном режиме даже при наличии на компьютере сервера 1С и СУБД конфигурацию Command/com лучше использовать в файловом варианте. Поскольку информации в БД практически нет, а http-запросы выполняются относительно быстро, файловая база легко справляется со своими задачами и при этом сохраняет работоспособность даже при остановленной службе сервера1С:Предприятия. В интегрированном режиме Command/com встраивается в родительскую конфигурацию путем сравнения/объединения. После этого существующим пользователям выдаются права ролей“КэнКоммандАдминистратор” или “КэнКоммандПользователь” в зависимости от уровня доступа.

Работа с конфигурацией

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

Настройка пользователей

Для администрирования пользователей, которым предоставляется доступ к командам, существует одноименный справочник с единственным реквизитом “Имя пользователя информационной базы”. Имя пользователя в этом реквизите должно совпадать с именем пользователя в конфигураторе:

Пользователи

Непосредственно в форме элемента справочника также можно флажками выделить команды или группы команд, к которым данному пользователю разрешен доступ:

Пользователи

Создание и настройка команд

Справочник команд - иерархический, что позволяет управлять доступом сразу к целой группе команд.

Каждая команда - это элемент справочника, в котором указываются:

Список

Наименование - произвольная строка$

Список

Идентификатор - уникальная строка, состоящая из латинских букв и цифр;

Список

Тип действия - перечисление со значениями “Код 1С”, “Команда системы” и “Скрипт”;

Список

Выполняемое действие и Путь к скрипту - строки, в которых указывается либо выполняемый по команде код 1С, команда системы или путь к скрипту *.bat.;

Список

Порядок - число, определяющее положение команды на веб-странице: чем меньше число, тем выше располагается кнопка команды;

Список

Активна - булево, если равно “Истина”, то команда будет отображаться на веб-странице.

Назначение практически всех реквизитов понятно. Подробнее можно остановиться на реквизите “Тип действия”. Именно он определяет, какое действие будет выполнено при нажатии пользователем соответствующей кнопки в браузере.

При значении “Код 1С” становится активным поле “Выполняемое действие”, в котором необходимо указать код на языке 1С:Предприятие. Например, можно выполнить процедуру общего модуля. Или сразу несколько команд, как это сделано в тестовой команде “Создать файл на сервере”:

Создать файл на сервере(Команды)

При значении “Команда системы” в поле “Выполняемое действие” указывается соответствующая строка. Например, для остановки службы сервера 1С:Предприятия выполняется следующая команда:

Обновить службу агента сервера 1С (Команды)

При значении “Скрипт” в поле “Путь к скрипту” указывается расположение запускаемого скрипта:

Перезагрузить сервер (Команды)

Группы пользователей

Этот справочник облегчает администрирование доступа пользователей к командам при их большом количестве. Например, в прилагаемой к статье тестовой конфигурации помимо управления сервером 1С настроены также тестовые команды и команды для управления шаговым двигателем робота на базе микроконтроллера Arduino через com-порт. Логично разбить эти команды на соответствующие группы:

Команды

Теперь можно создать две группы доступа к командам - “Ардуино” и “Сервер” и на их формах выделить флажками группы команд, к которым разрешен доступ данной группы доступа:

Группы доступа

В этом же справочнике указываются пользователи, входящие в группу доступа:

Сервер (группы доступа)

Выполнение команд

Для доступа к веб-интерфейсу пользователю необходимо в адресной строке браузера указать путь к http-сервису конфигурации в формате http://server/base/hs/v-can.command/com где server - имя или IP-адрес сервера с базой Command/com, base - имя, под которым Command/com опубликована на веб-сервере. После запуска появится окно авторизации, где пользователь должен ввести свои логин и пароль, указанные в конфигураторе:

Окно авторизации

При успешной авторизации пользователь увидит дерево команд, к которым ему разрешен доступ:

Окно авторизации

Примеры использования

Изначально конфигурация разрабатывалась для управления сервером: остановки и запуска службы агента сервера 1С:Предприятия, перезагрузки сервера. Для этого используются команды с типом действия “Команда системы” и следующими выполняемыми действиями:

net stop "1C:Enterprise 8.3 Server Agent"

net start "1C:Enterprise 8.3 Server Agent"

shutdown /r /t 000

При дальнейшей эксплуатации утилиты была реализована следующая потребность - завершение сеансов пользователей БД. В этом случае лучше использовать команду с типом действия “Код 1С” и запуском соответствующего кода в общем модуле родительской конфигурации. Какого именно кода -зависит от используемой конфигурации, уверен, что с этим ни у кого проблем не возникнет.

Следующий по популярности функционал - перезагрузка компьютеров в локальной сети. Выполняется так же, как и перезагрузка сервера, но с указанием имени компьютера в выполняемой команде:

shutdown -r -f -t 0 -m \\имя-или-айпи-адрес-компьютера

В этом случае для каждого компьютера создается отдельная кнопка. Но при небольшой доработке можно обойтись одной кнопкой и добавить в веб-интерфейс текстовое поле для ввода имени или IP-адреса компьютера.

Также иногда очень помогает возможность запустить выключенный компьютер. Для этого в BIOSе компьютера необходимо разрешить возможность запуска по сети (Wake-on-LAN), а на сервер 1Сустановить соответствующую программу, например одноименную “Wake On Lan”. После этого в Command/com добавляется команда с типом действия “Команда системы” или “Скрипт”, которая из командной строки запускает “Wake On Lan” с MAC-адресом включаемого компьютера в параметрах.

Недавно один из наших клиентов осознал, что Command/com - удобный инструмент для формирования отчетов без входа в 1С. Для этого создается команда с типом действия “Код 1С”, которая выполняет некий набор отчетов, сохраняет их в формате xls и отправляет пользователю на электронную почту. Удобно для руководителей во время командировок.

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

Веб-интерфейс Command/com может стать простейшей системой сбора заявок. Например, IT-служба одного из наших заказчиков таким образом собирает типовые заявки от сотрудников. Для этого используется страница с кнопками “Не работает компьютер”, “Заправить картридж”, “Принтер не печатает” и т.д. По идентификатору нажатой кнопки формируется тема новой заявки, а привязка заявки к сотруднику-заявителю происходит через параметр сеанса “ТекущийПользователь”. Заявку можно подать даже со смартфона, что особенно удобно для создания обращений с темой “Не работает компьютер”.

Ну а самыми экзотическими случаями использования Command/com стали моменты, когда нам было необходимо по-быстрому привязать к компьютеру оборудование под управлением микроконтроллеров Arduino и управлять им через интернет.

Command/com идеально справляется с подобными задачами на этапе прототипирования новых электронных устройств. Например, на видео ниже показан веб-интерфейс для управления самодельным роботом через WiFi. На разработку интерфейса было потрачено около 15минут. В течение следующего часа опытным путем были подобраны оптимальные параметры команд, передаваемых роботу, после чего уже был создан полноценный пульт управления.

Робот Гайка на управлении Command/com

Заключение

Мы работаем с конфигурацией Command/com более 5 лет. За это время она зарекомендовала себя как простой, удобный и надежный интерфейс для удаленного управления серверами и базами данных 1С. Если будет интерес сообщества, возможно дальнейшее развитие функционала конфигурации. Оставляйте ваши пожелания в комментариях.

#command/com #command #digitcat #цифровойкот