При разработке интеграций с кассовой техникой АТОЛ через драйвер AddIn.Fptr10 разработчики часто сталкиваются с тем, что стандартные методы возвращают «нулевые» или неверные значения. Давайте разберем, почему это происходит и как правильно получать данные из фискального накопителя.
Основная ошибка заключается в попытке получить номер чека через запрос статуса ККТ. Метод LIBFPTR_DT_STATUS возвращает номер последнего документа, который был сформирован устройством (это может быть Z-отчет или технический документ), а не номер конкретного пробитого чека. Чтобы получить именно номер чека, зафиксированного в ФН, необходимо использовать функционал работы с фискальным накопителем.
Для корректного получения номера последнего фискального документа выполним следующие шаги:
LIBFPTR_FNDT_LAST_DOCUMENT.fnQueryData(), который опрашивает именно фискальный накопитель.LIBFPTR_PARAM_DOCUMENT_NUMBER.Пример кода для реализации этой задачи:
Атол10.setParam(Атол10.LIBFPTR_PARAM_FN_DATA_TYPE, Атол10.LIBFPTR_FNDT_LAST_DOCUMENT);
Атол10.fnQueryData();
НомерЧека = Атол10.getParamInt(Атол10.LIBFPTR_PARAM_DOCUMENT_NUMBER);
Таким образом, мы гарантированно получаем номер фискального документа, который был присвоен последнему успешно пробитому чеку.
Часто возникает необходимость передать в чек признак предмета расчета, чтобы корректно отразить операцию в соответствии с требованиями ФНС. В современных форматах фискальных документов (ФФД) за это отвечает тег 1212.
Разберем, как передать этот параметр в процессе регистрации позиции. При формировании позиции в чеке нам необходимо перед вызовом метода регистрации позиции установить значение тега 1212. Рассмотрим логику на примере:
Для указания того, что позиция является «Товаром» или «Услугой», используем метод setParam:
// 1 - Товар
// 4 - Услуга
fptr.setParam(1212, 1);
// Далее следуют команды регистрации позиции и закрытия чека
Обратите внимание, что значения тега 1212 строго регламентированы приказом ФНС. Основные значения для работы:
1 — товар.4 — услуга.Использование этого тега обязательно для соблюдения законодательства. Рекомендуем всегда проверять актуальные значения тегов в документации к форматам фискальных документов, так как они могут меняться при обновлении версий ФФД.
В ходе анализа работы с драйвером мы выяснили, что работа через COM-объект AddIn.Fptr10 имеет свои сложности: необходимость регистрации библиотек, управление памятью и нюансы работы в 32/64-битных версиях платформы 1С.
Если проект позволяет, рассмотрите использование «АТОЛ: Веб-сервер». Взаимодействие с кассой через HTTP-запросы в формате JSON имеет ряд преимуществ:
queryData и fnQueryData.При работе через JSON API вам не нужно будет беспокоиться о состоянии объекта драйвера — вы просто отправляете команду и получаете структурированный ответ с номером документа, что значительно упрощает разработку и поддержку интеграции.
Надеемся, эти советы помогут вам быстрее справиться с настройкой кассового оборудования и избежать распространенных ошибок при интеграции 1С с ККТ АТОЛ!