1CHServer - внешняя компонента, позволяющая реализовать выполнение кода в другом сеансе 1С Предприятия по запросу клиента.
Разработка - Разработка внешних компонент
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Понадобилось мне реализовать отображении информации об остатках из одной базы в другой в реальном времени.
Держать у каждого пользователя в сеансе дополнительное 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.bat
Удаление информации о компоненте - запустить unreg.bat
Прилагаются примеры обработок для сервера и для клиента (8.2)
Критика и предложения приветствуются.
Вступайте в нашу телеграмм-группу Инфостарт