При работе в облачных инфраструктурах или на удаленных серверах через протокол RDP (Remote Desktop Protocol) часто возникает классическая проблема: локальное оборудование, такое как торговые весы, находится в одной сети, а сеанс 1С — в другой, полностью изолированной. Прямое обращение по внутреннему IP-адресу весов из удаленной сессии невозможно без специальных настроек. В этой статье мы подробно разберем проверенные способы организации связи между удаленной 1С и локальными весами.
Вариант 1. Организация VPN-туннеля и объединение сетей
Проанализируем наиболее фундаментальный способ решения — создание единого адресного пространства. Если облачный сервер и локальный компьютер будут находиться в одной виртуальной сети, 1С сможет «дотянуться» до IP-адреса весов напрямую, как если бы они стояли в соседней комнате.
Использование классического VPN: Настроим подключение типа «точка-сеть» (Point-to-Site) или «сеть-сеть» (Site-to-Site). Для этого на стороне клиента и сервера должен быть поднят VPN-шлюз (например, OpenVPN или WireGuard).
Использование SD-WAN решений: Рассмотрим современные инструменты вроде ZeroTier или Tailscale. Эти утилиты позволяют создать виртуальный коммутатор поверх интернета. Достаточно установить клиент на локальный ПК и на облачный сервер (если есть права администратора), после чего они получат IP-адреса из одной подсети (например, 10.x.x.x).
Настройка маршрутизации: После установки соединения важно убедиться, что в таблице маршрутизации (Route table) облачного сервера прописан путь к подсети, где находятся весы.
Вариант 2. Проброс портов (Port Forwarding) на роутере
Рассмотрим ситуацию, когда у клиента есть «белый» (статический публичный) IP-адрес. В этом случае мы можем настроить проброс трафика через роутер.
Выясним алгоритм настройки:
На локальном роутере создаем правило NAT/Port Forwarding. Например, все запросы, приходящие на публичный IP роутера по порту 5000, должны перенаправляться на локальный IP весов (например, 192.168.1.50) на порт 80 или 4000 (зависит от модели весов).
В настройках торгового оборудования в 1С (на удаленном сервере) указываем не локальный адрес весов, а внешний IP-адрес вашего офиса и заданный порт (5000).
Важный момент: Для безопасности крайне рекомендуется ограничить список IP-адресов, с которых разрешены подключения на этот порт, указав только IP-адрес облачного сервера 1С.
Вариант 3. Использование виртуальных COM-портов через RDP
Если весы поддерживают работу через COM-порт (или имеют USB-интерфейс, эмулирующий COM), мы можем воспользоваться штатными средствами проброса ресурсов RDP. Разберем этот процесс по шагам.
Если весы сетевые (IP), на локальном компьютере устанавливаем драйвер «виртуального COM-порта», который преобразует TCP-трафик весов в последовательный порт (например, утилиты типа TCP-COM или штатное ПО от производителя весов).
В настройках RDP-клиента (mstsc.exe) на вкладке «Локальные ресурсы» нажимаем кнопку «Подробнее» и отмечаем галочкой пункт «Порты».
При подключении к серверу 1С увидит локальный COM3 как свой собственный. В настройках драйвера 1С выбираем соответствующий порт.
Вариант 4. Обмен данными через файлы (для весов с печатью этикеток)
Для весов, которые требуют загрузки справочника товаров (например, весы с печатью этикеток в торговом зале), проанализируем метод файлового обмена. Этот способ наиболее стабилен при плохом интернете.
Разберем схему работы:
В сессии RDP подключаем локальный диск клиента (стандартная функция проброса дисков).
В 1С настраиваем выгрузку товаров в текстовый файл или CSV на этот подключенный диск (путь будет выглядеть примерно так: \\tsclient\C\Exchange\weights.txt).
На локальном компьютере запускаем маленькую утилиту-загрузчик (часто идет в комплекте с весами, например, для весов Штрих-М или CAS), которая мониторит появление файла в папке и автоматически отправляет данные в весы по их локальному IP.
Вариант 5. Изменение архитектуры: Использование HTTP-сервисов
Если стандартные методы проброса недоступны из-за ограничений облачного провайдера, рассмотрим наиболее современный программный метод. Мы можем создать «пуш-архитектуру».
Посмотрим, как это реализовать:
В облачной 1С создаем HTTP-сервис, который умеет принимать данные о весе.
На локальном ПК пишем простейший скрипт (например, на языке Python или используя небольшую обработку в локальной базе 1С:Розница), который опрашивает весы.
При получении стабильного веса локальный агент отправляет POST-запрос на адрес облачной 1С.
Пример кода для приема данных на стороне 1С в HTTP-сервисе:
Функция ПолучитьВесИзЛокальнойСети(Запрос)
ТелоЗапроса = Запрос.ПолучитьТелоКакСтроку();
// Парсим JSON или строку с весом
СтруктураДанных = ПрочитатьJSON(ТелоЗапроса);
ЗначениеВеса = СтруктураДанных.Weight;
// Записываем значение в регистр или временное хранилище для текущего сеанса
Возврат Новый HTTPСервисОтвет(200);
КонецФункции
Вариант 6. Стороннее ПО для USB/IP трансляции
Проанализируем ситуацию, когда необходимо «прокинуть» именно USB-токен или специфический USB-интерфейс весов. Существуют коммерческие решения, такие как USB for Remote Desktop или VirtualHere.
Эти программы состоят из двух частей: сервера (ставится на локальный ПК, к которому подключены весы) и клиента (ставится на сервер 1С). Программа инкапсулирует USB-трафик в пакеты TCP/IP и передает их внутри или параллельно RDP-сессии. Для операционной системы на сервере это выглядит так, будто весы подключены в физический разъем сервера.
Резюме и рекомендации
Выясним, какой метод выбрать именно вам:
Если у вас свои серверы — настраивайте VPN (WireGuard). Это обеспечит максимальную безопасность и прозрачность работы.
Если вы используете закрытое облако и нет прав админа — используйте проброс COM-портов через настройки RDP-клиента или файловый обмен через tsclient.
Если нужна максимальная скорость отклика (для касс самообслуживания) — рассмотрите вариант с HTTP-сервисами или пробросом портов на роутере с «белым» IP.
Помните, что при работе через RDP критически важна стабильность канала связи. Любые микроразрывы будут приводить к «зависанию» драйвера торгового оборудования в 1С, поэтому всегда устанавливайте актуальные версии драйверов с поддержкой длительных таймаутов ожидания (Timeout).