При работе в терминальном режиме (RDP) пользователи часто сталкиваются с крайне медленной печатью чеков. Традиционный метод проброса COM-портов через RDP-клиент создает огромные задержки, так как каждая команда драйвера должна пройти через эмулированный канал связи. С выходом драйверов АТОЛ версии 10.8.0.0 появилась технология Сервера удаленного подключения, которая позволяет передавать данные напрямую по протоколу TCP/IP, минуя нестабильные механизмы RDP. В данной статье мы разберем, как правильно настроить эту систему и решить сопутствующие проблемы в конфигурациях 1С на обычных формах (например, УТ 10.3).
Для начала проанализируем общую схему взаимодействия компонентов. Вместо того чтобы заставлять сервер 1С искать "виртуальный" COM-порт, мы заставим его обращаться к конкретному IP-адресу клиентского компьютера, где физически подключена касса.
Рассмотрим подробнее нюансы настройки на каждом этапе.
Выясним причину, по которой сервер может не видеть кассу при первых попытках настройки. Пинга до компьютера недостаточно. На клиентской машине, к которой подключен ККТ по USB, необходимо выполнить следующие действия:
Во-первых, убедимся, что служба Atol fiscal printer remote connection server запущена. Во-вторых, крайне важно настроить брандмауэр Windows. Порт 6220 (TCP) должен быть открыт для входящих соединений. Без этого сервер 1С получит ошибку "Сервер не найден".
Для стабильности работы настоятельно рекомендуем закрепить за клиентскими компьютерами статические IP-адреса в вашей локальной сети или через настройки DHCP-сервера. Если IP-адрес изменится, печать чеков в 1С прекратится до момента перенастройки.
Разберем ситуацию, описанную многими системными администраторами: когда несколько пользователей работают на одном RDP-сервере, 1С начинает "путать" кассы. В конфигурациях на обычных формах, таких как "Управление торговлей 10.3", идентификация торгового оборудования жестко привязана к ИмяКомпьютера().
Поскольку в RDP-сессии имя компьютера всегда возвращает имя сервера, все пользователи пытаются использовать одну и ту же настройку. Кто последний сохранил параметры, тот и "перетянул" управление на свою кассу. Чтобы это исправить, нам необходимо изменить логику идентификации рабочего места. Проанализируем пример доработки кода в модуле, отвечающем за работу с торговым оборудованием:
// Вместо стандартного получения имени компьютера
// создадим уникальный ключ на основе имени сервера и имени пользователя RDP
ИмяРабочегоМеста = ИмяКомпьютера() + "_" + ИмяПользователя();
Добавив такую привязку, мы добьемся того, что для каждого пользователя 1С создаст отдельную запись в справочнике настроек торгового оборудования, и параметры (IP-адрес его локальной кассы) не будут затираться коллегами.
Часто бывает так, что используемая обработка обслуживания 1С (файл .epf) устарела и не содержит полей для ввода IP-адреса и порта удаленного сервера АТОЛ. Рассмотрим способ, как "подсунуть" эти параметры драйверу программно, не меняя визуальный интерфейс формы настройки.
В конфигурации можно найти функцию ПолучитьОписаниеДрайвера или место, где формируется XML-строка параметров. Мы можем вручную добавить необходимые узлы в XML. Посмотрим на пример кода:
// Пример модификации XML-параметров для передачи данных удаленного сервера
ТекстЗамены = "<!-- Конец параметров -->";
НовыеПараметры =
"<parameter name=""RemoteServerAddr"" value=""192.168.1.50"" />" +
"<parameter name=""RemoteServerPort"" value=""6220"" />" +
"<parameter name=""ConnectionType"" value=""1"" />"; // 1 - это подключение через TCP
ПараметрыДрайвера = СтрЗаменить(ПараметрыДрайвера, ТекстЗамены, НовыеПараметры);
Если же вы используете современные обработки, но поля не появляются, попробуйте очистить кэш компонентов. Удалите содержимое папки %USERPROFILE%\AppData\Roaming\1C\1cv8\ExtCompT и заново установите драйвер через интерфейс 1С.
Даже при использовании сервера удаленного подключения могут возникать паузы. Проанализируем ситуацию, когда касса "засыпает" или долго отвечает на первый чек. Опытным путем установлено, что в настройках драйвера в 1С (в окне параметров) следует включить флаг "Отключаться даже если овертранспорт" (или аналогичный параметр KeepConnection = Ложь).
Это заставляет драйвер освобождать порт сразу после печати. В сочетании с установленной галочкой "Восстанавливать подключение" это дает существенный прирост скорости. Чек начинает печататься мгновенно после нажатия кнопки в 1С.
Также обратим внимание на передачу данных в ОФД. Если касса подключена по USB, рекомендуется перевести ее в режим EoT (Ethernet over Transport). В этом режиме данные в ОФД уходят через тот же канал связи, который мы только что настроили для печати, что избавляет от необходимости запускать отдельную службу EoU на каждом клиентском ПК и предотвращает конфликты за порты.
Если при попытке теста устройства вы получаете ошибку "Сервер не найден" (и вы уже исключили проблемы), выполните следующие шаги по порядку:
netstat -an | find "6220". Он должен быть в состоянии LISTENING.examples.Следуя этим инструкциям, мы организуем быструю и отказоустойчивую печать чеков в терминальной среде, полностью избавившись от проблем с пробросом COM-портов и существенно повысив скорость обслуживания клиентов.