При настройке торгового оборудования в экосистеме 1С, особенно при интеграции контрольно-кассовых машин (ККМ или ККТ), технические специалисты часто сталкиваются с ошибкой: «Тест успешно выполнен. Ошибка открытия КОМ порта». На первый взгляд, это сообщение выглядит противоречиво, так как тест заявляется успешным, но порт при этом открыть не удается. В рамках данной статьи мы подробно разберем, почему возникает эта неполадка, как правильно настроить параметры связи и какие скрытые системные факторы могут блокировать работу оборудования.
Проанализируем архитектуру работы COM-порта. Физический или виртуальный COM-порт (последовательный интерфейс) работает по принципу монопольного доступа. Это означает, что в конкретный момент времени только одна программа в операционной системе Windows может осуществлять чтение и запись через этот порт. Если порт уже открыт и удерживается каким-то процессом, любое другое приложение (включая 1С) при попытке обратиться к нему получит системный отказ.
Выясним причину на практике. Перед тем как настраивать подключение непосредственно в 1С, технические специалисты обычно запускают нативную сервисную утилиту от производителя ККТ (например, «Тест драйвера ККТ» от АТОЛ или «Тест драйвера» от Штрих-М), чтобы убедиться, что касса физически исправна и отвечает на команды. Если после успешной проверки в сервисной утилите вы, не закрывая ее, открываете 1С и пытаетесь выполнить тест устройства, платформа выдаст ошибку открытия порта. Утилита производителя продолжает держать этот порт открытым. Для комплексной проверки связи и параметров фискального накопителя можно использовать утилиту для тестирования ККМ Штрих и АТОЛ.
Для решения этой проблемы выполним следующие шаги:
Рассмотрим популярный вопрос: влияет ли разница между скоростью порта в Диспетчере устройств Windows и настройками внутри 1С на возникновение этой ошибки? Например, в свойствах COM1 в операционной системе указано значение 9600 бит в секунду, а в настройках подключения 1С задана скорость 115200.
Спешим вас успокоить: параметры скорости, заявленные в стандартных свойствах COM-порта в Windows, никак не связаны с ошибкой инициализации порта в 1С. Когда внешняя компонента (драйвер ККТ) инициализирует порт, она принудительно передает операционной системе требуемые параметры соединения, включая скорость (например, 115200), четность и количество стоповых бит. Windows автоматически перенастраивает порт под нужды драйвера на лету. Касса будет успешно работать на той скорости, которая задана в настройках интеграционной библиотеки в 1С или в параметрах самого устройства ККТ.
Если порт точно свободен, но ошибка все равно сохраняется, проанализируем разрядность установленного программного обеспечения. Это одна из скрытых и неочевидных проблем при переходе на новые версии платформы.
Если на компьютере установлена 64-битная версия платформы 1С:Предприятие, то и внешняя компонента драйвера ККМ должна быть строго 64-битной. Если же вы используете 32-битный клиент 1С (что часто встречается на рабочих местах кассиров), вам потребуется исключительно 32-битная интеграционная библиотека драйвера. При несовпадении разрядностей 1С не сможет корректно инициализировать функции библиотеки управления портами, что в итоге приведет к системному сбою и ошибке открытия COM-порта.
Современные кассовые аппараты для передачи чеков оператору фискальных данных (ОФД) часто используют технологию передачи данных по USB-кабелю. При этом ККТ эмулирует сразу два виртуальных COM-порта на одном физическом проводе:
Ethernet-over-USB или EoU от компании АТОЛ).Проанализируем возможный конфликт. Если при настройке службы передачи данных в конфигурационном файле (например, в файле settings.ini утилиты EoU) был ошибочно указан тот же номер COM-порта, который вы пытаетесь занять в 1С, служба захватит его при старте операционной системы. 1С при попытке пробить чек выдаст ошибку открытия порта.
Для исправления ситуации выполним проверку:
COM4), а в настройках торгового оборудования 1С укажем второй порт (например, COM3).Часто база 1С работает на удаленном сервере под управлением службы терминалов, а ККМ подключена к локальному компьютеру кассира. В этом случае сервер 1С пытается открыть COM-порт, который физически на сервере отсутствует.
Чтобы решить эту проблему, необходимо настроить проброс локальных портов в терминальную сессию:
mstsc).COM1) с виртуальным портом сессии на сервере.Дополнительно убедимся, что на сервере не запущены сессии других пользователей, которые также могли пробросить этот порт с аналогичным именем и тем самым заблокировать его для вашей учетной записи. Для организации совместной печати чеков без конфликтов оборудования можно использовать методику подключения нескольких рабочих мест к одной кассе ККМ.
Иногда связь с кассой теряется спонтанно в течение рабочего дня, порождая ошибку открытия порта при попытке напечатать чек после некоторого периода простоя кассы. Причина кроется в алгоритмах энергосбережения операционной системы Windows.
По умолчанию Windows отключает питание неактивных USB-портов для экономии энергии. Когда касса долгое время не печатает чеки, операционная система переводит виртуальный COM-порт в спящий режим. 1С при отправке команды не может мгновенно «разбудить» устройство и сообщает об ошибке открытия порта.
Чтобы отключить эту функцию, проделаем следующие шаги:
devmgmt.msc в строке выполнения).При частом переподключении USB-кабеля ККМ в разные физические разъемы системного блока операционная система Windows резервирует за каждым разъемом новый виртуальный COM-порт. В результате реальный номер порта кассы может вырасти до значений уровня COM15, COM24 и выше.
Некоторые старые интеграционные библиотеки и драйверы ККТ в 1С некорректно обрабатывают двухзначные номера портов, стабильно работая только в диапазоне от COM1 до COM9.
Решим эту проблему путем принудительного переназначения номера порта:
COM1 до COM9. Если система пишет, что порты заняты, но физически к ним ничего не подключено — это «фантомные» старые устройства, их можно смело переназначить. Согласимся с предупреждением системы.