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

05.11.19

Интеграция - Весы

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

Введение:

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

 

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

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

 

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

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

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

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

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

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

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

Плюсы:

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

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

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

Весы COM RDP RDS Торговое оборудование

См. также

Весы Оптовая торговля Розничная торговля Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Драйвер электронных весов предназначен для подключения торговых весов фирмы CAS всех моделей, а также весов АТОЛ MARTA к различным конфигурациям 32-разрядной или 64-разрядной платформы 1С v.8.3. Драйвер разработан по стандарту "1С: Совместимо". Уникальность драйвера заключается в том, что он прост в подключении, надежен в работе и оптимален по цене.

2400 руб.

19.12.2017    69261    401    131    

145

Весы Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием Платные (руб)

Данная обработка позволяет настроить обмен с весами с печатью этикеток ШТРИХ-М серии PC-200 и 1С:Управление торговлей редакция 10. Может быть использована в 1С: Управление производственным предприятием 1.3 ,1С: Комплексная автоматизация 1.1, 1С: Розница 1.х. Универсальная обработка выгрузки номенклатуры для 1С:Розница редакция 2.3 использует типовой функционал "Правила обмена с подключаемым оборудованием offline" Обработка обслуживания весов с печатью этикеток ШТРИХ-М серии PC-200  для ДАЛИОН: Управление магазином 1.2.х Обработка выгрузки данных в весы с печатью этикеток ШТРИХ-М серии PC-200  для Штрих-М: Торговое предприятие 5.2.х Универсальная обработка выгрузки номенклатуры для 1С:Управление торговлей редакция 11 использует типовой функционал "Правила обмена с подключаемым оборудованием offline" Обработка обслуживания весов с печатью этикеток ШТРИХ-М серии PC-200  для ДАЛИОН: ТРЕНД, редакция 3.0

7800 руб.

04.12.2019    21804    74    36    

71

Весы Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Драйвер электронных весов Физтех Т11 (x86-64). Внешняя компонента Native API 1С. 1С Совместимо. Версия требований к разработке драйверов 3.9 Компонента предназначена для подключения к конфигурациям с БПО. Тестировалась на конфигурациях ERP, Управление нашей фирмой с БПО 3.2.2.25

3600 руб.

07.03.2024    828    1    0    

2

Весы Пользователь Платформа 1С v8.3 1С:Розница 2 Россия Абонемент ($m)

Обработка для работы с весами в программе Далион, которая использует бесплатный драйвер МАССА-К Driver-R.

3 стартмани

31.10.2024    137    0    Lichi001    0    

3

Весы Платформа 1С v8.3 1С:Управление торговлей 11 Россия Платные (руб)

Исправление ошибки нового драйвера весов Штрих-Принт (ШТРИХ-М:Весы с печатью этикеток ШТРИХ-ПРИНТ NG), когда пре выгрузки весового товара на весы он его выгружает как штучный. А так же исправление ошибки весов при выгрузки "Нет связи".

3600 руб.

15.10.2024    404    0    0    

1

Весы Программист Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 3.0 Абонемент ($m)

Предлагается пример создания рабочего файла, который понимает загрузчик loader для весов с печатью этикеток "Штрих-Принт".

3 стартмани

16.09.2024    548    1    aximo    1    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. 3vs 05.11.19 12:18 Сейчас в теме
Я через преобразователь порта USR-TCP232-302 подключил ККТ АТОЛ 25Ф.

Было принято решение подключить Атолл 25Ф через преобразователь последовательного порта RS232 в Ethernet.
Проверенное решение от фирмы MOXA NPort 5110 https://moxa.pro/catalog/nport5110
стоит довольно дорого ~8000 р.
Поиск дешёвых аналогов привёл на сайт ООО «МЭНС»
Аналог преобразователь порта USR-TCP232-302 стоит 1800 р., сейчас, наверное, подороже.
http://www.usriot.pro/catalog/preobrazovateli-rs232-rs485-ethernet/preobrazovatel-porta-usr-tcp232-302/
Для работы Атолл 25Ф в режиме COM-порта, подключенного к USR-TCP232-302 придётся распаять кабель.

Если вся, настройка прошла успешно, скорость работы в локальной сети сравнима со скоростью работы ККТ при подключении ККТ непосредственно к локальному компьютеру по USB кабелю.
Если мутить это через Интернет, тогда, видимо, надо будет иметь белый IP-адрес и пробрасывать порты с роутера на преобразователь порта USR-TCP232-302, или организовывать VPN.
Товарищ пробовал этой же железкой подключать сканер штрих кода, получилось.
Весы тоже должны работать.
2. chubajs12 9 05.11.19 13:22 Сейчас в теме
(1) Чаще всего такие весы уже есть и уже стоят подключенными к компьютеру. Покупать на каждые весы еще адаптер - нужно финансирование выбить. Сразу возникают вопросы: "Зачем? Оно же сейчас и так работает!" И если покупать что-то, то проще купить RUEW весовой терминал, по деньгам 6840 рублей.

В предложенном решении покупать ничего не нужно. Оборудование может ломаться, какая вероятность поломки софта?

Если мутить это через Интернет


Попробуйте организовать на предложенном вами адаптере VPN или белый IP на нескольких устройствах - на мостик встать проще. С компьютером это сделать гораздо проще, т.к. на нем полноценная ОС.

Для определенных условий использование адаптеров - это отлично. Но предложенным способом при необходимости можно любое устройство пробросить в облако, организовав на локальном компьютере шлюз через http соединение.
4. 3vs 05.11.19 16:58 Сейчас в теме
(2)
Чаще всего такие весы уже есть и уже стоят подключенными к компьютеру.

тут имеется в виду работа по RDP, когда проброшенный в RDP COM-порт работает с огромными задержками да ещё через задницу, а то и вообще не работает.
Решение, конечно в лоб как говорится, но рабочее.
Весы подключаются к конвертеру и из любой точки локальной сети к ним есть доступ,
а если пробросить порты через роутер с белым ip-адресом, то и из интернета.
Да и конвертеры есть многопортовые.
Оборудование может ломаться, какая вероятность поломки софта?

Данное китайское чудо работает (у меня при комнатной температуре), но парни, которые торгуют ими, ездили в Китай и смотрели технологию производства, тестируют по полной программе.
Они эти конвертеры используют в ЖКХ, для подключения различных счётчиков и прочего.

Просто как вариант, не у всякого есть мозги настроить предложенное Вами решение. :-)
Про себя говорю, да ещё когда нужно "вчера", приходится искать варианты...
.
3. Ermak96 05.11.19 13:54 Сейчас в теме
Я через вот через такую железку организовал. Есть и подешевле.
Ну и http-сервис аналогичный, но на Python
Плюс Телеграм бот который кроме веса, высылает еще картинку с камеры. Код бота
Ну а в 1С само собой.
5. script 128 06.11.19 01:28 Сейчас в теме
Вот если был какой-то универсальный софт http-сервис, который можно было бы настроить на нужный ком порт и передавать в него или получать из него данные... Любую железяку можно было бы без проблем прикрутить к 1С.
6. 3vs 06.11.19 05:38 Сейчас в теме
(5)Да, если была бы такая open source софтинка, было бы здорово!
Но если надо быстро и рабочий вариант, то лучше и дешевле преобразователя порта USR-TCP232-302 не найти! На алиэкспресс можно дешевле его купить, блок питания любой +5 вольт.
Чем хороша ещё железка, она имеет свой буфер и ждёт завершения передачи пакета информации по локальной сети/COM-порта, а потом уже целиком пакет отправляет в/c устройство.
7. chubajs12 9 06.11.19 08:17 Сейчас в теме
(6) Если я правильно понимаю, то при использовании любого преобразователя порта есть два варианта работы:
- либо эмуляция com устройства на конечном сервере через доп.софт от эмулятора,
- либо работа по ethernet.

Первый вариант ограничивает нас на использование большого количества устройств, т.к. мы переносим устройства на конечный сервер "физически". Проверено 100500 раз, если на сервере более 20 com устройств - они начинают вылетать. Но нужно уточнить с каким com портом будет подключаться устройство, а то можно навзвешивать на других весах. Но если устройств мало, то использовать адаптер - отличный вариант.

Второй вариант подразумевает, что штатным драйвером мы не можем воспользоваться, т.к. нет com устройства на сервере. Переписывать драйвер на использование com команд через ethernet все равно нужно. И зачем городить огород с железкой, если все-равно писать драйвер?
8. 3vs 06.11.19 08:31 Сейчас в теме
(7)Для преобразователя порта USR-TCP232-302 скачивается на сайте производителя бесплатная софтинка эмулятора COM-порта и ничего переписывать на надо, для программы получается реальный натурный COM-порт, только удалённый по локальной сети/интернет.
Она может работать и как сервис и как запускаемая вручную программа.

Если кому надо, я для тех, кто нам поставлял эти преобразователи, написал некий текст, как подключал онлайн кассы к 1С Отель, работающий в терминале от ViTerminal 5.x., могу вордовский файл закинуть.
9. chubajs12 9 06.11.19 08:36 Сейчас в теме
(8)
скачивается на сайте производителя бесплатная софтинка эмулятора COM-порта

Это то, что я назвал "первый вариант работы". Есть ограничения, плюсы и минусы для такого варианта работы. Но повторюсь, если устройств мало, то это отличный вариант.
11. 3vs 06.11.19 09:15 Сейчас в теме
(9)Да, да, всё правильно!
Возможно, когда на сервере много COM-портов возможны глюки, не приходилось с этим сталкиваться. :-)
10. chubajs12 9 06.11.19 08:38 Сейчас в теме
(5)
универсальный софт

На эту тему подумаем, как правильнее реализовать. Если есть идеи - озвучивайте.

Из трудностей, которые приходят в голову, возникает вопрос в спонтанных телеграммах на устройстве. Если на устройстве генерируется событие, то нужно забрать информацию с устройства.
12. shard 281 08.11.19 12:13 Сейчас в теме
вариант предложенный в https://infostart.ru/public/620353/ рассматривался?
chubajs12; +1 Ответить
13. chubajs12 9 08.11.19 16:02 Сейчас в теме
(12) Отличный вариант, мы его не нашли в свое время.

Но часть проблем остается в нашем случае:
1) На сервере будет множество com-портов. К ним нужно будет обращаться через платные версии драйверов. Бесплатных dll для обращений к нескольким весам на одном устройстве у производителя нет.
2) Клиентские машины с ОС Windows. Мы уже стараемся переводить все на PXE с Linux. В сборку добавляем наш софт и RDP-клиента.
3) При количестве более 20 весов на com-портах на одной машине у нас начинались глюки - периодически устройства отваливались. Возможно, проблема была с драйверами для весов. Возможно в программ-эмуляторе, которую мы использовали. Возможно, еще в чем-то, большего тестирования не делали.

Софт возьму себе на вооружение, возможно, в следующий раз не будем изобретать велосипед.
14. chubajs12 9 08.11.19 16:14 Сейчас в теме
(12) На самом деле это тоже аналог физического адаптера, которые предлагался выше. Аналог, т.к. есть программа на конечном сервере.
15. shard 281 08.11.19 17:16 Сейчас в теме
(14) именно. Но в том ПО стояла задача пробросить com-порт без уточнения чем будет принимающая сторона. В Вашем случае все равно принцип сохраняется: есть две программы, обменивающиеся между собой данными по сети (маршрут трафика в данном случае не существенен). На компе с оборудованием HTTP_SCALE слушает сетевой порт, при необходимости пинает com-порт и отсылает пришедший ответ. Сталкивался и с вопросами передачи данных (фоновая синхронизация содержимого папок винды при терминальном подключении, реализовывал на VC), и с вопросами работы с портами оборудования (принтер этикеток без дров на убунте, реализовывал на Qt) - все просто, если получится достать спецификации сигналов для различного оборудования то выйдет неплохой коммерческий продукт.

Если же спецификаций нет, то остается только маскировать выдачу на принимающей стороне под реальную железку и разбирать родным драйвером. В любом случае кроссплатформенность - это очень здорово.
16. par_62 10.11.19 08:22 Сейчас в теме
Давно реализовано : простая служба Windows,слушающая порт являющаяся TCP сервером и ВК 1с в виде драйвера подключаемого оборудования. Работает как часы вот уже 4 года. Кроме того реализован монитор весов доя руководителей ( С#). Таких руководителей несколько: наблюдают одновременно покпзания весов и не одних. Автору спасибо,наверное многим пригодится
17. chrnv 06.12.22 17:13 Сейчас в теме
(16) А можно где-то поподробнее ознакомиться с данным решением?
18. telets35 18.09.23 12:50 Сейчас в теме
Здравствуйте.

Вот как-раз сейчас и нам потребовалось такое сделать. Только у нас сервер на Debian 11, а ПК на Simply Linux. Весы Тензо-М. Думал такое написать на питоне. Если есть возможность, то как попробовать вашу программу?
Оставьте свое сообщение