Многие специалисты сталкиваются с серьезной проблемой при переходе с драйверов АТОЛ ДТО 8 или 9 версий на более современные ДТО 10. Если к одному компьютеру через USB подключено несколько кассовых аппаратов (ККТ), то при попытке подключения к одной кассе через интеграционную компоненту 1С, все остальные устройства моментально блокируются. К ним становится невозможно обратиться даже через стандартный тест драйвера. Давайте разберем по шагам, почему это происходит и как правильно настроить совместную работу нескольких ККТ.
Проанализируем ситуацию: само по себе подключение множества устройств через USB-хаб вполне работоспособно на уровне Windows и нативного драйвера. Однако проблема кроется в настройках компоненты интеграции 1С. Если в карточке подключаемого оборудования выбран канал связи USB (значение параметра Port равно 1), драйвер начинает вести себя агрессивно.
При выборе канала «USB» компонента инициирует автоматический сквозной поиск по всей USB-шине. Она монопольно захватывает управление интерфейсом на низком уровне. В результате драйвер блокирует дескрипторы всех остальных аналогичных устройств АТОЛ. Выясним причину: это не ошибка самих драйверов, а специфика работы интеграционной компоненты.
Решение проблемы:
0), а не USB.При использовании режима COM / VCOM драйвер обращается строго к выделенному операционной системой виртуальному COM-порту (например, COM3 или COM5), не сканируя всю шину. Это позволяет параллельно и без блокировок работать с любым количеством касс.
Рассмотрим подробнее изменения в архитектуре ДТО 10. В старых драйверах (ДТО 8 и 9) мы активно использовали концепцию «Логических устройств» (ЛУ). Можно было настроить все кассы внутри самого драйвера, присвоить им уникальные ID и переключаться между ними.
В ДТО 10 логические устройства упразднены. Каждое физическое устройство теперь является независимым объектом. Чтобы взаимодействовать с несколькими ККТ из 1С, компонента программно создает независимые экземпляры подключения. Поэтому так важно жестко привязывать каждую кассу к ее собственному COM-порту.
Посмотрим на пример настройки службы передачи данных. Каждая касса АТОЛ в режиме USB создает в диспетчере устройств два виртуальных COM-порта:
_00) используется для управления кассой и прописывается в 1С._02) нужен для передачи чеков в ОФД через службу EoU (Ethernet over USB).В ДТО 10 отсутствует удобная утилита для визуальной настройки EoU. Если у вас несколько касс, автоматический поиск портов для ОФД будет давать сбои. Файл конфигурации необходимо заполнять вручную.
Откройте или создайте файл настроек, который находится по пути C:\ProgramData\ATOL\EoU\settings.xml. Вам нужно жестко прописать порт для каждого устройства. Вот как должен выглядеть этот файл (вместо автоопределения):
<?xml version="1.0" encoding="windows-1251" ?>
<settings>
<device>
<id>АТОЛ 55Ф Касса 1</id>
<port>4</port>
</device>
<device>
<id>АТОЛ 55Ф Касса 2</id>
<port>6</port>
</device>
</settings>
Совет: при обновлении драйверов старый файл settings.xml сохраняется, а номера COM-портов в Windows могут измениться. Всегда проверяйте соответствие портов после переустановки драйвера.
Если ваши аппараты работают на Платформе 5.0 (поддерживается в ДТО 10), настоятельно рекомендуем отказаться от механизма EoU. Используйте канал связи EoT (Ethernet-over-Transport).
При использовании EoT касса передает фискальные данные в ОФД через тот же самый порт управления (первый COM-порт), по которому работает 1С. Служба EoU в этом случае вообще не нужна, и файл settings.xml настраивать не требуется. Это значительно упрощает администрирование парка из нескольких ККТ на одном ПК.
Если вы настраиваете несколько касс на одном компьютере, но пользователи работают в 1С через терминальный сервер (RDP), прямое обращение к COM-портам может вызывать ошибку «Порт занят».
В ДТО 10 для этих целей предусмотрен Сервер удаленного подключения ККТ. Запустите службу RPC-сервера на том компьютере, куда физически вставлены USB-кабели от касс. В самой 1С (в сеансах пользователей) настраивайте подключение не к локальному COM-порту, а по протоколу TCP/IP, указывая IP-адрес компьютера с кассами и уникальный порт TCP, который RPC-сервер выделил для конкретной кассы. Это обеспечит стабильную работу без блокировок интерфейса.