При организации работы торгового оборудования в терминальном режиме (RDP) технические специалисты часто сталкиваются со специфическими ошибками связи. Одной из наиболее распространенных и неочевидных проблем при использовании фискальных регистраторов АТОЛ является ошибка: «Версия удалённого объекта не соответствует версии локального!».
Эта ошибка обычно заявляет о себе внезапно — например, сразу после планового обновления прошивки ККТ обслуживающей организацией (ЦТО). В этой статье мы подробно разберем, почему возникает этот сбой, проанализируем механизм взаимодействия 1С с драйвером АТОЛ по сети и предоставим пошаговую инструкцию по решению проблемы.
Для начала проанализируем архитектуру подключения. Фискальный регистратор (в нашем примере — АТОЛ 55) физически подключен к локальному компьютеру пользователя по USB- или COM-интерфейсу. При этом сама база данных «1С:Предприятие 7.7» (конфигурация «Торговля и Склад») находится на удаленном сервере, к которому пользователь подключается по протоколу RDP.
Для того чтобы 1С на сервере могла отправлять команды на локальную кассу, используется классическая и эффективная схема сетевого вещания через службу FDSVC (Frontol and Drivers Service), входящую в состав Драйвера торгового оборудования АТОЛ версии 8.х (ДТО 8). Схема работает следующим образом:
FDSVC.exe, которая захватывает локальный порт ККМ и делает его доступным по сети TCP/IP (по умолчанию используется TCP-порт 6220).FDSVC на локальном ПК. В этот момент драйвер строго сверяет версии файлов на обеих сторонах. Если версии драйверов не совпадают хотя бы в минорной сборке, связь мгновенно блокируется, и драйвер возвращает ошибку несоответствия версий.Когда специалисты ЦТО обновляют прошивку кассы (например, для поддержки новых форматов фискальных данных ФФД 1.05 или изменений в ставках НДС), им приходится обновлять драйвер АТОЛ на локальном ПК кассира до актуальной версии (например, до 8.16.x). При этом они часто забывают обновить точно такие же файлы на RDP-сервере. Возникает рассинхронизация версий, приводящая к отказу печати.
Давайте посмотрим на пример кода во внешней обработке обслуживания frATOL54_comm_105.ert, в котором происходит падение. Ошибка инициализируется при попытке включить устройство:
Функция ПодключитьсяКФР(Объект)
Рез = 0;
// Занимаем порт
Объект.DeviceEnabled = 1;
Если Объект.ResultCode = 0 тогда
// Получаем состояние ККМ
Если Объект.GetStatus() = 0 тогда
// Если есть открытый чек, то отменяем его
Если Объект.CheckState <> 0 тогда
Если Объект.CancelCheck() = 0 тогда
Рез = 1;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Рез;
КонецФункции
Сбой происходит ровно на строке Объект.DeviceEnabled = 1;. Присвоение этого свойства инициирует обращение библиотеки к сетевой службе. Если версии не совпадают, свойство принимает значение 0 (или соединение не устанавливается), а свойство ResultCode возвращает код ошибки, которая затем транслируется пользователю.
Часто у администраторов возникает вопрос: почему в настройках ККМ в 1С фигурирует одна библиотека, а в системе установлена другая? Разберем назначение этих компонентов:
Важно понимать, что интеграционная компонента FprnM1C82_54FZ.dll является лишь «переводчиком» между стандартизированными командами 1С и функциями АТОЛ. Для ее полноценной работы в системе обязательно должна присутствовать оригинальная библиотека FprnM1C.dll (и сопутствующие ей служебные файлы драйвера). Они работают исключительно в связке.
Для исправления ситуации нам необходимо полностью синхронизировать версии программного обеспечения АТОЛ на сервере терминалов и на рабочем месте кассира.
Перейдем на физический ПК, к которому подключен АТОЛ 55. Откроем утилиту «Управление драйверами» (или «Тест драйвера ККТ»). Посмотрим точную версию установленного пакета ДТО 8 (например, 8.16.3.9007). Убедимся, что служба FDSVC запущена и работает.
Зайдем на сервер терминалов под учетной записью администратора. Нам необходимо скачать и установить точно такой же дистрибутив ДТО АТОЛ (в нашем примере — версии 8.16.3). Крайне важно избегать несовпадения даже в последних цифрах сборки.
Платформа 1С 7.7 часто загружает внешние компоненты не из системных папок Windows, а напрямую из каталога базы данных или папки исполняемых файлов платформы. Поэтому ручной замены файлов в программных каталогах АТОЛ может быть недостаточно. Выполним следующие действия:
C:\Program Files (x86)\ATOL\Drivers8\1Cv82\ или подкаталоги в папке Bin драйвера).FprnM1C82_54FZ.dll и FprnM1C.dll.Bin установленной платформы 1С 7.7 (обычно C:\Program Files (x86)\1cv77\bin\).regsvr32 "C:\[Путь_к_папке_с_базой]\FprnM1C82_54FZ.dll"
Убедимся, что сетевой экран (брандмауэр Windows или сторонний антивирус) на локальном компьютере кассира разрешает входящие подключения к порту 6220 по протоколу TCP для процесса FDSVC.exe.
Для диагностики связи на сервере RDP откроем командную строку и выполним проверку доступности порта с помощью утилиты Telnet:
telnet [IP-адрес_локального_ПК] 6220
Если после выполнения команды экран консоли очистился или стал черным — сетевой порт открыт и служба готова принимать подключения. Если система выдала ошибку подключения — порт заблокирован сетевым экраном на локальном ПК.
Обратите внимание, что линейка драйверов АТОЛ 8.х на сегодняшний день признана устаревшей и больше не развивается производителем. Если в вашей организации планируется переход на новые форматы фискальных данных (например, ФФД 1.2 для торговли маркированными товарами) или обновление ККТ на платформу 5.0, вам потребуется перейти на ДТО 10.
При переходе на 10-ю версию концепция работы изменится:
FDSVC больше не используется. Вместо нее АТОЛ предлагает использовать встроенный Web-сервер или функционал Сервера удаленного подключения ККТ.addin_fptr10_x86.dll и существенно доработать или заменить внешнюю обработку обслуживания ККМ, так как старая обработка frATOL54_comm_105.ert не умеет работать с десятой версией драйвера напрямую.Своевременная синхронизация версий драйверов и понимание сетевой структуры взаимодействия ККТ с терминальным сервером позволят вам быстро локализовать и устранять подобные сбои, минимизируя время простоя торговых точек.