Как исправить ошибку «Версия удалённого объекта не соответствует версии локального!» при печати чеков из 1С 7.7 через RDP

Системный администратор 1С v7.7 Управленческий учет Торговля и дистрибуция
← На главную

При организации работы торгового оборудования в терминальном режиме (RDP) технические специалисты часто сталкиваются со специфическими ошибками связи. Одной из наиболее распространенных и неочевидных проблем при использовании фискальных регистраторов АТОЛ является ошибка: «Версия удалённого объекта не соответствует версии локального!».

Эта ошибка обычно заявляет о себе внезапно — например, сразу после планового обновления прошивки ККТ обслуживающей организацией (ЦТО). В этой статье мы подробно разберем, почему возникает этот сбой, проанализируем механизм взаимодействия 1С с драйвером АТОЛ по сети и предоставим пошаговую инструкцию по решению проблемы.

Почему возникает эта ошибка и как она связана с RDP?

Для начала проанализируем архитектуру подключения. Фискальный регистратор (в нашем примере — АТОЛ 55) физически подключен к локальному компьютеру пользователя по USB- или COM-интерфейсу. При этом сама база данных «1С:Предприятие 7.7» (конфигурация «Торговля и Склад») находится на удаленном сервере, к которому пользователь подключается по протоколу RDP.

Для того чтобы 1С на сервере могла отправлять команды на локальную кассу, используется классическая и эффективная схема сетевого вещания через службу FDSVC (Frontol and Drivers Service), входящую в состав Драйвера торгового оборудования АТОЛ версии 8.х (ДТО 8). Схема работает следующим образом:

  1. На локальном компьютере пользователя запускается служба FDSVC.exe, которая захватывает локальный порт ККМ и делает его доступным по сети TCP/IP (по умолчанию используется TCP-порт 6220).
  2. В настройках торгового оборудования в 1С на RDP-сервере указывается сетевой режим подключения: в качестве порта выбирается TCP, прописывается IP-адрес компьютера пользователя и порт 6220.
  3. При попытке пробить чек 1С обращается к своей локальной библиотеке (клиентской части драйвера на сервере) и отправляет команду на соединение.
  4. Происходит так называемое «рукопожатие» (handshake) между клиентской библиотекой на сервере и службой FDSVC на локальном ПК. В этот момент драйвер строго сверяет версии файлов на обеих сторонах. Если версии драйверов не совпадают хотя бы в минорной сборке, связь мгновенно блокируется, и драйвер возвращает ошибку несоответствия версий.

Когда специалисты ЦТО обновляют прошивку кассы (например, для поддержки новых форматов фискальных данных ФФД 1.05 или изменений в ставках НДС), им приходится обновлять драйвер АТОЛ на локальном ПК кассира до актуальной версии (например, до 8.16.x). При этом они часто забывают обновить точно такие же файлы на RDP-сервере. Возникает рассинхронизация версий, приводящая к отказу печати.

Где именно в коде 1С происходит сбой?

Давайте посмотрим на пример кода во внешней обработке обслуживания frATOL54_comm_105.ert, в котором происходит падение. Ошибка инициализируется при попытке включить устройство:


Функция ПодключитьсяКФР(Объект)
    Рез = 0;
    // Занимаем порт
    Объект.DeviceEnabled = 1;
    Если Объект.ResultCode = 0 тогда
        // Получаем состояние ККМ
        Если Объект.GetStatus() = 0 тогда
            // Если есть открытый чек, то отменяем его
            Если Объект.CheckState <> 0 тогда
                Если Объект.CancelCheck() = 0 тогда
                    Рез = 1;
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
    Возврат Рез;
КонецФункции

Сбой происходит ровно на строке Объект.DeviceEnabled = 1;. Присвоение этого свойства инициирует обращение библиотеки к сетевой службе. Если версии не совпадают, свойство принимает значение 0 (или соединение не устанавливается), а свойство ResultCode возвращает код ошибки, которая затем транслируется пользователю.

Разбираемся с путаницей в библиотеках: FprnM1C.dll vs FprnM1C82_54FZ.dll

Часто у администраторов возникает вопрос: почему в настройках ККМ в 1С фигурирует одна библиотека, а в системе установлена другая? Разберем назначение этих компонентов:

Важно понимать, что интеграционная компонента FprnM1C82_54FZ.dll является лишь «переводчиком» между стандартизированными командами 1С и функциями АТОЛ. Для ее полноценной работы в системе обязательно должна присутствовать оригинальная библиотека FprnM1C.dll (и сопутствующие ей служебные файлы драйвера). Они работают исключительно в связке.

Пошаговая инструкция по устранению проблемы

Для исправления ситуации нам необходимо полностью синхронизировать версии программного обеспечения АТОЛ на сервере терминалов и на рабочем месте кассира.

Шаг 1. Определение точной версии на локальном компьютере

Перейдем на физический ПК, к которому подключен АТОЛ 55. Откроем утилиту «Управление драйверами» (или «Тест драйвера ККТ»). Посмотрим точную версию установленного пакета ДТО 8 (например, 8.16.3.9007). Убедимся, что служба FDSVC запущена и работает.

Шаг 2. Установка аналогичной версии на RDP-сервере

Зайдем на сервер терминалов под учетной записью администратора. Нам необходимо скачать и установить точно такой же дистрибутив ДТО АТОЛ (в нашем примере — версии 8.16.3). Крайне важно избегать несовпадения даже в последних цифрах сборки.

Шаг 3. Обновление внешних компонент в каталогах 1С

Платформа 1С 7.7 часто загружает внешние компоненты не из системных папок Windows, а напрямую из каталога базы данных или папки исполняемых файлов платформы. Поэтому ручной замены файлов в программных каталогах АТОЛ может быть недостаточно. Выполним следующие действия:

  1. После установки драйвера на сервере перейдем в папку с установленными файлами (обычно это C:\Program Files (x86)\ATOL\Drivers8\1Cv82\ или подкаталоги в папке Bin драйвера).
  2. Найдем новые версии файлов FprnM1C82_54FZ.dll и FprnM1C.dll.
  3. Скопируем их и заменим ими старые версии файлов, расположенные:
    • в каталоге базы данных 1С 7.7;
    • в папке Bin установленной платформы 1С 7.7 (обычно C:\Program Files (x86)\1cv77\bin\).
  4. Произведем повторную регистрацию интеграционной библиотеки в операционной системе сервера. Для этого откроем командную строку от имени администратора и выполним команду:

    regsvr32 "C:\[Путь_к_папке_с_базой]\FprnM1C82_54FZ.dll"

Шаг 4. Проверка брандмауэра и сетевых портов

Убедимся, что сетевой экран (брандмауэр Windows или сторонний антивирус) на локальном компьютере кассира разрешает входящие подключения к порту 6220 по протоколу TCP для процесса FDSVC.exe.

Для диагностики связи на сервере RDP откроем командную строку и выполним проверку доступности порта с помощью утилиты Telnet:

telnet [IP-адрес_локального_ПК] 6220

Если после выполнения команды экран консоли очистился или стал черным — сетевой порт открыт и служба готова принимать подключения. Если система выдала ошибку подключения — порт заблокирован сетевым экраном на локальном ПК.

Перспективы: переход на ДТО 10

Обратите внимание, что линейка драйверов АТОЛ 8.х на сегодняшний день признана устаревшей и больше не развивается производителем. Если в вашей организации планируется переход на новые форматы фискальных данных (например, ФФД 1.2 для торговли маркированными товарами) или обновление ККТ на платформу 5.0, вам потребуется перейти на ДТО 10.

При переходе на 10-ю версию концепция работы изменится:

Своевременная синхронизация версий драйверов и понимание сетевой структуры взаимодействия ККТ с терминальным сервером позволят вам быстро локализовать и устранять подобные сбои, минимизируя время простоя торговых точек.

← На главную