Введение:
Работая в большом холдинге пришлось переносить все 1С системы в Azure. При переносе в Azure были сделаны отдельные сервера 1С (кластер серверов) и RDS (RDP) сервера (кластер серверов), через кластер серверов RDS пользователи получают доступ к серверу 1С. Сейчас у нас реализована именно такая схема работы серверов:
У разных крупных агрохолдингов используется много разнообразного весового оборудования, часть этого оборудования подключается через СОМ-соединение, либо через USB с эмуляцией СОМ-порта. Для получения веса с весов, подключенных по COM, необходимо наличие как минимум тонкого клиента на локальном компьютере, к которому подключены весы. Очень хороший пример – автомобильная весовая.
То есть все пользователи сидят на RDP, а пользователи, которые работают с весами – на локальных тонких/толстых клиентах 1С. Мы реализовали следующую архитектуру решения:
Это влечет за собой ряд ограничений, накладываемых такой схемой работы:
- При обновлении релиза сервера 1С необходимо обновление платформы 1С на каждом локальном компьютере, где установлен клиент или подключены весы
- Повышаются требования к локальным компьютерам, т.к. на них нужно запустить клиента 1С
- Подключить несколько весов даже на одном локальном компьютере чаще всего огромная проблема, т.к. нормального софта для этого нет - на каждые весы нужен отдельный компьютер
- На локальном компьютере нужно использовать Windows, т.к. поставить и нормально эксплуатировать 1С на Linux нетривиальная задача (пусть простят меня те, кто
использует 1С на Linux) - Необходим устойчивый канал связи, т.к. с сервера 1С до клиента 1С передается большой поток данных
Идея:
Возникла необходимость при локальном подключении весов к компьютеру вместо локального тонкого клиента 1С перевести всех пользователей на RDP сервер, и запускать клиента 1С там. А значит – клиент 1С должен забирать значения веса с подключаемого оборудования.
Задача:
Для того, чтобы решить задачу передачи веса на сервер 1С и убрать ограничения, описанные выше, было решено реализовать следующую архитектуру:
Должна быть разработана программа, работающая в виде службы на локальном компьютере. Программа должна получать http-запрос на получение веса и возвращать JSON-ответ (для 1С применимо с версии 8.3.6.1977 ref. http://v8.1c.ru/o7/201410json/index.htm).
Реализация:
Сделали свой софт, кодовое название «HTTP_SCALE». Софт написали на java для обеспечения кроссплатформенности. Софт автономен и легко масштабируется (java разработчиком) на весовое оборудование любых марок и моделей.
Для получения веса на стороне 1С используется типовой механизм БСП для подключения торгового оборудования (подключаемого оборудования). Разработана «обработка обслуживания», в которой для работы с весами используется не внешняя компонента, а прямое соединение - обработка умеет по адресу и порту весов отправлять http-запрос, получать JSON-ответ, парсить его и возвращать вес в 1С.
Теперь логика работы весов на RPD стала следующая:
- Весы подключаются к локальному компьютеру через СОМ (или USB с эмуляцией СОМ)
- В настройках софта указывается
- к каким COM портам компьютера подключены весы
- скорость обмена между весами и компьютером
- TCP порт на котором будет работать http сервер для каждых весов
- адрес весов (для Тензо-М)
- Софтом на локальном компьютере создается http сервер
- Запускается RDP клиент, на нем запускается клиент 1С
- В 1С добавляется новое торговое оборудование.
- Как результат выполнения запроса в обработку возвращается JSON определенного формата
Нужно настроить политику безопасности локального компьютера, чтобы порт локального компьютера, к которому обращается сервер 1С был доступен.
Весы все так же нужно настраивать, как и раньше, никакой автоматизации самих весов.
Все также необходимо устанавливать прямое соединение между 1С сервером и локальным компьютером
Можно исправить одним из способов:
- Работать в локальной сети
- Организовать VPN между локальным компьютером и сервером 1С
- Делать проброс порта с локального компьютера на сервер 1С через программы прослойки
Плюсы:
- Можно подключить любое количество весового оборудования, работающего через COM.
- Можно подключить сразу несколько весов на одном компьютере
- На компьютере необходимы только RDP клиент и программа HTTP_SCALE
- Можно унифицировать получение данных через http-запросы для всего весового оборудования (если есть описание протокола связи с весами)
- По факту к софту можно подключать весы разных марок и моделей (сейчас внесены драйвера для весов ТензоМ и МассаК – другие весы у нас не используются)
- На локальном компьютере можно использовать как Windows, так и Linux
- Работает как для обычных форм, так и для управляемых форм
PROFIT (или что же получили, но простыми словами):
Весы, подключенные по СОМ, с помощью компьютера и программы HTTP_SCALE сделали сетевыми. Для сетевых весов сделали типовое получение веса в 1С.