Почему зависает Штрих-М при печати чека через RDP и как устранить задержки

Системный администратор 1С v8.3 (Управляемые формы) 1С:Розница Торговля и дистрибуция
← На главную

Работа с контрольно-кассовой техникой (ККТ) в терминальном режиме (через RDP) часто сопровождается неприятными симптомами: долгое ожидание перед выходом чека, подвисание интерфейса «1С:Розница» или «1С:Управление торговлей» на 10–20 секунд, а иногда и полная блокировка работы РМК. Особенно часто это проявляется при использовании аппаратов ШТРИХ-М-02-Ф (в том числе модернизированных из ПТК-Light) и переходе с файловой базы на SQL-версию.

Проанализируем ситуацию: локально чек печатается мгновенно, но при работе через удаленный рабочий стол начинаются задержки. Мы разберем причины этого явления и пошагово внедрим решения, которые позволят кассе работать стабильно даже в распределенных сетях.

Причина задержек: проблема проброса COM-портов

Традиционный метод подключения ККТ через RDP заключается в эмуляции COM-порта на локальной машине через USB и последующем «пробросе» (redirection) этого порта в терминальную сессию. Рассмотрим, почему это работает медленно:

  1. Протокол обмена: Драйвер ККТ обменивается данными с устройством короткими пакетами, требуя подтверждения получения каждого пакета.
  2. Сетевые задержки (Latency): Даже при широком канале в 100 Мбит/с критическую роль играет пинг (время отклика). Каждая операция опроса состояния кассы («Есть ли бумага?», «Готов ли фискальный накопитель?») требует прохождения пакета туда и обратно.
  3. Особенности SQL-версии: В отличие от файловой версии, SQL-сервер может инициировать обращения к драйверу через серверные вызовы, что накладывает дополнительные требования к скорости разрешения имен и регистрации компонент.

Метод 1: Переход на использование протокола TCP/IP (RNDIS)

Самый эффективный способ исключить задержки — это отказаться от эмуляции COM-портов в пользу сетевого подключения. Если касса подключена к локальному компьютеру по USB, мы можем заставить Windows видеть её как сетевую карту.

Разберем по шагам настройку RNDIS:

  1. В настройках самой ККТ (через «Тест драйвера» — «Таблицы» — «Сетевые интерфейсы») выберем режим RNDIS.
  2. После перезагрузки ККТ в диспетчере устройств появится новое сетевое устройство. Установим для него драйвер (обычно идет в комплекте с драйверами Штрих-М).
  3. Настроим статический IP-адрес для этого «сетевого адаптера» (например, 192.168.137.100).
  4. В «Тесте драйвера» на сервере вместо «Подключение: Локально» выберем «Подключение: TCP-сокет». Укажем IP-адрес, который мы присвоили кассе, и порт (по умолчанию 7778).

Преимущество: Данные передаются инкапсулированными в TCP-пакеты, что значительно быстрее обрабатывается протоколом RDP и минимизирует влияние сетевых задержек.

Метод 2: Использование «Штрих-М: Сервер печати»

Если настройка RNDIS невозможна, рассмотрим вариант с использованием специализированного ПО. Штрих-М: Сервер печати (или «Сервер касс») позволяет сделать любую кассу доступной по сети.

Проанализируем схему работы:

  1. На локальном компьютере, к которому физически подключена касса, устанавливается служба сервера печати.
  2. Эта служба «захватывает» локальный COM-порт и открывает TCP-порт для внешних подключений.
  3. В программе 1С на удаленном сервере мы указываем подключение не к COM-порту, а к IP-адресу магазина и соответствующему порту службы.

Это решение позволяет избежать «кривого» проброса портов через RDP-клиент и делает связь более устойчивой к обрывам сессии.

Метод 3: Оптимизация настроек драйвера и таймаутов

Часто 1С «подвисает» из-за того, что драйвер слишком долго ждет ответа от устройства или слишком часто опрашивает его. Посмотрим, какие параметры стоит изменить в Тест драйвера ККТ (версии 4.14 и выше):

  1. Таймаут опроса: Увеличим значение таймаута. При работе через интернет-провайдера рекомендуем ставить значения от 2000 до 5000 мс.
  2. Таблицы ККТ: Зайдем в Таблицу 1 (Настройки). Проверим поле «Автоматическое открытие смены» и «Печать логотипа». Если эти опции включены, ККТ тратит время на дополнительные внутренние операции перед началом печати.
  3. Скорость порта: Если все же используется COM-порт, убедимся, что и в Windows, и в таблицах ККТ установлена максимальная скорость (115200 бод).

Метод 4: Настройка операционной системы и SQL-сервера

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

Проделаем следующие манипуляции:

  1. Файл hosts: На сервере, где крутится SQL и служба 1С, пропишем IP-адреса и имена клиентских машин в файле C:\Windows\System32\drivers\etc\hosts. Это исключит задержки на запросы к DNS-серверу.
  2. Энергосбережение USB: На локальном компьютере кассира зайдем в «Диспетчер устройств», найдем «Контроллеры USB» — «Корневой USB-концентратор». В свойствах на вкладке «Управление электропитанием» снимем галочку «Разрешить отключение этого устройства для экономии энергии». Это предотвратит «засыпание» порта, из-за которого первый чек после простоя может печататься долго.
  3. Антивирус: Добавим папку с драйвером (C:\Program Files (x86)\Shtrih-M\) и исполняемые файлы 1С в исключения антивирусного монитора.

Метод 5: Отключение графики в чеке

У моделей ШТРИХ-М-02-Ф (особенно старых ревизий) объем памяти ограничен. Печать графического логотипа может занимать значительное время, так как драйвер при каждом обращении может пытаться инициализировать загрузку картинки.

Рассмотрим, как это упростить:

В настройках шаблона чека в 1С (раздел «Подключаемое оборудование» — «Параметры ККТ») найдем пункт «Печатать логотип» и отключим его. Это сократит объем данных, передаваемых по RDP-каналу, на несколько килобайт, что существенно для медленных соединений.

Проверка производительности

Чтобы понять, помогли ли наши действия, воспользуемся встроенными средствами драйвера. В «Тесте драйвера» есть функция «Тест производительности». Сравним показатели задержки в миллисекундах до и после перехода на TCP/IP или Сервер печати. Хорошим показателем для RDP считается время отклика (Round Trip) менее 300 мс.

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

← На главную