При работе со специальным торговым оборудованием в среде 1С часто возникает крайне неприятная ситуация: вы устанавливаете актуальную версию драйвера ККТ (например, АТOЛ 10.6.0), проводите успешное тестирование, печатаете чеки со всеми необходимыми реквизитами (включая ИНН и наименование покупателя), но на следующий день или при выполнении определенных операций обнаруживаете, что настройки сбросились, а версия драйвера откатилась назад (например, до устаревшей 10.4.4). В результате новые обязательные реквизиты перестают выводиться на печать, нарушая требования законодательства.
Особенно часто этот эффект проявляется в терминальных средах (RDP) и активируется при попытке пробить чек из документов, отличных от привычного Рабочего места кассира (РМК) — например, из документа Поступление на счет при оформлении безналичных оплат. В этой статье мы подробно разберем, почему происходит такой автоматический откат драйверов, как устроена архитектура взаимодействия 1С с торговым оборудованием и как навсегда решить эту проблему.
Для того чтобы эффективно устранить неисправность, нам необходимо детально проанализировать механизм работы 1С с внешними компонентами. Взаимодействие платформы 1С с кассовыми аппаратами АТОЛ строится на базе двухкомпонентной архитектуры:
.dll), который выступает в роли «переводчика» между платформой 1С и локальным системным драйвером. Данная компонента хранится непосредственно внутри базы данных 1С в справочнике ДрайверыОборудования в виде двоичного макета.Когда вы выполняете установку драйвера через интерфейс 1С, система обращается к справочнику драйверов, берет встроенный макет интеграционной компоненты и распаковывает его в локальную папку пользователя на сервере или компьютере. Путь к этой папке обычно выглядит так:
C:\Users\[ИмяПользователя]\AppData\Roaming\1C\1cv8\ExtCompT\
Суть конфликта заключается в следующем: если в самой конфигурации 1С (в БПО — Библиотеке подключаемого оборудования) зарегистрирован макет старой версии (например, 10.4.4), а локально на компьютере вы установили версию 10.6.0, то при определенных условиях система обнаружит это несоответствие. Платформа 1С считает встроенный макет «эталонным». Как только происходит повторная инициализация оборудования (например, при печати чека из фонового задания, под другим пользователем или из нетипичного документа вроде Поступление на счет), 1С принудительно перезаписывает локальный файл библиотеки в папке ExtCompT старой версией из своего макета. Происходит тихий откат драйвера.
Давайте проанализируем ситуацию с документом Поступление на счет. При проведении оплаты картой или безналичным расчетом закон требует пробития чека с признаком «Безналичные». Печать чека из этого документа часто инициирует создание нового сеанса подключения к кассе. Если на сервере терминалов (RDP) настроено совместное использование портов или пользователи работают в режиме многосеансовости, система может динамически переопределить рабочее место.
При этом 1С заново проверяет соответствие версии локальной библиотеки той, что прописана в макете информационной базы для данного рабочего места. Обнаружив «чужую» (новую) версию 10.6.0, 1С без предупреждения заменяет ее на «родную» 10.4.4, зашитую в конфигурацию. В результате драйвер «слетает».
Чтобы решить проблему окончательно, нам потребуется синхронизировать версии интеграционной компоненты в базе данных 1С и локально установленного драйвера в операционной системе, а также правильно настроить права доступа в терминальной среде.
Первым делом необходимо заменить устаревший встроенный макет в информационной базе актуальным файлом от АТОЛ.
«АТOЛ:ККТ с передачей данных в ОФД 10.Х».C:\Program Files\ATOL\Drivers10\KKT\1Cv83\ATOL_KKT_10.zip (для 64-битных систем) или в папке аналогичного драйвера в Program Files (x86).Даже после обновления макета в базе старые файлы DLL могут оставаться в профилях пользователей Windows и вызывать конфликты. Проведем их тотальную очистку.
C:\Users\[Имя_Пользователя]\AppData\Roaming\1C\1cv8\ExtCompT\ExtCompT (включая библиотеки с именами вроде Atol*.dll и конфигурационный файл registry.xml). Не бойтесь удалять — при следующем запуске 1С автоматически воссоздаст эти файлы, взяв их из обновленного нами макета базы данных.В терминальной среде RDP часто возникает конфликт разрядности платформы 1С и драйверов торгового оборудования. Если серверная часть или клиентское приложение 1С работает под 64-битной платформой, а драйвер АТОЛ установлен только 32-битный, система не сможет корректно инициализировать внешнюю компоненту. Пытаясь исправить ошибку, БПО может запустить процедуру автовосстановления и откатить драйвер к старой «стабильной» версии.
Решение: при установке драйверов АТОЛ на сервере обязательно выбирайте установку как 32-битной (x86), так и 64-битной (x64) версий технологической платформы драйвера. Это гарантирует, что любой сеанс 1С, независимо от его разрядности, найдет подходящую системную библиотеку.
Если пользователи работают на сервере под одной и той же учетной записью Windows (что часто практикуется в небольших компаниях ради экономии лицензий), они используют общую папку AppData и, соответственно, один и тот же кэш ExtCompT. При одновременной работе один пользователь может инициировать обновление компоненты, а у второго в этот момент заблокируются файлы, что приведет к аварийному откату системы к старым версиям.
Рекомендуется соблюдать следующие правила настройки RDP:
Выполнив эти шаги, мы добьемся стабильной работы торгового оборудования. Версия драйвера зафиксируется на актуальной отметке 10.6.0, реквизиты ИНН и наименования покупателя будут печататься корректно, а вызовы печати чеков из документов Поступление на счет больше не будут вызывать критических сбоев и нежелательных откатов системы.