При автоматизации розничной торговли системные администраторы часто сталкиваются с неприятной ситуацией: кассовый аппарат Атол (например, популярная модель 30Ф) успешно пробивает первый чек, но при попытке выбить второй 1С выдает ошибку «Порт занят». После перезагрузки программы ситуация повторяется — один чек проходит, и порт снова блокируется. Рассмотрим детально причины этого поведения и разберем пошаговые инструкции по устранению неисправности.
Современные драйверы Атол 10-й версии предлагают два основных способа передачи данных в ОФД через USB-кабель: EoU (Ethernet over USB) и EoT (Ethernet over Transport). Проанализируем, как они работают. При использовании EoU в системе запускается отдельная служба, которая «слушает» виртуальный COM-порт и перехватывает данные для отправки в интернет. При использовании EoT обмен идет непосредственно через драйвер внутри того же канала, по которому печатается чек. Если в вашей организации эксплуатируется большой парк оборудования, может потребоваться массовое исправление настроек ОФД для ККТ Атол в 1С, когда ручная правка каждого рабочего места становится неэффективной.
Часто ошибка «Порт занят» возникает из-за того, что служба EoU пытается обратиться к кассе в тот момент, когда 1С еще не освободила соединение, или наоборот. Проанализируем ситуацию: если у вас установлены драйверы версии 10.7 и выше, попробуйте переключиться на протокол EoT. Для этого выполним следующие действия:
EoU не указана как основной канал.Иногда помогает обратный процесс: если EoT работает нестабильно, стоит попробовать старую добрую службу EoU. Как показывает практика, в некоторых случаях стабильнее всего работает связка, когда используется служба EoU от 8-й версии драйвера при установленном основном 10-м драйвере. Разберем этот пример: мы отключаем встроенную службу в 10-ке, устанавливаем службу из дистрибутива 8.х, прописываем нужный COM-порт в файле settings.xml и запускаем ее. Это позволяет «разнести» задачи печати чека и отправки данных по разным программным потокам.
Проанализируем аппаратную часть. Операционная система Windows по умолчанию настроена на экономию энергии. Как только передача данных по USB прекращается (чек напечатан), система может кратковременно «усыпить» порт. При попытке 1С снова обратиться к устройству, драйвер видит, что порт находится в неопределенном состоянии, и выдает ошибку «Порт занят».
Выясним, как это исправить. Нам необходимо запретить Windows отключать питание USB-портов:
В настройках подключаемого оборудования 1С:Розница есть важный параметр, который управляет сессией соединения с кассой. Посмотрим на флаг «Отключаться от ККТ даже если канал обмена EoT» (или аналогичный в разных версиях обработки). Если этот флаг установлен некорректно, 1С может удерживать соединение с драйвером, не давая ему завершить внутренние операции обмена. В таких случаях иногда помогает независимая печать чеков на ККМ АТОЛ напрямую драйвером, чтобы исключить влияние настроек самой конфигурации.
Попробуем изменить режим подключения. В форме настройки оборудования в 1С найдем поле «Установка соединения». Рассмотрим два варианта:
Рекомендуется протестировать режим «На время операции», так как он наиболее безопасен для предотвращения блокировок порта.
Современные драйверы Атол устанавливают фоновую службу Atol Monitor (или fptr10_server), которая опрашивает кассу. Если версия прошивки ККТ устарела (ниже 5000-й серии для Платформы 2.5), стек USB может работать нестабильно. Выясним причину: старые прошивки плохо справлялись с одновременными запросами от драйвера и системы мониторинга. Чтобы быстро диагностировать состояние всех касс в сети, можно использовать специальную обработку для удобства работы с рабочими местами и кассами ККМ — для этого подойдёт обработка централизованного администрирования рабочих мест и ККТ.
Рассмотрим алгоритм действий для исключения этого фактора:
services.msc.Если касса подключена через USB, она создает два виртуальных COM-порта. Один используется для управления (печать чеков), второй — для службы EoU. Проанализируем настройки в 1С: если в программе по ошибке указан тот же номер порта, который использует служба передачи данных, возникнет классическая ошибка [3] «Порт занят». При проведении тестов на «боевой» базе удобно использовать нефискальные чеки для обучения персонала, чтобы проверить стабильность связи без регистрации реальных продаж.
Проверим соответствие портов в Диспетчере устройств:
EoU (если она используется).Важный совет: Если у ККТ Атол есть разъем RS-232 (COM-порт), и на компьютере есть соответствующий физический разъем, лучше использовать его. Подключение через «железный» COM-порт работает на порядок стабильнее, чем через виртуальную эмуляцию по USB, и практически полностью исключает проблему занятого порта.
Проблема «Порт занят» — это комплексная ошибка, которая может лежать как в плоскости настроек Windows, так и в логике работы драйвера. Мы рекомендуем начинать с отключения экономии энергии USB и перехода на протокол EoT в параметрах ККТ. Если это не помогает, проанализируйте версию прошивки и попробуйте режим подключения «На время операции» в настройках 1С.