Нас часто просят привести примеры работы с 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С настроены также тестовые команды и команды для управления шаговым двигателем робота на базе микроконтроллера 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 более 5 лет. За это время она зарекомендовала себя как простой, удобный и надежный интерфейс для удаленного управления серверами и БД 1С. Если будет интерес сообщества, возможно дальнейшее развитие функционала конфигурации. Оставляйте ваши пожелания в комментариях.
Спасибо за внимание!