Переход на 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-битная.
Рассмотрим по шагам процесс правильной подготовки системы:
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"
В «семерке» существует два основных способа работы с драйвером АТОЛ 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);
}
Выясним причины, по которым объект может не создаваться даже при правильной разрядности:
Microsoft Visual C++ Redistributable 2015-2019 (x86). Без этих системных библиотек DLL-файл драйвера просто не сможет инициализироваться.%APPDATA%\Atol\drivers10\logs\). Если драйвер не может создать лог-файл, он может выдать ошибку инициализации.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\. В нем будет зафиксирована каждая попытка загрузки библиотеки и указан конкретный код ошибки (например, отсутствие зависимости или нехватка прав).
Если борьба с регистрацией COM-объектов в старой операционной системе заходит в тупик, рассмотрим альтернативный путь. АТОЛ предоставляет службу «Атол: Сервер ККТ». В этом случае взаимодействие происходит не через DLL, а через HTTP-запросы. Для 1С 7.7 это означает использование объекта MSXML2.ServerXMLHTTP или аналогичных, что полностью снимает вопросы разрядности драйверов на клиентской машине.