Ситуация такова: Есть терминальный сервер с 1С Предприятие. Стоит далеко в центральном офисе. Есть рабочие станции по городу - точки розничной торговли. Оборудование самое разное - начиная от обычного системного блока, и заканчивая POS станцией Posiflex на Windows XP Embedded. На рабочих станциях стоит классическое оборудование - принтеры чеков, ККМ, сканеры штрих-кодов и тому подобное. Работает это путем проброса Serial (COM) порта на сервер средствами RDP. Работает крайне медленно. Задержки между нажатием кнопки на печать и началом печати черка достигало 2х минут. Задача - ускорить печать чеков. Для этого я решил пробросить COM порт с рабочих станций на сервер средствами, отличными от RDP подключения. В интернете нашел, что идеальное решение - покупка железок, которые и пробрасывают COM порт по TCP/IP. Минимальная цена железки 100$. Поэтому поискав как следует, я наткулся на интересное решение com0com (их сайт тут). Этот набор программ позволяет делать несколько вещей: 1. Пробрасывать COM порт через TCP 2. Создавать виртуальные COM порты на компьютере и связывать их друг с другом 3. Создавать Хабы COM портов (когда инфа с одного порта дублируется на несколько других, и наоборот). Соответственно первые два пункта нам как раз и нужны. Для начала надо установить виртуальный порт com0com на сервере. Идем на сервер. Запускаем Setup.exe из архива com0com.7z, и начинаем установку. Вот единственный экран, где надо выставить галочки: ![]() Могут быть проблемы с установкой драйверов на x64 разрядные системы (Windows Vista/Windows Server 2008/Windows 7/8), то надо запустить в командной строке следующее: bcdedit.exe -set TESTSIGNING ON И после перезагрузки заново установить программу. Если вдруг что-то пошло не так, и вы удалили все виртуальные порты, или на системе не стоит .NET Framework, то можно в "Setup Command Prompt" сделать это через консоль. Вот команда установки стандартных 2-х COM портов (CNCA0 и CNCB0): install - - Также через консоль можно переименовать порт: change CNCA0 PortName=COM5 Также можно включить эмуляцию скорости передачи: change CNCA0 EmuBR=yes change CNCB0 EmuBR=yes Либо в графике выставить такие значения (не забываем нажать в конце изменения настроек кнопку "Apply"!): ![]() На самом деле не важно, как называются порты. В моем примере я выставил COM5 в качестве "реального" порта (выбрал из свободных), и CNCB0 в качестве виртуального порта. Два порта надо, т.к. с одним портом будет работать 1С, а с другим будет работать модуль проброса COM порта через интернет. COM порты обычно умеют работать только с одним устройством, поэтому приходится делать такие связки. Далее скачиваем на сервер и распаковываем в корневой каталог архив com2tcp_server.7z. Смотрим файл run1c.bat: @echo off start /min rfc2217.bat --rfc2217-mode s --baud 115200 \\.\cncb0 ПОРТ_СЕРВЕРА C:\Progra~2\1cv82\8.2.17.169\bin\1cv8.exe enterprise /fс:\1СDB\DATABASE1C taskkill /f /IM hub4com.exe /s localhost /u %username% taskkill /f /IM cmd.exe /s localhost /u %username% Тут надо прописать порт сервера, на котором будет работать проброс COM порта. Например 10001. Также можно прописать другую скорость самого COM порта. В моем случае это 115200 бод. Также можно изменить путь до 1С Предприятия и путь к базе данных. У меня это версия 8.2.17.169 и база с:\1СDB\DATABASE1C. Далее идем в 1С Предприятие в настройки торгового оборудования, и прописываем использование нашего COM порта (в данном случае COM5), и требуемой скорости обмена. Далее идем в свойства терминального пользователя и прописываем ему автозапуск батника: ![]() Далее идем на клиента. Разархивируем com2tcp_client.7z в корень диска C: на клиенте. Редактируем файл start1c.cmd: @echo off start /min rfc2217.bat --rfc2217-mode c --baud 38400 \\.\com2 ip_АДРЕС_СЕРВЕРА ПОРТ_СЕРВЕРА mstsc 1c-server.RDP taskkill /f /im hub4com.exe taskkill /f /im cmd.exe Соответственно подставляем свой адрес сервера и TCP порт, через который будет работать проброс COM порта. Обязательно меняем \\.\com2 на тот COM порт, на котором подключен принтер чеков или ККМ! Также запускаем mstsc.exe и открываем в нем файл 1c-server.RDP. Также меняем адрес сервера и имя пользователя. Проброс портов в настройках должен быть отключен! Сохраняем настройки. Этот файл запускает вначале программу проброса COM портов на скорости 38400 (скорость можно менять на нужную), затем открывает терминальный сервер. По окончании сеанса связи - закрывает программу проброса COM портов. Также можно сделать ярлычок на рабочий стол, ведущий на файл start1c.cmd, и прописать ему иконку 1cicon.ico. Делам в настройках делаем запуск окна свернутым в значок. Будет очень похоже на локальную 1С Предприятие. ![]() Важные замечания:
Как это работает:
В результате внедрения такого решения, печать чеков стала быстрее в несколько раз. Стабильность связи выросла. |
Для сисадминов > 1С Предприятие >