Многие пользователи и системные администраторы сталкиваются с неприятной ситуацией после планового обновления прошивки ККТ АТОЛ (например, на платформу 5.0) и перехода на драйвер версии 10.10.6. Проблема проявляется следующим образом: чеки печатаются исправно, но данные в ОФД не уходят «сами по себе». Однако, как только специалист заходит в «Тест драйвера», устанавливает галочку «Включено», связь магическим образом восстанавливается, и накопившиеся документы улетают на сервер оператора. Как только тест закрывается и начинается работа в 1С — отправка снова прекращается.
Разберем подробно причины такого поведения и выясним, какие настройки необходимо изменить в 1С и самом драйвере, чтобы восстановить автоматическую работу обмена.
Проанализируем ситуацию с технической стороны. Начиная с версий драйвера 10.9.x, компания АТОЛ существенно переработала механизм работы службы AtolDeviceService и канала передачи данных EoT. В новых версиях драйвер ожидает монопольного захвата порта. Когда 1С открывает сессию с кассовым аппаратом, она должна не просто отправить команду на печать, но и корректно инициализировать параметры канала связи.
Если в настройках 1С способ обмена не указан явно или стоит значение «По умолчанию», ККТ может не инициировать соединение с ОФД. Касса «забывает» о необходимости передачи данных, пока драйвер не будет принудительно активирован через внешнюю утилиту (Тест драйвера). Для решения этой проблемы рассмотрим шаги по настройке в интерфейсе 1С:
Важно: Если оставить это поле пустым, 1С будет работать с ККТ только как с устройством печати, не давая команду службе драйвера на активацию фонового процесса передачи данных в ОФД.
Выясним, почему ручное включение в «Тесте драйвера» помогает лишь временно. Версия драйвера 10.10.6 крайне чувствительна к блокировкам портов. Если в системе одновременно запущен «Тест драйвера» и открыта 1С, возникает конфликт за владение COM-портом (даже виртуальным).
Проанализируем работу службы AtolDeviceService. Рассмотрим основные рекомендации по ее настройке:
AtolEoU не конфликтует с новыми настройками EoT внутри самой кассы. В современных прошивках рекомендуется полностью переходить на EoT, так как он работает стабильнее в рамках одного порта.Посмотрим на особенности новых прошивок. В версиях 5.12.0 и выше реализованы алгоритмы оптимизации энергопотребления и обмена. Если чек пробит, и 1С мгновенно закрывает соединение с ККТ, касса иногда не успевает «пробросить» пакеты данных в сторону ОФД через драйвер.
Разберем, как это лечится через низкоуровневые настройки. Зайдем в «Тест драйвера», перейдем в раздел Свойства — Параметры ККТ:
Ситуация, когда настройки «слетают» или не подхватываются, часто связана с тем, что при обновлении с версии 10.5 на 10.10 файл settings.xml (расположенный в папке C:\ProgramData\ATOL) перезаписывается некорректно. В нем могут остаться пути к старым логам или неверные идентификаторы портов.
Рассмотрим радикальный, но эффективный метод «чистой» установки:
C:\ProgramData\ATOL (предварительно сохранив настройки, если там есть специфические скрипты).Для окончательной диагностики проанализируем файл лога. По умолчанию он находится в папке профиля пользователя или в Application Data. Откроем его и поищем специфические ошибки в моменты пробития чека из 1С.
Если мы видим ошибки типа -16 (Device is busy) или -14 (Port busy), это прямое подтверждение того, что канал связи блокируется. В нормальной ситуации 1С должна передать управление службе EoT сразу после завершения печати документа. Если в логах после печати нет записей об инициализации соединения с ОФД, значит, 1С не передает нужный параметр КаналСвязи.
В коде интеграции это выглядит примерно так (на уровне драйвера):
// Пример установки параметров связи в объекте драйвера
Драйвер.УстановитьСвойство("ComPort", НомерПорта);
Драйвер.УстановитьСвойство("BaudRate", 115200);
// Критически важная настройка для 10.10.6
Драйвер.УстановитьСвойство("Channel", 3); // 3 соответствует EoT
Драйвер.Подключить();
Итог: Чтобы чеки уходили автоматически, необходимо синхронизировать настройки в трех местах: в самой ККТ (через Тест драйвера поставить тип канала EoT), в службе Windows (убедиться, что AtolDeviceService работает) и в справочнике «Подключаемое оборудование» 1С (явно выбрать EthernetOverTransport). Только при такой связке драйвер будет понимать, что после печати чека порт нужно использовать для передачи данных в ОФД, а не просто закрывать его.