Всем доброго вторника. Началась неделя распродаж в сфере ритейл и наверное не только. А 'то значит что что уже никакие серьезные изменения в проде не делаются или еще не делались и будут выполнятся после распродаж, и на фоне этого появилось время поделится с вами неким инструментом.

Мы дали ему название adm1c, он позволяет посредством веб доступа удалять или смотреть на сеансы в 1С базах и при необходимости удалять их. Да и что тут такого сказали бы, есть же консоль на win с нее же это можно делать, и все верно но есть пару но.

Наш департамент разделен на админов и на тех. поддержку (с разным уровнем знаний) и по этому админам и консоль сойдет для администрирования, но вот для тех поддержки давать консоль в которой можно удалить сервер с кластера и сменить назначение ролей и тд, совсем не охота. Да и для этого нужно иметь кучу разных консолей с необходимой версией 1С, перенастраивать ее для каждого при смене сервера или порта для платформы. Как для меня это просто потраченное время, только ради того что б можно было срубить сеанс. И для того что б снять с админов такую мелкую, но отвлекающую задачу сделали такой инструмент.

В основе его лежит RAC, те кто работает вплотную с 1С знает что это такое. Далее мы его используем в паре скриптов PHP, ну а дальше всего лишь CSS, NGINX, PHP-FPM.

Весь инструмент упакован в контейнеры NGINX и PHP который build через docker-compose и через него и стартует. и все инструмент готов. Исходники можно глянуть в моем хабе оттуда же все скачать подправить под себя и пользоваться.

Кратко о том что нужно править.

Это конечно же доменное имя по которому вы будете заходить на веб, но можно и вовсе не править а заходить по адресу на котором у вас висят контейнеры.

Так ж необходимо поправить index.php, а именно ID кластера 1С и ID базы в кластере.

    <form method="POST">
            <input name="DB" id="DB" value="ид базы" type="hidden" readonly >
            <input name="SRV" id="SRV" value="адрес или имя сервера" type="hidden" readonly >
            <input name="CL" id="CL" value="ид кластера" type="hidden" readonly >
            <input type="submit" name="DBSELECT" value="имя которое вы бы хотели видеть" style="width:120px;height:25px"/>
        </form>
    <form method="POST">
            <input name="SU" id="SU" value="" style="width:220px;height:25px" placeholder="тут вводить только session" >
            <input name="SRV" id="SRV" value="иадрес или имя сервера" type="hidden" readonly >
            <input name="CL" id="CL" value="ид кластера" type="hidden" readonly >
            <input type="submit" name="USRSELECT" value="DEL session" style="width:150px;height:25px"/>
        </form>    

После этого делать билд всего и запуск. И уже для одной из баз у вас будет доступ.

В контейнере использую версию 1с/RAC 8.3.12.1567 и этого достаточно. RAS тот что стоит рядом с сервером 1С может быть отличен от версии в контейнере и это не страшно так все работает. главное что б RAS совпадал с версией на сервере с 1С.

Чуть ниже скрипт создания службы для RAS, которую вам нужно установить на вашем 1Сном сере. нужно что б он был в диапазоне портов сервера службы 1с и был той же версии. В примере так же 8.3.12.1567 на стандартном порту.

@echo off
set SrvUserName=.\USR1C_RAS
set SrvUserPwd="1111"
set CtrlPort=1540
set AgentName=localhost
set RASPort=1545
set SrvcName="1C:Enterprise 8.3 Remote Server"
set BinPath="\"C:\Program Files\1cv8\8.3.12.1567\bin\ras.exe\" cluster --service --port=%RASPort% %AgentName%:%CtrlPort%"
set Desctiption="1C:Enterprise 8.3 Remote Server"
sc stop %SrvcName%
sc delete %SrvcName%
sc create %SrvcName% binPath= %BinPath% start= auto obj= %SrvUserName% password= %SrvUserPwd% displayname= %Desctiption%

Вот и все. Нужно вносить хотфиксы в прод, получилось не так много времени как ожидалось)

Пользуйтесь, комментируйте, может кто то поправит мой любительский html/php/css)

Комментарии (6)


  1. Mirnin
    23.11.2021 11:51

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


    1. 4ernuy Автор
      23.11.2021 11:53

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


    1. MarazmDed
      23.11.2021 13:29

      В ней есть одно неприятное ограничение: она поднимает COM-соединение. И если сервер 1С обновили, а зарегать обновленную comcntr.dll забыли, то у вас будет вылетать ошибка. Неприятно это в ситуации, когда у вас есть одминские права на 1с, но нет одминских прав на винду.


  1. o4karek
    23.11.2021 12:55

    Ну и еще можно добавить, что консоль кластера, которая лежит в стандартных функциях - она не требует отдельного инстанса для каждой версии платформы, позволяет в "одном окне" управлять множеством серверов, работает через ras и ... не очень быстрая :(


  1. aleksxx
    26.11.2021 17:49

    Круто, давно искал. Спасибо


    1. 4ernuy Автор
      26.11.2021 17:50

      Пожалуйста, пользуйтесь. Рад что кому то еще полезно.