Использование COM весов в 1С на RDP-клиенте

Введение:

Работая в большом холдинге пришлось переносить все 1С системы в Azure. При переносе в Azure были сделаны отдельные сервера 1С (кластер серверов) и RDS (RDP) сервера (кластер серверов), через кластер серверов RDS пользователи получают доступ к серверу 1С. Сейчас у нас реализована именно такая схема работ программу 1С ы серверов:

 

У разных крупных агрохолдингов используется много разнообразного весового оборудования, часть этого оборудования подключается через СОМ-соединение, либо через USB с эмуляцией СОМ-порта. Для получения веса с весов, подключенных по COM, необходимо наличие как минимум тонкого клиента на локальном компьютере, к которому подключены весы. Очень хороший пример – автомобильная весовая.

То есть все пользователи сидят на RDP, а пользователи, которые работ программу 1С ают с весами – на локальных тонких/толстых клиентах 1С. Мы реализовали следующую архитектуру решения:

 

Это влечет за собой ряд ограничений, накладываемых такой схемой работ программу 1С ы:

  1. При обновлении релиза сервера 1С необходимо обновление платфорпечатную версиюмы 1С на каждом локальном компьютере, где установлен клиент или подключены весы
  2. Повышаются требования к локальным компьютерам, т.к. на них нужно запустить клиента 1С
  3. Подключить несколько весов даже на одном локальном компьютере чаще всего огромная проблема, т.к. нормального софта для этого нет - на каждые весы нужен отдельный компьютер
  4. На локальном компьютере нужно использовать Windows, т.к. поставить и нормально эксплуатировать 1С на Linux нетривиальная задача (пусть простят меня те, кто использует 1С на Linux)
  5. Необходим устойчивый канал связи, т.к. с сервера 1С до клиента 1С передается большой поток данных

Идея:

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

Задача:

Для того, чтобы решить задачу передачи веса на сервер 1С и убрать ограничения, описанные выше, было решено реализовать следующую архитектуру:

 

Должна быть разработ программу 1С ана программа, работ программу 1С ающая в виде службы на локальном компьютере. Программа должна получать http-запрос на получение веса и возвращать JSON-ответ (для 1С примен внешние компонентыимо с версии 8.3.6.1977 ref. http://v8.1c.ru/o7/201410json/index.htm).

Реализация:

Сделали свой софт, кодовое название «HTTP_SCALE». Софт написали на java для обеспечения кроссплатфорпечатную версиюменности. Софт автономен и легко масштабируется (java разработ программу 1С чиком) на весовое оборудование любых марок и моделей.

Для получения веса на стороне 1С используется типовой механизм БСП для подключения торгового оборудования (подключаемого оборудования). Разработ программу 1С ана «обработ программу 1С ка обслуживания», в которой для работ программу 1С ы с весами используется не внешняя компонента, а прямое соединение - обработ программу 1С ка умеет по адресу и порту весов отправлять http-запрос, получать JSON-ответ, парсить его и возвращать вес в 1С.

Теперь логика работ программу 1С ы весов на RPD стала следующая:

  1. Весы подключаются к локальному компьютеру через СОМ (или USB с эмуляцией СОМ)
  2. В настройках софта указывается
    1. к каким COM портам компьютера подключены весы
    2. скорость обмена между весами и компьютером
    3. TCP порт на котором будет работ программу 1С ать http сервер для каждых весов
    4. адрес весов (для Тензо-М)
  3. Софтом на локальном компьютере создается http сервер
  4. Запускается RDP клиент, на нем запускается клиент 1С
  5. В 1С добавляется новое торговое оборудование.
  6. Как результат выполнения запроса в обработ программу 1С ку возвращается JSON определенного формата

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

Весы все так же нужно настраивать, как и раньше, никакой автоматизации самих весов.

Все также необходимо устанавливать прямое соединение между 1С сервером и локальным компьютером
Можно исправить одним из способов:

  • Работать в локальной сети
  • Организовать VPN между локальным компьютером и сервером 1С
  • Делать проброс порта с локального компьютера на сервер 1С через программы прослойки

Плюсы:

  1. Можно подключить любое количество весового оборудования, работ программу 1С ающего через COM.
  2. Можно подключить сразу несколько весов на одном компьютере
  3. На компьютере необходимы только RDP клиент и программа HTTP_SCALE
  4. Можно унифицировать получение данных через http-запросы для всего весового оборудования (если есть описание протокола связи с весами)
  5. По факту к софту можно подключать весы разных марок и моделей (сейчас внесены драйвера для весов ТензоМ и МассаК – другие весы у нас не используются)
  6. На локальном компьютере можно использовать как Windows, так и Linux
  7. Работает как для обычных форм, так и для управляемых форм

PROFIT (или что же получили, но простыми словами):

Весы, подключенные по СОМ, с помощью компьютера и программы HTTP_SCALE сделали сетевыми. Для сетевых весов сделали типовое получение веса в 1С.

Скриншоты


pic-1.png

pic-2.png

pic-3.png

Полная версия

© ООО "Инфостарт", 2006-2023 www.infostart.ru