Как подключить драйвер АТОЛ 10 в 1С 7.7 и исправить ошибку создания объекта AddIn.Fptr10?

Программист 1С v7.7 Торговля и дистрибуция
← На главную

Переход на 10-ю версию драйверов АТОЛ (DTO 10) для пользователей «классической» платформы 1С 7.7 часто сопровождается трудностями. Основная проблема, с которой сталкиваются разработчики, — невозможность создать объект драйвера через стандартные механизмы СоздатьОбъект или ActiveXObject. В этой статье мы подробно разберем, почему возникает эта ошибка и как правильно настроить среду для корректной работы торгового оборудования.

Главная причина ошибки: Конфликт разрядности

Проанализируем ситуацию, описанную в обсуждении. Основная ошибка кроется в несовместимости разрядности (битности) приложения и драйвера. Платформа 1С:Предприятие 7.7 является строго 32-битным приложением (x86). Это означает, что она принципиально не может работать с 64-битными COM-объектами или внешними компонентами.

Если вы скачали и установили дистрибутив с пометкой windows64, система зарегистрирует 64-битные библиотеки. При попытке выполнить код:


// В среде JScript
var fptr = new ActiveXObject("AddIn.Fptr10");

// Или в 1С 7.7
Драйвер = СоздатьОбъект("AddIn.Fptr10");

Система выдаст ошибку, так как 32-битный процесс 1С не «видит» 64-битную ветку реестра, где зарегистрирован компонент. Для решения проблемы необходимо обязательно устанавливать 32-битную версию драйвера АТОЛ 10 (например, файл KKT10-10.x.x-windows32-setup.exe), даже если сама операционная система Windows у вас 64-битная.

Пошаговая инструкция по установке и регистрации драйвера

Рассмотрим по шагам процесс правильной подготовки системы:

  1. Удаление старых версий: Перед установкой нового драйвера рекомендуется полностью удалить предыдущие версии DTO 10, чтобы избежать конфликтов в реестре.
  2. Установка нужной разрядности: Запустите инсталлятор драйвера для 32-битной системы. В процессе установки убедитесь, что выбрана опция установки библиотек COM/ActiveX.
  3. Проверка регистрации библиотеки: Библиотека fptr10.dll должна быть зарегистрирована в системе. Обычно инсталлятор делает это автоматически, но мы можем проверить это или выполнить вручную. Файл для 32-битной версии обычно располагается по пути C:\Program Files (x86)\ATOL\Drivers10\KKT\bin\fptr10.dll.

Для ручной регистрации выполните команду в консоли (cmd) от имени администратора:

regsvr32 "C:\Program Files (x86)\ATOL\Drivers10\KKT\bin\fptr10.dll"

Варианты подключения объекта в 1С 7.7

В «семерке» существует два основных способа работы с драйвером АТОЛ 10. Разберем каждый из них подробнее.

Способ 1: Использование как внешней компоненты

Этот способ предпочтителен, так как он позволяет использовать специфические методы платформы 1С для работы с внешним оборудованием.


Если ЗагрузитьВнешнююКомпоненту("fptr10.dll") = 0 Тогда
    Предупреждение("Ошибка загрузки компоненты fptr10.dll!");
КонецЕсли;
Драйвер = СоздатьОбъект("AddIn.Fptr10");

Способ 2: Использование как чистого COM-объекта

Если вы пишете скрипт на JScript или VBScript, или если по каким-то причинам загрузка как внешней компоненты в 1С не удобна, можно создать объект напрямую через Windows COM.


// Пример на JScript
try {
    var fptr = new ActiveXObject("AddIn.Fptr10");
    // Если AddIn.Fptr10 не срабатывает, попробуйте Atol.Fptr10
} catch (e) {
    WScript.Echo("Ошибка создания объекта: " + e.message);
}

Дополнительные технические требования

Выясним причины, по которым объект может не создаваться даже при правильной разрядности:

  1. Библиотеки Microsoft Visual C++: Драйвер АТОЛ 10 требует наличия в системе пакетов Microsoft Visual C++ Redistributable 2015-2019 (x86). Без этих системных библиотек DLL-файл драйвера просто не сможет инициализироваться.
  2. Права доступа: При работе в терминальных сессиях (RDP) убедитесь, что у пользователя есть права на запись в папку с логами (%APPDATA%\Atol\drivers10\logs\). Если драйвер не может создать лог-файл, он может выдать ошибку инициализации.
  3. ProgID: В зависимости от версии драйвера, программный идентификатор может различаться. Попробуйте поочередно AddIn.Fptr10 и Atol.Fptr10.

Передача настроек: Отказ от старых методов

Важно помнить, что в 10-й версии драйвера логика работы с параметрами существенно изменилась по сравнению с 8-й версией. Параметры связи (порт, скорость и т.д.) теперь не хранятся в реестре автоматически. Посмотрим на пример того, как теперь рекомендуется передавать настройки через JSON-строку, что значительно упрощает код:


// Пример формирования настроек в формате JSON
Настройки = "{""Model"": 500, ""Port"": 0, ""BaudRate"": 115200}"; 
Драйвер.setSettings(Настройки);
Драйвер.open();
Если Драйвер.isOpened() = 0 Тогда
    Сообщить("Ошибка открытия связи с ККТ");
КонецЕсли;

Если вы категорически не хотите использовать JSON, вы можете использовать метод setSingleSetting для каждого параметра, но в конце обязательно нужно вызвать applySingleSettings, чтобы изменения вступили в силу.

Диагностика через логи

Если объект все равно не создается, проанализируем лог-файлы драйвера. Это самый надежный способ понять, что идет не так. Ищите файл fptr10.log в папке пользователя AppData\Roaming\Atol\drivers10\logs\. В нем будет зафиксирована каждая попытка загрузки библиотеки и указан конкретный код ошибки (например, отсутствие зависимости или нехватка прав).

Альтернативное решение: Web-сервер АТОЛ

Если борьба с регистрацией COM-объектов в старой операционной системе заходит в тупик, рассмотрим альтернативный путь. АТОЛ предоставляет службу «Атол: Сервер ККТ». В этом случае взаимодействие происходит не через DLL, а через HTTP-запросы. Для 1С 7.7 это означает использование объекта MSXML2.ServerXMLHTTP или аналогичных, что полностью снимает вопросы разрядности драйверов на клиентской машине.

← На главную