1C | ||
AddInLib | ||
Properties | ||
reg | ||
.gitignore | ||
1CHServer.csproj | ||
1CHServer.csproj.user | ||
Data1C.cs | ||
README.md | ||
Server.cs |
1CHServer
Что это?
Внешняя компонента, позволяющая реализовать выполнение кода в другом сеансе 1С Предприятия по запросу клиента.
Для чего это нужно?
Применений может быть несколько, например вывод сообщений пользователю, закрытие сеанса ну или более сложные операции.
Понадобилось мне реализовать отображении информации об остатках из одной базы в другой в реальном времени. Держать у каждого пользователя в сеансе дополнительное COM-соединение не очень хотелось. Так и родилось данное решение.
Принцип работы:
- На компьютере (назовем его сервером) запускается обработка, где создается объект AddIn.1CHServer Этот сервер будет прослушивать определенный порт и ожидать входящий запрос от клиента.
- Клиент отправляет запрос серверу с помощью объекта
HTTPСоединение
- AddIn.1CHServer получив запрос генерирует внешнее события для сеанса 1С Предприятия в котом данный объект создан
- На сервере выполняется запрошенный клиентом код и результат возвращается клиенту при помощи метода
ВернутьРезультат(...)
Результат, возвращаемый клиенту может быть только тексовым т.к. запрос отправляется при помощи метода Получить()
объекта HHTPСоединение
Теперь вместо того, чтобы держать 10-15 постоянных COM-соединений клиент лишь отправляет текст кода для выполнения в сеансе, где создан AddIn.1CHServer и получает ответ.
Работает, конечно, медленнее, чем при могло бы быть через "V8x.ComConnector", но есть и свои преимущества. Например, если надо срочно обновить базу данных, то не надо убивать все COM-сеансы, а достаточно просто остановить на время 1CHServer и обновить БД.
Не рекомендуется выполнять "тяжелый" код на сервере, т.к. это замедлит получение ответа другими клиентами.
ОПИСАНИЕ КОМНОНЕНТЫ
Методы:
- Запустить(<Порт>) - запуск прослушивания указанного порта;
- Остановить() - остановка сервера;
- ВернутьРезультат(<ТекстовыйРезультат>) - возврат результата клиенту (метод обязательно должен вызываться, иначе сервер перестанет принимать входящие запросы от клиентов);
Свойства:
- Порт - порт на котором работает сервер (только чтение);
В случае ошибки (при работе компоненты или при выполнении кода на сервере) возвращается результат вида: Error: <ОписаниеОшибки>
- В коде, выполняемом на сервере, не должно быть комментариев.
- Для работы компоненты потребуется установленный Microsoft .NET Framework 2.0 и выше
Регистрация компоненты в Windows - запустить /reg/reg.bat Удаление информации о компоненте - запустить /reg/unreg.bat
Прилагаются примеры обработок для сервера и для клиента (8.2)