При переходе с драйверов АТОЛ версии 9 на версию 10 (DTO 10) многие специалисты сталкиваются с неприятной ситуацией: если на одном рабочем месте подключены две контрольно-кассовые техники (ККТ), то по одной из них (часто второй по счету) продажа не проходит с ошибкой «СНО не определена». Рассмотрим подробно, почему это происходит и как устранить данную коллизию, основываясь на техническом анализе работы драйверов и Библиотеки подключаемого оборудования (БПО) 1С.
Проанализируем ситуацию: в версии драйвера 10.6.0.0 была выявлена критическая недоработка механизма кэширования параметров оборудования. При инициализации двух устройств на одном рабочем месте драйвер часто путает контексты или не может корректно опросить второе устройство, если первый экземпляр уже занял канал обмена. В результате 1С не получает список поддерживаемых систем налогообложения (СНО) от кассы.
Посмотрим на настройки в интерфейсе 1С. В справочнике «Подключаемое оборудование» для каждого экземпляра ККТ есть табличная часть «Параметры ККТ». Выясним причину ошибки: если при нажатии кнопки «Настроить» или «Параметры ККТ» эта таблица остается пустой, 1С не может сопоставить внутренние идентификаторы (например, ЕНВД, УСН или ОСН) с числовыми кодами, которые ожидает драйвер (0, 1, 2 и т.д.). В ДТО 9 этот механизм был менее жестким, а в ДТО 10 требования к заполнению структуры TaxVariant стали обязательными.
Рассмотрим основной вариант решения проблемы. Версия 10.6.0.0 признана нестабильной для работы с несколькими устройствами. Практика показывает, что обновление до версии 10.6.1 или выше полностью устраняет ошибку определения СНО.
10.6.0.0 через панель управления Windows.10.6.1, 10.8.x или самую актуальную на текущий момент.Если по каким-то причинам вы не можете обновить драйвер прямо сейчас, проанализируем способ ручного обхода ошибки. Проблема заключается в том, что метод драйвера GetParameters возвращает пустой ответ для второго устройства. Мы можем «заставить» 1С увидеть параметры, отредактировав табличную часть оборудования напрямую.
Разберем алгоритм действий:
ПодключаемоеОборудование нужный экземпляр ККТ.Посмотрим на пример логики, которую выполняет БПО при передаче СНО в драйвер. Если таблица параметров пуста, код может выглядеть так:
// Упрощенный пример логики передачи СНО
ПараметрыЧека = Новый Структура;
Если НастройкаОборудования.ПараметрыККТ.Количество() = 0 Тогда
// Здесь возникает ошибка, так как 1С не знает, какой код СНО отправить
ПараметрыЧека.Вставить("СистемаНалогообложения", "");
Иначе
ПараметрыЧека.Вставить("СистемаНалогообложения", ПолучитьКодСНОПоНастройкам(НастройкаОборудования));
КонецЕсли;
Проанализируем техническую сторону подключения. Если кассы подключены через COM-порты (или эмуляцию через USB), драйвер 10-й версии может конфликтовать со встроенными мониторами портов. Выполним следующие действия:
AtolSioCom или EthOverUsb не блокирует второй порт при обращении 1С к первому устройству.C:\Users\ИмяПользователя\AppData\Roaming\Atol\drivers10\logs\fptr10.log. Ищем строки openReceipt. Если в параметре LIBFPTR_PARAM_TAX_VARIANT передается значение -1 или 63, это подтверждает, что 1С не передала корректную СНО.Хотя пользователи часто отмечают наличие прошивки версии 7942 (Платформа 2.5) на обеих ККТ, стоит учитывать, что драйверы линейки 10.x оптимизированы для работы с Платформой 5.0. Если обновление драйвера до 10.6.1 и ручное заполнение параметров не помогают, рассмотрим возможность миграции ККТ на Платформу 5.0. В ней полностью переработан протокол обмена данными о налогах, что исключает большинство ошибок сопоставления СНО.
Подведем итог:
Наиболее вероятная причина ошибки — баг версии 10.6.0.0 в обработке многопоточных запросов к разным ККТ и пустая таблица параметров оборудования в 1С. Установите версию драйвера 10.6.2 или выше и принудительно обновите параметры в карточке оборудования под правами администратора.