При работе с торговым оборудованием, в частности с кассовыми аппаратами Атол 30Ф, системные администраторы и специалисты 1С часто сталкиваются с ситуацией, когда оборудование, успешно работавшее «вчера», сегодня отказывается выходить на связь. Одной из самых коварных ошибок является сообщение «Порт занят». В этой статье мы подробно разберем причины возникновения этой проблемы и рассмотрим пошаговые алгоритмы ее решения, основываясь на практическом опыте настройки в конфигурации «1С:Комплексная автоматизация».
Прежде всего, проанализируем, почему возникает ошибка порт занят. При подключении современных моделей Атол по интерфейсу USB в системе создаются виртуальные COM-порты. Особенность архитектуры Атол заключается в том, что для полноценной работы устройства требуется одновременная работа двух каналов обмена данными:
Ethernet over USB (EoU) использует его для отправки пробитых чеков оператору фискальных данных.Проблема «порт занят» чаще всего возникает из-за того, что и 1С, и служба EoU пытаются одновременно использовать один и тот же номер COM-порта. Рассмотрим подробнее, как это исправить.
Если мы используем классическую схему подключения через службу Ethernet over USB, нам необходимо убедиться, что касса создала в системе два виртуальных порта. Проверим это в Диспетчере устройств Windows (раздел «Порты COM и LPT»).
Допустим, мы видим ATOL USB Virtual Serial (COM14) и ATOL USB Virtual Serial (COM15). Нам нужно жестко закрепить их роли. Разберем по шагам, как это сделать:
Atol EoU через оснастку services.msc. Как только служба будет остановлена, блокировка порта снимется.COM14.EoU на работу через другой порт — COM15. Настройки службы обычно хранятся в файле settings.ini.Проанализируем пример содержимого файла конфигурации settings.ini (обычно находится в папке C:\ProgramData\ATOL\EoU\):
[Target]
Port=COM15
[Log]
Path=logs\eou.log
Level=1
После внесения изменений сохраним файл и запустим службу заново. Теперь 1С будет общаться с кассой по 14-му порту, а служба EoU будет отправлять данные в интернет через 15-й, не мешая друг другу.
Для современных версий драйверов (версии 10.x и выше) компания Атол разработала более прогрессивный метод передачи данных — EoT. Рассмотрим преимущества этого метода: он позволяет передавать данные в ОФД через тот же самый порт, который используется для управления кассой. Это полностью снимает проблему «Порт занят».
Чтобы перевести кассу на EoT, выполним следующие действия:
EoT.EoU в Windows нужно полностью отключить и перевести в режим запуска «Отключена», иначе она продолжит попытки захватить порт.В настройках оборудования внутри 1С в этом случае также необходимо убедиться, что выбран соответствующий драйвер версии 10, и в параметрах указан способ связи «EoT» или просто выбран правильный COM-порт.
Если мы используем актуальную версию 10.x драйвера Атол в 1С:Комплексная автоматизация, мы можем уйти от использования номеров COM-портов вовсе. Разберем, как это реализовать:
В форме настройки драйвера в 1С выберем тип подключения USB вместо COM-порт. В этом режиме драйвер обращается к устройству по его идентификатору. Это наиболее стабильный вариант, так как номера COM-портов в Windows могут случайным образом меняться после перезагрузки системы или смены USB-разъема, особенно если на компьютере установлено другое оборудование (например, ККТ Штрих-М, как упоминалось в ситуации автора). При сбоях в привязке оборудования к сеансу можно использовать обработку для быстрой смены рабочего места в 1С.
Если на одном рабочем месте установлено несколько кассовых аппаратов разных производителей (например, Атол и Штрих-М), возникает риск конфликта драйверов за ресурсы системы. Рассмотрим, как минимизировать риски:
COM25 и COM26). Это защитит их от «перехвата» другими USB-устройствами, которые по умолчанию стремятся занять младшие номера портов (от 1 до 10).Если программные методы не помогают, и порт по-прежнему «занят» или «не найден», проанализируем настройки самой ККТ. Иногда касса может быть переключена в режим работы через RS-232 или Bluetooth на аппаратном уровне.
Для проверки выполним диагностику:
Канал связи должно быть указано USB.Если там указан другой интерфейс, нам потребуется войти в сервисный режим и сменить канал связи, либо сделать это через Тест драйвера в разделе «Конфигурация».
Служба EoU (Ethernet over USB) по своей сути является сетевым шлюзом. Часто антивирусное ПО или брандмауэр Windows расценивают активность программы EthOverUsb.exe как подозрительную и блокируют ей доступ к портам. Чтобы исключить этот фактор, добавим исполняемый файл службы в исключения:
C:\Program Files (x86)\ATOL\Drivers10\KKT\bin\EthOverUsb.exe (в зависимости от версии драйвера).Подводя итог, отметим, что в 90% случаев проблема «порт занят» решается простой остановкой службы EoU и правильным распределением номеров COM-портов между 1С и транспортным модулем ОФД. Однако наиболее современным и надежным методом является переход на технологию EoT, которая избавляет от необходимости администрирования лишних системных служб.