При интеграции кассового оборудования АТОЛ с программными продуктами 1С разработчики часто сталкиваются с путаницей в версиях драйверов. Компания АТОЛ поставляет несколько вариантов библиотек для 10-й версии драйвера (DTO 10), и выбор конкретного файла (например, fptr10_1c_win32_10_4_3_0.dll) в корне меняет способ взаимодействия с ККТ. В этой статье мы подробно разберем, чем отличаются эти библиотеки, где искать документацию и какой метод подключения выбрать для ваших задач.
Первым делом проанализируем ситуацию: почему стандартные методы, описанные в документации АТОЛ, могут не работать. Существует два принципиально разных подхода к интеграции:
Если вы пытаетесь вызвать метод version() или setParam() у библиотеки с префиксом _1c_, система выдаст ошибку, так как эта библиотека реализует интерфейс «1С:ККТ», а не прямой интерфейс драйвера.
Если ваша задача — подключить кассу к типовой конфигурации 1С (например, 1С:Розница или 1С:Управление торговлей), скорее всего, вам нужна именно библиотека fptr10_1c_.... В этом случае документацию нужно искать не на сайте АТОЛ, а на портале 1С:ИТС.
Разберем, как работает этот механизм. Основное взаимодействие происходит через метод СформироватьЧек (или ProcessCheck). Программист 1С формирует текстовую строку в формате XML, которая содержит все данные: позиции номенклатуры, цены, налоги и признаки маркировки. Библиотека принимает этот XML, самостоятельно «разбирает» его на низкоуровневые команды и отправляет в ККТ.
Рассмотрим пример подключения такой компоненты в коде 1С:
Если ПодключитьВнешнююКомпоненту("ОбщийМакет.ДрайверАтолККТ54ФЗ10X", "ATOL_KKT_1C83_V10", ТипВнешнейКомпоненты.COM) Тогда
ECR = Новый ("AddIn.ATOL_KKT_1C83_V10.ATOL_KKT_1C83_V10");
// Здесь будут доступны только методы стандарта 1С:
// ПоддержатьСвязь(), Занять(), СформироватьЧек() и т.д.
Иначе
Сообщить("Не удалось загрузить внешнюю компоненту");
КонецЕсли;
Важный момент: Чтобы понять, какие теги должны быть в XML, изучите статью на ИТС «Требования к разработке драйверов для ККТ с передачей данных». Там описаны структуры CheckPackage и ReportParameters.
Если типового функционала 1С недостаточно (например, нужна сложная верстка чека, работа с нетипичными регистрами ККТ или специфическая работа с маркировкой), рекомендуется использовать основной драйвер fptr10.dll. Это даст полный контроль над устройством.
Для этого в системе должен быть установлен основной пакет ДТО 10 от АТОЛ. Подключение выполняется через COM-объект AddIn.Fptr10. Проанализируем пример кода для работы с нативным драйвером:
// Создание объекта драйвера
Драйвер = Новый COMОбъект("AddIn.Fptr10");
// Установка параметров связи
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_COMM_PROTOCOL, Драйвер.LIBFPTR_PROTOCOL_ATOL3);
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_MODEL, Драйвер.LIBFPTR_MODEL_ATOL_AUTO);
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_PORT, Драйвер.LIBFPTR_PORT_COM);
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_COM_PORT_NAME, "COM3");
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_BAUDRATE, Драйвер.LIBFPTR_PORT_BR_115200);
// Открытие соединения
Драйвер.open();
Если Не Драйвер.isOpened() Тогда
Сообщить("Ошибка связи: " + Драйвер.getErrorDescription());
Возврат;
КонецЕсли;
// Пример получения версии драйвера
Версия = Драйвер.version();
Сообщить("Версия драйвера: " + Версия);
// Закрытие соединения
Драйвер.close();
В этом режиме вам доступны все возможности ККТ. Документация по всем свойствам (LIBFPTR_PARAM_...) и методам находится в онлайн-справочнике интегратора АТОЛ.
Выясним причины, по которым стоит выбирать тот или иной метод:
Плюсы работы через "Обертку 1С":
Плюсы работы через Native драйвер:
Если библиотека подключена успешно, но при печати чека возникают ошибки, проанализируем логи драйвера. Это самый надежный способ понять, что пошло не так. По умолчанию в ОС Windows драйвер АТОЛ 10 пишет подробные логи по следующему пути:
%AppData%\Roaming\Atol\drivers10\logs
Откройте файл fptr10.log. В нем фиксируются все команды, поступающие от 1С, и ответы от кассового аппарата. Если вы видите ошибку -3800 или -3900, это означает некорректные параметры в чеке (например, неверная ставка НДС или отсутствие кода маркировки).
Обратим внимание на версию 10.4.3.0, упомянутую в вопросе. Это довольно старая версия драйвера. Если вы планируете работать с маркированными товарами (обувь, одежда, молочная продукция и т.д.) по протоколу ФФД 1.2, вам необходимо обновить драйвер до версии не ниже 10.9.x. В старых версиях механизмы проверки кодов маркировки на ККТ отсутствуют или работают некорректно.
Таким образом, если вы используете файл с суффиксом _1c_, забудьте про документацию АТОЛ и ищите описание структуры XML на ИТС. Если же вам нужна гибкость и прямой доступ к методам — подключайте fptr10.dll как COMОбъект или через Native API и используйте официальное руководство интегратора АТОЛ.