NAV Navbar <#>
Logo C++ (C-API) <#> C++ <#> Python <#> Java <#> Android <#> ObjC <#> C#
<#> Delphi <#> Go <#> Duktape <#>

  • Общая информация <#obschaya-informatsiya>
  • Дистрибутивы <#distributivy>
    o Windows <#windows>
    o Linux <#linux>
    o macOS <#macos>
  • Настройки логирования <#nastroyki-logirovaniya>
  • Начало работы с драйвером <#nachalo-raboty-s-drayverom>
    o Подключение к проекту <#podklyuchenie-k-proektu>
    o Инициализация драйвера <#create_driver>
    o Запрос версии драйвера <#zapros-versii-drayvera>
    o Деинициализация драйвера <#driver_destroy>
    o Настройка драйвера <#nastroyka-drayvera>
    o Выгрузка настроек <#vygruzka-nastroek>
    o Список настроек <#driver_settings>
    o Настройка обмена с ОФД <#nastroyka-obmena-s-ofd>
    o Методы и параметры драйвера <#methods_setters_getters>
  • Обработка ошибок <#errors>
  • Соединение с ККТ <#soedinenie-s-kkt>
  • Запрос информации о ККТ <#zapros-informatsii-o-kkt>
    o Общая информация и статус <#obschaya-informatsiya-i-status>
    o Короткий запрос статуса ККТ <#korotkiy-zapros-statusa-kkt>
    o Сумма наличных в денежном ящике <#summa-nalichnyh-v-denezhnom- yaschike>
    o Версия модуля <#versiya-modulya>
    o Параметры массива картинок <#parametry-massiva-kartinok>
    o Параметры картинки в памяти <#parametry-kartinki-v-pamyati>
    o Состояние лицензии ККТ <#sostoyanie-litsenzii-kkt>
    o Счетчики регистраций <#schetchiki-registratsiy>
    o Счетчики оплат <#schetchiki-oplat>
    o Счетчики внесений и выплат <#schetchiki-vneseniy-i-vyplat>
    o Сумма выручки <#summa-vyruchki>
    o Текущие дата и время ККТ <#tekuschie-data-i-vremya-kkt>
    o Состояние смены <#sostoyanie-smeny>
    o Состояние чека <#sostoyanie-cheka>
    o Заводской номер <#zavodskoy-nomer>
    o Информация о модели ККТ <#informatsiya-o-modeli-kkt>
    o Ширина чековой ленты <#shirina-chekovoy-lenty>
    o Ресурс отрезчика <#resurs-otrezchika>
    o Ресурс шагового двигателя <#resurs-shagovogo-dvigatelya>
    o Ресурс ТПГ <#resurs-tpg>
    o Сумма налога за смену <#summa-naloga-za-smenu>
    o Сумма налога за чек <#summa-naloga-za-chek>
    o Необнуляемая сумма <#neobnulyaemaya-summa>
    o Количество чеков <#kolichestvo-chekov>
    o Количество отмененных чеков <#kolichestvo-otmenennyh-chekov>
    o Сумма отмененных чеков <#summa-otmenennyh-chekov>
    o Состояние источника питания <#sostoyanie-istochnika-pitaniya>
    o Температура ТПГ <#temperatura-tpg>
    o Фатальные ошибки <#fatalnye-oshibki>
    o MAC-адрес Ethernet <#mac-adres-ethernet>
    o Адрес модуля и сегмента <#adres-modulya-i-segmenta>
    o Время работы ККТ <#vremya-raboty-kkt>
    o Суммы скидок и надбавок за смену <#summy-skidok-i-nadbavok-za- smenu>
    o Код привязки к личному кабинету <#kod-privyazki-k-lichnomu- kabinetu>
    o Дата и время последней успешной отправки документа в ОФД <#data- i-vremya-posledney-uspeshnoy-otpravki-dokumenta-v-ofd>
    o Текущая конфигурация Ethernet <#tekuschaya-konfiguratsiya-ethernet>
    o Текущая конфигурация Wi-Fi <#tekuschaya-konfiguratsiya-wi-fi>
    o Загруженный шаблон <#zagruzhennyy-shablon>
    o Сменный итог <#smennyy-itog>
    o Параметры шрифта <#parametry-shrifta>
    o Состояние привязки к ПО <#sostoyanie-privyazki-k-po>
    o Дата и время последней успешной отправки уведомления в ИСМ
    <#data-i-vremya-posledney-uspeshnoy-otpravki-uvedomleniya-v-ism>
    o Информация о микроконтроллере <#informatsiya-o-mikrokontrollere>
    o Информация о кэшированных реквизитах <#informatsiya-o- keshirovannyh-rekvizitah>
    o Сменные итоги по секциям <#smennye-itogi-po-sektsiyam>
    o Температура кристалла микроконтроллера <#temperatura-kristalla- mikrokontrollera>
    o Доступные операции <#dostupnye-operatsii>
  • Регистрация кассира <#registratsiya-kassira>
  • Операции со сменой <#operatsii-so-smenoy>
    o Открыть смену <#otkryt-smenu>
    o Закрыть смену <#zakryt-smenu>
  • Операции с чеком <#operatsii-s-chekom>
    o Общий алгоритм формирования чека <#obschiy-algoritm- formirovaniya-cheka>
    o Открыть чек <#otkryt-chek>
    o Отменить чек <#otmenit-chek>
    o Зарегистрировать позицию <#zaregistrirovat-pozitsiyu>
    o Зарегистрировать оплату <#zaregistrirovat-oplatu>
    o Зарегистрировать налог на чек <#zaregistrirovat-nalog-na-chek>
    o Зарегистрировать итог <#zaregistrirovat-itog>
    o Закрыть чек <#zakryt-chek>
    o Проверить закрытие документа <#proverit-zakrytie-dokumenta>
    o Допечатать документ <#dopechatat-dokument>
  • Работа с кодами маркировки в ФФД 1.2 <#marks_ffd12>
    o Дополнительные настройки <#dopolnitelnye-nastroyki>
    o Проверка КМ <#proverka-km>
    o Передать данные уведомления <#sales_notice>
    o Регистрация чека <#registratsiya-cheka>
    o Обновление ключей проверки ФН-М <#obnovlenie-klyuchey-proverki- fn-m>
    o Проверка сервера ИСМ <#proverka-servera-ism>
  • Внесения и выплаты <#vneseniya-i-vyplaty>
    o Внесение <#vnesenie>
    o Выплата <#vyplata>
  • Печать отчетов <#pechat-otchetov>
    o X-отчет <#x-otchet>
    o Копия последнего документа <#kopiya-poslednego-dokumenta>
    o Отчет о состоянии расчетов <#otchet-o-sostoyanii-raschetov>
    o Демо-печать <#demo-pechat>
    o Печать информации о ККТ <#pechat-informatsii-o-kkt>
    o Диагностика соединения с ОФД <#diagnostika-soedineniya-s-ofd>
    o Печать документа из ФН <#pechat-dokumenta-iz-fn>
    o Отчет количеств <#otchet-kolichestv>
    o Отчет по секциям <#otchet-po-sektsiyam>
    o Отчет по кассирам <#otchet-po-kassiram>
    o Отчет по часам <#otchet-po-chasam>
    o Печать итогов регистрации / перерегистрации <#pechat-itogov- registratsii—pereregistratsii>
    o Счетчики итогов смены <#schetchiki-itogov-smeny>
    o Счетчики итогов ФН <#schetchiki-itogov-fn>
    o Счетчики по непереданным документам <#schetchiki-po- neperedannym-dokumentam>
    o Отчет по товарам по СНО <#otchet-po-tovaram-po-sno>
    o Отчет по товарам по отделам <#otchet-po-tovaram-po-otdelam>
    o Отчет по товарам по суммам <#otchet-po-tovaram-po-summam>
    o Начать служебный отчет <#nachat-sluzhebnyy-otchet>
    o Отчет по скидкам <#otchet-po-skidkam>
    o Печать нераспечатанных отчетов о закрытии смены <#pechat- neraspechatannyh-otchetov-o-zakrytii-smeny>
  • Запрос информации из ФН <#zapros-informatsii-iz-fn>
    o Значение реквизита регистрации <#znachenie-rekvizita-registratsii>
    o Чтение реквизита регистрации по номеру отчета <#chtenie- rekvizita-registratsii-po-nomeru-otcheta>
    o Регистрационные данные <#fn_query_reginfo>
    o Статус информационного обмена с ОФД <#status-informatsionnogo- obmena-s-ofd>
    o Информация о ФН <#informatsiya-o-fn>
    o Информация о последней регистрации / перерегистрации
    <#informatsiya-o-posledney-registratsii—pereregistratsii>
    o Информация о последнем чеке <#informatsiya-o-poslednem-cheke>
    o Информация о последнем документе <#informatsiya-o-poslednem- dokumente>
    o Информация о смене <#informatsiya-o-smene>
    o Количество ФД за смену <#kolichestvo-fd-za-smenu>
    o Версии ФФД <#versii-ffd>
    o Срок действия ФН <#srok-deystviya-fn>
    o Оставшиеся дни работы ФН <#ostavshiesya-dni-raboty-fn>
    o Ошибки обмена с ОФД <#oshibki-obmena-s-ofd>
    o Квитанция ОФД <#kvitantsiya-ofd>
    o Информация о документе <#informatsiya-o-dokumente>
    o Детализация ошибки ФН <#detalizatsiya-oshibki-fn>
    o Ресурс памяти ФН <#resurs-pamyati-fn>
    o Ошибки обмена с ИСМ <#oshibki-obmena-s-ism>
    o Статус информационного обмена с ИСМ <#status-informatsionnogo- obmena-s-ism>
    o Запрос занятого места для хранения данных документа для ОФД
    <#zapros-zanyatogo-mesta-dlya-hraneniya-dannyh-dokumenta-dlya-ofd>
    o Состояние работы с КМ <#sostoyanie-raboty-s-km>
    o Время выполнения проверки КМ <#vremya-vypolneniya-proverki-km>
  • Счетчики ФН <#schetchiki-fn>
    o Счетчики итогов операций <#schetchiki-itogov-operatsiy>
    o Счетчики количеств операций <#schetchiki-kolichestv-operatsiy>
    o Счетчики итогов непереданных документов <#schetchiki-itogov- neperedannyh-dokumentov>
  • Регистрация ККТ <#fn_registration>
  • Перерегистрация ККТ <#fn_change_params>
  • Замена ФН <#zamena-fn>
  • Закрытие ФН <#zakrytie-fn>
  • Нефискальная печать <#nefiskalnaya-pechat>
    o Печать клише <#pechat-klishe>
    o Открытие нефискального документа <#otkrytie-nefiskalnogo-dokumenta>
    o Закрытие нефискального документа <#zakrytie-nefiskalnogo-dokumenta>
    o Печать текста <#pechat-teksta>
    o Печать штрихкода <#pechat-shtrihkoda>
    o Печать картинки <#pechat-kartinki>
    o Печать пиксельного буфера <#pechat-pikselnogo-bufera>
    o Печать картинки из памяти <#pechat-kartinki-iz-pamyati>
    o Печать текста рядом с ШК <#pechat-teksta-ryadom-s-shk>
  • Чтение данных <#chtenie-dannyh>
    o Последний напечатанный чек <#posledniy-napechatannyy-chek>
    o Документ из ФН <#read_fn_document>
    o Список лицензий / кодов защиты <#spisok-litsenziy—kodov-zaschity>
    o Чтение документов регистрации <#chtenie-dokumentov-registratsii>
    o Разбор составного реквизита <#parse_stlv>
    o Чтение настроек ККТ <#read_settings_bulk>
    o Последний закрытый документ из электронного журнала <#posledniy- zakrytyy-dokument-iz-elektronnogo-zhurnala>
  • Универсальные счетчики <#universal_counters>
    o Настройка счетчиков <#uc_settings>
    o Сброс счетчиков <#uc_reset>
    o Запрос состояния массива счетчиков <#zapros-sostoyaniya-massiva- schetchikov>
    o Чтение значения счетчика <#chtenie-znacheniya-schetchika>
    o Передача пользовательских разрезов <#peredacha-polzovatelskih- razrezov>
  • Служебные операции <#sluzhebnye-operatsii>
    o Выключение ККТ <#vyklyuchenie-kkt>
    o Перезагрузка ККТ <#perezagruzka-kkt>
    o Общее гашение <#obschee-gashenie>
    o Начальная инициализация ККТ <#nachalnaya-initsializatsiya-kkt>
    o Технологическое обнуление <#tehnologicheskoe-obnulenie>
    o Установка даты и времени <#ustanovka-daty-i-vremeni>
    o Запись лицензии <#zapis-litsenzii>
    o Проверка ключей ККТ <#proverka-klyuchey-kkt>
  • Прочие методы <#prochie-metody>
    o Выполнение команды <#vypolnenie-komandy>
    o Отрезка ЧЛ <#otrezka-chl>
    o Промотка ЧЛ <#promotka-chl>
    o Звуковой сигнал <#zvukovoy-signal>
    o Открытие ДЯ <#otkrytie-dya>
    o Разбор кода маркировки <#razbor-koda-markirovki>
    o Формирование составного реквизита <#formirovanie-sostavnogo- rekvizita>
    o Формирование списка значений настроек <#formirovanie-spiska- znacheniy-nastroek>
    o Формирование кода товара <#formirovanie-koda-tovara>
    o Получение информации о реквизите ФН <#poluchenie-informatsii-o- rekvizite-fn>
    o Запись в лог <#zapis-v-log>
    o Получить параметры модели <#poluchit-parametry-modeli>
    o Получить информацию о контейнере ПО ККТ <#poluchit-informatsiyu- o-konteynere-po-kkt>
    o Задание дополнительных заголовка и подвала <#zadanie- dopolnitelnyh-zagolovka-i-podvala>
    o Управление соединением с ОФД <#upravlenie-soedineniem-s-ofd>
  • Шаблоны ККТ <#shablony-kkt>
    o Запуск шаблона <#zapusk-shablona>
    o Получение размера памяти <#poluchenie-razmera-pamyati>
    o Чтение данных из ОЗУ <#chtenie-dannyh-iz-ozu>
    o Запись данных в ОЗУ <#zapis-dannyh-v-ozu>
    o Сохранение данных <#sohranenie-dannyh>
    o Запись шаблона в ККТ <#zapis-shablona-v-kkt>
    o Запрос настроек, регистров и пользовательских тегов из шаблона
    ККТ <#zapros-nastroek-registrov-i-polzovatelskih-tegov-iz- shablona-kkt>
  • Программирование ККТ <#programmirovanie-kkt>
    o Инициализация системных таблиц <#initsializatsiya-sistemnyh- tablits>
    o Запись настройки <#zapis-nastroyki>
    o Чтение настройки <#chtenie-nastroyki>
    o Сохранение настроек <#sohranenie-nastroek>
    o Загрузка картинки в ККТ <#upload_picture_memory>
    o Загрузка картинки клише <#zagruzka-kartinki-klishe>
    o Выгрузка картинки из памяти ККТ <#vygruzka-kartinki-iz-pamyati-kkt>
    o Очистка картинок <#ochistka-kartinok>
  • JSON-задания <#json-tasks>
    o Проверка JSON-задания <#proverka-json-zadaniya>
    o Выполнение JSON-задания <#vypolnenie-json-zadaniya>
    o Объекты Json <#json_items>
    o Допечатать документ <#dopechatat-dokument-2>
    o Открытие смены <#otkrytie-smeny>
    o Закрытие смены <#zakrytie-smeny>
    o Фискальные чеки <#fiskalnye-cheki>
    o Чеки коррекции <#cheki-korrektsii>
    o Нефискальные документы <#nefiskalnye-dokumenty>
    o X-отчет <#x-otchet-2>
    o Внесения и выплаты <#vneseniya-i-vyplaty-2>
    o Отчет о состоянии расчетов <#otchet-o-sostoyanii-raschetov-2>
    o Печать документа из ФН <#pechat-dokumenta-iz-fn-2>
    o Печать копии последнего чека <#pechat-kopii-poslednego-cheka>
    o Запрос параметров регистрации ККТ <#zapros-parametrov- registratsii-kkt>
    o Регистрация / перерегистрация ККТ <#registratsiya— pereregistratsiya-kkt>
    o Закрытие ФН <#zakrytie-fn-2>
    o Открыть денежный ящик <#otkryt-denezhnyy-yaschik>
    o Установка даты и времени <#ustanovka-daty-i-vremeni-2>
    o Чтение настроек ККТ <#chtenie-nastroek-kkt>
    o Запись настроек ККТ <#zapis-nastroek-kkt>
    o Запрос информации о ККТ <#zapros-informatsii-o-kkt-2>
    o Запрос информации о микроконтроллере <#zapros-informatsii-o- mikrokontrollere>
    o Запрос состояния ККТ <#zapros-sostoyaniya-kkt>
    o Запрос состояния денежного ящика <#zapros-sostoyaniya- denezhnogo-yaschika>
    o Запрос состояния смены <#zapros-sostoyaniya-smeny>
    o Запрос информации о ФН <#zapros-informatsii-o-fn>
    o Запрос состояния ФН <#zapros-sostoyaniya-fn>
    o Запрос состояния обмена с ОФД <#zapros-sostoyaniya-obmena-s-ofd>
    o Запрос сменных итогов <#zapros-smennyh-itogov>
    o Запрос необнуляемых итогов <#zapros-neobnulyaemyh-itogov>
    o Запрос сменных итогов по секциям <#zapros-smennyh-itogov-po- sektsiyam>
    o Чтение документа из ФН <#chtenie-dokumenta-iz-fn>
    o Запрос введенных в ККТ лицензий / кодов защиты <#zapros- vvedennyh-v-kkt-litsenziy—kodov-zaschity>
    o Отчет по секциям <#otchet-po-sektsiyam-2>
    o Отчет итогов регистраций/перерегистраций <#otchet-itogov- registratsiypereregistratsiy>
    o Печать документов из БД документов <#pechat-dokumentov-iz-bd- dokumentov>
    o Запрос состояния обмена с ИСМ <#zapros-sostoyaniya-obmena-s-ism>
    o Начать проверку КМ <#nachat-proverku-km>
    o Получить результат проверки КМ <#poluchit-rezultat-proverki-km>
    o Подтвердить реализацию КМ <#podtverdit-realizatsiyu-km>
    o Отказаться от реализации КМ <#otkazatsya-ot-realizatsii-km>
    o Прервать проверку КМ <#prervat-proverku-km>
    o Очистить таблицу проверенных КМ ФН-М <#ochistit-tablitsu- proverennyh-km-fn-m>
    o Проверить состояние фоновой проверки <#proverit-sostoyanie- fonovoy-proverki>
    o Проверка массива КМ <#validate_marks>
    o Добавление массива КМ в таблицу проверенных КМ <#dobavlenie- massiva-km-v-tablitsu-proverennyh-km>
    o Запрос состояния работы с КМ <#zapros-sostoyaniya-raboty-s-km>
    o Запрос время проверки КМ <#zapros-vremya-proverki-km>
    o Проверка связи с сервером ИСМ <#proverka-svyazi-s-serverom-ism>
  • БД документов <#documents_journal>
    o Активация БД <#aktivatsiya-bd>
    o Использование БД документов <#ispolzovanie-bd-dokumentov>
    o Найти документ в журнале документов <#nayti-dokument-v-zhurnale- dokumentov>
  • Скрипты драйвера <#scripts>
    o Описание <#opisanie>
    o Внешние скрипты <#user_scripts>
    o Возврат результата <#scripts_results>
    o Работа с JSON-заданиями <#rabota-s-json-zadaniyami>
    o Пользовательские настройки <#polzovatelskie-nastroyki>
    o Библиотеки функций <#biblioteki-funktsiy>
    o Встроенные функции <#vstroennye-funktsii>
    o Выполнение скрипта <#vypolnenie-skripta>
    o Загрузка скриптов <#zagruzka-skriptov>
    o Работа с файлами <#rabota-s-faylami>
    o Совместимость <#scripts_compatibility>
  • Приложение <#prilozhenie>
    o Список кодов ошибок <#error_list>
    o Используемые сторонние библиотеки <#ispolzuemye-storonnie- biblioteki>
    o Пример использования <#primer-ispolzovaniya>
    o Алгоритмы <#algoritmy>
    o Формат массива пикселей <#pixel_buffer_format>
    o Работа с клише <#cliche>
  • Настройки ККТ <#kkt_params_list>
    o Альянс 20Ф <#params_ALLIANCE_20F>
    o АТОЛ 1Ф <#params_ATOL_01F>
    o АТОЛ 11Ф (5.X) <#params_ATOL_11F>
    o АТОЛ 11Ф <#params_ATOL_11F_OLD>
    o АТОЛ 15Ф (5.X) <#params_ATOL_15F>
    o АТОЛ 15Ф <#params_ATOL_15F_OLD>
    o АТОЛ 20Ф (5.X) <#params_ATOL_20F>
    o АТОЛ 20Ф <#params_ATOL_20F_OLD>
    o АТОЛ 22Ф (5.X) <#params_ATOL_22F>
    o АТОЛ 22Ф <#params_ATOL_22F_OLD>
    o АТОЛ 22 v2 Ф <#params_ATOL_22v2F>
    o АТОЛ 25Ф (5.X) <#params_ATOL_25F>
    o АТОЛ 25Ф <#params_ATOL_25F_OLD>
    o АТОЛ 27Ф <#params_ATOL_27F>
    o АТОЛ 30Ф (5.X) <#params_ATOL_30F>
    o АТОЛ 30Ф <#params_ATOL_30F_OLD>
    o АТОЛ 42ФА <#params_ATOL_42FA>
    o АТОЛ 42ФС (5.X) <#params_ATOL_42FS>
    o АТОЛ 42ФС <#params_ATOL_42FS_OLD>
    o АТОЛ 47ФА (5.X) <#params_ATOL_47FA>
    o АТОЛ 50Ф (5.X) <#params_ATOL_50F>
    o АТОЛ 50Ф <#params_ATOL_50F_OLD>
    o АТОЛ 52Ф (5.X) <#params_ATOL_52F>
    o АТОЛ 52Ф <#params_ATOL_52F_OLD>
    o АТОЛ 55Ф (5.X) <#params_ATOL_55F>
    o АТОЛ 55Ф <#params_ATOL_55F_OLD>
    o АТОЛ 55 v2 Ф <#params_ATOL_55v2F>
    o АТОЛ 60Ф <#params_ATOL_60F>
    o АТОЛ 77Ф (5.X) <#params_ATOL_77F>
    o АТОЛ 77Ф <#params_ATOL_77F_OLD>
    o АТОЛ 90Ф <#params_ATOL_90F>
    o АТОЛ 91Ф (5.X) <#params_ATOL_91F>
    o АТОЛ 91Ф <#params_ATOL_91F_OLD>
    o АТОЛ 92Ф (5.X) <#params_ATOL_92F>
    o АТОЛ 92Ф <#params_ATOL_92F_OLD>
    o АТОЛ ПТ-5Ф <#params_ATOL_PT_5F>
    o АТОЛ Sigma 10 (5.X) <#params_ATOL_SIGMA_10>
    o АТОЛ Sigma 10 <#params_ATOL_SIGMA_10_OLD>
    o АТОЛ Sigma 7Ф <#params_ATOL_SIGMA_7F>
    o АТОЛ Sigma 8Ф <#params_ATOL_SIGMA_8F>
    o Казначей ФА (5.X) <#params_KAZNACHEY_FA>
    o Казначей ФА <#params_KAZNACHEY_FA_OLD>
  • Android Service <#android-service>
    o Использование через Intent <#ispolzovanie-cherez-intent>
    o Использование через AIDL-сервис <#ispolzovanie-cherez-aidl-servis>
    o Получение версий <#poluchenie-versiy>
    o Оповещения о событиях <#opovescheniya-o-sobytiyah>
    o Логирование <#logirovanie>
    o Настройка <#nastroyka>
  • Сервер удалённого подключения <#rpc-server>
    o Таймаут подключения <#taymaut-podklyucheniya>
    o Специальные методы <#spetsialnye-metody>
  • Отправка статистики <#otpravka-statistiki>
  • Пользовательское соглашение <#terms-of-use>
  • Правила использования разработчиками ПО <#rules>
  • Версия 10.10.2.0
  • Создано 16.02.2024 16:45
  • Сайт АТОЛ http://www.atol.ru/
  • Онлайн документация http://integration.atol.ru/ Общая информация

Драйвер контрольно-кассовой техники v.10 (дККТ10) — интеграционный
компонент, предоставляющий удобный API (программный интерфейс) для
работы с контрольно-кассовой техникой (ККТ) для самых популярных
программных и аппаратных платформ и языков программирования. В их числе
операционные системы Linux, Windows, macOS, Android и iOS, архитектуры
i386, amd64 и arm.

За счет того, что драйвер разработан на языках C/С++ и имеет C-API, его
подключение к любым официально неподдерживаемым языкам программирования
осуществляется очень просто.

В данной документации приведены примеры использования драйвера на
следующих языках:

  • C/C++;
  • Python;
  • Java (в т.ч. под Android);
  • С#;
  • Objective-C;
  • Delphi (драйвер подключается через COM-объект);
  • Go;
  • Внутренние скрипты драйвера (Duktape).

Для интеграции, помимо драйвера ККТ, можно использовать основанные на
нем приложения:

  • Android Service <#android-service>
  • WebRequests
  • Сервер удалённого подключения ККТ <#rpc-server>

Минимальные поддерживаемые версии ОС:

  • Windows XP SP3;
  • Linux с glibc 2.7;
  • macOS 10.12;
  • Android 4.0;
  • iOS 8.0. Дистрибутивы Windows

Дистрибутив для Windows (x86, x64) построен на базе NSIS и включает в себя:

  • Драйвер ККТ (интеграционные библиотеки, графическая библиотека,
    тестовое приложение, зависимости). Ставится автоматически,
    отказаться от установки нельзя;
  • Библиотека COM-объекта. Ставится автоматически, отказаться от
    установки нельзя;
  • Интеграционные компоненты под различные языки программирования (C#,
    Python, Java, Go, C++). Ставятся автоматически, отказаться от
    установки нельзя;
  • VCREDIST 2015. Ставится автоматически, отказаться от установки нельзя;
  • USB-драйвер для ККТ. Ставится автоматически, отказаться от установки
    нельзя;
  • Руководство программиста. По умолчанию не устанавливается;
  • Интеграционный компонент подключаемого оборудования 1C. По умолчанию
    не устанавливается;
  • Служба EoU. Устанавливается по умолчанию, можно отказаться от установки;
  • WebRequests. По умолчанию не устанавливается;
  • Сервер удалённого подключения ККТ. По умолчанию не устанавливается;
  • JPOS-драйвер. По умолчанию не устанавливается;
  • OPOS-драйвер. По умолчанию не устанавливается;
  • Утилита чтения документов из ФН. По умолчанию не устанавливается;
  • Утилита чтения архива ФН. По умолчанию не устанавливается;
  • АТОЛ Connect Ассистент. По умолчанию устанавливается. Тихий режим

Дистрибутив поддерживает тихую установку. Для этого необходимо его
запустить с ключом /S. В тихом режиме по умолчанию устанавливаются
только те компоненты, от установки которых отказаться нельзя. Установкой
остальных компонентов можно управлять с помощью ключей инсталлятора:

  • /AcceptLicense — устанавливая этот флаг, вы соглашаетесь с
    условиями пользовательского соглашения <#terms-of-use>. Без указания
    этого параметра тихая установка невозможна;
  • /WithDocs — устанавливать документацию;
  • /With1C — устанавливать компонент 1C;
  • /WithEOU — устанавливать службу EoU;
  • /WithWEB — устанавливать WebRequests;
  • /WithRPC — устанавливать сервер удалённого подключения ККТ;
  • /WithAssistant — устанавливать АТОЛ Connect Ассистент;
  • /WithJPOS — устанавливать JPOS-драйвер;
  • /WithOPOS — устанавливать OPOS-драйвер;
  • /OPOSDeviceName={DeviceID} — если параметр указан то в реестре
    будет создана ветка |
    HKLM\Software\OLEforRetail\ServiceOPOS\FiscalPrinter{DeviceID}|,
    которая будет связана с OPOS драйвером ККТ АТОЛ. Далее идентификатор
    {DeviceID} можно указать в методе /OpenService()/ OPOS-драйвера.
    Ключ имеет смысл только совместно с ключом /WithOPOS.

При тихой установке инсталлятор может вернуть следующие ошибки (ErrorLevel):

  • 10 — требуется подтвердить лицензионное соглашение (ключ / AcceptLicense);
  • 740 — для установки требуются права администратора;
  • 741 — невозможно установить данный дистрибутив на 32х-битную ОС. Linux

Для Linux предоставляются deb— и rpm-пакеты под архитектуры x86,
x64, arm64 и armhf:

  • libfptr10 — драйвер ККТ (интеграционные библиотеки, зависимости) и
    интеграционные компоненты под различные языки программирования
    (Python, Java, Go, C++, C#);
  • libfptr10-gui — графическая библиотека драйвера ККТ.
    Предоставляется в вариантах с Qt5 (основной вариант) и Qt4;
  • fptr10-test-util — тестовое приложение драйвера ККТ.
    Предоставляется в вариантах с Qt5 (основной вариант) и Qt4;
  • fptr10-web-requests — WebRequests;
  • fptr10-rpc-server — сервер удаленного подключения ККТ. macOS

Для macOS предоставляется dmg-пакет с тестовым приложением, а также
фреймворк с библиотеками драйвера. Тестовое приложение не зависит от
наличия установленного фреймворка драйвера и может работать без него.

Настройки логирования

Состав файла fptr10_log.properties по умолчанию. ${WORK_DIRECTORY} -
рабочий каталог драйвера.

|log4cpp.rootCategory=ERROR, file
log4cpp.category.FiscalPrinter=INFO, file
log4cpp.category.Transport=INFO, file
log4cpp.category.EthernetOverTransport=INFO, ofd
log4cpp.category.DeviceDebug=INFO, device_debug
log4cpp.category.1C=INFO, file1C

log4cpp.appender.console=ConsoleAppender
log4cpp.appender.console.layout=PatternLayout
log4cpp.appender.console.layout.ConversionPattern=%d{%Y.%m.%d %H:%M:%S.%l} T:%t %-5p [%c] %m%n

log4cpp.appender.file=DailyRollingFileAppender
log4cpp.appender.file.fileName=${WORK_DIRECTORY}/logs/fptr10.log
log4cpp.appender.file.maxDaysKeep=14
log4cpp.appender.file.layout=PatternLayout
log4cpp.appender.file.layout.ConversionPattern=%d{%Y.%m.%d %H:%M:%S.%l} T:%t %-5p [%c] %m%n

log4cpp.appender.ofd=DailyRollingFileAppender
log4cpp.appender.ofd.fileName=${WORK_DIRECTORY}/logs/ofd.log
log4cpp.appender.ofd.maxDaysKeep=14
log4cpp.appender.ofd.layout=PatternLayout
log4cpp.appender.ofd.layout.ConversionPattern=%d{%Y.%m.%d %H:%M:%S.%l} T:%t %-5p [%c] %m%n

log4cpp.appender.device_debug=DailyRollingFileAppender
log4cpp.appender.device_debug.fileName=${WORK_DIRECTORY}/logs/device_debug.log
log4cpp.appender.device_debug.maxDaysKeep=14
log4cpp.appender.device_debug.layout=PatternLayout
log4cpp.appender.device_debug.layout.ConversionPattern=%d{%Y.%m.%d %H:%M:%S.%l} T:%t %-5p [%c] %m%n

log4cpp.appender.fptr1C=DailyRollingFileAppender
log4cpp.appender.fptr1C.fileName=${WORK_DIRECTORY}/logs/fptr1C.log
log4cpp.appender.fptr1C.maxDaysKeep=14
log4cpp.appender.fptr1C.layout=PatternLayout
log4cpp.appender.fptr1C.layout.ConversionPattern=%d{%Y.%m.%d %H:%M:%S.%l} T:%t %-5p [%c] %m%n
|

На ОС Android ко всем категориям добавляется LogCatAppender

|log4cpp.appender.logcat=LogCatAppender
log4cpp.appender.logcat.layout=PatternLayout
log4cpp.appender.logcat.layout.ConversionPattern=T:%t %-5p [%c] %m%n
|

На ОС iOS ко всем категориям добавляется NSLogAppender

|log4cpp.appender.nslog=NSLogAppender
log4cpp.appender.nslog.layout=PatternLayout
log4cpp.appender.nslog.layout.ConversionPattern=T:%t %-5p [%c] %m%n
|

При первом запуске драйвер создает файл с настройками логирования в
рабочем каталоге драйвера:

  • на Windows — %APPDATA%/ATOL/drivers10/fptr10_log.properties;
  • на Linux — <домашний каталог пользователя>/.atol/drivers10/
    fptr10_log.properties;
  • на Android — рабочий каталог приложения (/Android/data/
    <идентификатор_приложения>/files/drivers10/fptr10_log.properties);
  • на iOS — подкаталог в bundle-е приложения, в каталоге Documents
    (<идентификатор приложения.app>/Documents/drivers10/
    fptr10_log.properties);
  • на MacOS — <домашний каталог пользователя>/Library/Application
    Support/ru.atol.drivers10/fptr10_log.properties. В каталог Library
    можно попасть с помощью Finder (Переход (Go) -> Библиотека).

Также драйвер предоставляет возможность указать явно расположение
файла /fptr10_log.properties/ при работе на ОС Windows, Linux и MacOS.
Для этого пользователю нужно задать переменную среды с названием
DTO10_LOG_CONFIG_FILE и значением полного пути к файлу (например, /C:
\fptr10_log.properties/). Файл в этом случае должен существовать заранее
и быть корректно сформирован.

Внимание! Запрещено в файле fptr10_log.properties комментировать
системные строки!

Для логирования используется библиотека log4cpp, описание файла настроек
можно прочитать на её сайте (http://log4cpp.sourceforge.net/). Здесь
будет приведено короткое описание настройки, а также список тегов
(категорий логов), по которым драйвер производит логирование.

С помощью log4cpp, драйвер позволяет логировать информацию следующим
образом:

  • логирование в файл. Для этого служат /RollingFileAppender/ и /
    DailyRollingFileAppender/;
  • логирование на консоль (может быть полезно в процессе разработки).
    Это позволяет сделать /ConsoleAppender/;
  • логирование в logcat (только Android). Для этого нужен /LogCatAppender/;
  • логирование в Apple System Log (только iOS и MacOS). Для этого
    нужен /NSLogAppender/.

Для каждой категории можно настроить подробность логирования. На данный
момент поддерживаются следующие:

  • ERROR — логировать только ошибки;
  • INFO — базовое логирование;
  • DEBUG — расширенное логирование.

При логировании в файл путь к файлу можно задать в поле fileName. При
задании пути к файлу логирования допускается использовать следующие
обозначения для формирования даты, а также переменные среды:

  • %Y — заменяется на текущий год;
  • %m — заменяется на текущий месяц;
  • %d — заменяется на текущий день;
  • ${VARIABLE} — заменяется на соответствующую переменную среды;

Например, можно задать путь «C:\Users\User\fptr10_%d_%m_%Y_${HOST}.log»,
который формирует следующий путь: «C:
\Users\User\fptr10_17_04_2023_COMPUTER.log» (задана переменная среды $ {HOST} = COMPUTER)

При использовании обозначений для формирования даты в имени файла
следует помнить, что файл лога создаётся один раз при создании
экземпляра драйвера и не пересоздается при смене даты.

При использовании переменной среды ${VARIABLE} допускается
использовать только английские символы (а также числа и другие символы
первой половины таблицы символов ASCII) как в имени переменной среды,
так и в её значении.

В случае с категориями Transport и FiscalPrinter на уровне INFO в
логе фиксируется базовая информация об обмене с ККТ, а на уровне DEBUG —
подробная информация об обмене. Для категорий, отвечающих за каналы
обмена (/USB/, /COM/ и т.п.) не рекомендуется включать логирование без
особой необходимости, т.к. это может замедлить и нарушить тайм-ауты
обмена с ККТ.

Специфичные настройки каждого из Appender-ов представлены в таблице ниже:

Appender Описание Параметры Описание параметров
RollingFileAppender Логирование в файл с ротацией по размеру
fileName Путь к файлу лога
maxFileSize Максимальный размер файла лога до ротации (в байтах)
maxBackupIndex Максимальное количество файлов логов
DailyRollingFileAppender Логирование в файл с ротацией по времени
(раз в день, в полночь) fileName Путь к файлу лога
maxDaysKeep Количество дней хранения файлов лога
ConsoleAppender Логирование в консоль (stdout)
LogCatAppender Логирование в logcat
NSLogAppender Логирование в Apple System Log

В случае разделения логов <#create_driver> между экземплярами драйвера к
названиям файлов логов будут добавлены идентификаторы, заданные при
создании объекта драйвера. Консольные варианты логирования не поменяются.

В случае логирования в файл на iOS пути указываются относительно
каталога Documents.

Дополнительно к каждому из Appender-ов можно добавить формат выводимых
строк лога — Layout. Тип Layout-а нужно записать в параметр layout
Appender-а и указать его настройки. Ниже приведено описание формата
PatternLayout:

  • %% — знак процента;
  • %c — тег (категория);
  • %d — дата и время. Формат даты: за символом даты (%d) может
    следовать ее формат, указанный между фигурными скобками ({}).
    Например, %d{%H:%M:%S,%l} или %d{%d %m %Y %H:%M:%S,%l}. Если формат
    не указан используется следующий: «Wed Jan 02 02:03:55 1980». Формат
    даты соответствует функции форматирования strftime из ANSI С, с
    единственным дополнением — %l, который добавляет в дату миллисекунды;
  • %m — сообщение;
  • %j — сообщение, пригодное для вставки в JSON (экранированы кавычки
    и спец. символы);
  • %n — символ(ы) переноса на новую строку;
  • %R — секунды с 01.01.1970 (unixtime);
  • %t — идентификатор потока;
  • %P — идентификатор процесса;
  • %L — метка драйвера. Смена метки экземпляра драйвера

|libfptr_change_label(fptr, L»CurrentLabel»);
|

|fptr.changeLabel(L»CurrentLabel»);
|

|fptr.changeLabel(«CurrentLabel»)
|

|fptr.changeLabel(«CurrentLabel»);
|

|fptr.changeLabel(«CurrentLabel»);
|

|[fptr changeLabel:@»CurrentLabel»];
|

|fptr.changeLabel(«CurrentLabel»);
|

|begin
fptr.changeLabel(‘CurrentLabel’);
end;
|

|fptr.ChangeLabel(«CurrentLabel»)
|

|Fptr.changeLabel(«CurrentLabel»)
|

Метка драйвера является неким идентификатором, который может быть
использован пользователем по своему усмотрению. Метка драйвера
добавляется в каждую строку лога драйвера, если присутствует модификатор
%L. Драйвер создаётся с пустой меткой. Текущую метку драйвера можно
сменить методом /changeLabel(…)/, в параметре требуется указать
устанавливаемую метку.

Поддерживаемые теги (категории) для настройки:

  • FiscalPrinter — высокоуровневый лог работы с драйвером;
  • Transport — лог обмена драйвера с ККТ;
  • EthernetOverTransport — высокоуровневый лог канала обмена ККТ с
    внешними ресурсами в Интернет через драйвер (например, с ОФД);
  • DeviceDebug — отладочный вывод ККТ;
  • — лог интеграционного компонента 1С;
  • USB — низкоуровневый лог обмена по каналу USB;
  • COM — низкоуровневый лог обмена по RS232 / VCOM / TTY;
  • TCP — низкоуровневый лог обмена по TCP/IP;
  • Bluetooth — низкоуровневый лог обмена по Bluetooth;
  • Web — логи WebRequests. Начало работы с драйвером Подключение к проекту C/C++

Для использования драйвера из проекта, написанного на C/C++, нужно
добавить в зависимости к нему библиотеку /fptr10.dll/ (/libfptr10.so/)
соответствующей архитектуры и подключить заголовочный файл /
libfptr10.h/. Для C++ можно использовать отдельную обертку.

С++-обёртке можно передать путь к библиотеке драйвера (до каталога или
до файла). Если путь не передан (или он пустой), обёртка будет искать
драйвер в следующих каталогах по очереди:

  1. Рядом с исполняемым файлом приложения.
  2. В каталоге, указанном при установке драйвера с инсталлятора.
  3. В системных каталогах ОС.

Поддерживается работа на Windows, Linux, MacOS.

  Python

Для использования драйвера из Python-проекта, необходимо подключить
модуль /libfptr10.py/. Минимальные поддерживаемые версии Python — 2.6 и 3.0.

Обёртке можно передать путь к библиотеке драйвера (до каталога или до
файла). Если путь не передан (или он пустой), обёртка будет искать
драйвер в следующих каталогах по очереди:

  1. В каталоге, указанном при установке драйвера с инсталлятора.
  2. В системных каталогах ОС.

Поддерживается работа на Windows, Linux, MacOS.

  Java (JVM)

Для подключения драйвера к Java-проекту необходимо подключить библиотеку
libfptr10.jar. Поддерживается работа на Windows, Linux, MacOS.
Минимальная поддерживаемая версия Java — 1.6.

При работе на Windows, Linux и MacOS обёртке можно передать путь к
библиотеке драйвера (до каталога или до файла). Если путь не передан
(или он пустой), обёртка будет искать драйвер в следующих каталогах по
очереди:

  1. В java.library.path и системных каталогах.
  2. В каталоге, указанном при установке драйвера с инсталлятора.

Для подключения драйвера к Android-проекту необходимо импортировать в
проект библиотеку libfptr10.aar. В данной библиотеке (Android Archive,
AAR) содержатся нативные библиотеки под все аппаратные платформы
Android, а также набор Activity для настройки драйвера. Минимальная
поддерживаемая версия Android — 4.0 (API 14).

  .NET и .NET Core

Для подключения драйвера к .NET-проекту необходимо добавить в проект
библиотеку /Atol.Drivers10.Fptr.dll/. Для /.NET Framework/ и /.NET
Standard/ используются разные библиотеки. Минимальные поддерживаемые
версии /.NET Framework/ — 3.1, /.NET Standard/ — 3.1.

Обёртке можно передать путь к библиотеке драйвера (до каталога или до
файла). Если путь не передан (или он пустой), обёртка будет искать
драйвер в следующих каталогах по очереди:

  1. Рядом с исполняемым файлом приложения.
  2. В каталоге, указанном при установке драйвера с инсталлятора.
  3. В системных каталогах ОС.

Если на момент запуска приложения в его области видимости уже есть
подходящая библиотека, будет использоваться она.

Поддерживается работа на Windows, Linux, MacOS.

  COM-объект

Для подключения драйвера как COM-объект необходимо зарегистрировать в
системе библиотеку /addin_fptr10_x86.dll/ (/addin_fptr10_x64.dll/ в
случае 64-битного приложения) с помощью команды /regsvr32.exe/.
Библиотека может сама обнаружить установленный через инсталлятор
драйвер. Также инсталлятор автоматически регистрирует компонент заданной
архитектуры в процессе установки. В проекте необходимо создать объект
типа ActiveX (или OLE) класса /AddIn.Fptr10/. В данной документации
описаны примеры работы с драйвером в виде OLE-объекта на языке Delphi.

Поддерживается работа только на Windows.

  Go

Для подключения драйвера к проекту на Go необходимо добавить в
каталог /src/ проекта пакет /fptr10/ (/atol.ru/drivers10/fptr/). Go
обертка распространяется в виде исходных кодов.

Обёртке можно передать путь к библиотеке драйвера (до каталога или до
файла). Если путь не передан (или он пустой), обёртка будет искать
драйвер в следующих каталогах по очереди:

  1. Рядом с исполняемым файлом приложения.
  2. В каталоге, указанном при установке драйвера с инсталлятора.
  3. В системных каталогах ОС.

Поддерживается работа на Windows, Linux, MacOS.

  Objective C

Для подключения драйвера к Objective C-проекту необходимо добавить в
проект фреймворк /fptr10.framework/ и использовать заголовочный файл /
libfptr10_objc.h/

Поддерживается работа на iOS, MacOS.

Фреймворк поставляется в следующих сборках:

  • iOS без bitcode;
  • iOS с bitcode;
  • iOS Simulator i386;
  • iOS Simulator x86_64;
  • macOS x86_64.

Фреймворк включает в себя:

  • заголовочные файлы (/libfptr10.h/, /libfptr10_objc.h/);
  • /Info.plist/ с описанием фреймворка;
  • библиотеку работы с ККТ /fptr10/.

Можно объединить несколько сборок библиотеки /fptr10/ в одну с помощью
lipo:

|lipo -create -output <итоговый файл> <входной файл 1> <входной файл 2> …|

Стоит помнить, что для выкладывания приложения в Apple App Store
необходимо, чтобы приложение (и его фреймворки) не содержали сборок под
симуляторы.

Инициализация драйвера

Инициализация драйвера

|#include «libfptr10.h»

libfptr_handle fptr;
libfptr_create(&fptr);
|

|#include «fptr10.h»

// Можно загрузить обертку с указанием пути к библиотеке драйвера
Fptr fptr_lib(«C:\path\to\libraries\directory\fptr10.dll»);
// Можно — с указанием каталога библиотеки
Fptr fptr_path(«C:\path\to\libraries\directory»);
// А можно без, чтобы обертка нашла драйвер по стандартным путям
Fptr fptr_common;
|

|from libfptr10 import IFptr

Можно загрузить обертку с указанием пути к библиотеке драйвера

fptr_lib = IFptr(r»C:\path\to\libraries\directory\fptr10.dll»)

Можно — с указанием каталога библиотеки

fptr_dir = IFptr(r»C:\path\to\libraries\directory»)

А можно без, чтобы обертка нашла драйвер по стандартным путям

fptr_common = IFptr(«»)
|

|import ru.atol.drivers10.fptr.Fptr;
import ru.atol.drivers10.fptr.IFptr;

// Можно загрузить обертку с указанием пути к библиотеке драйвера
IFptr fptr_lib = new Fptr(«C:\path\to\libraries\directory\fptr10.dll»);
// Можно — с указанием каталога библиотеки
IFptr fptr_dir = new Fptr(«C:\path\to\libraries\directory»);
// А можно без, чтобы обертка нашла драйвер по стандартным путям
IFptr fptr_common = new Fptr();
|

|import ru.atol.drivers10.fptr.Fptr;
import ru.atol.drivers10.fptr.IFptr;

IFptr fptr = new Fptr(getApplicationContext());
|

|IFptr *fptr = [[IFptr alloc] init];
|

|using Atol.Drivers10.Fptr;

// Можно загрузить обертку с указанием пути к библиотеке драйвера
IFptr fptr_lib = new Fptr(@»C:\path\to\libraries\directory\fptr10.dll»);
// Можно — с указанием каталога библиотеки
IFptr fptr_dir = new Fptr(@»C:\path\to\libraries\directory»);
// А можно без, чтобы обертка нашла драйвер по стандартным путям
IFptr fptr_common = new Fptr();
|

|var
fptr: OleVariant;
begin
fptr := CreateOleObject(‘AddIn.Fptr10’);
end;
|

|import «atol.ru/drivers10/fptr»

// Можно загрузить обертку с указанием пути к библиотеке драйвера
fptr_lib, err := fptr10.NewWithPath(«C:\path\to\libraries\directory\fptr10.dll»)
if err != nil {
return err
}

// Можно — с указанием каталога библиотеки
fptr_lib, err := fptr10.NewWithPath(«C:\path\to\libraries\directory»)
if err != nil {
return err
}

// А можно без, чтобы обертка нашла драйвер по стандартным путям
fptr, err := fptr10.NewSafe()
if err != nil {
return err
}
|

|Инициализация не требуется, методы драйвера доступны через глобальный объект Fptr
|

Инициализация драйвера с указанием идентификатора (KKT1)

|#include «libfptr10.h»

libfptr_handle fptr;
libfptr_create_with_id(&fptr, L»KKT1″);
|

|#include «fptr10.h»

// Можно загрузить обертку с указанием пути к библиотеке драйвера
Fptr fptr_lib(fptr_id_t(L»KKT1″), L»C:\path\to\libraries\directory\fptr10.dll»);
// Можно — с указанием каталога библиотеки
Fptr fptr_path(fptr_id_t(L»KKT1″), L»C:\path\to\libraries\directory»);
// А можно без, чтобы обертка нашла драйвер по стандартным путям
Fptr fptr_common(fptr_id_t(L»KKT1″));
|

|from libfptr10 import IFptr

Можно загрузить обертку с указанием пути к библиотеке драйвера

fptr_lib = IFptr(r»C:\path\to\libraries\directory\fptr10.dll», «KKT1»)

Можно — с указанием каталога библиотеки

fptr_dir = IFptr(r»C:\path\to\libraries\directory», «KKT1»)

А можно без, чтобы обертка нашла драйвер по стандартным путям

fptr_common = IFptr(«», «KKT1»)
|

|import ru.atol.drivers10.fptr.Fptr;
import ru.atol.drivers10.fptr.IFptr;

// Можно загрузить обертку с указанием пути к библиотеке драйвера
IFptr fptr_lib = new Fptr(«KKT1», «C:\path\to\libraries\directory\fptr10.dll»);
// Можно — с указанием каталога библиотеки
IFptr fptr_dir = new Fptr(«KKT1», «C:\path\to\libraries\directory»);
// А можно без, чтобы обертка нашла драйвер по стандартным путям
IFptr fptr_common = new Fptr(«KKT1», null);
|

|import ru.atol.drivers10.fptr.Fptr;
import ru.atol.drivers10.fptr.IFptr;

IFptr fptr = new Fptr(getApplicationContext(), «KKT1»);
|

|IFptr *fptr = [[IFptr alloc] initWithID:»KKT1″];
|

|using Atol.Drivers10.Fptr;

// Можно загрузить обертку с указанием пути к библиотеке драйвера
IFptr fptr_lib = new Fptr(«KKT1″, @»C:\path\to\libraries\directory\fptr10.dll»);
// Можно — с указанием каталога библиотеки
IFptr fptr_dir = new Fptr(«KKT1″, @»C:\path\to\libraries\directory»);
// А можно без, чтобы обертка нашла драйвер по стандартным путям
IFptr fptr_common = new Fptr(«KKT1», null);
|

|var
fptr: OleVariant;
begin
fptr := CreateOleObject(‘AddIn.NamedFptr10’);
fptr.initWithID(‘KKT1’); // Только в этой строке будет
// создан объект драйвера,
// до её вызова остальные
// методы работать не будут
end;
|

|import «atol.ru/drivers10/fptr»

// Можно загрузить обертку с указанием пути к библиотеке драйвера
fptr_lib, err := fptr10.NewWithIDAndPath(«KKT1″, il»C:\path\to\libraries\directory\fptr10.dll»)
if err != nil {
return err
}

// Можно — с указанием каталога библиотеки
fptr_lib, err := fptr10.NewWithIDAndPath(«KKT1», «C:\path\to\libraries\directory»)
if err != nil {
return err
}

// А можно без, чтобы обертка нашла драйвер по стандартным путям
fptr, err := fptr10.NewWithID(«KKT1»)
if err != nil {
return err
}
|

|Инициализация не требуется, методы драйвера доступны через глобальный объект Fptr
|

В начале работы необходимо инициализировать рабочий экземпляр драйвера.

Все дальнейшие операции производятся именно над этим экземпляром.

В случае использования варианта с передачей идентификатора все
записанные драйвером логи будут разделяться по разным файлам. Строка
идентификатора может содержать только строчные и заглавные латинские
буквы и цифры, а также символы тире и подчеркивания ([a-zA-Z0-9_-]).
Если идентификатор не удовлетворяет требованиям, драйвер вернёт код
результата -2, а языковые обертки вернут ошибки/выбросят исключения
средствами соответствующего языка. При передаче пустого идентификатора
создание объекта отрабатывает аналогично созданию без идентификатора.

  Рекомендации по работе с экземпляром драйвера
  • рекомендуется пользоваться идеологией «Одна ККТ — один экземпляр
    драйвера»;
  • при использовании одного экземпляра драйвера для работы с
    несколькими ККТ перед сменой подключения с одной ККТ на другую
    необходимо /полностью/ завершить все транзакции и операции
    (например, открытые чеки и проверка КМ);
  • если планируется создавать более одного экземпляра, то рекомендуется
    использовать метод libfptr_create_with_id(); (инициализация
    драйвера с указанием идентификатора), это позволит получить
    отдельные файлы логов для каждого экземпляра;
  • рекомендуется работа с одним экземпляром драйвера /строго в одном потоке/, если есть необходимость, пользователь должен позаботиться
    о потокобезопасном использовании экземпляра драйвера;
  • при пересоздании экземпляра драйвера следует не забывать удалять
    старый экземпляр (см. Деинициализация драйвера <#driver_destroy>), в
    противном случае это приведёт к утечке памяти;
  • при потере связи с ККТ рекомендуется не пересоздавать экземпляр
    драйвера, а переподключиться к ККТ, используя методы open() и
    close();

Внимание! Работа с одним экземпляром драйвера из разных потоков должна
контролироваться пользователем с использованием соответствующих
примитивов синхронизации (мьютексы и т.п.). В противном случае поведение
драйвера не определено.

Запрос версии драйвера

Запрос версии драйвера

|char *version = libfptr_get_version_string();
|

|std::string version = fptr.version();
|

|version = fptr.version()
|

|String version = fptr.version();
|

|String version = fptr.version();
|

|NSString *version = [fptr version];
|

|String version = fptr.version();
|

|var
version: String;
begin
version = fptr.version;
end;
|

|version := fptr.Version()
|

|version = Fptr.version();
|

Драйвер позволяет получить свою версию в виде строки.

Деинициализация драйвера

Деинициализация драйвера

|libfptr_destroy(&fptr);
|

|// Деинициализируется автоматически в деструкторе
|

|del fptr
|

|fptr.destroy();
|

|fptr.destroy();
|

|[fptr release];
|

|fptr.destroy();
|

|fptr := Unassigned
|

|fptr.Destroy()
|

|Не требуется
|

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

Рекомендуется уничтожать рабочий экземпляр только в конце работы
приложения. Многие функции драйвера (например, фоновая передача
документов в ОФД) будут доступны только при постоянном соединении с ККТ.

Настройка драйвера

Настройка драйвера, способ первый

|wchar_t settings[1024] = {0};
swprintf(&settings[0], 1024, L»{\»%ls\»: %d, \»%ls\»: %d, \»%ls\»: \»%ls\», \»%ls\»: %d}»,
LIBFPTR_SETTING_MODEL, LIBFPTR_MODEL_ATOL_AUTO,
LIBFPTR_SETTING_PORT, LIBFPTR_PORT_COM,
LIBFPTR_SETTING_COM_FILE, L»COM5″,
LIBFPTR_SETTING_BAUDRATE, LIBFPTR_PORT_BR_115200);
libfptr_set_settings(fptr, settings);
|

|wchar_t settings[1024] = {0};
swprintf(&settings[0], 1024, L»{\»%ls\»: %d, \»%ls\»: %d, \»%ls\»: \»%ls\», \»%ls\»: %d}»,
LIBFPTR_SETTING_MODEL, LIBFPTR_MODEL_ATOL_AUTO,
LIBFPTR_SETTING_PORT, LIBFPTR_PORT_COM,
LIBFPTR_SETTING_COM_FILE, L»COM5″,
LIBFPTR_SETTING_BAUDRATE, LIBFPTR_PORT_BR_115200);
fptr.setSettings(settings);
|

|# Можно передать как строку
settings = «{{\»{}\»: {}, \»{}\»: {}, \»{}\»: \»{}\», \»{}\»: {}}}».format(
IFptr.LIBFPTR_SETTING_MODEL, IFptr.LIBFPTR_MODEL_ATOL_AUTO,
IFptr.LIBFPTR_SETTING_PORT, IFptr.LIBFPTR_PORT_COM,
IFptr.LIBFPTR_SETTING_COM_FILE, «COM5»,
IFptr.LIBFPTR_SETTING_BAUDRATE, IFptr.LIBFPTR_PORT_BR_115200)
fptr.setSettings(settings)

А можно как dict

settings = {
IFptr.LIBFPTR_SETTING_MODEL: IFptr.LIBFPTR_MODEL_ATOL_AUTO,
IFptr.LIBFPTR_SETTING_PORT: IFptr.LIBFPTR_PORT_COM,
IFptr.LIBFPTR_SETTING_COM_FILE: «COM5»,
IFptr.LIBFPTR_SETTING_BAUDRATE: IFptr.LIBFPTR_PORT_BR_115200
}
fptr.setSettings(settings)
|

|settings = String.format(«{\»%s\»: %d, \»%s\»: %d, \»%s\»: \»%s\», \»%s\»: %d}»,
IFptr.LIBFPTR_SETTING_MODEL, IFptr.LIBFPTR_MODEL_ATOL_AUTO,
IFptr.LIBFPTR_SETTING_PORT, IFptr.LIBFPTR_PORT_COM,
IFptr.LIBFPTR_SETTING_COM_FILE, «COM5»,
IFptr.LIBFPTR_SETTING_BAUDRATE, IFptr.LIBFPTR_PORT_BR_115200);
fptr.setSettings(settings);
|

|settings = String.format(«{\»%s\»: %d, \»%s\»: %d, \»%s\»: \»%s\», \»%s\»: %d}»,
IFptr.LIBFPTR_SETTING_MODEL, IFptr.LIBFPTR_MODEL_ATOL_AUTO,
IFptr.LIBFPTR_SETTING_PORT, IFptr.LIBFPTR_PORT_COM,
IFptr.LIBFPTR_SETTING_COM_FILE, «COM5»,
IFptr.LIBFPTR_SETTING_BAUDRATE, IFptr.LIBFPTR_PORT_BR_115200);
fptr.setSettings(settings);
|

|NSString *settings = [NSString stringWithFormat:@»{\»%@\»: %d, \»%@\»: %d, \»%@\»: \»%@\», \»%@\»: %d}»,
LIBFPTR_SETTING_MODEL, LIBFPTR_MODEL_ATOL_AUTO,
LIBFPTR_SETTING_PORT, LIBFPTR_PORT_TCPIP,
LIBFPTR_SETTING_IPADDRESS, @»192.168.1.110″,
LIBFPTR_SETTING_IPPORT, 5555];
[fptr setSettings:settings];
|

|settings = String.Format(«{\»{0}\»: {1}, \»{2}\»: {3}, \»{4}\»: \»{5}\», \»{6}\»: {7}}»,
Constants.LIBFPTR_SETTING_MODEL, Constants.LIBFPTR_MODEL_ATOL_AUTO,
Constants.LIBFPTR_SETTING_PORT, Constants.LIBFPTR_PORT_COM,
Constants.LIBFPTR_SETTING_COM_FILE, «COM5»,
Constants.LIBFPTR_SETTING_BAUDRATE, Constants.LIBFPTR_PORT_BR_115200);
fptr.setSettings(settings);
|

|var
settings: String;
begin
settings := Format(‘{«%s»: %s, «%s»: %s, «%s»: «%s», «%s»: %s}’,
[fptr.LIBFPTR_SETTING_MODEL, IntToStr(fptr.LIBFPTR_MODEL_ATOL_AUTO),
fptr.LIBFPTR_SETTING_PORT, IntToStr(fptr.LIBFPTR_PORT_COM),
fptr.LIBFPTR_SETTING_COM_FILE, ‘COM5’,
fptr.LIBFPTR_SETTING_BAUDRATE, IntToStr(fptr.LIBFPTR_PORT_BR_115200)]);
fptr.setSettings(settings);
end;
|

|settings := fmt.Sprintf(«{ \»%v\»: %d, \»%v\»: %d, \»%v\»: \»%s\», \»%v\»: %d }»,
fptr10.LIBFPTR_SETTING_MODEL, fptr10.LIBFPTR_MODEL_ATOL_AUTO,
fptr10.LIBFPTR_SETTING_PORT, fptr10.LIBFPTR_PORT_COM,
fptr10. LIBFPTR_SETTING_COM_FILE, «COM5»,
fptr10.LIBFPTR_SETTING_BAUDRATE, fptr10.LIBFPTR_PORT_BR_115200)
fptr.SetSettings(settings)
|

|// Метод недоступен
|

Настройка драйвера, способ второй

|libfptr_set_single_setting(fptr, LIBFPTR_SETTING_MODEL, std::to_wstring(LIBFPTR_MODEL_ATOL_AUTO).c_str());
libfptr_set_single_setting(fptr, LIBFPTR_SETTING_PORT, std::to_wstring(LIBFPTR_PORT_COM).c_str());
libfptr_set_single_setting(fptr, LIBFPTR_SETTING_COM_FILE, L»COM5″);
libfptr_set_single_setting(fptr, LIBFPTR_SETTING_BAUDRATE, LIBFPTR_PORT_BR_115200);
libfptr_apply_single_settings(fptr);
|

|fptr.setSingleSetting(LIBFPTR_SETTING_MODEL, std::to_wstring(LIBFPTR_MODEL_ATOL_AUTO));
fptr.setSingleSetting(LIBFPTR_SETTING_PORT, std::to_wstring(LIBFPTR_PORT_COM));
fptr.setSingleSetting(LIBFPTR_SETTING_COM_FILE, L»COM5″);
fptr.setSingleSetting(LIBFPTR_SETTING_BAUDRATE, LIBFPTR_PORT_BR_115200);
fptr.applySingleSettings();
|

|fptr.setSingleSetting(IFptr.LIBFPTR_SETTING_MODEL, str(IFptr.LIBFPTR_MODEL_ATOL_AUTO))
fptr.setSingleSetting(IFptr.LIBFPTR_SETTING_PORT, str(IFptr.LIBFPTR_PORT_COM))
fptr.setSingleSetting(IFptr.LIBFPTR_SETTING_COM_FILE, «COM5»)
fptr.setSingleSetting(IFptr.LIBFPTR_SETTING_BAUDRATE, str(IFptr.LIBFPTR_PORT_BR_115200))
fptr.applySingleSettings()
|

|fptr.setSingleSetting(IFptr.LIBFPTR_SETTING_MODEL, String.valueOf(IFptr.LIBFPTR_MODEL_ATOL_AUTO));
fptr.setSingleSetting(IFptr.LIBFPTR_SETTING_PORT, String.valueOf(IFptr.LIBFPTR_PORT_COM));
fptr.setSingleSetting(IFptr.LIBFPTR_SETTING_COM_FILE, «COM5»);
fptr.setSingleSetting(IFptr.LIBFPTR_SETTING_BAUDRATE, String.valueOf(IFptr.LIBFPTR_PORT_BR_115200));
fptr.applySingleSettings();
|

|fptr.setSingleSetting(IFptr.LIBFPTR_SETTING_MODEL, String.valueOf(IFptr.LIBFPTR_MODEL_ATOL_AUTO));
fptr.setSingleSetting(IFptr.LIBFPTR_SETTING_PORT, String.valueOf(IFptr.LIBFPTR_PORT_COM));
fptr.setSingleSetting(IFptr.LIBFPTR_SETTING_COM_FILE, «COM5»);
fptr.setSingleSetting(IFptr.LIBFPTR_SETTING_BAUDRATE, String.valueOf(IFptr.LIBFPTR_PORT_BR_115200));
fptr.applySingleSettings();
|

|[fptr setSingleSetting:LIBFPTR_SETTING_MODEL, value:[NSString stringWithFormat:@»%d», LIBFPTR_MODEL_ATOL_AUTO]];
[fptr setSingleSetting:LIBFPTR_SETTING_PORT, value:[NSString stringWithFormat:@»%d», LIBFPTR_PORT_TCPIP));
[fptr setSingleSetting:LIBFPTR_SETTING_IPADDRESS, value:@»192.168.1.110″);
[fptr setSingleSetting:LIBFPTR_SETTING_IPPORT, value:[NSString stringWithFormat:@»%d», 5555]];
[fptr applySingleSettings];
|

|fptr.setSingleSetting(Constants.LIBFPTR_SETTING_MODEL, Constants.LIBFPTR_MODEL_ATOL_AUTO.ToString());
fptr.setSingleSetting(Constants.LIBFPTR_SETTING_PORT, Constants.LIBFPTR_PORT_COM.ToString());
fptr.setSingleSetting(Constants.LIBFPTR_SETTING_COM_FILE, «COM5»);
fptr.setSingleSetting(Constants.LIBFPTR_SETTING_BAUDRATE, Constants.LIBFPTR_PORT_BR_115200.ToString());
fptr.applySingleSettings();
|

|begin
fptr.setSingleSetting(fptr.LIBFPTR_SETTING_MODEL, IntToStr(fptr.LIBFPTR_MODEL_ATOL_AUTO));
fptr.setSingleSetting(fptr.LIBFPTR_SETTING_PORT, IntToStr(fptr.LIBFPTR_PORT_COM));
fptr.setSingleSetting(fptr.LIBFPTR_SETTING_COM_FILE, ‘COM5’);
fptr.setSingleSetting(fptr.LIBFPTR_SETTING_BAUDRATE, IntToStr(fptr.LIBFPTR_PORT_BR_115200));
fptr.applySingleSettings;
end;
|

|fptr.SetSingleSetting(fptr10.LIBFPTR_SETTING_MODEL, strconv.Itoa(fptr10.LIBFPTR_MODEL_ATOL_AUTO))
fptr.SetSingleSetting(fptr10.LIBFPTR_SETTING_PORT, strconv.Itoa(fptr10.LIBFPTR_PORT_COM))
fptr.SetSingleSetting(fptr10.LIBFPTR_SETTING_COM_FILE, «COM5»)
fptr.SetSingleSetting(fptr10.LIBFPTR_SETTING_BAUDRATE, strconv.Itoa(fptr10.LIBFPTR_PORT_BR_115200))
fptr.ApplySingleSettings()
|

|// Метод недоступен
|

Настройка через вызов окна настройки

|libfptr_show_properties(fptr, LIBFPTR_GUI_PARENT_NATIVE, <дескриптор окна>);
|

|fptr.showProperties(LIBFPTR_GUI_PARENT_NATIVE, <дескриптор окна>);
|

|fptr.showProperties(IFptr.LIBFPTR_GUI_PARENT_NATIVE, <дескриптор окна>)
|

|fptr.showProperties(IFptr.LIBFPTR_GUI_PARENT_NATIVE, <дескриптор окна>);
|

|public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private static final int REQUEST_SHOW_SETTINGS = 1;
private IFptr fptr;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ….
// Создание объекта драйвера
fptr = new Fptr(getApplication());

// Вызываем Activity настройки
findViewById(R.id.btnShowSettings).setOnClickListener(new View.OnClickListener {
    @Override
    public void onClick(View view) {
      Intent intent = new Intent(getApplication(), SettingsActivity.class);
      // Передаем текущие настройки в SettingsActivity.
      // Если не передать - будет показана SettingsActivity с настройками по умолчанию
      intent.putExtra(SettingsActivity.DEVICE_SETTINGS, fptr.getSettings());
      startActivityForResult(intent, REQUEST_SHOW_SETTINGS);
    }
  }
);

}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_SHOW_SETTINGS && resultCode == Activity.RESULT_OK) {
// Записываем настройки в объект
fptr.setSettings(data.getStringExtra(SettingsActivity.DEVICE_SETTINGS));
}
}
}
|

|// Не поддерживается
|

|fptr.showProperties(Constants.LIBFPTR_GUI_PARENT_NATIVE, <дескриптор окна>);
|

|begin
fptr.showProperties(fptr.LIBFPTR_GUI_PARENT_NATIVE, <дескриптор окна>);
end;
|

|fptr.ShowProperties(fptr10.LIBFPTR_GUI_PARENT_NATIVE, <дескриптор окна>)
|

|// Метод недоступен
|

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

Первый способ — передача всех настроек в виде JSON методом драйвера / setSettings(…)/, аргументом которого является строка с настройками в
формате json. Способ удобен тем, что настройки в таком виде можно
запросить у драйвера, сохранить и при следующей работе с ККТ передать их
в драйвер заново как есть. При передаче настроек драйвер разорвет связь
с ККТ, если она установлена, изменит настройки и подключится заново.
Если по новым настройкам подключиться не удаётся, то драйвер попробует
восстановить связь по старым настройкам и вернёт ошибку. Есть некоторая
вероятность, что подключиться по старым настройкам также не удастся. В
этом случае будет возвращена ошибка, соединение сброшено, а метод / isOpened()/ будет возвращать false.

Второй способ — передача настроек по одной с их применением в конце.
Результат и поведение будут идентичны первому способу. Настройки
подаются методом /setSingleSetting(…)/, аргументами которого
является идентификатор настройки и сама настройка в строковом
представлении. По завершении поданные настройки необходимо применить,
подав метод /applySingleSettings()/.

Третий способ — вызов окна настройки связи с ККТ. В случае использования
метода /showProperties()/ требуется передать дескриптор родительского
окна для отображения модального диалога и указать его тип.

Для передачи дескриптора родительского окна типа QWidget (Qt) требуется
указать тип окна LIBFPTR_GUI_PARENT_QT.

Для передачи дескриптора родительского окна типа HWND (WinApi) требуется
указать тип окна LIBFPTR_GUI_PARENT_NATIVE. Использование типа окна
LIBFPTR_GUI_PARENT_NATIVE на Linux на данный момент не поддерживается.

При передаче нулевого дескриптора диалог настройки будет немодальным.

Метод возвращает следующие значения:

  • -1, если открыть диалог не удалось;
  • 0, если пользователь нажал кнопку OK;
  • 1, если пользователь покинул диалог любым другим способом (нажал
    кнопку Отмена, закрыл диалог крестиком и т.п.). Выгрузка настроек Выгрузка настроек, способ первый

|std::vector settings(1024);
int size = libfptr_get_settings(fptr, &settings[0], settings.size());
if (size > settings.size())
{
settings.resize(size);
libfptr_get_settings(fptr, &settings[0], settings.size());
}
|

|std::wstring settings = fptr.getSettings();
|

|# getSettings() возвращает dict
settings = fptr.getSettings()

getSettingsStr() возвращает строку

settings = fptr.getSettingsStr()
|

|String settings = fptr.getSettings();
|

|String settings = fptr.getSettings();
|

|NSString *settings = [fptr getSettings];
|

|String settings = fptr.getSettings();
|

|var
settings: String;
begin
settings := fptr.getSettings;
end;
|

|settings := fptr.GetSettings()
|

|settings = Fptr.getSettings();
|

Выгрузка настроек, способ второй (на примере получения IP-адреса и
порта)

|std::wstring ipAddress, ipPort;

std::vector setting(1024);
int size = libfptr_get_single_setting(fptr, LIBFPTR_SETTING_IPADDRESS, &setting[0], setting.size());
if (size > settings.size())
{
setting.resize(size);
libfptr_get_single_setting(fptr, LIBFPTR_SETTING_IPADDRESS, &setting[0], setting.size());
}
ipAddress = std::wstring(&setting[0]);

int size = libfptr_get_single_setting(fptr, LIBFPTR_SETTING_IPPORT, &setting[0], setting.size());
if (size > settings.size())
{
setting.resize(size);
libfptr_get_single_setting(fptr, LIBFPTR_SETTING_IPPORT, &setting[0], setting.size());
}
ipPort = std::wstring(&setting[0]);
|

|std::wstring ipAddress = fptr.getSingleSetting(LIBFPTR_SETTING_IPADDRESS);
std::wstring ipPort = fptr.getSingleSetting(LIBFPTR_SETTING_IPPORT);
|

|ipAddress = fptr.getSingleSetting(IFptr.LIBFPTR_SETTING_IPADDRESS)
ipPort = fptr.getSingleSetting(IFptr.LIBFPTR_SETTING_IPPORT)
|

|String ipAddress = fptr.getSingleSetting(IFptr.LIBFPTR_SETTING_IPADDRESS);
String ipPort = fptr.getSingleSetting(IFptr.LIBFPTR_SETTING_IPPORT);
|

|String ipAddress = fptr.getSingleSetting(IFptr.LIBFPTR_SETTING_IPADDRESS);
String ipPort = fptr.getSingleSetting(IFptr.LIBFPTR_SETTING_IPPORT);
|

|NSString *ipAddress = [fptr getSingleSetting:LIBFPTR_SETTING_IPADDRESS];
NSString *ipPort = [fptr getSingleSetting:LIBFPTR_SETTING_IPPORT];
|

|String ipAddress = fptr.getSingleSetting(Constants.LIBFPTR_SETTING_IPADDRESS);
String ipPort = fptr.getSingleSetting(Constants.LIBFPTR_SETTING_IPPORT);
|

|var
ipAddress: String;
ipPort: String;
begin
ipAddress := fptr.getSingleSetting(fptr.LIBFPTR_SETTING_IPADDRESS);
ipPort := fptr.getSingleSetting(fptr.LIBFPTR_SETTING_IPPORT);
end;
|

|ipAddress := fptr.GetSingleSetting(fptr10.LIBFPTR_SETTING_IPADDRESS)
ipPort := fptr.GetSingleSetting(fptr10.LIBFPTR_SETTING_IPPORT)
|

|ipAddress = Fptr.getSingleSetting(Fptr.LIBFPTR_SETTING_IPADDRESS);
ipPort = Fptr.getSingleSetting(Fptr.LIBFPTR_SETTING_IPPORT);
|

Выгрузить настройки также можно двумя способами.

Первый позволяет получить все настройки разом в виде JSON.

Используя второй способ, можно получить отдельно значение каждой настройки.

Список настроек

Все настройки можно поделить на несколько категорий.

К первой относятся общие настройки драйвера, которые отвечают
непосредственно за его поведение.

Это следующие настройки:

*

*LIBFPTR_SETTING_LIBRARY_PATH* - путь к каталогу с библиотеками-
зависимостями, подгружаемым при необходимости. К таким библиотекам
относятся /libusb/ и /libudev/ для работы с ККТ по USB на Linux.
Может быть списком каталогов, аналогично /java.library.path/. Не
актуально для случая, когда используется драйвер, установленный с
помощью дистрибутива.

*

*LIBFPTR_SETTING_MODEL* - код модели ККТ. Определяет способ работы
драйвера с устройством. Может принимать следующие значения:

  o *LIBFPTR_MODEL_ATOL_AUTO* - автоматическое определение модели
    (только ККТ АТОЛ)
  o *LIBFPTR_MODEL_ATOL_1F* - АТОЛ 1Ф;
  o *LIBFPTR_MODEL_ATOL_11F* - АТОЛ 11Ф;
  o *LIBFPTR_MODEL_ATOL_15F* - АТОЛ 15Ф;
  o *LIBFPTR_MODEL_ATOL_20F* - АТОЛ 20Ф;
  o *LIBFPTR_MODEL_ATOL_22F* - АТОЛ 22Ф (АТОЛ FPrint-22ПТК);
  o *LIBFPTR_MODEL_ATOL_22v2F* - АТОЛ 22 v2 Ф;
  o *LIBFPTR_MODEL_ATOL_25F* - АТОЛ 25Ф;
  o *LIBFPTR_MODEL_ATOL_27F* - АТОЛ 27Ф;
  o *LIBFPTR_MODEL_ATOL_30F* - АТОЛ 30Ф;
  o *LIBFPTR_MODEL_ATOL_42FS* - АТОЛ 42ФС;
  o *LIBFPTR_MODEL_ATOL_50F* - АТОЛ 50Ф;
  o *LIBFPTR_MODEL_ATOL_52F* - АТОЛ 52Ф;
  o *LIBFPTR_MODEL_ATOL_55F* - АТОЛ 55Ф;
  o *LIBFPTR_MODEL_ATOL_55v2F* - АТОЛ 55 v2 Ф;
  o *LIBFPTR_MODEL_ATOL_60F* - АТОЛ 60Ф;
  o *LIBFPTR_MODEL_ATOL_77F* - АТОЛ 77Ф;
  o *LIBFPTR_MODEL_ATOL_90F* - АТОЛ 90Ф;
  o *LIBFPTR_MODEL_ATOL_91F* - АТОЛ 91Ф;
  o *LIBFPTR_MODEL_ATOL_92F* - АТОЛ 92Ф;
  o *LIBFPTR_MODEL_ATOL_SIGMA_10* - АТОЛ Sigma 10;
  o *LIBFPTR_MODEL_ATOL_SIGMA_7F* - АТОЛ Sigma 7Ф;
  o *LIBFPTR_MODEL_ATOL_SIGMA_8F* - АТОЛ Sigma 8Ф;
  o *LIBFPTR_MODEL_KAZNACHEY_FA* - Казначей ФА;
  o *LIBFPTR_MODEL_ATOL_42FA* - АТОЛ 42ФА.

*

*LIBFPTR_SETTING_ACCESS_PASSWORD* - пароль доступа к ККТ. Требуется
для взаимодействия с ККТ. Если не указан или пуст, используется
стандартный пароль в зависимости от настройки *LIBFPTR_SETTING_MODEL*;

*

*LIBFPTR_SETTING_USER_PASSWORD* - пароль пользователя по умолчанию.
Требуется для доступа к специфичным командам и режимам ККТ. Если не
указан или пуст, используется пароль по умолчанию с максимальными
правами в зависимости от настройки *LIBFPTR_SETTING_MODEL*;

*

*LIBFPTR_SETTING_OFD_CHANNEL* - канал для обмена с ОФД. По умолчанию
- *LIBFPTR_OFD_CHANNEL_AUTO*. Для корректной работы требуется
дополнительная настройка ККТ (настройка #276, см. Настройки ККТ
<#kkt_params_list>). Возможные значения:

  o *LIBFPTR_OFD_CHANNEL_NONE* - не активировать обмен с ОФД
    средствами драйвера;
  o *LIBFPTR_OFD_CHANNEL_AUTO* - драйвер автоматически активирует
    для ККТ канал обмена с ОФД через транспортный протокол ККТ, если
    значение настройки #276 в ККТ равно *EthernetOverTransport*;

*

*LIBFPTR_SETTING_SCRIPTS_PATH* - путь к внешним, пользовательским
скриптам (подробнее в Скрипты драйвера <#scripts>);

*

*LIBFPTR_SETTING_USE_DOCUMENTS_JOURNAL* - использовать БД
документов. Подробнее в соответствующем разделе <#documents_journal>;

*

*LIBFPTR_SETTING_DOCUMENTS_JOURNAL_PATH* - путь к БД документов.
Подробнее в соответствующем разделе <#documents_journal>;

*

*LIBFPTR_SETTING_INVERT_CASH_DRAWER_STATUS* - инвертировать
состояние денежного ящика или нет. По умолчанию - не инвертировать;

*

*LIBFPTR_SETTING_VALIDATE_MARK_WITH_FNM_ONLY* - выполнять проверку
КМ средствами драйвера. По умолчанию - нет. Подробнее в
соответствующем разделе <#marks_ffd12>;

*

*LIBFPTR_SETTING_AUTO_MEASUREMENT_UNIT* - автоматически подавать
реквизит "Мера количества" (2108) на позицию, если реквизит 2003 !=
2, 4.

*

*LIBFPTR_SETTING_SILENT_REBOOT* - настройка тихой перезагрузки.
Может принимать следующие значения:

  o *LIBFPTR_SILENT_REBOOT_NO* - не производить тихую перезагрузку
    (по умолчанию);
  o *LIBFPTR_SILENT_REBOOT_AFTER_SESSION_CLOSE* - тихая перезагрузка
    после закрытия смены;
  o *LIBFPTR_SILENT_REBOOT_BEFORE_SESSION_OPEN* - тихая перезагрузка
    до открытия смены;

Ко второй относятся настройки связи с ККТ.

  • LIBFPTR_SETTING_PORT — способ связи с ККТ. Остальные настройки
    связи зависят от значения этой настройки. Может принимать следующие
    значения:
    o LIBFPTR_PORT_COM — работа с ККТ либо через физический COM-
    порт, либо через виртуальные COM-порт и TTY-файл. Доступно для
    Windows, Linux и Android; К данному каналу также относятся
    настройки LIBFPTR_SETTING_BAUDRATE, LIBFPTR_SETTING_BITS,
    LIBFPTR_SETTING_STOPBITS, LIBFPTR_SETTING_PARITY,
    LIBFPTR_SETTING_COM_FILE;
    o LIBFPTR_PORT_USB — работа с ККТ по USB. Доступно для Windows,
    Linux, macOS и Android; К данному каналу также относится
    настройка LIBFPTR_SETTING_USB_DEVICE_PATH;
    o LIBFPTR_PORT_TCPIP — работа с ККТ по TCP/IP (Ethernet, Wi-Fi).
    Доступно для Windows, Linux, macOS, Android и iOS. К данному
    каналу также относятся настройки LIBFPTR_SETTING_IPADDRESS и
    LIBFPTR_SETTING_IPPORT;
    o LIBFPTR_PORT_BLUETOOTH — работа с ККТ по Bluetooth. Доступно
    для Windows, Linux и Android. К данному каналу также относится
    настройка LIBFPTR_SETTING_MACADDRESS;
  • LIBFPTR_SETTING_BAUDRATE — скорость работы ККТ по RS232. Может
    принимать следующие значения:
    o LIBFPTR_PORT_BR_1200 — 1200 бод;
    o LIBFPTR_PORT_BR_2400 — 2400 бод;
    o LIBFPTR_PORT_BR_4800 — 4800 бод;
    o LIBFPTR_PORT_BR_9600 — 9600 бод;
    o LIBFPTR_PORT_BR_19200 — 19200 бод;
    o LIBFPTR_PORT_BR_38400 — 38400 бод;
    o LIBFPTR_PORT_BR_57600 — 57600 бод;
    o LIBFPTR_PORT_BR_115200 — 115200 бод;
    o LIBFPTR_PORT_BR_230400 — 230400 бод;
    o LIBFPTR_PORT_BR_460800 — 460800 бод;
    o LIBFPTR_PORT_BR_921600 — 921600 бод;
  • LIBFPTR_SETTING_BITS — количество бит в байте канала RS232:
    o LIBFPTR_PORT_BITS_7 — 7 бит;
    o LIBFPTR_PORT_BITS_8 — 8 бит;
  • LIBFPTR_SETTING_STOPBITS — количество стоп-битов канала RS232:
    o LIBFPTR_PORT_SB_1 — 1 бит;
    o LIBFPTR_PORT_SB_1_5 — 1.5 бита;
    o LIBFPTR_PORT_SB_2 — 2 бита;
  • LIBFPTR_SETTING_PARITY — четность канала RS232:
    o LIBFPTR_PORT_PARITY_NO — нет;
    o LIBFPTR_PORT_PARITY_ODD — четность;
    o LIBFPTR_PORT_PARITY_EVEN — нечетность;
    o LIBFPTR_PORT_PARITY_MARK — установлена;
    o LIBFPTR_PORT_PARITY_SPACE — сброшена;
  • LIBFPTR_SETTING_COM_FILE — идентификатор порта. Для Windows —
    номер COM-порта (например, «15» или «COM15»). Для Linux — путь к
    TTY-файлу (например, «/dev/ttyS5» или «/dev/ttyACM0»).
  • LIBFPTR_SETTING_USB_DEVICE_PATH — расположение USB-устройства в
    системе (только Linux). Если настройка не указана, имеет значение
    «auto» или пустое значение, то поиск и подключение к устройству
    будет проводиться по известным драйверу VendorID и ProductID. На
    Windows подключение всегда ведется по VendorID и ProductID;
  • LIBFPTR_SETTING_IPADDRESS — IP-адрес ККТ. Может быть как ip-
    адресом, так и hostname-ом;
  • LIBFPTR_SETTING_IPPORT — IP-порт ККТ;
  • LIBFPTR_SETTING_MACADDRESS — Bluetooth MAC-адрес ККТ. Устройство
    должно быть предварительно сопряжено с хостом средствами ОС.
  • LIBFPTR_SETTING_AUTO_RECONNECT — автоматически восстанавливать
    связь с ККТ при обрыве соединения. В случае, если значение /false/,
    драйвер не будет автоматически пытаться восстановить связь после
    обнаружения отключения устройства или получения ошибки «Нет связи»,
    а будет сразу возвращать ошибку LIBFPTR_ERROR_CONNECTION_LOST
    (Соединение с ККТ потеряно). Значение по умолчанию — /true/;

Третья — настройки подключения к серверу удалённого доступа (подробнее —
Сервер удалённого доступа <#rpc-server>):

  • LIBFPTR_SETTING_REMOTE_SERVER_ADDR — адрес сервера удалённого доступа;
  • LIBFPTR_SETTING_REMOTE_SERVER_CONNECTION_TIMEOUT — таймаут
    подключения к серверу удалённого доступа.

Для подачи констант типа /boolean/ необходимо использовать строковые
константы «1» и «0», передача целочисленных значений осуществляется
в формате строки.

Настройка обмена с ОФД

Как было указано выше, в драйвере есть возможность предоставить для ККТ
канал обмена с ОФД средствами хоста, на котором драйвер используется.
Для этого служит настройка LIBFPTR_SETTING_OFD_CHANNEL.

Ниже представлена таблица, показывающая, при каких настройках связи с
ОФД в самой ККТ какую настройку в драйвере выбрать.

Настройка ККТ Настройка драйвера Пояснение
USB (EoU) LIBFPTR_OFD_CHANNEL_NONE Для работы требуется утилита EoU.
Драйвер в обмене не участвует.
Ethernet LIBFPTR_OFD_CHANNEL_NONE Для работы требуется, чтобы ККТ
была подключена к сети через Ethernet-кабель. Драйвер в обмене не
участвует.
Wi-Fi LIBFPTR_OFD_CHANNEL_NONE Для работы требуется, чтобы ККТ была
подключена к сети через Wi-Fi. Драйвер в обмене не участвует.
GSM-модем LIBFPTR_OFD_CHANNEL_NONE Для работы требуется, чтобы в ККТ
была установлена SIM-карта. Драйвер в обмене не участвует.
EthernetOverTransport LIBFPTR_OFD_CHANNEL_PROTO или
LIBFPTR_OFD_CHANNEL_AUTO В этом случае для передачи данных в ОФД
будет использоваться канал хоста, на котором установлен драйвер. Для
работы требуется, чтобы драйвер постоянно держал соединение с ККТ.

Методы и параметры драйвера

Установка целочисленного параметра

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
|

|fptr.setParam(LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
|

|[fptr setParam:LIBFPTR_PARAM_TAX_TYPE intParam:LIBFPTR_TAX_VAT10];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_TAX_TYPE, Constants.LIBFPTR_TAX_VAT10);
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_TAX_TYPE, fptr.LIBFPTR_TAX_VAT10);
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_TAX_TYPE, fptr10.LIBFPTR_TAX_VAT10)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_TAX_TYPE, Fptr.LIBFPTR_TAX_VAT10);
|

Установка целочисленного реквизита ФН (без печати на чековой ленте)

|libfptr_set_non_printable_param_int(fptr, 1229, 500);
|

|fptr.setNonPrintableParam(1229, 500);
|

|fptr.setNonPrintableParam(1229, 500)
|

|fptr.setNonPrintableParam(1229, 500);
|

|fptr.setNonPrintableParam(1229, 500);
|

|[fptr setNonPrintableParam:1229 intParam:500];
|

|fptr.setNonPrintableParam(1229, 500);
|

|begin
fptr.setNonPrintableParam(1229, 500);
end;
|

|fptr.SetNonPrintableParam(1229, 500)
|

|Fptr.setParam(1229, 500);
|

Установка дробного параметра

|libfptr_set_param_double(fptr, LIBFPTR_PARAM_PRICE, 123.45);
|

|fptr.setParam(LIBFPTR_PARAM_PRICE, 123.45);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 123.45)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 123.45);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 123.45);
|

|[fptr setParam:LIBFPTR_PARAM_PRICE doubleParam:123.45];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_PRICE, 123.45);
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_PRICE, 123.45);
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_PRICE, 500)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_PRICE, 500);
|

Установка логического параметра

|libfptr_set_param_bool(fptr, LIBFPTR_PARAM_FONT_DOUBLE_WIDTH, true);
|

|fptr.setParam(LIBFPTR_PARAM_FONT_DOUBLE_WIDTH, true);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FONT_DOUBLE_WIDTH, True)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FONT_DOUBLE_WIDTH, true);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FONT_DOUBLE_WIDTH, true);
|

|[fptr setParam:LIBFPTR_PARAM_FONT_DOUBLE_WIDTH boolParam:true];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FONT_DOUBLE_WIDTH, true);
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_FONT_DOUBLE_WIDTH, True);
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FONT_DOUBLE_WIDTH, true)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FONT_DOUBLE_WIDTH, true);
|

Установка строкового параметра

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_COMMODITY_NAME, L»Товар»);
|

|fptr.setParam(LIBFPTR_PARAM_COMMODITY_NAME, L»Товар»);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
|

|[fptr setParam:LIBFPTR_PARAM_COMMODITY_NAME NSStringParam:@»Товар»];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_COMMODITY_NAME, ‘Товар’);
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
|

Установка строкового реквизита ФН (без печати на чековой ленте)

|libfptr_set_non_printable_param_str(fptr, 1191, L»Позиция №1″);
|

|fptr.setNonPrintableParam(1191, L»Позиция №1″);
|

|fptr.setNonPrintableParam(1191, «Позиция №1»)
|

|fptr.setNonPrintableParam(1191, «Позиция №1»);
|

|fptr.setNonPrintableParam(1191, «Позиция №1»);
|

|[fptr setNonPrintableParam:1191 NSStringParam:@»Позиция №1″];
|

|fptr.setNonPrintableParam(1191, «Позиция №1»);
|

|begin
fptr.setNonPrintableParam(1191, ‘Позиция №1’);
end;
|

|fptr.SetNonPrintableParam(1191, «Позиция №1»)
|

|Fptr.setNonPrintableParam(1191, «Позиция №1»);
|

Установка параметра дата / время

|time_t t = time(NULL);
struct tm tm = *localtime(&t);
libfptr_set_param_datetime(fptr, LIBFPTR_PARAM_DATE_TIME, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);
|

|std::time_t t = time(nullptr);
std::tm tm = *localtime(&t);
fptr.setParam(LIBFPTR_PARAM_DATE_TIME, tm);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATE_TIME, datetime.datetime.now())
|

|Calendar c = Calendar.getInstance();
fptr.setParam(IFptr.LIBFPTR_PARAM_DATE_TIME, c.getTime());
|

|Calendar c = Calendar.getInstance();
fptr.setParam(IFptr.LIBFPTR_PARAM_DATE_TIME, c.getTime());
|

|NSDate *now = [NSDate date];
[fptr setParam:LIBFPTR_PARAM_DATE_TIME NSDateParam:now];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATE_TIME, DateTime.Now);
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATE_TIME, date);
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATE_TIME, time.Now())
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATE_TIME, Date.now());
|

Установка массива байтов

|uchar command[] = {0x91, 0x13, 0x00, 0x00};
libfptr_set_param_bytearray(fptr, LIBFPTR_PARAM_COMMAND_BUFFER,
&command[0], sizeof(command) / sizeof(command[0]));
|

|fptr.setParam(LIBFPTR_PARAM_COMMAND_BUFFER, {0x91, 0x13, 0x00, 0x00});
fptr.setParam(LIBFPTR_PARAM_COMMAND_BUFFER, std::vector{0x91, 0x13, 0x00, 0x00});
uchar command[] = {0x91, 0x13, 0x00, 0x00};
fptr.setParam(LIBFPTR_PARAM_COMMAND_BUFFER, &command[0], sizeof(command) / sizeof(command[0]));
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMAND_BUFFER, [0x91, 0x13, 0x00, 0x00])
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMAND_BUFFER, new byte[]{0x91, 0x13, 0x00, 0x00});
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMAND_BUFFER, new byte[]{0x91, 0x13, 0x00, 0x00});
|

|uchar command[] = {0x91, 0x13, 0x00, 0x00};
[fptr setParam:LIBFPTR_PARAM_COMMAND_BUFFER NSDataParam:[NSData dataWithBytes:(const void*)command length:sizeof(command)]];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_COMMAND_BUFFER, new byte[]{0x91, 0x13, 0x00, 0x00});
|

|var
command_byte_array: Array[0 .. 3] of Byte = ($91, $13, $00, $00);
command_variant: Variant;
i: Integer;
begin
command_variant := VarArrayCreate([0, high(command_byte_array)], varByte);
for i := VarArrayLowBound(command_variant, 1) to VarArrayHighBound(command_variant, 1) do
begin
VarArrayPut(command_variant, command_byte_array[i], [i]);
end;
fptr.setParam(fptr.LIBFPTR_PARAM_COMMAND_BUFFER, command_variant);
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_COMMAND_BUFFER, []byte{0x91, 0x13, 0x00, 0x00})
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_COMMAND_BUFFER, new Uint8Array([0x91, 0x13, 0x00, 0x00]));
|

Установка байтового реквизита ФН (без печати на чековой ленте)

|libfptr_set_param_str(fptr, 1085, L»Название реквизита»);
libfptr_set_param_str(fptr, 1086, L»Значение реквизита»);
libfptr_util_form_tlv(fptr);

std::vector userAttribute(128);
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE, &userAttribute[0], userAttribute.size());
if (size > userAttribute.size())
{
userAttribute.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE, &userAttribute[0], userAttribute.size());
}
userAttribute.resize(size);

// …
libfptr_set_non_printable_param_bytearray(fptr, 1084, &userAttribute[0], userAttribute.size());
|

|fptr.setParam(1085, L»Название реквизита»);
fptr.setParam(1086, L»Значение реквизита»);
fptr.utilFormTlv();
std::vector userAttribute = fptr.getParamByteArray(LIBFPTR_PARAM_TAG_VALUE);

fptr.setNonPrintableParam(1084, userAttribute);
|

|fptr.setParam(1085, «Название реквизита»);
fptr.setParam(1086, «Значение реквизита»);
fptr.utilFormTlv()
userAttribute = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE)

fptr.setNonPrintableParam(1084, userAttribute)
|

|fptr.setParam(1085, «Название реквизита»);
fptr.setParam(1086, «Значение реквизита»);
fptr.utilFormTlv();
byte[] userAttribute = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);

// …
fptr.setNonPrintableParam(1084, userAttribute);
|

|fptr.setParam(1085, «Название реквизита»);
fptr.setParam(1086, «Значение реквизита»);
fptr.utilFormTlv();
byte[] userAttribute = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);

// …
fptr.setNonPrintableParam(1084, userAttribute);
|

|[fptr setParam:1085 NSStringParam:@»Название реквизита»];
[fptr setParam:1086 NSStringParam:@»Значение реквизита»];
[fptr utilFormTlv];
NSData *userAttribute = [fptr getParamByteArray:LIBFPTR_PARAM_TAG_VALUE];

// …
[fptr setNonPrintableParam:1084 NSDataParam:userAttribute];
|

|fptr.setParam(1085, «Название реквизита»);
fptr.setParam(1086, «Значение реквизита»);
fptr.utilFormTlv();
byte[] userAttribute = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_TAG_VALUE);

// …
fptr.setNonPrintableParam(1084, userAttribute);
|

|var
userAttribute: Variant;
begin
fptr.setParam(1085, ‘Название реквизита’);
fptr.setParam(1086, ‘Значение реквизита’);
fptr.utilFormTlv;

userAttribute := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_TAG_VALUE);

// ...

fptr.setNonPrintableParam(1084, userAttribute);

end;
|

|fptr.SetParam(1085, «Название реквизита»)
fptr.SetParam(1086, «Значение реквизита»)
fptr.UtilFormTlv()
userAttribute := fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_TAG_VALUE)

// …
fptr.SetNonPrintableParam(1084, userAttribute)
|

|Fptr.setParam(1085, «Название реквизита»);
Fptr.setParam(1086, «Значение реквизита»);
Fptr.utilFormTlv();
userAttribute = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_TAG_VALUE);

// ….
Fptr.setNonPrintableParam(1084, userAttribute);
|

Получение целочисленного параметра

|uint lineLength = libfptr_get_param_int(fptr, LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
|

|uint lineLength = fptr.getParamInt(LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
|

|lineLength = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH)
|

|// На самом деле драйвер возвращает unsigned int, но, из-за отсутствия в Java unsigned-типов, возвращается long
long lineLength = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
|

|// На самом деле драйвер возвращает unsigned int, но, из-за отсутствия в Java unsigned-типов, возвращается long
long lineLength = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
|

|uint lineLength = [fptr getParamInt:LIBFPTR_PARAM_RECEIPT_LINE_LENGTH];
|

|uint lineLength = fptr.getParamInt(Constants.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
|

|var
lineLength: Longint;
begin
lineLength := fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
end;
|

|lineLength := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH)
|

|lineLength = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
|

Получение дробного параметра

|double cashSum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_SUM);
|

|double cashSum = fptr.getParamDouble(LIBFPTR_PARAM_SUM);
|

|cashSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM)
|

|double cashSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|double cashSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|double cashSum = [fptr getParamDouble:LIBFPTR_PARAM_SUM];
|

|double cashSum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_SUM);
|

|var
cashSum: Double;
begin
cashSum := fptr.getParamDouble(fptr.LIBFPTR_PARAM_SUM);
end;
|

|cashSum := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_SUM)
|

|cashSum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_SUM);
|

Получение логического параметра

|bool coverOpened = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_COVER_OPENED) != 0);
|

|bool coverOpened = fptr.getParamBool(LIBFPTR_PARAM_COVER_OPENED);
|

|coverOpened = fptr.getParamBool(IFptr.LIBFPTR_PARAM_COVER_OPENED)
|

|boolean coverOpened = fptr.getParamBool(IFptr.LIBFPTR_PARAM_COVER_OPENED);
|

|boolean coverOpened = fptr.getParamBool(IFptr.LIBFPTR_PARAM_COVER_OPENED);
|

|bool coverOpened = [fptr getParamBool:LIBFPTR_PARAM_COVER_OPENED];
|

|bool coverOpened = fptr.getParamBool(Constants.LIBFPTR_PARAM_COVER_OPENED);
|

|var
coverOpened: LongBool;
begin
coverOpened := fptr.getParamBool(fptr.LIBFPTR_PARAM_COVER_OPENED);
end;
|

|coverOpened := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_COVER_OPENED)
|

|coverOpened = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_COVER_OPENED);
|

Получение строкового параметра

|std::vector str(64);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_UNIT_VERSION, &str[0], str.size());
if (size > str.size())
{
unitVersion.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_UNIT_VERSION, &str[0], str.size());
}
std::wstring unitVersion = std::wstring(&str[0]);
|

|std::wstring unitVersion = fptr.getParamString(LIBFPTR_PARAM_UNIT_VERSION);
|

|unitVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION)
|

|String unitVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION);
|

|String unitVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION);
|

|NSString *unitVersion = [fptr getParamString:LIBFPTR_PARAM_UNIT_VERSION];
|

|String unitVersion = fptr.getParamString(Constants.LIBFPTR_PARAM_UNIT_VERSION);
|

|var
unitVersion: String;
begin
unitVersion := fptr.getParamString(fptr.LIBFPTR_PARAM_UNIT_VERSION);
end;
|

|unitVersion := fptr.GetParamString(fptr10.LIBFPTR_PARAM_UNIT_VERSION)
|

|unitVersion = Fptr.getParamString(Fptr.LIBFPTR_PARAM_UNIT_VERSION);
|

Получение параметра дата / время

|int year, month, day, hour, minute, second;
libfptr_get_param_datetime(fptr, LIBFPTR_PARAM_DATE_TIME, &year, &month, &day, &hour, &minute, &second);
|

|std::tm dateTime = fptr.getParamDateTime(LIBFPTR_PARAM_DATE_TIME);
|

|dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME)
|

|Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|NSDate *dateTime = [fptr getParamDateTime:LIBFPTR_PARAM_DATE_TIME];
|

|DateTime dateTime = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);
|

|var
dateTime: TDateTime;
begin
dateTime := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME);
end;
|

|dateTime := fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_DATE_TIME)
|

|dateTime = Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_DATE_TIME);
|

Получение массива байтов

|std::vector commandAnswer(32);
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_ANSWER_BUFFER,
&commandAnswer[0], commandAnswer.size());
if (size > commandAnswer.size())
{
commandAnswer.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_ANSWER_BUFFER,
&commandAnswer[0], commandAnswer.size());
}
commandAnswer.resize(size);
|

|std::vector commandAnswer = fptr.getParamByteArray(LIBFPTR_PARAM_ANSWER_BUFFER);
|

|commandAnswer = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_ANSWER_BUFFER)
|

|byte[] commandAnswer = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_ANSWER_BUFFER);
|

|byte[] commandAnswer = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_ANSWER_BUFFER);
|

|NSData *commandAnswer = [fptr getParamByteArray:LIBFPTR_PARAM_ANSWER_BUFFER];
|

|byte[] commandAnswer = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_ANSWER_BUFFER);
|

|var
commandAnswer: Variant;
begin
commandAnswer := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_ANSWER_BUFFER);
end;
|

|commandAnswer := fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_ANSWER_BUFFER)
|

|commandAnswer = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_ANSWER_BUFFER);
|

Работа с ККТ производится с помощью методов и их параметров.

Каждый метод, в зависимости от своих параметров, выполняет определенные
операции с устройством. Параметры бывают входные и выходные. Входные
параметры влияют на выполняемую операцию, а выходные — это её результат.

Список входных параметров очищается сразу после выполнения метода.
Список выходных — перед выполнением следующего.

Каждый метод возвращает 0, если метод выполнился удачно, и -1, если
произошла ошибка. Метод /showProperties()/ может вернуть также
значение 1. Метод /isOpened()/ не возвращает признак результата,
вместо этого он возвращает признак установленного соединения с ККТ.

Параметры бывают следующих типов:

  • int — целое беззнаковое число. Принимает значение от 0 до
    4294967295 (MAX_UINT, 0xFFFFFFFF);
  • double — число с плавающей точкой. Принимает значение от
    -1.79769e+308 до 1.79769e+308;
  • bool — логическое число. Принимает значения 0 (false) и 1 (true);
  • string — unicode-строка;
  • datetime — дата и время;
  • bytearray — массив байтов.

Описания параметров представлены в описании каждого метода.

При работе с драйвером в виде COM-объекта поддерживаются (с помощью
типа VARIANT) следующие типы параметров:

  • VT_I2, VT_I4, VT_INT, VT_UI1, VT_UI2, VT_UI4, VT_UINT
    • /int/;
  • VT_R4, VT_R8, VT_CY — /double/;
  • VT_BOOL — /bool/;
  • VT_BSTR, VT_BYREF | VT_BSTR — /string/;
  • VT_DATE, VT_BYREF | VT_DATE — /datetime/;
  • VT_ARRAY | VT_UI1 — /bytearray/;
  • VT_BYREF | VT_VARIANT — поддерживается только как указатель на
    один из типов, описанных выше.

При работе с драйвером из Go-обертки поддерживаются (с помощью типа
interface{}) следующие типы параметров:

  • int, int8, int16, int32, uint, uint8, uint16, uint32
    • /int/;
  • float32, float64 — /double/;
  • bool — /bool/;
  • string — /string/;
  • time.Time — /datetime/;
  • []byte, bytes.Buffer, *bytes.Buffer — /bytearray/.

Некоторые реквизиты ФН можно передавать в ККТ с пометкой, что их не
нужно печатать на чековой ленте. В драйвер такая возможность поддержана
с помощью дополнительных функций установки параметров. Если ККТ не
поддерживает такой механизм, что реквизит будет напечатан, а ошибка
возвращена не будет.

При использовании COM-объекта ваш язык может не поддерживать получение
из драйвера параметра типа bytearray. В этом случае можно использовать
обходной вариант. Нужно запросить такой параметр через
getParamStringHex(), он вернет строку с последовательностью байтов
вида «01 02 FF AA …». Далее, эту строку можно записать во входной
параметр любого метода через методы setParamStrHex() или
setNonPrintableParamStrHex(), и она запишется в драйвер как bytearray.

При работе в JavaScript (Duktape) у методов /setParam()/, / setNonPrintableParam()/ и /setUserParam()/ добавлен необязательный
параметр — флаги. Туда можно передать константу /IGNORE_IF_EMPTY/,
которая отключит передачу параметра в драйвер, если он принимает одно из
следующих значений:

  • пустая строка;
  • пустой массив байтов;
  • любой неподдерживаемый тип параметра (например, undefined). Проверка доступности параметра LIBFPTR_PARAM_TAX_TYPE

|bool isExist = (libfptr_is_param_available(fptr, LIBFPTR_PARAM_TAX_TYPE) != 0);
|

|bool isExist = fptr.isParamAvailable(LIBFPTR_PARAM_TAX_TYPE);
|

|isExist = fptr.isParamAvailable(IFptr.LIBFPTR_PARAM_TAX_TYPE)
|

|boolean isExist = fptr.isParamAvailable(IFptr.LIBFPTR_PARAM_TAX_TYPE);
|

|boolean isExist = fptr.isParamAvailable(IFptr.LIBFPTR_PARAM_TAX_TYPE);
|

|bool isExist = [fptr isParamAvailable:LIBFPTR_PARAM_TAX_TYPE];
|

|bool isExist = fptr.isParamAvailable(Constants.LIBFPTR_PARAM_TAX_TYPE);
|

|var
isExist: LongBool;
begin
isExist := fptr.isParamAvailable(fptr.LIBFPTR_PARAM_TAX_TYPE);
end;
|

|isExist := fptr.IsParamAvailable(fptr10.LIBFPTR_PARAM_TAX_TYPE)
|

|isExist = Fptr.isParamAvailable(Fptr.LIBFPTR_PARAM_TAX_TYPE);
|

Некоторые параметры, возвращаемые методами, могут отсутствовать в списке
возвращаемых параметров в определенных случаях (например, из-за настроек
ККТ), тогда запрос значений данных параметров будет содержать
неактуальную информацию, а именно — значение по умолчанию:

  • int — число 0;
  • double — число с плавающей точкой 0.00;
  • bool — логическое число 0 (false);
  • string — пустая unicode-строка «»;
  • datetime — дата и время 1 января 1970 года, 0:00:00;
  • bytearray — пустой массив байтов.

Чтобы достоверно различить пустой параметр со значением по умолчанию и
параметр с реальным значением (которое может совпадать со значением по
умолчанию) рекомендуется использовать метод isParamAvailable(). Данный
метод может вернуть следующие значения:

  • 1 — параметр присутствует в списке возвращаемых параметров;
  • 0 — параметр отсутствует в списке возвращаемых параметров, при
    запросе данного параметра будет возвращено значение по умолчанию;
  • -1 — ошибка при выполнении метода; Обработка ошибок Вызов метода

|if (libfptr_print_text(fptr) < 0)
{
int errorCode = libfptr_error_code(fptr);

std::vector<wchar_t> errorDescription(32);
int size = libfptr_error_description(fptr, &errorDescription[0], errorDescription.size());
if (size > errorDescription.size())
{
    errorDescription.resize(size);
    libfptr_error_description(fptr, &errorDescription[0], errorDescription.size());
}

std::wcout << L"Ошибка - " 
           << errorCode 
           << L" [" << std::wstring(&errorDescription[0]) << L"]" 
           << std::endl;

}
|

|if (fptr.printText() < 0)
{
std::wcout << L»Ошибка — «
<< fptr.errorCode()
<< L» [» << fptr.errorDescription() << L»]»
<< std::endl;
}
|

|if fptr.printText() < 0:
print(«{} [{}]».format(fptr.errorCode(), fptr.errorDescription()))
|

|if (fptr.printText() < 0) {
System.out.println(String.format(«%d [%s]», fptr.errorCode(), fptr.errorDescription()));
}
|

|if (fptr.printText() < 0) {
Log.d(TAG, String.format(«%d [%s]», fptr.errorCode(), fptr.errorDescription()));
}
|

|if ([fptr printText] < 0) {
NSLog(@»%d [%@]», [fptr errorCode], [fptr errorDescription]);
}
|

|if (fptr.printText() < 0) {
Console.WriteLine(String.Format(«{0} [{1}]», fptr.errorCode(), fptr.errorDescription()));
}
|

|begin
if fptr.printText < 0 then
showmessage(‘»‘ + IntToStr(fptr.errorCode) + ‘ [‘ + fptr.errorDescription + ‘]»‘);
end;
|

|if err := fptr.PrintText(); err != nil {
switch e := err.(type) {
case *fptr10.Error:
log.Println(e)
return
}
}

log.Println(fptr.ErrorCode())
log.Println(fptr.ErrorDescription())
|

|if (Fptr.printText() < 0) {
Fptr.logWrite(«FiscalPrinter», Fptr.LIBFPTR_LOG_ERROR, Fptr.errorCode().toString() + » [» + Fptr.errorDescription() + «]»);
}
|

Каждый метод драйвера возвращает индикатор результата выполнения. Этот
индикатор может принимать значения 0 и -1.

В случае, если индикатор не равен 0, выполнение метода завершилось с
ошибкой, то есть возможность получить подробности о ней. Для этого у
драйвера можно запросить код последней ошибки (метод /errorCode()/) и
её текстовое описание (метод /errorDescription()/).

В случае с Go, метод возвращает /error/ с типом fptr10.Error, в
котором содержатся код ошибки и описание ошибки.

Драйвер хранит информацию об ошибке до следующего вызова метода — после
него информация об ошибке обновляется. Для явного сброса информации о
последней ошибки нужно использовать метод /resetError()/.

Список кодов ошибок приведен в приложении Список кодов ошибок <#error_list>.

Если метод драйвера вернул ошибку, то все выходные свойства заполнены
неопределенными значениями, если обратного не указано в описании метода.

Соединение с ККТ

Установка соединения с ККТ

|libfptr_open(fptr);
|

|fptr.open();
|

|fptr.open()
|

|fptr.open();
|

|fptr.open();
|

|[fptr open];
|

|fptr.open();
|

|begin
fptr.open;
end;
|

|fptr.Open()
|

|// Метод недоступен
|

Проверка состояния логического соединения

|bool isOpened = (libfptr_is_opened(fptr) != 0);
|

|bool isOpened = fptr.isOpened();
|

|isOpened = fptr.isOpened()
|

|boolean isOpened = fptr.isOpened();
|

|boolean isOpened = fptr.isOpened();
|

|bool isOpened = [fptr isOpened];
|

|bool isOpened = fptr.isOpened();
|

|var
isOpened: LongBool;
begin
isOpened := fptr.isOpened;
end;
|

|isOpened := fptr.IsOpened()
|

|// Метод недоступен
|

Завершение соединения с ККТ

|libfptr_close(fptr);
|

|fptr.close();
|

|fptr.close()
|

|fptr.close();
|

|fptr.close();
|

|[fptr close];
|

|fptr.close();
|

|begin
fptr.close;
end;
|

|fptr.Close()
|

|// Метод недоступен
|

После настройки рабочего экземпляра можно подключиться к ККТ. Для этого
требуется вызвать метод /open()/. После подключения к ККТ можно
выполнять различные операции с ККТ, а также, при соответствующих
настройках, драйвер организует для ККТ канал для обмена с ОФД. До вызова
данного метода все другие операции с ККТ будет завершаться с ошибкой
LIBFPTR_ERROR_CONNECTION_DISABLED.

Чтобы узнать состояние соединения, нужно использовать метод / isOpened()/. Результат метода не отражает текущее состояние подключения

  • если с ККТ была разорвана связь, то метод все также будет возвращать
    true, но методы, выполняющие какие-либо операции над ККТ, будут
    возвращать ошибку LIBFPTR_ERROR_NO_CONNECTION.

Для завершения соединения с ККТ нужно вызвать метод /close()/. Драйвер
вернется в изначальное состояние, как до вызова /open()/. Канал с ОФД,
установленный с его помощью, будет закрыт и отправка документов в ОФД
будет прервана.

Запрос информации о ККТ

У ККТ можно запрашивать различную информацию, в том числе текущее
состояние, значения счетчиков и общую информацию. Для этого нужно
вызвать метод /queryData()/ с определенными параметрами.

Общая информация и статус

Запрос общей информации и статуса ККТ

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_STATUS);
libfptr_query_data(fptr);

uint operatorID = libfptr_get_param_int(fptr, LIBFPTR_PARAM_OPERATOR_ID);
uint logicalNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_LOGICAL_NUMBER);
uint shiftState = libfptr_get_param_int(fptr, LIBFPTR_PARAM_SHIFT_STATE);
uint model = libfptr_get_param_int(fptr, LIBFPTR_PARAM_MODEL);
uint mode = libfptr_get_param_int(fptr, LIBFPTR_PARAM_MODE);
uint submode = libfptr_get_param_int(fptr, LIBFPTR_PARAM_SUBMODE);
uint receiptNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_RECEIPT_NUMBER);
uint documentNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENT_NUMBER);
uint shiftNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_SHIFT_NUMBER);
uint receiptType = libfptr_get_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE);
uint documentType = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENT_TYPE);
uint lineLength = libfptr_get_param_int(fptr, LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
uint lineLengthPix = libfptr_get_param_int(fptr, LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX);

double receiptSum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_RECEIPT_SUM);

bool isOperatorRegistered = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_OPERATOR_REGISTERED) != 0);
bool isFiscalDevice = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_FISCAL) != 0);
bool isFiscalFN = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_FN_FISCAL) != 0);
bool isFNPresent = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_FN_PRESENT) != 0);
bool isInvalidFN = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_INVALID_FN) != 0);
bool isCashDrawerOpened = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_CASHDRAWER_OPENED) != 0);
bool isPaperPresent = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT) != 0);
bool isPaperNearEnd = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_PAPER_NEAR_END) != 0);
bool isCoverOpened = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_COVER_OPENED) != 0);
bool isPrinterConnectionLost = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_PRINTER_CONNECTION_LOST) != 0);
bool isPrinterError = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_PRINTER_ERROR) != 0);
bool isCutError = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_CUT_ERROR) != 0);
bool isPrinterOverheat = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_PRINTER_OVERHEAT) != 0);
bool isDeviceBlocked = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_BLOCKED) != 0)

int year, month, day, hour, minute, second;
libfptr_get_param_datetime(fptr, LIBFPTR_PARAM_DATE_TIME, &year, &month, &day, &hour, &minute, &second);

std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_SERIAL_NUMBER, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_SERIAL_NUMBER, &str[0], str.size());
}
std::wstring serialNumber = std::wstring(&str[0]);

size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_MODEL_NAME, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_MODEL_NAME, &str[0], str.size());
}
std::wstring modelName = std::wstring(&str[0]);

size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_UNIT_VERSION, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_UNIT_VERSION, &str[0], str.size());
}
std::wstring firmwareVersion = std::wstring(&str[0]);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_STATUS);
fptr.queryData();

uint operatorID = fptr.getParamInt(LIBFPTR_PARAM_OPERATOR_ID);
uint logicalNumber = fptr.getParamInt(LIBFPTR_PARAM_LOGICAL_NUMBER);
uint shiftState = fptr.getParamInt(LIBFPTR_PARAM_SHIFT_STATE);
uint model = fptr.getParamInt(LIBFPTR_PARAM_MODEL);
uint mode = fptr.getParamInt(LIBFPTR_PARAM_MODE);
uint submode = fptr.getParamInt(LIBFPTR_PARAM_SUBMODE);
uint receiptNumber = fptr.getParamInt(LIBFPTR_PARAM_RECEIPT_NUMBER);
uint documentNumber = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENT_NUMBER);
uint shiftNumber = fptr.getParamInt(LIBFPTR_PARAM_SHIFT_NUMBER);
uint receiptType = fptr.getParamInt(LIBFPTR_PARAM_RECEIPT_TYPE);
uint documentType = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENT_TYPE);
uint lineLength = fptr.getParamInt(LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
uint lineLengthPix = fptr.getParamInt(LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX);

double receiptSum = fptr.getParamDouble(LIBFPTR_PARAM_RECEIPT_SUM);

bool isOperatorRegistered = fptr.getParamBool(LIBFPTR_PARAM_OPERATOR_REGISTERED);
bool isFiscalDevice = fptr.getParamBool(LIBFPTR_PARAM_FISCAL);
bool isFiscalFN = fptr.getParamBool(LIBFPTR_PARAM_FN_FISCAL);
bool isFNPresent = fptr.getParamBool(LIBFPTR_PARAM_FN_PRESENT);
bool isInvalidFN = fptr.getParamBool(LIBFPTR_PARAM_INVALID_FN);
bool isCashDrawerOpened = fptr.getParamBool(LIBFPTR_PARAM_CASHDRAWER_OPENED);
bool isPaperPresent = fptr.getParamBool(LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT);
bool isPaperNearEnd = fptr.getParamBool(LIBFPTR_PARAM_PAPER_NEAR_END);
bool isCoverOpened = fptr.getParamBool(LIBFPTR_PARAM_COVER_OPENED);
bool isPrinterConnectionLost = fptr.getParamBool(LIBFPTR_PARAM_PRINTER_CONNECTION_LOST);
bool isPrinterError = fptr.getParamBool(LIBFPTR_PARAM_PRINTER_ERROR);
bool isCutError = fptr.getParamBool(LIBFPTR_PARAM_CUT_ERROR);
bool isPrinterOverheat = fptr.getParamBool(LIBFPTR_PARAM_PRINTER_OVERHEAT);
bool isDeviceBlocked = fptr.getParamBool(LIBFPTR_PARAM_BLOCKED);

std::tm dateTime = fptr.getParamDateTime(LIBFPTR_PARAM_DATE_TIME);

std::wstring serialNumber = fptr.getParamString(LIBFPTR_PARAM_SERIAL_NUMBER);
std::wstring modelName = fptr.getParamString(LIBFPTR_PARAM_MODEL_NAME);
std::wstring firmwareVersion = fptr.getParamString(LIBFPTR_PARAM_UNIT_VERSION);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_STATUS)
fptr.queryData()

operatorID = fptr.getParamInt(IFptr.LIBFPTR_PARAM_OPERATOR_ID)
logicalNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_LOGICAL_NUMBER)
shiftState = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SHIFT_STATE)
model = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MODEL)
mode = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MODE)
submode = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SUBMODE)
receiptNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_NUMBER)
documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER)
shiftNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SHIFT_NUMBER)
receiptType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE)
documentType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_TYPE)
lineLength = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH)
lineLengthPix = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX)

receiptSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_RECEIPT_SUM)

isOperatorRegistered = fptr.getParamBool(IFptr.LIBFPTR_PARAM_OPERATOR_REGISTERED)
isFiscalDevice = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FISCAL)
isFiscalFN = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_FISCAL)
isFNPresent = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_PRESENT)
isInvalidFN = fptr.getParamBool(IFptr.LIBFPTR_PARAM_INVALID_FN)
isCashDrawerOpened = fptr.getParamBool(IFptr.LIBFPTR_PARAM_CASHDRAWER_OPENED)
isPaperPresent = fptr.getParamBool(IFptr.LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT)
isPaperNearEnd = fptr.getParamBool(IFptr.LIBFPTR_PARAM_PAPER_NEAR_END)
isCoverOpened = fptr.getParamBool(IFptr.LIBFPTR_PARAM_COVER_OPENED)
isPrinterConnectionLost = fptr.getParamBool(IFptr.LIBFPTR_PARAM_PRINTER_CONNECTION_LOST)
isPrinterError = fptr.getParamBool(IFptr.LIBFPTR_PARAM_PRINTER_ERROR)
isCutError = fptr.getParamBool(IFptr.LIBFPTR_PARAM_CUT_ERROR)
isPrinterOverheat = fptr.getParamBool(IFptr.LIBFPTR_PARAM_PRINTER_OVERHEAT)
isDeviceBlocked = fptr.getParamBool(IFptr.LIBFPTR_PARAM_BLOCKED)

dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME)

serialNumber = fptr.getParamString(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER)
modelName = fptr.getParamString(IFptr.LIBFPTR_PARAM_MODEL_NAME)
firmwareVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_STATUS);
fptr.queryData();

long operatorID = fptr.getParamInt(IFptr.LIBFPTR_PARAM_OPERATOR_ID);
long logicalNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_LOGICAL_NUMBER);
long shiftState = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SHIFT_STATE);
long model = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MODEL);
long mode = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MODE);
long submode = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SUBMODE);
long receiptNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_NUMBER);
long documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
long shiftNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SHIFT_NUMBER);
long receiptType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE);
long documentType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_TYPE);
long lineLength = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
long lineLengthPix = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX);

double receiptSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_RECEIPT_SUM);

boolean isOperatorRegistered = fptr.getParamBool(IFptr.LIBFPTR_PARAM_OPERATOR_REGISTERED);
boolean isFiscalDevice = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FISCAL);
boolean isFiscalFN = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_FISCAL);
boolean isFNPresent = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_PRESENT);
boolean isInvalidFN = fptr.getParamBool(IFptr.LIBFPTR_PARAM_INVALID_FN);
boolean isCashDrawerOpened = fptr.getParamBool(IFptr.LIBFPTR_PARAM_CASHDRAWER_OPENED);
boolean isPaperPresent = fptr.getParamBool(IFptr.LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT);
boolean isPaperNearEnd = fptr.getParamBool(IFptr.LIBFPTR_PARAM_PAPER_NEAR_END);
boolean isCoverOpened = fptr.getParamBool(IFptr.LIBFPTR_PARAM_COVER_OPENED);
boolean isPrinterConnectionLost = fptr.getParamBool(IFptr.LIBFPTR_PARAM_PRINTER_CONNECTION_LOST);
boolean isPrinterError = fptr.getParamBool(IFptr.LIBFPTR_PARAM_PRINTER_ERROR);
boolean isCutError = fptr.getParamBool(IFptr.LIBFPTR_PARAM_CUT_ERROR);
boolean isPrinterOverheat = fptr.getParamBool(IFptr.LIBFPTR_PARAM_PRINTER_OVERHEAT);
boolean isDeviceBlocked = fptr.getParamBool(IFptr.LIBFPTR_PARAM_BLOCKED);

Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);

String serialNumber = fptr.getParamString(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER);
String modelName = fptr.getParamString(IFptr.LIBFPTR_PARAM_MODEL_NAME);
String firmwareVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_STATUS);
fptr.queryData();

long operatorID = fptr.getParamInt(IFptr.LIBFPTR_PARAM_OPERATOR_ID);
long logicalNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_LOGICAL_NUMBER);
long shiftState = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SHIFT_STATE);
long model = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MODEL);
long mode = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MODE);
long submode = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SUBMODE);
long receiptNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_NUMBER);
long documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
long shiftNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SHIFT_NUMBER);
long receiptType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE);
long documentType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_TYPE);
long lineLength = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
long lineLengthPix = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX);

double receiptSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_RECEIPT_SUM);

boolean isOperatorRegistered = fptr.getParamBool(IFptr.LIBFPTR_PARAM_OPERATOR_REGISTERED);
boolean isFiscalDevice = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FISCAL);
boolean isFiscalFN = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_FISCAL);
boolean isFNPresent = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_PRESENT);
boolean isInvalidFN = fptr.getParamBool(IFptr.LIBFPTR_PARAM_INVALID_FN);
boolean isCashDrawerOpened = fptr.getParamBool(IFptr.LIBFPTR_PARAM_CASHDRAWER_OPENED);
boolean isPaperPresent = fptr.getParamBool(IFptr.LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT);
boolean isPaperNearEnd = fptr.getParamBool(IFptr.LIBFPTR_PARAM_PAPER_NEAR_END);
boolean isCoverOpened = fptr.getParamBool(IFptr.LIBFPTR_PARAM_COVER_OPENED);
boolean isPrinterConnectionLost = fptr.getParamBool(IFptr.LIBFPTR_PARAM_PRINTER_CONNECTION_LOST);
boolean isPrinterError = fptr.getParamBool(IFptr.LIBFPTR_PARAM_PRINTER_ERROR);
boolean isCutError = fptr.getParamBool(IFptr.LIBFPTR_PARAM_CUT_ERROR);
boolean isPrinterOverheat = fptr.getParamBool(IFptr.LIBFPTR_PARAM_PRINTER_OVERHEAT);
boolean isDeviceBlocked = fptr.getParamBool(IFptr.LIBFPTR_PARAM_BLOCKED);

Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);

String serialNumber = fptr.getParamString(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER);
String modelName = fptr.getParamString(IFptr.LIBFPTR_PARAM_MODEL_NAME);
String firmwareVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_STATUS];
[fptr queryData];

uint operatorID = [fptr getParamInt:LIBFPTR_PARAM_OPERATOR_ID];
uint logicalNumber = [fptr getParamInt:LIBFPTR_PARAM_LOGICAL_NUMBER];
uint shiftState = [fptr getParamInt:LIBFPTR_PARAM_SHIFT_STATE];
uint model = [fptr getParamInt:LIBFPTR_PARAM_MODEL];
uint mode = [fptr getParamInt:LIBFPTR_PARAM_MODE];
uint submode = [fptr getParamInt:LIBFPTR_PARAM_SUBMODE];
uint receiptNumber = [fptr getParamInt:LIBFPTR_PARAM_RECEIPT_NUMBER];
uint documentNumber = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENT_NUMBER];
uint shiftNumber = [fptr getParamInt:LIBFPTR_PARAM_SHIFT_NUMBER];
uint receiptType = [fptr getParamInt:LIBFPTR_PARAM_RECEIPT_TYPE];
uint documentType = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENT_TYPE];
uint lineLength = [fptr getParamInt:LIBFPTR_PARAM_RECEIPT_LINE_LENGTH];
uint lineLengthPix = [fptr getParamInt:LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX];

double receiptSum = [fptr getParamDouble:LIBFPTR_PARAM_RECEIPT_SUM];

bool isOperatorRegistered = [fptr getParamBool:LIBFPTR_PARAM_OPERATOR_REGISTERED];
bool isFiscalDevice = [fptr getParamBool:LIBFPTR_PARAM_FISCAL];
bool isFiscalFN = [fptr getParamBool:LIBFPTR_PARAM_FN_FISCAL];
bool isFNPresent = [fptr getParamBool:LIBFPTR_PARAM_FN_PRESENT];
bool isInvalidFN = [fptr getParamBool:LIBFPTR_PARAM_INVALID_FN];
bool isCashDrawerOpened = [fptr getParamBool:LIBFPTR_PARAM_CASHDRAWER_OPENED];
bool isPaperPresent = [fptr getParamBool:LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT];
bool isPaperNearEnd = [fptr getParamBool:LIBFPTR_PARAM_PAPER_NEAR_END];
bool isCoverOpened = [fptr getParamBool:LIBFPTR_PARAM_COVER_OPENED];
bool isPrinterConnectionLost = [fptr getParamBool:LIBFPTR_PARAM_PRINTER_CONNECTION_LOST];
bool isPrinterError = [fptr getParamBool:LIBFPTR_PARAM_PRINTER_ERROR];
bool isCutError = [fptr getParamBool:LIBFPTR_PARAM_CUT_ERROR];
bool isPrinterOverheat = [fptr getParamBool:LIBFPTR_PARAM_PRINTER_OVERHEAT];
bool isDeviceBlocked = [fptr getParamBool:LIBFPTR_PARAM_BLOCKED];

NSDate *dateTime = [fptr getParamDateTime:LIBFPTR_PARAM_DATE_TIME];

NSString *serialNumber = [fptr getParamString:LIBFPTR_PARAM_SERIAL_NUMBER];
NSString *modelName = [fptr getParamString:LIBFPTR_PARAM_MODEL_NAME];
NSString *firmwareVersion = [fptr getParamString:LIBFPTR_PARAM_UNIT_VERSION];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_STATUS);
fptr.queryData();

uint operatorID = fptr.getParamInt(Constants.LIBFPTR_PARAM_OPERATOR_ID);
uint logicalNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_LOGICAL_NUMBER);
uint shiftState = fptr.getParamInt(Constants.LIBFPTR_PARAM_SHIFT_STATE);
uint model = fptr.getParamInt(Constants.LIBFPTR_PARAM_MODEL);
uint mode = fptr.getParamInt(Constants.LIBFPTR_PARAM_MODE);
uint submode = fptr.getParamInt(Constants.LIBFPTR_PARAM_SUBMODE);
uint receiptNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_RECEIPT_NUMBER);
uint documentNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER);
uint shiftNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_SHIFT_NUMBER);
uint receiptType = fptr.getParamInt(Constants.LIBFPTR_PARAM_RECEIPT_TYPE);
uint documentType = fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENT_TYPE);
uint lineLength = fptr.getParamInt(Constants.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
uint lineLengthPix = fptr.getParamInt(Constants.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX);

double receiptSum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_RECEIPT_SUM);

bool isOperatorRegistered = fptr.getParamBool(Constants.LIBFPTR_PARAM_OPERATOR_REGISTERED);
bool isFiscalDevice = fptr.getParamBool(Constants.LIBFPTR_PARAM_FISCAL);
bool isFiscalFN = fptr.getParamBool(Constants.LIBFPTR_PARAM_FN_FISCAL);
bool isFNPresent = fptr.getParamBool(Constants.LIBFPTR_PARAM_FN_PRESENT);
bool isInvalidFN = fptr.getParamBool(Constants.LIBFPTR_PARAM_INVALID_FN);
bool isCashDrawerOpened = fptr.getParamBool(Constants.LIBFPTR_PARAM_CASHDRAWER_OPENED);
bool isPaperPresent = fptr.getParamBool(Constants.LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT);
bool isPaperNearEnd = fptr.getParamBool(Constants.LIBFPTR_PARAM_PAPER_NEAR_END);
bool isCoverOpened = fptr.getParamBool(Constants.LIBFPTR_PARAM_COVER_OPENED);
bool isPrinterConnectionLost = fptr.getParamBool(Constants.LIBFPTR_PARAM_PRINTER_CONNECTION_LOST);
bool isPrinterError = fptr.getParamBool(Constants.LIBFPTR_PARAM_PRINTER_ERROR);
bool isCutError = fptr.getParamBool(Constants.LIBFPTR_PARAM_CUT_ERROR);
bool isPrinterOverheat = fptr.getParamBool(Constants.LIBFPTR_PARAM_PRINTER_OVERHEAT);
bool isDeviceBlocked = fptr.getParamBool(Constants.LIBFPTR_PARAM_BLOCKED);

DateTime dateTime = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);

String serialNumber = fptr.getParamString(Constants.LIBFPTR_PARAM_SERIAL_NUMBER);
String modelName = fptr.getParamString(Constants.LIBFPTR_PARAM_MODEL_NAME);
String firmwareVersion = fptr.getParamString(Constants.LIBFPTR_PARAM_UNIT_VERSION);
|

|var
operatorID: Longint;
logicalNumber: Longint;
shiftState: Longint;
model: Longint;
mode: Longint;
submode: Longint;
receiptNumber: Longint;
documentNumber: Longint;
shiftNumber: Longint;
receiptType: Longint;
documentType: Longint;
lineLength: Longint;
lineLengthPix: Longint;

receiptSum: Double;

isOperatorRegistered:    LongBool;
isFiscalDevice:          LongBool;
isFiscalFN:              LongBool;
isFNPresent:             LongBool;
isInvalidFN:             LongBool;
isCashDrawerOpened:      LongBool;
isPaperPresent:          LongBool;
isPaperNearEnd:          LongBool;
isCoverOpened:           LongBool;
isPrinterConnectionLost: LongBool;
isPrinterError:          LongBool;
isCutError:              LongBool;
isPrinterOverheat:       LongBool;
isDeviceBlocked:         LongBool;

dateTime: TDateTime;

serialNumber:       String;
modelName:          String;
firmwareVersion:    String;

begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_STATUS);
fptr.queryData;

operatorID      := fptr.getParamInt(fptr.LIBFPTR_PARAM_OPERATOR_ID);
logicalNumber   := fptr.getParamInt(fptr.LIBFPTR_PARAM_LOGICAL_NUMBER);
shiftState      := fptr.getParamInt(fptr.LIBFPTR_PARAM_SHIFT_STATE);
model           := fptr.getParamInt(fptr.LIBFPTR_PARAM_MODEL);
mode            := fptr.getParamInt(fptr.LIBFPTR_PARAM_MODE);
submode         := fptr.getParamInt(fptr.LIBFPTR_PARAM_SUBMODE);
receiptNumber   := fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_NUMBER);
documentNumber  := fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
shiftNumber     := fptr.getParamInt(fptr.LIBFPTR_PARAM_SHIFT_NUMBER);
receiptType     := fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_TYPE);
documentType    := fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENT_TYPE);
lineLength      := fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
lineLengthPix   := fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX);

receiptSum := fptr.getParamDouble(fptr.LIBFPTR_PARAM_RECEIPT_SUM);

isOperatorRegistered    := fptr.getParamBool(fptr.LIBFPTR_PARAM_OPERATOR_REGISTERED);
isFiscalDevice          := fptr.getParamBool(fptr.LIBFPTR_PARAM_FISCAL);
isFiscalFN              := fptr.getParamBool(fptr.LIBFPTR_PARAM_FN_FISCAL);
isFNPresent             := fptr.getParamBool(fptr.LIBFPTR_PARAM_FN_PRESENT);
isInvalidFN             := fptr.getParamBool(fptr.LIBFPTR_PARAM_INVALID_FN);
isCashDrawerOpened      := fptr.getParamBool(fptr.LIBFPTR_PARAM_CASHDRAWER_OPENED);
isPaperPresent          := fptr.getParamBool(fptr.LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT);
isPaperNearEnd          := fptr.getParamBool(fptr.LIBFPTR_PARAM_PAPER_NEAR_END);
isCoverOpened           := fptr.getParamBool(fptr.LIBFPTR_PARAM_COVER_OPENED);
isPrinterConnectionLost := fptr.getParamBool(fptr.LIBFPTR_PARAM_PRINTER_CONNECTION_LOST);
isPrinterError          := fptr.getParamBool(fptr.LIBFPTR_PARAM_PRINTER_ERROR);
isCutError              := fptr.getParamBool(fptr.LIBFPTR_PARAM_CUT_ERROR);
isPrinterOverheat       := fptr.getParamBool(fptr.LIBFPTR_PARAM_PRINTER_OVERHEAT);
isDeviceBlocked         := fptr.getParamBool(fptr.LIBFPTR_PARAM_BLOCKED);

dateTime := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME);

serialNumber    := fptr.getParamString(fptr.LIBFPTR_PARAM_SERIAL_NUMBER);
modelName       := fptr.getParamString(fptr.LIBFPTR_PARAM_MODEL_NAME);
firmwareVersion := fptr.getParamString(fptr.LIBFPTR_PARAM_UNIT_VERSION);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_STATUS)
fptr.QueryData()

operatorID := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_OPERATOR_ID)
logicalNumber := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_LOGICAL_NUMBER)
shiftState := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_SHIFT_STATE)
model := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_MODEL)
mode := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_MODE)
submode := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_SUBMODE)
receiptNumber := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_RECEIPT_NUMBER)
documentNumber := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENT_NUMBER)
shiftNumber := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_SHIFT_NUMBER)
receiptType := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE)
documentType := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENT_TYPE)
lineLength := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH)
lineLengthPix := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX)

receiptSum := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_RECEIPT_SUM)

isOperatorRegistered := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_OPERATOR_REGISTERED)
isFiscalDevice := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_FISCAL)
isFiscalFN := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_FN_FISCAL)
isFNPresent := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_FN_PRESENT)
isInvalidFN := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_INVALID_FN);
isCashDrawerOpened := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_CASHDRAWER_OPENED)
isPaperPresent := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT)
isPaperNearEnd := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_PAPER_NEAR_END)
isCoverOpened := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_COVER_OPENED)
isPrinterConnectionLost := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_PRINTER_CONNECTION_LOST)
isPrinterError := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_PRINTER_ERROR)
isCutError := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_CUT_ERROR)
isPrinterOverheat := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_PRINTER_OVERHEAT)
isDeviceBlocked := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_BLOCKED)

dateTime := fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_DATE_TIME)

serialNumber := fptr.GetParamString(fptr10.LIBFPTR_PARAM_SERIAL_NUMBER)
modelName := fptr.GetParamString(fptr10.LIBFPTR_PARAM_MODEL_NAME)
firmwareVersion := fptr.GetParamString(fptr10.LIBFPTR_PARAM_UNIT_VERSION)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_STATUS);
Fptr.queryData();

operatorID = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_OPERATOR_ID);
logicalNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_LOGICAL_NUMBER);
shiftState = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_SHIFT_STATE);
model = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_MODEL);
mode = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_MODE);
submode = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_SUBMODE);
receiptNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_RECEIPT_NUMBER);
documentNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
shiftNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_SHIFT_NUMBER);
receiptType = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE);
documentType = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENT_TYPE);
lineLength = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
lineLengthPix = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX);

receiptSum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_RECEIPT_SUM);

isOperatorRegistered = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_OPERATOR_REGISTERED);
isFiscalDevice = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_FISCAL);
isFiscalFN = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_FN_FISCAL);
isFNPresent = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_FN_PRESENT);
isInvalidFN = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_INVALID_FN);
isCashDrawerOpened = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_CASHDRAWER_OPENED);
isPaperPresent = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT);
isPaperNearEnd = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_PAPER_NEAR_END);
isCoverOpened = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_COVER_OPENED);
isPrinterConnectionLost = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_PRINTER_CONNECTION_LOST);
isPrinterError = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_PRINTER_ERROR);
isCutError = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_CUT_ERROR);
isPrinterOverheat = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_PRINTER_OVERHEAT);
isDeviceBlocked = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_BLOCKED);

dateTime = Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_DATE_TIME);

serialNumber = Fptr.getParamString(Fptr.LIBFPTR_PARAM_SERIAL_NUMBER);
modelName = Fptr.getParamString(Fptr.LIBFPTR_PARAM_MODEL_NAME);
firmwareVersion = Fptr.getParamString(Fptr.LIBFPTR_PARAM_UNIT_VERSION);
|

Для запроса общей информации и статуса необходимо вызвать метод / queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_STATUS.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_OPERATOR_ID Номер кассира int
LIBFPTR_PARAM_OPERATOR_REGISTERED Выполнена идентификация кассира bool
LIBFPTR_PARAM_LOGICAL_NUMBER Номер ККТ в магазине int
LIBFPTR_PARAM_DATE_TIME Дата и время ККТ datetime
LIBFPTR_PARAM_FISCAL Флаг регистрации ККТ bool
LIBFPTR_PARAM_FN_FISCAL Флаг фискализации ФН bool
LIBFPTR_PARAM_FN_PRESENT Флаг наличия ФН в ККТ bool
LIBFPTR_PARAM_INVALID_FN Флаг корректности ФН bool
LIBFPTR_PARAM_SHIFT_STATE Состояние смены int
LIBFPTR_PARAM_CASHDRAWER_OPENED Денежный ящик открыт bool
LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT Наличие бумаги bool
LIBFPTR_PARAM_PAPER_NEAR_END Бумага скоро закончится. Если датчика
скорого окончания бумаги в ККТ нет, то будет всегда возвращаться false
bool
LIBFPTR_PARAM_COVER_OPENED Крышка открыта bool
LIBFPTR_PARAM_SERIAL_NUMBER Заводской номер ККТ string
LIBFPTR_PARAM_MODEL Номер модели ККТ int
LIBFPTR_PARAM_MODE Режим ККТ int
LIBFPTR_PARAM_SUBMODE Подрежим ККТ int
LIBFPTR_PARAM_RECEIPT_NUMBER Номер чека (внутренний счетчик ККТ) int
LIBFPTR_PARAM_DOCUMENT_NUMBER Номер документа (внутренний счетчик
ККТ) int
LIBFPTR_PARAM_SHIFT_NUMBER Номер открытой смены или номер последней
закрытой смены + 1 int
LIBFPTR_PARAM_RECEIPT_TYPE Тип открытого чека int
LIBFPTR_PARAM_DOCUMENT_TYPE Тип открытого документа int
LIBFPTR_PARAM_RECEIPT_SUM Сумма текущего чека double
LIBFPTR_PARAM_RECEIPT_LINE_LENGTH Ширина чековой ленты, симв. int
LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX Ширина чековой ленты, пикс. int
LIBFPTR_PARAM_MODEL_NAME Название ККТ string
LIBFPTR_PARAM_UNIT_VERSION Версия ПО ККТ string
LIBFPTR_PARAM_PRINTER_CONNECTION_LOST Потеряно соединение с печатным
механизмом bool
LIBFPTR_PARAM_PRINTER_ERROR Невосстановимая ошибка печатного
механизма bool
LIBFPTR_PARAM_CUT_ERROR Ошибка отрезчика bool
LIBFPTR_PARAM_PRINTER_OVERHEAT Перегрев печатного механизма bool
LIBFPTR_PARAM_BLOCKED ККТ заблокирована из-за ошибок bool

Значение LIBFPTR_PARAM_CASH_DRAWER_STATUS может быть инвертировано по
настройке LIBFPTR_SETTING_INVERT_CASH_DRAWER_STATUS.

Возможные значения для состояния смены (LIBFPTR_PARAM_SHIFT_STATE):

  • LIBFPTR_SS_CLOSED — смена закрыта;
  • LIBFPTR_SS_OPENED — смена открыта;
  • LIBFPTR_SS_EXPIRED — смена истекла.

Возможные значения для типа открытого чека (LIBFPTR_PARAM_RECEIPT_TYPE):

  • LIBFPTR_RT_CLOSED — чек закрыт;
  • LIBFPTR_RT_SELL — чек прихода;
  • LIBFPTR_RT_SELL_RETURN — чек возврата прихода;
  • LIBFPTR_RT_SELL_CORRECTION — чек коррекции прихода;
  • LIBFPTR_RT_SELL_RETURN_CORRECTION — чек коррекции возврата прихода;
  • LIBFPTR_RT_BUY — чек расхода;
  • LIBFPTR_RT_BUY_RETURN — чек возврата расхода;
  • LIBFPTR_RT_BUY_CORRECTION — чек коррекции расхода;
  • LIBFPTR_RT_BUY_RETURN_CORRECTION — чек коррекции возврата расхода.

Возможные значения для типа открытого документа
(LIBFPTR_PARAM_DOCUMENT_TYPE):

  • LIBFPTR_DT_CLOSED — документ закрыт;
  • LIBFPTR_DT_RECEIPT_SELL — чек прихода;
  • LIBFPTR_DT_RECEIPT_SELL_RETURN — чек возврата прихода;
  • LIBFPTR_DT_RECEIPT_BUY — чек расхода;
  • LIBFPTR_DT_RECEIPT_BUY_RETURN — чек возврата расхода;
  • LIBFPTR_DT_OPEN_SHIFT — документ открытия смены;
  • LIBFPTR_DT_CLOSE_SHIFT — документ закрытия смены;
  • LIBFPTR_DT_REGISTRATION — документ пере/регистрации;
  • LIBFPTR_DT_CLOSE_ARCHIVE — документ закрытия архива ФН;
  • LIBFPTR_DT_OFD_EXCHANGE_STATUS — отчёт о состоянии расчётов;
  • LIBFPTR_DT_RECEIPT_SELL_CORRECTION — чек коррекции прихода;
  • LIBFPTR_DT_RECEIPT_BUY_CORRECTION — чек коррекции расхода;
  • LIBFPTR_DT_RECEIPT_SELL_RETURN_CORRECTION — чек коррекции возврата
    прихода;
  • LIBFPTR_DT_RECEIPT_BUY_RETURN_CORRECTION — чек коррекции возврата
    расхода;
  • LIBFPTR_DT_DOCUMENT_SERVICE — сервисный документ;
  • LIBFPTR_DT_DOCUMENT_COPY — копия документа.

Возможные значения для номера модели (LIBFPTR_PARAM_MODEL)
представлены в разделе Список настроек <#driver_settings>.

Поддерживается для всех ККТ

Короткий запрос статуса ККТ

Короткий запрос статуса ККТ

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_SHORT_STATUS);
libfptr_query_data(fptr);

bool isCashDrawerOpened = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_CASHDRAWER_OPENED) != 0);
bool isPaperPresent = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT) != 0);
bool isPaperNearEnd = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_PAPER_NEAR_END) != 0);
bool isCoverOpened = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_COVER_OPENED) != 0);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_SHORT_STATUS);
fptr.queryData();

bool isCashDrawerOpened = fptr.getParamBool(LIBFPTR_PARAM_CASHDRAWER_OPENED);
bool isPaperPresent = fptr.getParamBool(LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT);
bool isPaperNearEnd = fptr.getParamBool(LIBFPTR_PARAM_PAPER_NEAR_END);
bool isCoverOpened = fptr.getParamBool(LIBFPTR_PARAM_COVER_OPENED);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_SHORT_STATUS)
fptr.queryData()

isCashDrawerOpened = fptr.getParamBool(IFptr.LIBFPTR_PARAM_CASHDRAWER_OPENED)
isPaperPresent = fptr.getParamBool(IFptr.LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT)
isPaperNearEnd = fptr.getParamBool(IFptr.LIBFPTR_PARAM_PAPER_NEAR_END)
isCoverOpened = fptr.getParamBool(IFptr.LIBFPTR_PARAM_COVER_OPENED)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_SHORT_STATUS);
fptr.queryData();

boolean isCashDrawerOpened = fptr.getParamBool(IFptr.LIBFPTR_PARAM_CASHDRAWER_OPENED);
boolean isPaperPresent = fptr.getParamBool(IFptr.LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT);
boolean isPaperNearEnd = fptr.getParamBool(IFptr.LIBFPTR_PARAM_PAPER_NEAR_END);
boolean isCoverOpened = fptr.getParamBool(IFptr.LIBFPTR_PARAM_COVER_OPENED);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_SHORT_STATUS);
fptr.queryData();

boolean isCashDrawerOpened = fptr.getParamBool(IFptr.LIBFPTR_PARAM_CASHDRAWER_OPENED);
boolean isPaperPresent = fptr.getParamBool(IFptr.LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT);
boolean isPaperNearEnd = fptr.getParamBool(IFptr.LIBFPTR_PARAM_PAPER_NEAR_END);
boolean isCoverOpened = fptr.getParamBool(IFptr.LIBFPTR_PARAM_COVER_OPENED);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_SHORT_STATUS];
[fptr queryData];

bool isCashDrawerOpened = [fptr getParamBool:LIBFPTR_PARAM_CASHDRAWER_OPENED];
bool isPaperPresent = [fptr getParamBool:LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT];
bool isPaperNearEnd = [fptr getParamBool:LIBFPTR_PARAM_PAPER_NEAR_END];
bool isCoverOpened = [fptr getParamBool:LIBFPTR_PARAM_COVER_OPENED];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_SHORT_STATUS);
fptr.queryData();

bool isCashDrawerOpened = fptr.getParamBool(Constants.LIBFPTR_PARAM_CASHDRAWER_OPENED);
bool isPaperPresent = fptr.getParamBool(Constants.LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT);
bool isPaperNearEnd = fptr.getParamBool(Constants.LIBFPTR_PARAM_PAPER_NEAR_END);
bool isCoverOpened = fptr.getParamBool(Constants.LIBFPTR_PARAM_COVER_OPENED);
|

|var
isCashDrawerOpened: LongBool;
isPaperPresent: LongBool;
isPaperNearEnd: LongBool;
isCoverOpened: LongBool;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_SHORT_STATUS);
fptr.queryData;

isCashDrawerOpened      := fptr.getParamBool(fptr.LIBFPTR_PARAM_CASHDRAWER_OPENED);
isPaperPresent          := fptr.getParamBool(fptr.LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT);
isPaperNearEnd          := fptr.getParamBool(fptr.LIBFPTR_PARAM_PAPER_NEAR_END);
isCoverOpened           := fptr.getParamBool(fptr.LIBFPTR_PARAM_COVER_OPENED);

end;
|

|fptr.SetParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_SHORT_STATUS)
fptr.QueryData()

isCashDrawerOpened := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_CASHDRAWER_OPENED)
isPaperPresent := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT)
isPaperNearEnd := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_PAPER_NEAR_END)
isCoverOpened := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_COVER_OPENED)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_STATUS);
Fptr.queryData();

isCashDrawerOpened = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_CASHDRAWER_OPENED);
isPaperPresent = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT);
isPaperNearEnd = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_PAPER_NEAR_END);
isCoverOpened = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_COVER_OPENED);
|

Для короткого запроса статуса ККТ необходимо вызвать метод / queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_SHORT_STATUS.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_CASHDRAWER_OPENED Денежный ящик открыт bool
LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT Наличие бумаги bool
LIBFPTR_PARAM_PAPER_NEAR_END Бумага скоро закончится. Если датчика
скорого окончания бумаги в ККТ нет, то будет всегда возвращаться false
bool
LIBFPTR_PARAM_COVER_OPENED Крышка открыта bool

Значение LIBFPTR_PARAM_CASH_DRAWER_STATUS может быть инвертировано по
настройке LIBFPTR_SETTING_INVERT_CASH_DRAWER_STATUS.

Поддерживается для всех ККТ

Сумма наличных в денежном ящике

Запрос суммы наличных в денежном ящике

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CASH_SUM);
libfptr_query_data(fptr);

double cashSum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_SUM);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CASH_SUM);
fptr.queryData();

double cashSum = fptr.getParamDouble(LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CASH_SUM)
fptr.queryData()

cashSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CASH_SUM);
fptr.queryData();

double cashSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CASH_SUM);
fptr.queryData();

double cashSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_CASH_SUM];
[fptr queryData];

double cashSum = [fptr getParamDouble:LIBFPTR_PARAM_SUM];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_CASH_SUM);
fptr.queryData();

double cashSum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_SUM);
|

|var
cashSum: Double;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_CASH_SUM);
fptr.queryData;

cashSum := fptr.getParamDouble(fptr.LIBFPTR_PARAM_SUM);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_CASH_SUM)
fptr.QueryData()

cashSum := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_SUM)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_CASH_SUM);
Fptr.queryData();

cashSum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_SUM);
|

Для запроса суммы наличности в денежном ящике необходимо вызвать метод
/queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_CASH_SUM.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_SUM Сумма наличных в ДЯ double

Поддерживается для всех ККТ

Версия модуля

Запрос версии прошивки

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_UNIT_VERSION);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_UNIT_TYPE, LIBFPTR_UT_FIRMWARE);
libfptr_query_data(fptr);

std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_UNIT_VERSION, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_UNIT_VERSION, &str[0], str.size());
}
std::wstring firmwareVersion = std::wstring(&str[0]);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(LIBFPTR_PARAM_UNIT_TYPE, LIBFPTR_UT_FIRMWARE);
fptr.queryData();

std::wstring firmwareVersion = fptr.getParamString(LIBFPTR_PARAM_UNIT_VERSION);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_UNIT_VERSION)
fptr.setParam(IFptr.LIBFPTR_PARAM_UNIT_TYPE, IFptr.LIBFPTR_UT_FIRMWARE)
fptr.queryData()

firmwareVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(IFptr.LIBFPTR_PARAM_UNIT_TYPE, IFptr.LIBFPTR_UT_FIRMWARE);
fptr.queryData();

String firmwareVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(IFptr.LIBFPTR_PARAM_UNIT_TYPE, IFptr.LIBFPTR_UT_FIRMWARE);
fptr.queryData();

String firmwareVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_UNIT_VERSION];
[fptr setParam:LIBFPTR_PARAM_UNIT_TYPE intParam:LIBFPTR_UT_FIRMWARE];
[fptr queryData];

NSString *firmwareVersion = [fptr getParamString:LIBFPTR_PARAM_UNIT_VERSION];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(Constants.LIBFPTR_PARAM_UNIT_TYPE, Constants.LIBFPTR_UT_FIRMWARE);
fptr.queryData();

String firmwareVersion = fptr.getParamString(Constants.LIBFPTR_PARAM_UNIT_VERSION);
|

|var
firmwareVersion: String;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(fptr.LIBFPTR_PARAM_UNIT_TYPE, fptr.LIBFPTR_UT_FIRMWARE);
fptr.queryData;

firmwareVersion := fptr.getParamString(fptr.LIBFPTR_PARAM_UNIT_VERSION);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_UNIT_VERSION)
fptr.SetParam(fptr10.LIBFPTR_PARAM_UNIT_TYPE, fptr10.LIBFPTR_UT_FIRMWARE)
fptr.QueryData()

firmwareVersion := fptr.GetParamString(fptr10.LIBFPTR_PARAM_UNIT_VERSION)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_UNIT_VERSION);
Fptr.setParam(Fptr.LIBFPTR_PARAM_UNIT_TYPE, Fptr.LIBFPTR_UT_FIRMWARE);
Fptr.queryData();

firmwareVersion = Fptr.getParamString(Fptr.LIBFPTR_PARAM_UNIT_VERSION);
|

Запрос версии конфигурации

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_UNIT_VERSION);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_UNIT_TYPE, LIBFPTR_UT_CONFIGURATION);
libfptr_query_data(fptr);

std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_UNIT_VERSION, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_UNIT_VERSION, &str[0], str.size());
}
std::wstring configurationVersion = std::wstring(&str[0]);

int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_UNIT_RELEASE_VERSION, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_UNIT_RELEASE_VERSION, &str[0], str.size());
}
std::wstring releaseVersion = std::wstring(&str[0]);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(IBFPTR_PARAM_UNIT_TYPE, LIBFPTR_UT_CONFIGURATION);
fptr.queryData();

std::wstring configurationVersion = fptr.getParamString(LIBFPTR_PARAM_UNIT_VERSION);
std::wstring releaseVersion = fptr.getParamString(LIBFPTR_PARAM_UNIT_RELEASE_VERSION);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_UNIT_VERSION)
fptr.setParam(IFptr.LIBFPTR_PARAM_UNIT_TYPE, IFptr.LIBFPTR_UT_CONFIGURATION)
fptr.queryData()

configurationVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION)
releaseVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_RELEASE_VERSION)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(IFptr.LIBFPTR_PARAM_UNIT_TYPE, IFptr.LIBFPTR_UT_CONFIGURATION);
fptr.queryData();

String configurationVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION);
String releaseVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_RELEASE_VERSION);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(IFptr.LIBFPTR_PARAM_UNIT_TYPE, IFptr.LIBFPTR_UT_CONFIGURATION);
fptr.queryData();

String configurationVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION);
String releaseVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_RELEASE_VERSION);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_UNIT_VERSION];
[fptr setParam:LIBFPTR_PARAM_UNIT_TYPE intParam:LIBFPTR_UT_CONFIGURATION];
[fptr queryData];

NSString *configurationVersion = [fptr getParamString:LIBFPTR_PARAM_UNIT_VERSION];
NSString *releaseVersion = [fptr getParamString:LIBFPTR_PARAM_UNIT_RELEASE_VERSION];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(Constants.LIBFPTR_PARAM_UNIT_TYPE, Constants.LIBFPTR_UT_CONFIGURATION);
fptr.queryData();

String configurationVersion = fptr.getParamString(Constants.LIBFPTR_PARAM_UNIT_VERSION);
String releaseVersion = fptr.getParamString(Constants.LIBFPTR_PARAM_UNIT_RELEASE_VERSION);
|

|var
configurationVersion: String;
releaseVersion: String;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(fptr.LIBFPTR_PARAM_UNIT_TYPE, fptr.LIBFPTR_UT_CONFIGURATION);
fptr.queryData;

configurationVersion := fptr.getParamString(fptr.LIBFPTR_PARAM_UNIT_VERSION);
releaseVersion := fptr.getParamString(fptr.LIBFPTR_PARAM_UNIT_RELEASE_VERSION);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_UNIT_VERSION)
fptr.SetParam(fptr10.LIBFPTR_PARAM_UNIT_TYPE, fptr10.LIBFPTR_UT_CONFIGURATION)
fptr.QueryData()

configurationVersion := fptr.GetParamString(fptr10.LIBFPTR_PARAM_UNIT_VERSION)
releaseVersion := fptr.GetParamString(fptr10.LIBFPTR_PARAM_UNIT_RELEASE_VERSION)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_UNIT_VERSION);
Fptr.setParam(Fptr.LIBFPTR_PARAM_UNIT_TYPE, Fptr.LIBFPTR_UT_CONFIGURATION);
Fptr.queryData();

configurationVersion = Fptr.getParamString(Fptr.LIBFPTR_PARAM_UNIT_VERSION);
releaseVersion = Fptr.getParamString(Fptr.LIBFPTR_PARAM_UNIT_RELEASE_VERSION);
|

Запрос версии движка шаблонов

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_UNIT_VERSION);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_UNIT_TYPE, LIBFPTR_UT_TEMPLATES);
libfptr_query_data(fptr);

std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_UNIT_VERSION, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_UNIT_VERSION, &str[0], str.size());
}
std::wstring templatesVersion = std::wstring(&str[0]);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(LIBFPTR_PARAM_UNIT_TYPE, LIBFPTR_UT_TEMPLATES);
fptr.queryData();

std::wstring templatesVersion = fptr.getParamString(LIBFPTR_PARAM_UNIT_VERSION);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_UNIT_VERSION)
fptr.setParam(IFptr.LIBFPTR_PARAM_UNIT_TYPE, IFptr.LIBFPTR_UT_TEMPLATES)
fptr.queryData()

templatesVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(IFptr.LIBFPTR_PARAM_UNIT_TYPE, IFptr.LIBFPTR_UT_TEMPLATES);
fptr.queryData();

String templatesVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(IFptr.LIBFPTR_PARAM_UNIT_TYPE, IFptr.LIBFPTR_UT_TEMPLATES);
fptr.queryData();

String templatesVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_UNIT_VERSION];
[fptr setParam:LIBFPTR_PARAM_UNIT_TYPE intParam:LIBFPTR_UT_TEMPLATES];
[fptr queryData];

NSString *templatesVersion = [fptr getParamString:LIBFPTR_PARAM_UNIT_VERSION];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(Constants.LIBFPTR_PARAM_UNIT_TYPE, Constants.LIBFPTR_UT_TEMPLATES);
fptr.queryData();

String templatesVersion = fptr.getParamString(Constants.LIBFPTR_PARAM_UNIT_VERSION);
|

|var
templatesVersion: String;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(fptr.LIBFPTR_PARAM_UNIT_TYPE, fptr.LIBFPTR_UT_TEMPLATES);
fptr.queryData;

templatesVersion := fptr.getParamString(fptr.LIBFPTR_PARAM_UNIT_VERSION);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_UNIT_VERSION)
fptr.SetParam(fptr10.LIBFPTR_PARAM_UNIT_TYPE, fptr10.LIBFPTR_UT_TEMPLATES)
fptr.QueryData()

templatesVersion := fptr.GetParamString(fptr10.LIBFPTR_PARAM_UNIT_VERSION)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_UNIT_VERSION);
Fptr.setParam(Fptr.LIBFPTR_PARAM_UNIT_TYPE, Fptr.LIBFPTR_UT_TEMPLATES);
Fptr.queryData();

templatesVersion = Fptr.getParamString(Fptr.LIBFPTR_PARAM_UNIT_VERSION);
|

Запрос версии блока управления

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_UNIT_VERSION);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_UNIT_TYPE, LIBFPTR_UT_CONTROL_UNIT);
libfptr_query_data(fptr);

std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_UNIT_VERSION, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_UNIT_VERSION, &str[0], str.size());
}
std::wstring controlUnitVersion = std::wstring(&str[0]);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(LIBFPTR_PARAM_UNIT_TYPE, LIBFPTR_UT_CONTROL_UNIT);
fptr.queryData();

std::wstring controlUnitVersion = fptr.getParamString(LIBFPTR_PARAM_UNIT_VERSION);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_UNIT_VERSION)
fptr.setParam(IFptr.LIBFPTR_PARAM_UNIT_TYPE, IFptr.LIBFPTR_UT_CONTROL_UNIT)
fptr.queryData()

controlUnitVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(IFptr.LIBFPTR_PARAM_UNIT_TYPE, IFptr.LIBFPTR_UT_CONTROL_UNIT);
fptr.queryData();

String controlUnitVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(IFptr.LIBFPTR_PARAM_UNIT_TYPE, IFptr.LIBFPTR_UT_CONTROL_UNIT);
fptr.queryData();

String controlUnitVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_UNIT_VERSION];
[fptr setParam:LIBFPTR_PARAM_UNIT_TYPE intParam:LIBFPTR_UT_CONTROL_UNIT];
[fptr queryData];

NSString *controlUnitVersion = [fptr getParamString:LIBFPTR_PARAM_UNIT_VERSION];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(Constants.LIBFPTR_PARAM_UNIT_TYPE, Constants.LIBFPTR_UT_CONTROL_UNIT);
fptr.queryData();

String controlUnitVersion = fptr.getParamString(Constants.LIBFPTR_PARAM_UNIT_VERSION);
|

|var
controlUnitVersion: String;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(fptr.LIBFPTR_PARAM_UNIT_TYPE, fptr.LIBFPTR_UT_CONTROL_UNIT);
fptr.queryData;

controlUnitVersion := fptr.getParamString(fptr.LIBFPTR_PARAM_UNIT_VERSION);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_UNIT_VERSION)
fptr.SetParam(fptr10.LIBFPTR_PARAM_UNIT_TYPE, fptr10.LIBFPTR_UT_CONTROL_UNIT)
fptr.QueryData()

controlUnitVersion := fptr.GetParamString(fptr10.LIBFPTR_PARAM_UNIT_VERSION)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_UNIT_VERSION);
Fptr.setParam(Fptr.LIBFPTR_PARAM_UNIT_TYPE, Fptr.LIBFPTR_UT_CONTROL_UNIT);
Fptr.queryData();

controlUnitVersion = Fptr.getParamString(Fptr.LIBFPTR_PARAM_UNIT_VERSION);
|

Запрос версии загрузчика

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_UNIT_VERSION);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_UNIT_TYPE, LIBFPTR_UT_BOOT);
libfptr_query_data(fptr);

std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_UNIT_VERSION, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_UNIT_VERSION, &str[0], str.size());
}
std::wstring bootVersion = std::wstring(&str[0]);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(LIBFPTR_PARAM_UNIT_TYPE, LIBFPTR_UT_BOOT);
fptr.queryData();

std::wstring bootVersion = fptr.getParamString(LIBFPTR_PARAM_UNIT_VERSION);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_UNIT_VERSION)
fptr.setParam(IFptr.LIBFPTR_PARAM_UNIT_TYPE, IFptr.LIBFPTR_UT_BOOT)
fptr.queryData()

bootVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(IFptr.LIBFPTR_PARAM_UNIT_TYPE, IFptr.LIBFPTR_UT_BOOT);
fptr.queryData();

String bootVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(IFptr.LIBFPTR_PARAM_UNIT_TYPE, IFptr.LIBFPTR_UT_BOOT);
fptr.queryData();

String bootVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_UNIT_VERSION];
[fptr setParam:LIBFPTR_PARAM_UNIT_TYPE intParam:LIBFPTR_UT_BOOT];
[fptr queryData];

NSString *bootVersion = [fptr getParamString:LIBFPTR_PARAM_UNIT_VERSION];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(Constants.LIBFPTR_PARAM_UNIT_TYPE, Constants.LIBFPTR_UT_BOOT);
fptr.queryData();

String bootVersion = fptr.getParamString(Constants.LIBFPTR_PARAM_UNIT_VERSION);
|

|var
bootVersion: String;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_UNIT_VERSION);
fptr.setParam(fptr.LIBFPTR_PARAM_UNIT_TYPE, fptr.LIBFPTR_UT_BOOT);
fptr.queryData;

bootVersion := fptr.getParamString(fptr.LIBFPTR_PARAM_UNIT_VERSION);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_UNIT_VERSION)
fptr.SetParam(fptr10.LIBFPTR_PARAM_UNIT_TYPE, fptr10.LIBFPTR_UT_BOOT)
fptr.QueryData()

bootVersion := fptr.GetParamString(fptr10.LIBFPTR_PARAM_UNIT_VERSION)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_UNIT_VERSION);
Fptr.setParam(Fptr.LIBFPTR_PARAM_UNIT_TYPE, Fptr.LIBFPTR_UT_BOOT);
Fptr.queryData();

bootVersion = Fptr.getParamString(Fptr.LIBFPTR_PARAM_UNIT_VERSION);
|

Для запроса версии модуля необходимо вызвать метод /queryData()/ с
типом запроса LIBFPTR_PARAM_DATA_TYPE равным LIBFPTR_DT_UNIT_VERSION
и указать один из модулей в параметре LIBFPTR_PARAM_UNIT_TYPE:

  • LIBFPTR_UT_FIRMWARE — прошивка;
  • LIBFPTR_UT_CONFIGURATION — конфигурация;
  • LIBFPTR_UT_TEMPLATES — движок шаблонов;
  • LIBFPTR_UT_CONTROL_UNIT — блок управления;
  • LIBFPTR_UT_BOOT — загрузчик.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_UNIT_VERSION Версия модуля string
LIBFPTR_PARAM_UNIT_RELEASE_VERSION Версия релиза (только для запроса
LIBFPTR_UT_CONFIGURATION) string

Поддерживается для всех ККТ

Параметры массива картинок

Запрос параметров картинок

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_PICTURES_ARRAY_INFO);
libfptr_query_data(fptr);

int count = libfptr_get_param_int(fptr, LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_PICTURES_ARRAY_INFO);
fptr.queryData();

uint count = fptr.getParamInt(LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_PICTURES_ARRAY_INFO)
fptr.queryData()

count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_PICTURES_ARRAY_INFO);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_PICTURES_ARRAY_INFO);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_PICTURES_ARRAY_INFO];
[fptr queryData];

uint count = [fptr getParamInt:LIBFPTR_PARAM_COUNT];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_PICTURES_ARRAY_INFO);
fptr.queryData();

uint count = fptr.getParamInt(Constants.LIBFPTR_PARAM_COUNT);
|

|var
count: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_PICTURES_ARRAY_INFO);
fptr.queryData;

count := fptr.getParamInt(fptr.LIBFPTR_PARAM_COUNT);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_PICTURES_ARRAY_INFO)
fptr.QueryData()

count := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_COUNT)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_PICTURES_ARRAY_INFO);
Fptr.queryData();

count = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_COUNT);
|

Для запроса параметров массива картинок необходимо вызвать метод / queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_PICTURES_ARRAY_INFO.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_COUNT Количество картинок int

Для ККТ версий 5.X параметр LIBFPTR_PARAM_COUNT принимает значения 1
(если картинка клише загружена) или 0 (если картинка не загружена)

Параметры картинки в памяти

Запрос параметров картинки в памяти ККТ

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_PICTURE_INFO);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_PICTURE_NUMBER, 1);
libfptr_query_data(fptr);

int width = libfptr_get_param_int(fptr, LIBFPTR_PARAM_WIDTH);
int height = libfptr_get_param_int(fptr, LIBFPTR_PARAM_HEIGHT);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_PICTURE_INFO);
fptr.setParam(LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.queryData();

uint width = fptr.getParamInt(LIBFPTR_PARAM_WIDTH);
uint height = fptr.getParamInt(LIBFPTR_PARAM_HEIGHT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_PICTURE_INFO)
fptr.setParam(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1)
fptr.queryData()

width = fptr.getParamInt(IFptr.LIBFPTR_PARAM_WIDTH)
height = fptr.getParamInt(IFptr.LIBFPTR_PARAM_HEIGHT)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_PICTURE_INFO);
fptr.setParam(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.queryData();

long width = fptr.getParamInt(IFptr.LIBFPTR_PARAM_WIDTH);
long height = fptr.getParamInt(IFptr.LIBFPTR_PARAM_HEIGHT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_PICTURE_INFO);
fptr.setParam(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.queryData();

long width = fptr.getParamInt(IFptr.LIBFPTR_PARAM_WIDTH);
long height = fptr.getParamInt(IFptr.LIBFPTR_PARAM_HEIGHT);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_PICTURE_INFO];
[fptr setParam:LIBFPTR_PARAM_PICTURE_NUMBER intParam:1];
[fptr queryData];

uint width = [fptr getParamInt:LIBFPTR_PARAM_WIDTH];
uint height = [fptr getParamInt:LIBFPTR_PARAM_HEIGHT];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_PICTURE_INFO);
fptr.setParam(Constants.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.queryData();

uint width = fptr.getParamInt(Constants.LIBFPTR_PARAM_WIDTH);
uint height = fptr.getParamInt(Constants.LIBFPTR_PARAM_HEIGHT);
|

|var
width: Longint;
height: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_PICTURE_INFO);
fptr.setParam(fptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.queryData;

width  := fptr.getParamInt(fptr.LIBFPTR_PARAM_WIDTH);
height := fptr.getParamInt(fptr.LIBFPTR_PARAM_HEIGHT);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_PICTURE_INFO)
fptr.SetParam(fptr10.LIBFPTR_PARAM_PICTURE_NUMBER, 1)
fptr.QueryData()

width := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_WIDTH)
height := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_HEIGHT)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_PICTURE_INFO);
Fptr.setParam(Fptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
Fptr.queryData();

width = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_WIDTH);
height = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_HEIGHT);
|

Для запроса параметров картинки из памяти ККТ необходимо вызвать метод
/queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_PICTURE_INFO и указать номер картинки в параметре
LIBFPTR_PARAM_PICTURE_NUMBER.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_WIDTH Ширина картинки, пикс. int
LIBFPTR_PARAM_HEIGHT Высота картинки, пикс. int

Поддерживается только для ККТ версий 3.X

Состояние лицензии ККТ

Запрос состояния кода защиты / лицензии

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_LICENSE_ACTIVATED);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_LICENSE_NUMBER, 4);
libfptr_query_data(fptr);

bool entered = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_LICENSE_ENTERED) != 0);
int yearFrom, monthFrom, dayFrom;
libfptr_get_param_datetime(fptr, LIBFPTR_PARAM_LICENSE_VALID_FROM, &yearFrom, &monthFrom, &dayFrom);
int yearUntil, monthUntil, dayUntil;
libfptr_get_param_datetime(fptr, LIBFPTR_PARAM_LICENSE_VALID_UNTIL, &yearUntil, &monthUntil, &dayUntil);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_LICENSE_ACTIVATED);
fptr.setParam(LIBFPTR_PARAM_LICENSE_NUMBER, 4);
fptr.queryData();

bool entered = fptr.getParamBool(LIBFPTR_PARAM_LICENSE_ENTERED);
std::tm dateFrom = fptr.getParamDateTime(LIBFPTR_PARAM_LICENSE_VALID_FROM);
std::tm dateUntil= fptr.getParamDateTime(LIBFPTR_PARAM_LICENSE_VALID_UNTIL);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_LICENSE_ACTIVATED)
fptr.setParam(IFptr.LIBFPTR_PARAM_LICENSE_NUMBER, 4)
fptr.queryData()

entered = fptr.getParamBool(IFptr.LIBFPTR_PARAM_LICENSE_ENTERED)
dateFrom = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_LICENSE_VALID_FROM)
dateUntil= fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_LICENSE_VALID_UNTIL)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_LICENSE_ACTIVATED);
fptr.setParam(IFptr.LIBFPTR_PARAM_LICENSE_NUMBER, 4);
fptr.queryData();

boolean entered = fptr.getParamBool(IFptr.LIBFPTR_PARAM_LICENSE_ENTERED);
Date dateFrom = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_LICENSE_VALID_FROM);
Date dateUntil= fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_LICENSE_VALID_UNTIL);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_LICENSE_ACTIVATED);
fptr.setParam(IFptr.LIBFPTR_PARAM_LICENSE_NUMBER, 4);
fptr.queryData();

boolean entered = fptr.getParamBool(IFptr.LIBFPTR_PARAM_LICENSE_ENTERED);
Date dateFrom = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_LICENSE_VALID_FROM);
Date dateUntil= fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_LICENSE_VALID_UNTIL);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_LICENSE_ACTIVATED];
[fptr setParam:LIBFPTR_PARAM_LICENSE_NUMBER intParam:4];
[fptr queryData];

bool entered = [fptr getParamBool:LIBFPTR_PARAM_LICENSE_ENTERED];
NSDate *dateFrom = [fptr getParamDateTime:LIBFPTR_PARAM_LICENSE_VALID_FROM];
NSDate *dateUntil = [fptr getParamDateTime:LIBFPTR_PARAM_LICENSE_VALID_UNTIL];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_LICENSE_ACTIVATED);
fptr.setParam(Constants.LIBFPTR_PARAM_LICENSE_NUMBER, 4);
fptr.queryData();

bool entered = fptr.getParamBool(Constants.LIBFPTR_PARAM_LICENSE_ENTERED);
DateTime dateFrom = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_LICENSE_VALID_FROM);
DateTime dateUntil = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_LICENSE_VALID_UNTIL);
|

|var
entered: LongBool;
dateFrom, dateUntil: TDateTime;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_LICENSE_ACTIVATED);
fptr.setParam(fptr.LIBFPTR_PARAM_LICENSE_NUMBER, 4);
fptr.queryData;

entered := fptr.getParamBool(fptr.LIBFPTR_PARAM_LICENSE_ENTERED);
dateFrom := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_LICENSE_VALID_FROM);
dateUntil := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_LICENSE_VALID_UNTIL);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_LICENSE_ACTIVATED)
fptr.SetParam(fptr10.LIBFPTR_PARAM_LICENSE_NUMBER, 4)
fptr.QueryData();

entered := fptr.GetParamBool(Constants.LIBFPTR_PARAM_LICENSE_ENTERED)
dateFrom := fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_LICENSE_VALID_FROM)
dateUntil := fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_LICENSE_VALID_UNTIL)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_LICENSE_ACTIVATED);
Fptr.setParam(Fptr.LIBFPTR_PARAM_LICENSE_NUMBER, 1);
Fptr.queryData();

entered = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_LICENSE_ENTERED);
dateFrom = Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_LICENSE_VALID_FROM);
dateUntil = Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_LICENSE_VALID_UNTIL);
|

Для запроса состояния кода защиты / лицензии необходимо вызвать метод / queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_LICENSE_ACTIVATED и указать номер кода защиты / лицензии в
параметре LIBFPTR_PARAM_LICENSE_NUMBER. После выполнения метода
параметр LIBFPTR_PARAM_LICENSE_ENTERED примет значение true, если
код защиты введен, и false, если нет.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_LICENSE_ENTERED Лицензия введена bool
LIBFPTR_PARAM_LICENSE_VALID_FROM Дата начала действия лицензии datetime
LIBFPTR_PARAM_LICENSE_VALID_UNTIL Дата окончания действия лицензии
datetime

Если одну из дат получить не удалось, её значение будет равно 1970.01.01
00:00:00 (unixtime(0)).

Поддерживается для всех ККТ

Счетчики регистраций

Запрос суммы регистраций в чеках прихода (продажи)

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_REGISTRATIONS_SUM);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
libfptr_query_data(fptr);

double sum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_SUM);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_REGISTRATIONS_SUM);
fptr.setParam(LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
fptr.queryData();

double sum = fptr.getParamDouble(LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_REGISTRATIONS_SUM)
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL)
fptr.queryData()

sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_REGISTRATIONS_SUM);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.queryData();

double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_REGISTRATIONS_SUM);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.queryData();

double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_REGISTRATIONS_SUM];
[fptr setParam:LIBFPTR_PARAM_RECEIPT_TYPE intParam:LIBFPTR_RT_SELL];
[fptr queryData];

double sum = [fptr getParamDouble:LIBFPTR_PARAM_SUM];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_REGISTRATIONS_SUM);
fptr.setParam(Constants.LIBFPTR_PARAM_RECEIPT_TYPE, Constants.LIBFPTR_RT_SELL);
fptr.queryData();

double sum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_SUM);
|

|var
sum: Double;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_REGISTRATIONS_SUM);
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL);
fptr.queryData;

sum := fptr.getParamDouble(fptr.LIBFPTR_PARAM_SUM);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_REGISTRATIONS_SUM)
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE, fptr10.LIBFPTR_RT_SELL)
fptr.QueryData()

sum := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_SUM)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_REGISTRATIONS_SUM);
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE, Fptr.LIBFPTR_RT_SELL);
Fptr.queryData();

sum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_SUM);
|

Запрос количества регистраций в чеках расхода (покупки)

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_REGISTRATIONS_COUNT);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_BUY);
libfptr_query_data(fptr);

int count = libfptr_get_param_int(fptr, LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_REGISTRATIONS_COUNT);
fptr.setParam(LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_BUY);
fptr.queryData();

uint count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_REGISTRATIONS_COUNT)
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_BUY)
fptr.queryData()

count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_REGISTRATIONS_COUNT);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_BUY);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_REGISTRATIONS_COUNT);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_BUY);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_REGISTRATIONS_COUNT];
[fptr setParam:LIBFPTR_PARAM_RECEIPT_TYPE intParam:LIBFPTR_RT_BUY];
[fptr queryData];

uint count = [fptr getParamInt:LIBFPTR_PARAM_COUNT];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_REGISTRATIONS_COUNT);
fptr.setParam(Constants.LIBFPTR_PARAM_RECEIPT_TYPE, Constants.LIBFPTR_RT_BUY);
fptr.queryData();

uint count = fptr.getParamInt(Constants.LIBFPTR_PARAM_COUNT);
|

|var
count: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_REGISTRATIONS_COUNT);
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_BUY);
fptr.queryData;

count := fptr.getParamInt(fptr.LIBFPTR_PARAM_COUNT);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_REGISTRATIONS_COUNT)
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE, fptr10.LIBFPTR_RT_BUY)
fptr.QueryData()

count := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_COUNT)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_REGISTRATIONS_COUNT);
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE, Fptr.LIBFPTR_RT_BUY);
Fptr.queryData();

counted = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_COUNT);
|

Для запроса суммы регистраций необходимо вызвать метод /queryData()/ с
типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_REGISTRATIONS_SUM и указать тип чека в параметре
LIBFPTR_PARAM_RECEIPT_TYPE.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_SUM Сумма регистраций double

Для запроса количества регистраций необходимо вызвать метод / queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_REGISTRATIONS_COUNT и указать тип чека в параметре
LIBFPTR_PARAM_RECEIPT_TYPE.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_COUNT Количество регистраций int

Тип чека (LIBFPTR_PARAM_RECEIPT_TYPE) может принимать следующие значения:

  • LIBFPTR_RT_SELL — чек прихода (продажи);
  • LIBFPTR_RT_SELL_RETURN — чек возврата прихода (продажи);
  • LIBFPTR_RT_SELL_CORRECTION — чек коррекции прихода (продажи);
  • LIBFPTR_RT_BUY — чек расхода (покупки);
  • LIBFPTR_RT_BUY_RETURN — чек возврата расхода (покупки);
  • LIBFPTR_RT_BUY_CORRECTION — чек коррекции расхода (покупки).

Поддерживается только для ККТ версий 3.X

Счетчики оплат

Запрос суммы наличных платежей в чеках прихода (продажи)

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_PAYMENT_SUM);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_PAYMENT_TYPE, LIBFPTR_PT_CASH);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
libfptr_query_data(fptr);

double sum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_SUM);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_PAYMENT_SUM);
fptr.setParam(LIBFPTR_PARAM_PAYMENT_TYPE, LIBFPTR_PT_CASH);
fptr.setParam(LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
fptr.queryData();

double sum = fptr.getParamDouble(LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_PAYMENT_SUM)
fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_TYPE, IFptr.LIBFPTR_PT_CASH)
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL)
fptr.queryData()

sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_PAYMENT_SUM);
fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_TYPE, IFptr.LIBFPTR_PT_CASH);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.queryData();

double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_PAYMENT_SUM);
fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_TYPE, IFptr.LIBFPTR_PT_CASH);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.queryData();

double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_PAYMENT_SUM];
[fptr setParam:LIBFPTR_PARAM_PAYMENT_TYPE intParam:LIBFPTR_PT_CASH];
[fptr setParam:LIBFPTR_PARAM_RECEIPT_TYPE intParam:LIBFPTR_RT_SELL];
[fptr queryData];

double sum = [fptr getParamDouble:LIBFPTR_PARAM_SUM];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_PAYMENT_SUM);
fptr.setParam(Constants.LIBFPTR_PARAM_PAYMENT_TYPE, Constants.LIBFPTR_PT_CASH);
fptr.setParam(Constants.LIBFPTR_PARAM_RECEIPT_TYPE, Constants.LIBFPTR_RT_SELL);
fptr.queryData();

double sum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_SUM);
|

|var
sum: Double;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_PAYMENT_SUM);
fptr.setParam(fptr.LIBFPTR_PARAM_PAYMENT_TYPE, fptr.LIBFPTR_PT_CASH);
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL);
fptr.queryData;

sum := fptr.getParamDouble(fptr.LIBFPTR_PARAM_SUM);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_PAYMENT_SUM)
fptr.SetParam(fptr10.LIBFPTR_PARAM_PAYMENT_TYPE, fptr10.LIBFPTR_PT_CASH)
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE, fptr10.LIBFPTR_RT_SELL)
fptr.QueryData()

sum := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_SUM)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_PAYMENT_SUM);
Fptr.setParam(Fptr.LIBFPTR_PARAM_PAYMENT_TYPE, Fptr.LIBFPTR_PT_CASH);
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE, Fptr.LIBFPTR_RT_SELL);
Fptr.queryData();

sum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_SUM);
|

Для запроса суммы платежей за смену необходимо вызвать метод / queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_PAYMENT_SUM и указать тип чека в параметре
LIBFPTR_PARAM_RECEIPT_TYPE и способ расчета в параметре
LIBFPTR_PARAM_PAYMENT_TYPE.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_SUM Сумма оплат за смену double

Тип чека (LIBFPTR_PARAM_RECEIPT_TYPE) может принимать следующие значения:

  • LIBFPTR_RT_SELL — чек прихода (продажи);
  • LIBFPTR_RT_SELL_RETURN — чек возврата прихода (продажи);
  • LIBFPTR_RT_SELL_CORRECTION — чек коррекции прихода (продажи);
  • LIBFPTR_RT_BUY — чек расхода (покупки);
  • LIBFPTR_RT_BUY_RETURN — чек возврата расхода (покупки);
  • LIBFPTR_RT_BUY_CORRECTION — чек коррекции расхода (покупки).

Чеки коррекции (типы чека LIBFPTR_RT_SELL_CORRECTION и
LIBFPTR_RT_BUY_CORRECTION) поддерживаются только для ККТ версий 3.X

Способ расчета (LIBFPTR_PARAM_PAYMENT_TYPE) может принимать следующие
значения:

  • LIBFPTR_PT_CASH — наличными;
  • LIBFPTR_PT_ELECTRONICALLY — безналичными;
  • LIBFPTR_PT_PREPAID — предварительная оплата (аванс);
  • LIBFPTR_PT_CREDIT — последующая оплата (кредит);
  • LIBFPTR_PT_OTHER — иная форма оплаты (встречное предоставление);
  • LIBFPTR_PT_6 — способ расчета №6;
  • LIBFPTR_PT_7 — способ расчета №7;
  • LIBFPTR_PT_8 — способ расчета №8;
  • LIBFPTR_PT_9 — способ расчета №9;
  • LIBFPTR_PT_10 — способ расчета №10.

Поддерживается для всех ККТ

Счетчики внесений и выплат

Запрос суммы внесений

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CASHIN_SUM);
libfptr_query_data(fptr);

double sum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_SUM);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CASHIN_SUM);
fptr.queryData();

double sum = fptr.getParamDouble(LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CASHIN_SUM)
fptr.queryData()

sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CASHIN_SUM);
fptr.queryData();

double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CASHIN_SUM);
fptr.queryData();

double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_CASHIN_SUM];
[fptr queryData];

double sum = [fptr getParamDouble:LIBFPTR_PARAM_SUM];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_CASHIN_SUM);
fptr.queryData();

double sum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_SUM);
|

|var
sum: Double;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_CASHIN_SUM);
fptr.queryData;

sum := fptr.getParamDouble(fptr.LIBFPTR_PARAM_SUM);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_CASHIN_SUM)
fptr.QueryData()

sum := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_SUM)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_CASHIN_SUM);
Fptr.queryData();

sum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_SUM);
|

Запрос суммы выплат

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CASHOUT_SUM);
libfptr_query_data(fptr);

double sum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_SUM);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CASHOUT_SUM);
fptr.queryData();

double sum = fptr.getParamDouble(LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CASHOUT_SUM)
fptr.queryData()

sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CASHOUT_SUM);
fptr.queryData();

double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CASHOUT_SUM);
fptr.queryData();

double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_CASHOUT_SUM];
[fptr queryData];

double sum = [fptr getParamDouble:LIBFPTR_PARAM_SUM];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_CASHOUT_SUM);
fptr.queryData();

double sum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_SUM);
|

|var
sum: Double;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_CASHOUT_SUM);
fptr.queryData;

sum := fptr.getParamDouble(fptr.LIBFPTR_PARAM_SUM);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_CASHOUT_SUM)
fptr.QueryData()

sum := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_SUM)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_CASHOUT_SUM);
Fptr.queryData();

sum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_SUM);
|

Запрос количества внесений

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CASHIN_COUNT);
libfptr_query_data(fptr);

int count = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CASHIN_COUNT);
fptr.queryData();

uint count = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CASHIN_COUNT)
fptr.queryData()

count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CASHIN_COUNT);
fptr.queryData;

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CASHIN_COUNT);
fptr.queryData;

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_CASHIN_COUNT];
[fptr queryData];

uint count = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENTS_COUNT];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_CASHIN_COUNT);
fptr.queryData();

uint count = fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|var
count: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_CASHIN_COUNT);
fptr.queryData;

count := fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_CASHIN_COUNT)
fptr.QueryData()

count := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENTS_COUNT)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_CASHIN_COUNT);
Fptr.queryData();

count = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

Запрос количества выплат

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CASHOUT_COUNT);
libfptr_query_data(fptr);

int count = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CASHOUT_COUNT);
fptr.queryData();

uint count = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CASHOUT_COUNT)
fptr.queryData()

count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CASHOUT_COUNT);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CASHOUT_COUNT);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_CASHOUT_COUNT];
[fptr queryData];

uint count = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENTS_COUNT];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_CASHOUT_COUNT);
fptr.queryData();

uint count = fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|var
count: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_CASHOUT_COUNT);
fptr.queryData;

count := fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_CASHOUT_COUNT)
fptr.QueryData()

count := fptr.GetParamInt(Constants.LIBFPTR_PARAM_DOCUMENTS_COUNT)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_CASHOUT_COUNT);
Fptr.queryData();

count = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

Для запроса суммы внесений или выплат необходимо вызвать метод / queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_CASHIN_SUM (или LIBFPTR_DT_CASHOUT_SUM соответственно).

Результатом этих запросов будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_SUM Сумма внесений/выплат double

Для запроса количества внесений или выплат необходимо вызвать метод / queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_CASHIN_COUNT (или LIBFPTR_DT_CASHOUT_COUNT соответственно).

Результатом этих запросов будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_DOCUMENTS_COUNT Количество документов внесений/выплат int

Поддерживается для всех ККТ

Сумма выручки

Запрос суммы выручки

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_REVENUE);
libfptr_query_data(fptr);

double revenue = libfptr_get_param_double(fptr, LIBFPTR_PARAM_SUM);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_REVENUE);
fptr.queryData();

double revenue = fptr.getParamDouble(LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_REVENUE)
fptr.queryData()

revenue = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_REVENUE);
fptr.queryData();

double revenue = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_REVENUE);
fptr.queryData();

double revenue = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_REVENUE];
[fptr queryData];

double revenue = [fptr getParamDouble:LIBFPTR_PARAM_SUM];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_REVENUE);
fptr.queryData();

double revenue = fptr.getParamDouble(Constants.LIBFPTR_PARAM_SUM);
|

|var
revenue: Double;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_REVENUE);
fptr.queryData;

revenue := fptr.getParamDouble(fptr.LIBFPTR_PARAM_SUM);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_REVENUE)
fptr.QueryData()

revenue := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_SUM)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_REVENUE);
Fptr.queryData();

revenue = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_SUM);
|

Для запроса суммы выручки необходимо вызвать метод /queryData()/ с
типом запроса LIBFPTR_PARAM_DATA_TYPE равным LIBFPTR_DT_REVENUE.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_SUM Сумма выручки double

Поддерживается только для ККТ версий 3.X

Текущие дата и время ККТ

Запрос текущих даты и времени ККТ

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_DATE_TIME);
libfptr_query_data(fptr);

int year, month, day, hour, minute, second;
libfptr_get_param_datetime(fptr, LIBFPTR_PARAM_DATE_TIME, &year, &month, &day, &hour, &minute, &second);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_DATE_TIME);
fptr.queryData();

std::tm dateTime = fptr.getParamDateTime(LIBFPTR_PARAM_DATE_TIME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_DATE_TIME)
fptr.queryData()

Тип переменной datetime — datetime.datetime

dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_DATE_TIME);
fptr.queryData();

Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_DATE_TIME);
fptr.queryData();

Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_DATE_TIME];
[fptr queryData];

NSDate *dateTime = [fptr getParamDateTime:LIBFPTR_PARAM_DATE_TIME];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_DATE_TIME);
fptr.queryData();

DateTime dateTime = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);
|

|var
dateTime: TDateTime;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_DATE_TIME);
fptr.queryData;

dateTime := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_DATE_TIME)
fptr.QueryData()

dateTime := fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_DATE_TIME)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_DATE_TIME);
Fptr.queryData();

dateTime = Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_DATE_TIME);
|

Для запроса текущих даты и времени в ККТ необходимо вызвать метод / queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_DATE_TIME.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_DATE_TIME Текущие дата и время в ККТ datetime

Поддерживается для всех ККТ

Состояние смены

Запрос состояния смены

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_SHIFT_STATE);
libfptr_query_data(fptr);

int state = libfptr_get_param_int(fptr, LIBFPTR_PARAM_SHIFT_STATE);
int number = libfptr_get_param_int(fptr, LIBFPTR_PARAM_SHIFT_NUMBER);
int year, month, day, hour, minute, second;
libfptr_get_param_datetime(fptr, LIBFPTR_PARAM_DATE_TIME, &year, &month, &day, &hour, &minute, &second);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_SHIFT_STATE);
fptr.queryData();

uint state = fptr.getParamInt(LIBFPTR_PARAM_SHIFT_STATE);
uint number = fptr.getParamInt(LIBFPTR_PARAM_SHIFT_NUMBER);
std::tm dateTime = fptr.getParamDateTime(LIBFPTR_PARAM_DATE_TIME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_SHIFT_STATE)
fptr.queryData()

state = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SHIFT_STATE)
number = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SHIFT_NUMBER)

Тип переменной datetime — datetime.datetime

dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_SHIFT_STATE);
fptr.queryData();

long state = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SHIFT_STATE);
long number = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SHIFT_NUMBER);
Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_SHIFT_STATE);
fptr.queryData();

long state = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SHIFT_STATE);
long number = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SHIFT_NUMBER);
Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_SHIFT_STATE];
[fptr queryData];

uint state = [fptr getParamInt:LIBFPTR_PARAM_SHIFT_STATE];
uint number = [fptr getParamInt:LIBFPTR_PARAM_SHIFT_NUMBER];
NSDate *dateTime = [fptr getParamDateTime:LIBFPTR_PARAM_DATE_TIME];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_SHIFT_STATE);
fptr.queryData();

uint state = fptr.getParamInt(Constants.LIBFPTR_PARAM_SHIFT_STATE);
uint number = fptr.getParamInt(Constants.LIBFPTR_PARAM_SHIFT_NUMBER);
DateTime dateTime = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);
|

|var
state: Longint;
number: Longint;
dateTime: TDateTime;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_SHIFT_STATE);
fptr.queryData;

state       := fptr.getParamInt(fptr.LIBFPTR_PARAM_SHIFT_STATE);
number      := fptr.getParamInt(fptr.LIBFPTR_PARAM_SHIFT_NUMBER);
dateTime    := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_SHIFT_STATE)
fptr.QueryData()

state := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_SHIFT_STATE)
number := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_SHIFT_NUMBER)
dateTime := fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_DATE_TIME)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_SHIFT_STATE);
Fptr.queryData();

state = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_SHIFT_STATE);
number = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_SHIFT_NUMBER);
dateTime = Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_DATE_TIME);
|

Для запроса состояния смены необходимо вызвать метод /queryData()/ с
типом запроса LIBFPTR_PARAM_DATA_TYPE равным LIBFPTR_DT_SHIFT_STATE.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_SHIFT_STATE Состояние смены int
LIBFPTR_PARAM_SHIFT_NUMBER Номер смены int
LIBFPTR_PARAM_DATE_TIME Дата и время истечения текущей смены datetime

Состояние смены (LIBFPTR_PARAM_SHIFT_STATE) может принимать следующие
значения:

  • LIBFPTR_SS_CLOSED — смена закрыта;
  • LIBFPTR_SS_OPENED — смена открыта;
  • LIBFPTR_SS_EXPIRED — смена истекла (продолжительность смены больше
    24 часов).

Значение параметра LIBFPTR_PARAM_SHIFT_NUMBER зависит от состояния
смены. Если смена закрыта, то его значением будет номер последней
закрытой смены. Если смена открыта или истекла, то его значением будет
номер текущей смены.

Параметр LIBFPTR_PARAM_DATE_TIME имеет смысл только при открытой или
истекшей смене.

Поддерживается для всех ККТ

Состояние чека

Запрос состояния чека

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_RECEIPT_STATE);
libfptr_query_data(fptr);

int receiptType = libfptr_get_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE);
int receiptNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_RECEIPT_NUMBER);
int documentNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENT_NUMBER);
int sum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_RECEIPT_SUM);
int remainder = libfptr_get_param_double(fptr, LIBFPTR_PARAM_REMAINDER);
int change = libfptr_get_param_double(fptr, LIBFPTR_PARAM_CHANGE);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_RECEIPT_STATE);
fptr.queryData();

uint receiptType = fptr.getParamInt(LIBFPTR_PARAM_RECEIPT_TYPE);
uint receiptNumber = fptr.getParamInt(LIBFPTR_PARAM_RECEIPT_NUMBER);
uint documentNumber = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENT_NUMBER);
double sum = fptr.getParamDouble(LIBFPTR_PARAM_RECEIPT_SUM);
double remainder = fptr.getParamDouble(LIBFPTR_PARAM_REMAINDER);
double change = fptr.getParamDouble(LIBFPTR_PARAM_CHANGE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_RECEIPT_STATE)
fptr.queryData()

receiptType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE)
receiptNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_NUMBER)
documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER)
sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_RECEIPT_SUM)
remainder = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_REMAINDER)
change = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_CHANGE)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_RECEIPT_STATE);
fptr.queryData();

long receiptType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE);
long receiptNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_NUMBER);
long documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_RECEIPT_SUM);
double remainder = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_REMAINDER);
double change = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_CHANGE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_RECEIPT_STATE);
fptr.queryData();

long receiptType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE);
long receiptNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_NUMBER);
long documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_RECEIPT_SUM);
double remainder = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_REMAINDER);
double change = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_CHANGE);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_RECEIPT_STATE];
[fptr queryData];

uint receiptType = [fptr getParamInt:LIBFPTR_PARAM_RECEIPT_TYPE];
uint receiptNumber = [fptr getParamInt:LIBFPTR_PARAM_RECEIPT_NUMBER];
uint documentNumber = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENT_NUMBER];
double documentNumber = [fptr getParamDouble:LIBFPTR_PARAM_RECEIPT_SUM];
double remainder = [fptr getParamDouble:LIBFPTR_PARAM_REMAINDER];
double change = [fptr getParamDouble:LIBFPTR_PARAM_CHANGE];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_RECEIPT_STATE);
fptr.queryData();

uint receiptType = fptr.getParamInt(Constants.LIBFPTR_PARAM_RECEIPT_TYPE);
uint receiptNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_RECEIPT_NUMBER);
uint documentNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER);
double sum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_RECEIPT_SUM);
double remainder = fptr.getParamDouble(Constants.LIBFPTR_PARAM_REMAINDER);
double change = fptr.getParamDouble(Constants.LIBFPTR_PARAM_CHANGE);
|

|var
receiptType: Longint;
receiptNumber: Longint;
documentNumber: Longint;
sum: Double;
remainder: Double;
change: Double;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_RECEIPT_STATE);
fptr.queryData;

receiptType     := fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_TYPE);
receiptNumber   := fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_NUMBER);
documentNumber  := fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
sum             := fptr.getParamDouble(fptr.LIBFPTR_PARAM_RECEIPT_SUM);
remainder       := fptr.getParamDouble(fptr.LIBFPTR_PARAM_REMAINDER);
change          := fptr.getParamDouble(fptr.LIBFPTR_PARAM_CHANGE);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_RECEIPT_STATE)
fptr.QueryData()

receiptType := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE)
receiptNumber := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_RECEIPT_NUMBER)
documentNumber := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENT_NUMBER)
sum := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_RECEIPT_SUM)
remainder := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_REMAINDER)
change := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_CHANGE)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_RECEIPT_STATE);
Fptr.queryData();

receiptType = fptr.getParamInt(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE);
receiptNumber = fptr.getParamInt(Fptr.LIBFPTR_PARAM_RECEIPT_NUMBER);
documentNumber = fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
sum = fptr.getParamDouble(Fptr.LIBFPTR_PARAM_RECEIPT_SUM);
remainder = fptr.getParamDouble(Fptr.LIBFPTR_PARAM_REMAINDER);
change = fptr.getParamDouble(Fptr.LIBFPTR_PARAM_CHANGE);
|

Для запроса состояния чека необходимо вызвать метод /queryData()/ с
типом запроса LIBFPTR_PARAM_DATA_TYPE равным LIBFPTR_DT_RECEIPT_STATE.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_RECEIPT_TYPE Тип чека int
LIBFPTR_PARAM_RECEIPT_NUMBER Номер чека int
LIBFPTR_PARAM_DOCUMENT_NUMBER Номер документа int
LIBFPTR_PARAM_RECEIPT_SUM Текущая сумма чека double
LIBFPTR_PARAM_REMAINDER Неоплаченный остаток double
LIBFPTR_PARAM_CHANGE Сдача по чеку double

Тип чека (LIBFPTR_PARAM_RECEIPT_TYPE) может принимать следующие значения:

  • LIBFPTR_RT_CLOSED — чек закрыт;
  • LIBFPTR_RT_SELL — чек прихода (продажи);
  • LIBFPTR_RT_SELL_RETURN — чек возврата прихода (продажи);
  • LIBFPTR_RT_SELL_CORRECTION — чек коррекции прихода (продажи);
  • LIBFPTR_RT_SELL_RETURN_CORRECTION — чек коррекции возврата прихода
    (продажи);
  • LIBFPTR_RT_BUY — чек расхода (покупки);
  • LIBFPTR_RT_BUY_RETURN — чек возврата расхода (покупки);
  • LIBFPTR_RT_BUY_CORRECTION — чек коррекции расхода (покупки);
  • LIBFPTR_RT_BUY_RETURN_CORRECTION — чек коррекции возврата расхода
    (покупки).

Значения счетчиков LIBFPTR_PARAM_RECEIPT_NUMBER и
LIBFPTR_PARAM_DOCUMENT_NUMBER не относятся к фискальному накопителю и
содержат значения внутренних счетчиков ККТ. Данные счетчики могут
увеличиваться вместе с печатью нефискальных и служебных документов. Для
получения номеров фискальных документов нужно использовать метод / fnQueryData()/ с типом запроса LIBFPTR_PARAM_FN_DATA_TYPE равным
LIBFPTR_FNDT_LAST_DOCUMENT.

Значения параметров LIBFPTR_PARAM_RECEIPT_SUM,
LIBFPTR_PARAM_REMAINDER и LIBFPTR_PARAM_CHANGE актуальны только при
открытом чеке.

Поддерживается для всех ККТ

Заводской номер

Запрос заводского номера

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_SERIAL_NUMBER);
libfptr_query_data(fptr);

std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_SERIAL_NUMBER, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_SERIAL_NUMBER, &str[0], str.size());
}
std::wstring serialNumber = std::wstring(&str[0]);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_SERIAL_NUMBER);
fptr.queryData();

std::wstring serialNumber = fptr.getParamString(LIBFPTR_PARAM_SERIAL_NUMBER);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_SERIAL_NUMBER)
fptr.queryData()

serialNumber = fptr.getParamString(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_SERIAL_NUMBER);
fptr.queryData();

String serialNumber = fptr.getParamString(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_SERIAL_NUMBER);
fptr.queryData();

String serialNumber = fptr.getParamString(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_SERIAL_NUMBER];
[fptr queryData];

NSString *serialNumber = [fptr getParamString:LIBFPTR_PARAM_SERIAL_NUMBER];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_SERIAL_NUMBER);
fptr.queryData();

String serialNumber = fptr.getParamString(Constants.LIBFPTR_PARAM_SERIAL_NUMBER);
|

|var
serialNumber: String;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_SERIAL_NUMBER);
fptr.queryData;

serialNumber = fptr.getParamString(fptr.LIBFPTR_PARAM_SERIAL_NUMBER);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_SERIAL_NUMBER)
fptr.QueryData()

serialNumber := fptr.GetParamString(fptr10.LIBFPTR_PARAM_SERIAL_NUMBER)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_SERIAL_NUMBER);
Fptr.queryData();

serialNumber = fptr.getParamString(Fptr.LIBFPTR_PARAM_SERIAL_NUMBER);
|

Для запроса заводского номера ККТ необходимо вызвать метод / queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_SERIAL_NUMBER.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_SERIAL_NUMBER Заводской номер string

Поддерживается для всех ККТ

Информация о модели ККТ

Запрос информации о модели ККТ

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_MODEL_INFO);
libfptr_query_data(fptr);

int model = libfptr_get_param_int(fptr, LIBFPTR_PARAM_MODEL);

std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_MODEL_NAME, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_MODEL_NAME, &str[0], str.size());
}
std::wstring modelName = std::wstring(&str[0]);

int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_UNIT_VERSION, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_UNIT_VERSION, &str[0], str.size());
}
std::wstring firmwareVersion = std::wstring(&str[0]);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_MODEL_INFO);
fptr.queryData();

uint model = fptr.getParamInt(LIBFPTR_PARAM_MODEL);
std::wstring modelName = fptr.getParamString(LIBFPTR_PARAM_MODEL_NAME);
std::wstring firmwareVersion = fptr.getParamString(LIBFPTR_PARAM_UNIT_VERSION);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_MODEL_INFO)
fptr.queryData()

model = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MODEL)
modelName = fptr.getParamString(IFptr.LIBFPTR_PARAM_MODEL_NAME)
firmwareVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_MODEL_INFO);
fptr.queryData();

long model = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MODEL);
String modelName = fptr.getParamString(IFptr.LIBFPTR_PARAM_MODEL_NAME);
String firmwareVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_MODEL_INFO);
fptr.queryData();

long model = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MODEL);
String modelName = fptr.getParamString(IFptr.LIBFPTR_PARAM_MODEL_NAME);
String firmwareVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_UNIT_VERSION);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_MODEL_INFO];
[fptr queryData];

uint model = [fptr getParamInt:LIBFPTR_PARAM_MODEL];
NSString *modelName = [fptr getParamString:LIBFPTR_PARAM_MODEL_NAME];
NSString *firmwareVersion = [fptr getParamString:LIBFPTR_PARAM_UNIT_VERSION];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_MODEL_INFO);
fptr.queryData();

uint model = fptr.getParamInt(Constants.LIBFPTR_PARAM_MODEL);
String modelName = fptr.getParamString(Constants.LIBFPTR_PARAM_MODEL_NAME);
String firmwareVersion = fptr.getParamString(Constants.LIBFPTR_PARAM_UNIT_VERSION);
|

|var
model: Longint;
modelName: String;
firmwareVersion: String;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_MODEL_INFO);
fptr.queryData;

model                   := fptr.getParamInt(fptr.LIBFPTR_PARAM_MODEL);
String modelName        := fptr.getParamString(fptr.LIBFPTR_PARAM_MODEL_NAME);
String firmwareVersion  := fptr.getParamString(fptr.LIBFPTR_PARAM_UNIT_VERSION);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_MODEL_INFO)
fptr.QueryData()

model := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_MODEL)
modelName := fptr.GetParamString(fptr10.LIBFPTR_PARAM_MODEL_NAME)
firmwareVersion := fptr.GetParamString(fptr10.LIBFPTR_PARAM_UNIT_VERSION)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_MODEL_INFO);
Fptr.queryData();

model = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_MODEL);
modelName = Fptr.getParamString(Fptr.LIBFPTR_PARAM_MODEL_NAME);
firmwareVersion = Fptr.getParamString(Fptr.LIBFPTR_PARAM_UNIT_VERSION);
|

Для запроса информации о модели ККТ необходимо вызвать метод / queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_MODEL_INFO.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_MODEL Номер модели ККТ int
LIBFPTR_PARAM_MODEL_NAME Наименование ККТ string
LIBFPTR_PARAM_UNIT_VERSION Версия ПО ККТ string

Возможные значения для номера модели (LIBFPTR_PARAM_MODEL)
представлены в разделе Список настроек <#driver_settings>.

Поддерживается для всех ККТ

Ширина чековой ленты

Запрос ширины чековой ленты

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_RECEIPT_LINE_LENGTH);
libfptr_query_data(fptr);

int charLineLength = libfptr_get_param_int(fptr, LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
int pixLineLength = libfptr_get_param_int(fptr, LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_RECEIPT_LINE_LENGTH);
fptr.queryData();

uint charLineLength = fptr.getParamInt(LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
uint pixLineLength = fptr.getParamInt(LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_RECEIPT_LINE_LENGTH)
fptr.queryData()

charLineLength = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH)
pixLineLength = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_RECEIPT_LINE_LENGTH);
fptr.queryData();

long charLineLength = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
long pixLineLength = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_RECEIPT_LINE_LENGTH);
fptr.queryData();

long charLineLength = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
long pixLineLength = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_RECEIPT_LINE_LENGTH];
[fptr queryData];

uint charLineLength = [fptr getParamInt:LIBFPTR_PARAM_RECEIPT_LINE_LENGTH];
uint pixLineLength = [fptr getParamInt:LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_RECEIPT_LINE_LENGTH);
fptr.queryData();

uint charLineLength = fptr.getParamInt(Constants.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
uint pixLineLength = fptr.getParamInt(Constants.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX);
|

|var
charLineLength: Longint;
pixLineLength: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_RECEIPT_LINE_LENGTH);
fptr.queryData;

charLineLength  := fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
pixLineLength   := fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_RECEIPT_LINE_LENGTH)
fptr.QueryData()

charLineLength := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH)
pixLineLength := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_RECEIPT_LINE_LENGTH);
Fptr.queryData();

charLineLength = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
pixLineLength = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX);
|

Для запроса ширины чековой ленты необходимо вызвать метод */queryData()/
*** с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_RECEIPT_LINE_LENGTH.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_RECEIPT_LINE_LENGTH Ширина чековой ленты, симв. int
LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX Ширина чековой ленты, пикс. int

Поддерживается для всех ККТ

Ресурс отрезчика

Запрос постоянного ресурса отрезчика

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CUTTER_RESOURCE);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_COUNTER_TYPE, LIBFPTR_CT_ROLLUP);
libfptr_query_data(fptr);

int count = libfptr_get_param_int(fptr, LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CUTTER_RESOURCE);
fptr.setParam(LIBFPTR_PARAM_COUNTER_TYPE, LIBFPTR_CT_ROLLUP);
fptr.queryData();

uint count = fptr.getParamInt(LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CUTTER_RESOURCE)
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_ROLLUP)
fptr.queryData()

count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CUTTER_RESOURCE);
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_ROLLUP);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CUTTER_RESOURCE);
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_ROLLUP);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_CUTTER_RESOURCE];
[fptr setParam:LIBFPTR_PARAM_COUNTER_TYPE intParam:LIBFPTR_CT_ROLLUP];
[fptr queryData];

uint count = [fptr getParamInt:LIBFPTR_PARAM_COUNT];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_CUTTER_RESOURCE);
fptr.setParam(Constants.LIBFPTR_PARAM_COUNTER_TYPE, Constants.LIBFPTR_CT_ROLLUP);
fptr.queryData();

uint count = fptr.getParamInt(Constants.LIBFPTR_PARAM_COUNT);
|

|var
count: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_CUTTER_RESOURCE);
fptr.setParam(fptr.LIBFPTR_PARAM_COUNTER_TYPE, fptr.LIBFPTR_CT_ROLLUP);
fptr.queryData;

count := fptr.getParamInt(fptr.LIBFPTR_PARAM_COUNT);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_CUTTER_RESOURCE)
fptr.SetParam(fptr10.LIBFPTR_PARAM_COUNTER_TYPE, fptr10.LIBFPTR_CT_ROLLUP)
fptr.QueryData()

count := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_COUNT)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_CUTTER_RESOURCE);
Fptr.setParam(Fptr.LIBFPTR_PARAM_COUNTER_TYPE, Fptr.LIBFPTR_CT_ROLLUP);
Fptr.queryData();

count = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_COUNT);
|

Запрос сбрасываемого ресурса отрезчика

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CUTTER_RESOURCE);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_COUNTER_TYPE, LIBFPTR_CT_RESETTABLE);
libfptr_query_data(fptr);

int count = libfptr_get_param_int(fptr, LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CUTTER_RESOURCE);
fptr.setParam(LIBFPTR_PARAM_COUNTER_TYPE, LIBFPTR_CT_RESETTABLE);
fptr.queryData();

uint count = fptr.getParamInt(LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CUTTER_RESOURCE)
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_RESETTABLE)
fptr.queryData()

count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CUTTER_RESOURCE);
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_RESETTABLE);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CUTTER_RESOURCE);
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_RESETTABLE);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_CUTTER_RESOURCE];
[fptr setParam:LIBFPTR_PARAM_COUNTER_TYPE intParam:LIBFPTR_CT_RESETTABLE];
[fptr queryData];

uint count = [fptr getParamInt:LIBFPTR_PARAM_COUNT];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_CUTTER_RESOURCE);
fptr.setParam(Constants.LIBFPTR_PARAM_COUNTER_TYPE, Constants.LIBFPTR_CT_RESETTABLE);
fptr.queryData();

uint count = fptr.getParamInt(Constants.LIBFPTR_PARAM_COUNT);
|

|var
count: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_CUTTER_RESOURCE);
fptr.setParam(fptr.LIBFPTR_PARAM_COUNTER_TYPE, fptr.LIBFPTR_CT_RESETTABLE);
fptr.queryData;

count := fptr.getParamInt(fptr.LIBFPTR_PARAM_COUNT);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_CUTTER_RESOURCE)
fptr.SetParam(fptr10.LIBFPTR_PARAM_COUNTER_TYPE, fptr10.LIBFPTR_CT_RESETTABLE)
fptr.QueryData()

count := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_COUNT)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_CUTTER_RESOURCE);
Fptr.setParam(Fptr.LIBFPTR_PARAM_COUNTER_TYPE, Fptr.LIBFPTR_CT_RESETTABLE);
Fptr.queryData();

count = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_COUNT);
|

Для запроса ресурса отрезчика необходимо вызвать метод /queryData()/ с
типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_CUTTER_RESOURCE и указать тип счетчика
LIBFPTR_PARAM_COUNTER_TYPE.

Тип счетчика (LIBFPTR_PARAM_COUNTER_TYPE) может принимать следующие
значения:

  • LIBFPTR_CT_ROLLUP — постоянный;
  • LIBFPTR_CT_RESETTABLE — сбрасываемый при тех.обнулении.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_COUNT Количество отрезов int

Поддерживается для всех ККТ

Ресурс шагового двигателя

Запрос постоянного ресурса ШД для всех шагов

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_STEP_RESOURCE);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_COUNTER_TYPE, LIBFPTR_CT_ROLLUP);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_STEP_COUNTER_TYPE, LIBFPTR_SCT_OVERALL);
libfptr_query_data(fptr);

int count = libfptr_get_param_int(fptr, LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_STEP_RESOURCE);
fptr.setParam(LIBFPTR_PARAM_COUNTER_TYPE, LIBFPTR_CT_ROLLUP);
fptr.setParam(LIBFPTR_PARAM_STEP_COUNTER_TYPE, LIBFPTR_SCT_OVERALL);
fptr.queryData();

uint count = fptr.getParamInt(LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_STEP_RESOURCE)
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_ROLLUP)
fptr.setParam(IFptr.LIBFPTR_PARAM_STEP_COUNTER_TYPE, IFptr.LIBFPTR_SCT_OVERALL)
fptr.queryData()

count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_STEP_RESOURCE);
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_ROLLUP);
fptr.setParam(IFptr.LIBFPTR_PARAM_STEP_COUNTER_TYPE, IFptr.LIBFPTR_SCT_OVERALL);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_STEP_RESOURCE);
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_ROLLUP);
fptr.setParam(IFptr.LIBFPTR_PARAM_STEP_COUNTER_TYPE, IFptr.LIBFPTR_SCT_OVERALL);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_STEP_RESOURCE];
[fptr setParam:LIBFPTR_PARAM_COUNTER_TYPE intParam:LIBFPTR_CT_ROLLUP];
[fptr setParam:LIBFPTR_PARAM_STEP_COUNTER_TYPE intParam:LIBFPTR_SCT_OVERALL];
[fptr queryData];

uint count = [fptr getParamInt:LIBFPTR_PARAM_COUNT];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_STEP_RESOURCE);
fptr.setParam(Constants.LIBFPTR_PARAM_COUNTER_TYPE, Constants.LIBFPTR_CT_ROLLUP);
fptr.setParam(Constants.LIBFPTR_PARAM_STEP_COUNTER_TYPE, Constants.LIBFPTR_SCT_OVERALL);
fptr.queryData();

uint count = fptr.getParamInt(Constants.LIBFPTR_PARAM_COUNT);
|

|var
count: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_STEP_RESOURCE);
fptr.setParam(fptr.LIBFPTR_PARAM_COUNTER_TYPE, fptr.LIBFPTR_CT_ROLLUP);
fptr.setParam(fptr.LIBFPTR_PARAM_STEP_COUNTER_TYPE, fptr.LIBFPTR_SCT_OVERALL);
fptr.queryData;

count := fptr.getParamInt(fptr.LIBFPTR_PARAM_COUNT);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_STEP_RESOURCE)
fptr.SetParam(fptr10.LIBFPTR_PARAM_COUNTER_TYPE, fptr10.LIBFPTR_CT_ROLLUP)
fptr.SetParam(fptr10.LIBFPTR_PARAM_STEP_COUNTER_TYPE, fptr10.LIBFPTR_SCT_OVERALL)
fptr.QueryData()

count := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_COUNT)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_CUTTER_RESOURCE);
Fptr.setParam(Fptr.LIBFPTR_PARAM_COUNTER_TYPE, Fptr.LIBFPTR_CT_ROLLUP);
Fptr.setParam(Fptr.LIBFPTR_PARAM_STEP_COUNTER_TYPE, Fptr.LIBFPTR_SCT_OVERALL);
Fptr.queryData();

count = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_COUNT);
|

Запрос постоянного ресурса ШД для шагов вперед

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_STEP_RESOURCE);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_COUNTER_TYPE, LIBFPTR_CT_ROLLUP);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_STEP_COUNTER_TYPE, LIBFPTR_SCT_FORWARD);
libfptr_query_data(fptr);

int count = libfptr_get_param_int(fptr, LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_STEP_RESOURCE);
fptr.setParam(LIBFPTR_PARAM_COUNTER_TYPE, LIBFPTR_CT_ROLLUP);
fptr.setParam(LIBFPTR_PARAM_STEP_COUNTER_TYPE, LIBFPTR_SCT_FORWARD);
fptr.queryData();

uint count = fptr.getParamInt(LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_STEP_RESOURCE)
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_ROLLUP)
fptr.setParam(IFptr.LIBFPTR_PARAM_STEP_COUNTER_TYPE, IFptr.LIBFPTR_SCT_FORWARD)
fptr.queryData()

count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_STEP_RESOURCE);
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_ROLLUP);
fptr.setParam(IFptr.LIBFPTR_PARAM_STEP_COUNTER_TYPE, IFptr.LIBFPTR_SCT_FORWARD);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_STEP_RESOURCE);
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_ROLLUP);
fptr.setParam(IFptr.LIBFPTR_PARAM_STEP_COUNTER_TYPE, IFptr.LIBFPTR_SCT_FORWARD);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_STEP_RESOURCE];
[fptr setParam:LIBFPTR_PARAM_COUNTER_TYPE intParam:LIBFPTR_CT_ROLLUP];
[fptr setParam:LIBFPTR_PARAM_STEP_COUNTER_TYPE intParam:LIBFPTR_SCT_FORWARD];
[fptr queryData];

uint count = [fptr getParamInt:LIBFPTR_PARAM_COUNT];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_STEP_RESOURCE);
fptr.setParam(Constants.LIBFPTR_PARAM_COUNTER_TYPE, Constants.LIBFPTR_CT_ROLLUP);
fptr.setParam(Constants.LIBFPTR_PARAM_STEP_COUNTER_TYPE, Constants.LIBFPTR_SCT_FORWARD);
fptr.queryData();

uint count = fptr.getParamInt(Constants.LIBFPTR_PARAM_COUNT);
|

|var
count: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_STEP_RESOURCE);
fptr.setParam(fptr.LIBFPTR_PARAM_COUNTER_TYPE, fptr.LIBFPTR_CT_ROLLUP);
fptr.setParam(fptr.LIBFPTR_PARAM_STEP_COUNTER_TYPE, fptr.LIBFPTR_SCT_FORWARD);
fptr.queryData;

count := fptr.getParamInt(fptr.LIBFPTR_PARAM_COUNT);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_STEP_RESOURCE)
fptr.SetParam(fptr10.LIBFPTR_PARAM_COUNTER_TYPE, fptr10.LIBFPTR_CT_ROLLUP)
fptr.SetParam(fptr10.LIBFPTR_PARAM_STEP_COUNTER_TYPE, fptr10.LIBFPTR_SCT_FORWARD)
fptr.QueryData()

count := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_COUNT)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_CUTTER_RESOURCE);
Fptr.setParam(Fptr.LIBFPTR_PARAM_COUNTER_TYPE, Fptr.LIBFPTR_CT_ROLLUP);
Fptr.setParam(Fptr.LIBFPTR_PARAM_STEP_COUNTER_TYPE, Fptr.LIBFPTR_SCT_FORWARD);
Fptr.queryData();

count = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_COUNT);
|

Запрос сбрасываемого ресурса ШД для всех шагов

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_STEP_RESOURCE);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_COUNTER_TYPE, LIBFPTR_CT_RESETTABLE);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_STEP_COUNTER_TYPE, LIBFPTR_SCT_OVERALL);
libfptr_query_data(fptr);

int count = libfptr_get_param_int(fptr, LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_STEP_RESOURCE);
fptr.setParam(LIBFPTR_PARAM_COUNTER_TYPE, LIBFPTR_CT_RESETTABLE);
fptr.setParam(LIBFPTR_PARAM_STEP_COUNTER_TYPE, LIBFPTR_SCT_OVERALL);
fptr.queryData();

uint count = fptr.getParamInt(LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_STEP_RESOURCE)
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_RESETTABLE)
fptr.setParam(IFptr.LIBFPTR_PARAM_STEP_COUNTER_TYPE, IFptr.LIBFPTR_SCT_OVERALL)
fptr.queryData()

count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_STEP_RESOURCE);
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_RESETTABLE);
fptr.setParam(IFptr.LIBFPTR_PARAM_STEP_COUNTER_TYPE, IFptr.LIBFPTR_SCT_OVERALL);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_STEP_RESOURCE);
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_RESETTABLE);
fptr.setParam(IFptr.LIBFPTR_PARAM_STEP_COUNTER_TYPE, IFptr.LIBFPTR_SCT_OVERALL);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_STEP_RESOURCE];
[fptr setParam:LIBFPTR_PARAM_COUNTER_TYPE intParam:LIBFPTR_CT_RESETTABLE];
[fptr setParam:LIBFPTR_PARAM_STEP_COUNTER_TYPE intParam:LIBFPTR_SCT_OVERALL];
[fptr queryData];

uint count = [fptr getParamInt:LIBFPTR_PARAM_COUNT];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_STEP_RESOURCE);
fptr.setParam(Constants.LIBFPTR_PARAM_COUNTER_TYPE, Constants.LIBFPTR_CT_RESETTABLE);
fptr.setParam(Constants.LIBFPTR_PARAM_STEP_COUNTER_TYPE, Constants.LIBFPTR_SCT_OVERALL);
fptr.queryData();

uint count = fptr.getParamInt(Constants.LIBFPTR_PARAM_COUNT);
|

|var
count: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_STEP_RESOURCE);
fptr.setParam(fptr.LIBFPTR_PARAM_COUNTER_TYPE, fptr.LIBFPTR_CT_RESETTABLE);
fptr.setParam(fptr.LIBFPTR_PARAM_STEP_COUNTER_TYPE, fptr.LIBFPTR_SCT_OVERALL);
fptr.queryData;

count := fptr.getParamInt(fptr.LIBFPTR_PARAM_COUNT);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_STEP_RESOURCE)
fptr.SetParam(fptr10.LIBFPTR_PARAM_COUNTER_TYPE, fptr10.LIBFPTR_CT_RESETTABLE)
fptr.SetParam(fptr10.LIBFPTR_PARAM_STEP_COUNTER_TYPE, fptr10.LIBFPTR_SCT_OVERALL)
fptr.QueryData()

count := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_COUNT)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_CUTTER_RESOURCE);
Fptr.setParam(Fptr.LIBFPTR_PARAM_COUNTER_TYPE, Fptr.LIBFPTR_CT_RESETTABLE);
Fptr.setParam(Fptr.LIBFPTR_PARAM_STEP_COUNTER_TYPE, Fptr.LIBFPTR_SCT_OVERALL);
Fptr.queryData();

count = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_COUNT);
|

Запрос сбрасываемого ресурса ШД для шагов вперед

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_STEP_RESOURCE);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_COUNTER_TYPE, LIBFPTR_CT_RESETTABLE);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_STEP_COUNTER_TYPE, LIBFPTR_SCT_FORWARD);
libfptr_query_data(fptr);

int count = libfptr_get_param_int(fptr, LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_STEP_RESOURCE);
fptr.setParam(LIBFPTR_PARAM_COUNTER_TYPE, LIBFPTR_CT_RESETTABLE);
fptr.setParam(LIBFPTR_PARAM_STEP_COUNTER_TYPE, LIBFPTR_SCT_FORWARD);
fptr.queryData()

uint count = fptr.getParamInt(LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_STEP_RESOURCE)
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_RESETTABLE)
fptr.setParam(IFptr.LIBFPTR_PARAM_STEP_COUNTER_TYPE, IFptr.LIBFPTR_SCT_FORWARD)
fptr.queryData()

count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_STEP_RESOURCE);
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_RESETTABLE);
fptr.setParam(IFptr.LIBFPTR_PARAM_STEP_COUNTER_TYPE, IFptr.LIBFPTR_SCT_FORWARD);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_STEP_RESOURCE);
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_RESETTABLE);
fptr.setParam(IFptr.LIBFPTR_PARAM_STEP_COUNTER_TYPE, IFptr.LIBFPTR_SCT_FORWARD);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_STEP_RESOURCE];
[fptr setParam:LIBFPTR_PARAM_COUNTER_TYPE intParam:LIBFPTR_CT_RESETTABLE];
[fptr setParam:LIBFPTR_PARAM_STEP_COUNTER_TYPE intParam:LIBFPTR_SCT_FORWARD];
[fptr queryData];

uint count = [fptr getParamInt:LIBFPTR_PARAM_COUNT];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_STEP_RESOURCE);
fptr.setParam(Constants.LIBFPTR_PARAM_COUNTER_TYPE, Constants.LIBFPTR_CT_RESETTABLE);
fptr.setParam(Constants.LIBFPTR_PARAM_STEP_COUNTER_TYPE, Constants.LIBFPTR_SCT_FORWARD);
fptr.queryData();

uint count = fptr.getParamInt(Constants.LIBFPTR_PARAM_COUNT);
|

|var
count: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_STEP_RESOURCE);
fptr.setParam(fptr.LIBFPTR_PARAM_COUNTER_TYPE, fptr.LIBFPTR_CT_RESETTABLE);
fptr.setParam(fptr.LIBFPTR_PARAM_STEP_COUNTER_TYPE, fptr.LIBFPTR_SCT_FORWARD);
fptr.queryData;

count := fptr.getParamInt(fptr.LIBFPTR_PARAM_COUNT);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_STEP_RESOURCE)
fptr.SetParam(fptr10.LIBFPTR_PARAM_COUNTER_TYPE, fptr10.LIBFPTR_CT_RESETTABLE)
fptr.SetParam(fptr10.LIBFPTR_PARAM_STEP_COUNTER_TYPE, fptr10.LIBFPTR_SCT_FORWARD)
fptr.QueryData()

count := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_COUNT)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_CUTTER_RESOURCE);
Fptr.setParam(Fptr.LIBFPTR_PARAM_COUNTER_TYPE, Fptr.LIBFPTR_CT_RESETTABLE);
Fptr.setParam(Fptr.LIBFPTR_PARAM_STEP_COUNTER_TYPE, Fptr.LIBFPTR_SCT_FORWARD);
Fptr.queryData();

count = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_COUNT);
|

Для запроса ресурса шагового двигателя необходимо вызвать метод / queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_STEP_RESOURCE и указать тип счетчика
LIBFPTR_PARAM_COUNTER_TYPE и тип счетчика шагов
LIBFPTR_PARAM_STEP_COUNTER_TYPE.

Тип счетчика (LIBFPTR_PARAM_COUNTER_TYPE) может принимать следующие
значения:

  • LIBFPTR_CT_ROLLUP — постоянный;
  • LIBFPTR_CT_RESETTABLE — сбрасываемый при тех.обнулении.

Тип счетчика шагов (LIBFPTR_PARAM_STEP_COUNTER_TYPE) может принимать
следующие значения:

  • LIBFPTR_SCT_OVERALL — все шаги;
  • LIBFPTR_SCT_FORWARD — только шаги вперед.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_COUNT Количество шагов int

Поддерживается только для ККТ версий 3.X

Ресурс ТПГ

Запрос постоянного ресурса ТПГ

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_TERMAL_RESOURCE);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_COUNTER_TYPE, LIBFPTR_CT_ROLLUP);
libfptr_query_data(fptr);

int count = libfptr_get_param_int(fptr, LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_TERMAL_RESOURCE);
fptr.setParam(LIBFPTR_PARAM_COUNTER_TYPE, LIBFPTR_CT_ROLLUP);
fptr.queryData();

uint count = fptr.getParamInt(LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_TERMAL_RESOURCE)
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_ROLLUP)
fptr.queryData()

count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_TERMAL_RESOURCE);
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_ROLLUP);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_TERMAL_RESOURCE);
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_ROLLUP);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_TERMAL_RESOURCE];
[fptr setParam:LIBFPTR_PARAM_COUNTER_TYPE intParam:LIBFPTR_CT_ROLLUP];
[fptr queryData];

uint count = [fptr getParamInt:LIBFPTR_PARAM_COUNT];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_TERMAL_RESOURCE);
fptr.setParam(Constants.LIBFPTR_PARAM_COUNTER_TYPE, Constants.LIBFPTR_CT_ROLLUP);
fptr.queryData();

uint count = fptr.getParamInt(Constants.LIBFPTR_PARAM_COUNT);
|

|var
count: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_TERMAL_RESOURCE);
fptr.setParam(fptr.LIBFPTR_PARAM_COUNTER_TYPE, fptr.LIBFPTR_CT_ROLLUP);
fptr.queryData;

count := fptr.getParamInt(fptr.LIBFPTR_PARAM_COUNT);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_TERMAL_RESOURCE)
fptr.SetParam(fptr10.LIBFPTR_PARAM_COUNTER_TYPE, fptr10.LIBFPTR_CT_ROLLUP)
fptr.QueryData()

count := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_COUNT)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_TERMAL_RESOURCE);
Fptr.setParam(Fptr.LIBFPTR_PARAM_COUNTER_TYPE, Fptr.LIBFPTR_CT_ROLLUP);
Fptr.queryData();

count = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_COUNT);
|

Запрос сбрасываемого ресурса ТПГ

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_TERMAL_RESOURCE);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_COUNTER_TYPE, LIBFPTR_CT_RESETTABLE);
libfptr_query_data(fptr);

int count = libfptr_get_param_int(fptr, LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_TERMAL_RESOURCE);
fptr.setParam(LIBFPTR_PARAM_COUNTER_TYPE, LIBFPTR_CT_RESETTABLE);
fptr.queryData();

uint count = fptr.getParamInt(LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_TERMAL_RESOURCE)
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_RESETTABLE)
fptr.queryData()

count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_TERMAL_RESOURCE);
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_RESETTABLE);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_TERMAL_RESOURCE);
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNTER_TYPE, IFptr.LIBFPTR_CT_RESETTABLE);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_TERMAL_RESOURCE];
[fptr setParam:LIBFPTR_PARAM_COUNTER_TYPE intParam:LIBFPTR_CT_RESETTABLE];
[fptr queryData];

uint count = [fptr getParamInt:LIBFPTR_PARAM_COUNT];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_TERMAL_RESOURCE);
fptr.setParam(Constants.LIBFPTR_PARAM_COUNTER_TYPE, Constants.LIBFPTR_CT_RESETTABLE);
fptr.queryData();

uint count = fptr.getParamInt(Constants.LIBFPTR_PARAM_COUNT);
|

|var
count: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_TERMAL_RESOURCE);
fptr.setParam(fptr.LIBFPTR_PARAM_COUNTER_TYPE, fptr.LIBFPTR_CT_RESETTABLE);
fptr.queryData;

count := fptr.getParamInt(fptr.LIBFPTR_PARAM_COUNT);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_TERMAL_RESOURCE)
fptr.SetParam(fptr10.LIBFPTR_PARAM_COUNTER_TYPE, fptr10.LIBFPTR_CT_RESETTABLE)
fptr.QueryData()

count := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_COUNT)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_TERMAL_RESOURCE);
Fptr.setParam(Fptr.LIBFPTR_PARAM_COUNTER_TYPE, Fptr.LIBFPTR_CT_RESETTABLE);
Fptr.queryData();

count = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_COUNT);
|

Для запроса ресурса ТПГ необходимо вызвать метод /queryData()/ с типом
запроса LIBFPTR_PARAM_DATA_TYPE равным LIBFPTR_DT_TERMAL_RESOURCE и
указать тип счетчика LIBFPTR_PARAM_COUNTER_TYPE.

Тип счетчика (LIBFPTR_PARAM_COUNTER_TYPE) может принимать следующие
значения:

  • LIBFPTR_CT_ROLLUP — постоянный;
  • LIBFPTR_CT_RESETTABLE — сбрасываемый при тех.обнулении.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_COUNT Ресурс int

Поддерживается для всех ККТ

Сумма налога за смену

Запрос суммы налога НДС 10% за смену для чеков прихода

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_SHIFT_TAX_SUM);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
libfptr_query_data(fptr);

double sum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_SUM);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_SHIFT_TAX_SUM);
fptr.setParam(LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
fptr.setParam(LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
fptr.queryData();

double sum = fptr.getParamDouble(LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_SHIFT_TAX_SUM)
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL)
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10)
fptr.queryData()

sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_SHIFT_TAX_SUM);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
fptr.queryData();

double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_SHIFT_TAX_SUM);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
fptr.queryData();

double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_SHIFT_TAX_SUM];
[fptr setParam:LIBFPTR_PARAM_RECEIPT_TYPE intParam:LIBFPTR_RT_SELL];
[fptr setParam:LIBFPTR_PARAM_TAX_TYPE intParam:LIBFPTR_TAX_VAT10];
[fptr queryData];

double sum = [fptr getParamDouble:LIBFPTR_PARAM_SUM];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_SHIFT_TAX_SUM);
fptr.setParam(Constants.LIBFPTR_PARAM_RECEIPT_TYPE, Constants.LIBFPTR_RT_SELL);
fptr.setParam(Constants.LIBFPTR_PARAM_TAX_TYPE, Constants.LIBFPTR_TAX_VAT10);
fptr.queryData();

double sum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_SUM);
|

|var
sum: Double;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_SHIFT_TAX_SUM);
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL);
fptr.setParam(fptr.LIBFPTR_PARAM_TAX_TYPE, fptr.LIBFPTR_TAX_VAT10);
fptr.queryData;

sum := fptr.getParamDouble(fptr.LIBFPTR_PARAM_SUM);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_SHIFT_TAX_SUM)
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE, fptr10.LIBFPTR_RT_SELL)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TAX_TYPE, fptr10.LIBFPTR_TAX_VAT10)
fptr.QueryData()

sum := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_SUM)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_SHIFT_TAX_SUM);
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE, Fptr.LIBFPTR_RT_SELL);
Fptr.setParam(Fptr.LIBFPTR_PARAM_TAX_TYPE, Fptr.LIBFPTR_TAX_VAT10);
Fptr.queryData();

sum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_SUM);
|

Для запроса суммы налога за смену необходимо вызвать метод / queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_SHIFT_TAX_SUM и указать тип чека
LIBFPTR_PARAM_RECEIPT_TYPE и тип налога LIBFPTR_PARAM_TAX_TYPE.

Тип чека (LIBFPTR_PARAM_RECEIPT_TYPE) может принимать следующие значения:

  • LIBFPTR_RT_SELL — чек прихода (продажи);
  • LIBFPTR_RT_SELL_RETURN — чек возврата прихода (продажи);
  • LIBFPTR_RT_SELL_CORRECTION — чек коррекции прихода (продажи);
  • LIBFPTR_RT_BUY — чек расхода (покупки);
  • LIBFPTR_RT_BUY_RETURN — чек возврата расхода (покупки);
  • LIBFPTR_RT_BUY_CORRECTION — чек коррекции расхода (покупки).

Тип налога (LIBFPTR_PARAM_TAX_TYPE) может принимать следующие значения:

  • LIBFPTR_TAX_VAT10 — НДС 10%;
  • LIBFPTR_TAX_VAT110 — НДС рассчитанный 10/110;
  • LIBFPTR_TAX_VAT0 — НДС 0%;
  • LIBFPTR_TAX_NO — не облагается;
  • LIBFPTR_TAX_VAT20 — НДС 20%;
  • LIBFPTR_TAX_VAT120 — НДС рассчитанный 20/120.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_SUM Сумма налога double

Поддерживается для всех ККТ

Сумма налога за чек

Запрос суммы налога НДС 10% последнего чека

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_RECEIPT_TAX_SUM);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
libfptr_query_data(fptr);

double sum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_SUM);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_RECEIPT_TAX_SUM);
fptr.setParam(LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
fptr.queryData();

double sum = fptr.getParamDouble(LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_RECEIPT_TAX_SUM)
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10)
fptr.queryData()

sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_RECEIPT_TAX_SUM);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
fptr.queryData();

double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_RECEIPT_TAX_SUM);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
fptr.queryData();

double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_RECEIPT_TAX_SUM];
[fptr setParam:LIBFPTR_PARAM_TAX_TYPE intParam:LIBFPTR_TAX_VAT10];
[fptr queryData];

double sum = [fptr getParamDouble:LIBFPTR_PARAM_SUM];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_RECEIPT_TAX_SUM);
fptr.setParam(Constants.LIBFPTR_PARAM_TAX_TYPE, Constants.LIBFPTR_TAX_VAT10);
fptr.queryData();

double sum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_SUM);
|

|var
sum: Double;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_RECEIPT_TAX_SUM);
fptr.setParam(fptr.LIBFPTR_PARAM_TAX_TYPE, fptr.LIBFPTR_TAX_VAT10);
fptr.queryData;

sum := fptr.getParamDouble(fptr.LIBFPTR_PARAM_SUM);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_RECEIPT_TAX_SUM)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TAX_TYPE, fptr10.LIBFPTR_TAX_VAT10)
fptr.QueryData()

sum := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_SUM)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_RECEIPT_TAX_SUM);
Fptr.setParam(Fptr.LIBFPTR_PARAM_TAX_TYPE, Fptr.LIBFPTR_TAX_VAT10);
Fptr.queryData();

sum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_SUM);
|

Для запроса суммы налога за чек необходимо вызвать метод /queryData()/
с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_RECEIPT_TAX_SUM и указать тип налога LIBFPTR_PARAM_TAX_TYPE.

Тип налога (LIBFPTR_PARAM_TAX_TYPE) может принимать следующие значения:

  • LIBFPTR_TAX_VAT10 — НДС 10%;
  • LIBFPTR_TAX_VAT110 — НДС рассчитанный 10/110;
  • LIBFPTR_TAX_VAT0 — НДС 0%;
  • LIBFPTR_TAX_NO — не облагается;
  • LIBFPTR_TAX_VAT20 — НДС 20%;
  • LIBFPTR_TAX_VAT120 — НДС рассчитанный 20/120.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_SUM Сумма налога double

Поддерживается для всех ККТ

Необнуляемая сумма

Запрос необнуляемой суммы по чекам прихода

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_NON_NULLABLE_SUM);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
libfptr_query_data(fptr);

double sum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_SUM);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_NON_NULLABLE_SUM);
fptr.setParam(LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
fptr.queryData();

double sum = fptr.getParamDouble(LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_NON_NULLABLE_SUM)
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL)
fptr.queryData()

sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_NON_NULLABLE_SUM);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.queryData();

double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_NON_NULLABLE_SUM);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.queryData();

double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_NON_NULLABLE_SUM];
[fptr setParam:LIBFPTR_PARAM_RECEIPT_TYPE intParam:LIBFPTR_RT_SELL];
[fptr queryData];

double sum = [fptr getParamDouble:LIBFPTR_PARAM_SUM];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_NON_NULLABLE_SUM);
fptr.setParam(Constants.LIBFPTR_PARAM_RECEIPT_TYPE, Constants.LIBFPTR_RT_SELL);
fptr.queryData();

double sum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_SUM);
|

|var
sum: Double;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_NON_NULLABLE_SUM);
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL);
fptr.queryData;

sum := fptr.getParamDouble(fptr.LIBFPTR_PARAM_SUM);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_NON_NULLABLE_SUM)
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE, fptr10.LIBFPTR_RT_SELL)
fptr.QueryData()

sum := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_SUM)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_NON_NULLABLE_SUM);
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE, Fptr.LIBFPTR_RT_SELL);
Fptr.queryData();

sum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_SUM);
|

Запрос необнуляемой суммы по чекам прихода по оплатам наличными

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_NON_NULLABLE_SUM_BY_PAYMENTS);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_PAYMENT_TYPE, LIBFPTR_PT_CASH);
libfptr_query_data(fptr);

double sum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_SUM);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_NON_NULLABLE_SUM_BY_PAYMENTS);
fptr.setParam(LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
fptr.setParam(LIBFPTR_PARAM_PAYMENT_TYPE, LIBFPTR_PT_CASH);
fptr.queryData();

double sum = fptr.getParamDouble(LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_NON_NULLABLE_SUM_BY_PAYMENTS)
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL)
fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_TYPE, IFptr.LIBFPTR_PT_CASH)
fptr.queryData()

sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_NON_NULLABLE_SUM_BY_PAYMENTS);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_TYPE, IFptr.LIBFPTR_PT_CASH);
fptr.queryData();

double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_NON_NULLABLE_SUM_BY_PAYMENTS);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_TYPE, IFptr.LIBFPTR_PT_CASH);
fptr.queryData();

double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_NON_NULLABLE_SUM_BY_PAYMENTS];
[fptr setParam:LIBFPTR_PARAM_RECEIPT_TYPE intParam:LIBFPTR_RT_SELL];
[fptr setParam:LIBFPTR_PARAM_PAYMENT_TYPE intParam:LIBFPTR_PT_CASH];
[fptr queryData];

double sum = [fptr getParamDouble:LIBFPTR_PARAM_SUM];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_NON_NULLABLE_SUM_BY_PAYMENTS);
fptr.setParam(Constants.LIBFPTR_PARAM_RECEIPT_TYPE, Constants.LIBFPTR_RT_SELL);
fptr.setParam(Constants.LIBFPTR_PARAM_PAYMENT_TYPE, Constants.LIBFPTR_PT_CASH);
fptr.queryData();

double sum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_SUM);
|

|var
sum: Double;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_NON_NULLABLE_SUM_BY_PAYMENTS);
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL);
fptr.setParam(fptr.LIBFPTR_PARAM_PAYMENT_TYPE, fptr.LIBFPTR_PT_CASH);
fptr.queryData;

sum := fptr.getParamDouble(fptr.LIBFPTR_PARAM_SUM);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_NON_NULLABLE_SUM_BY_PAYMENTS)
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE, fptr10.LIBFPTR_RT_SELL)
fptr.SetParam(fptr10.LIBFPTR_PARAM_PAYMENT_TYPE, fptr10.LIBFPTR_PT_CASH)
fptr.QueryData()

sum := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_SUM)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_NON_NULLABLE_SUM_BY_PAYMENTS);
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE, Fptr.LIBFPTR_RT_SELL);
fptr.SetParam(Fptr.LIBFPTR_PARAM_PAYMENT_TYPE, Fptr.LIBFPTR_PT_CASH);
Fptr.queryData();

sum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_SUM);
|

Для запроса необнуляемой суммы необходимо вызвать метод /queryData()/
с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_NON_NULLABLE_SUM и указать тип чека
LIBFPTR_PARAM_RECEIPT_TYPE.

Поддерживается для всех ККТ

Для запроса необнуляемой суммы по заданному типу оплаты необходимо
вызвать метод /queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE
равным LIBFPTR_DT_NON_NULLABLE_SUM_BY_PAYMENTS и указать тип чека
LIBFPTR_PARAM_RECEIPT_TYPE.

Поддерживается только для ККТ версий 3.X

Тип чека (LIBFPTR_PARAM_RECEIPT_TYPE) может принимать следующие значения:

  • LIBFPTR_RT_SELL — чек прихода (продажи);
  • LIBFPTR_RT_SELL_RETURN — чек возврата прихода (продажи);
  • LIBFPTR_RT_SELL_CORRECTION — чек коррекции прихода (продажи);
  • LIBFPTR_RT_BUY — чек расхода (покупки);
  • LIBFPTR_RT_BUY_RETURN — чек возврата расхода (покупки);
  • LIBFPTR_RT_BUY_CORRECTION — чек коррекции расхода (покупки).

Способ расчета (LIBFPTR_PARAM_PAYMENT_TYPE) может принимать следующие
значения:

  • LIBFPTR_PT_CASH — наличными;
  • LIBFPTR_PT_ELECTRONICALLY — безналичными;
  • LIBFPTR_PT_PREPAID — предварительная оплата (аванс);
  • LIBFPTR_PT_CREDIT — последующая оплата (кредит);
  • LIBFPTR_PT_OTHER — иная форма оплаты (встречное предоставление);
  • LIBFPTR_PT_6 — способ расчета №6;
  • LIBFPTR_PT_7 — способ расчета №7;
  • LIBFPTR_PT_8 — способ расчета №8;
  • LIBFPTR_PT_9 — способ расчета №9;
  • LIBFPTR_PT_10 — способ расчета №10.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_SUM Необнуляемая сумма double

Количество чеков

Запрос количества чеков прихода

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_RECEIPT_COUNT);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
libfptr_query_data(fptr);

int count = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_RECEIPT_COUNT);
fptr.setParam(LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
fptr.queryData();

uint count = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_RECEIPT_COUNT)
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL)
fptr.queryData()

count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_RECEIPT_COUNT);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_RECEIPT_COUNT);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_RECEIPT_COUNT];
[fptr setParam:LIBFPTR_PARAM_RECEIPT_TYPE intParam:LIBFPTR_RT_SELL];
[fptr queryData];

uint count = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENTS_COUNT];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_RECEIPT_COUNT);
fptr.setParam(Constants.LIBFPTR_PARAM_RECEIPT_TYPE, Constants.LIBFPTR_RT_SELL);
fptr.queryData();

uint count = fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|var
count: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_RECEIPT_COUNT);
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL);
fptr.queryData;

count := fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_RECEIPT_COUNT)
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE, fptr10.LIBFPTR_RT_SELL)
fptr.QueryData()

count := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENTS_COUNT)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_RECEIPT_COUNT);
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE, Fptr.LIBFPTR_RT_SELL);
Fptr.queryData();

count = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

Для запроса количества чеков необходимо вызвать метод /queryData()/ с
типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_RECEIPT_COUNT и указать тип чека LIBFPTR_PARAM_RECEIPT_TYPE.

Тип чека (LIBFPTR_PARAM_RECEIPT_TYPE) может принимать следующие значения:

  • LIBFPTR_RT_SELL — чек прихода (продажи);
  • LIBFPTR_RT_SELL_RETURN — чек возврата прихода (продажи);
  • LIBFPTR_RT_SELL_CORRECTION — чек коррекции прихода (продажи);
  • LIBFPTR_RT_BUY — чек расхода (покупки);
  • LIBFPTR_RT_BUY_RETURN — чек возврата расхода (покупки);
  • LIBFPTR_RT_BUY_CORRECTION — чек коррекции расхода (покупки).

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_DOCUMENTS_COUNT Количество чеков int

Поддерживается для всех ККТ

Количество отмененных чеков

Запрос количества отмененных чеков прихода

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CANCELLATION_COUNT);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
libfptr_query_data(fptr);

int count = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CANCELLATION_COUNT);
fptr.setParam(LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
fptr.queryData();

uint count = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CANCELLATION_COUNT)
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL)
fptr.queryData()

count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CANCELLATION_COUNT);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CANCELLATION_COUNT);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_CANCELLATION_COUNT];
[fptr setParam:LIBFPTR_PARAM_RECEIPT_TYPE intParam:LIBFPTR_RT_SELL];
[fptr queryData];

uint count = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENTS_COUNT];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_CANCELLATION_COUNT);
fptr.setParam(Constants.LIBFPTR_PARAM_RECEIPT_TYPE, Constants.LIBFPTR_RT_SELL);
fptr.queryData();

uint count = fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|var
count: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_CANCELLATION_COUNT);
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL);
fptr.queryData;

count := fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_CANCELLATION_COUNT)
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE, fptr10.LIBFPTR_RT_SELL)
fptr.QueryData()

count := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENTS_COUNT)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_CANCELLATION_COUNT);
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE, Fptr.LIBFPTR_RT_SELL);
Fptr.queryData();

count = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

Запрос общего количества отмененных чеков

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CANCELLATION_COUNT_ALL);
libfptr_query_data(fptr);

int count = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CANCELLATION_COUNT_ALL);
fptr.queryData();

uint count = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CANCELLATION_COUNT_ALL)
fptr.queryData()

count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CANCELLATION_COUNT_ALL);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CANCELLATION_COUNT_ALL);
fptr.queryData();

long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_CANCELLATION_COUNT_ALL];
[fptr queryData];

uint count = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENTS_COUNT];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_PARAM_DOCUMENTS_COUNT
fptr.queryData();

uint count = fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|var
count: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
fptr.queryData;

count := fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_CANCELLATION_COUNT_ALL)
fptr.QueryData()

count := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENTS_COUNT)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_CANCELLATION_COUNT_ALL);
Fptr.queryData();

count = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

Для запроса количества отмененных чеков с заданным типом необходимо
вызвать метод /queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE
равным LIBFPTR_DT_CANCELLATION_COUNT и указать тип чека
LIBFPTR_PARAM_RECEIPT_TYPE.

Тип чека (LIBFPTR_PARAM_RECEIPT_TYPE) может принимать следующие значения:

  • LIBFPTR_RT_SELL — чек прихода (продажи);
  • LIBFPTR_RT_SELL_RETURN — чек возврата прихода (продажи);
  • LIBFPTR_RT_SELL_CORRECTION — чек коррекции прихода (продажи);
  • LIBFPTR_RT_BUY — чек расхода (покупки);
  • LIBFPTR_RT_BUY_RETURN — чек возврата расхода (покупки);
  • LIBFPTR_RT_BUY_CORRECTION — чек коррекции расхода (покупки).

Поддерживается только для ККТ версий 3.X

Для запроса общего количества отмененных чеков необходимо вызвать метод
/queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_CANCELLATION_COUNT_ALL.

Результатом этих запросов будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_DOCUMENTS_COUNT Количество чеков int

Поддерживается для всех ККТ

Сумма отмененных чеков

Запрос суммы отмененных чеков прихода

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CANCELLATION_SUM);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
libfptr_query_data(fptr);

double sum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_SUM);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CANCELLATION_SUM);
fptr.setParam(LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
fptr.queryData();

double sum = fptr.getParamDouble(LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CANCELLATION_SUM)
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL)
fptr.queryData()

sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CANCELLATION_SUM);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.queryData();

double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CANCELLATION_SUM);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.queryData();

double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_CANCELLATION_SUM];
[fptr setParam:LIBFPTR_PARAM_RECEIPT_TYPE intParam:LIBFPTR_RT_SELL];
[fptr queryData];

double sum = [fptr getParamDouble:LIBFPTR_PARAM_SUM];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_CANCELLATION_SUM);
fptr.setParam(Constants.LIBFPTR_PARAM_RECEIPT_TYPE, Constants.LIBFPTR_RT_SELL);
fptr.queryData();

double sum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_SUM);
|

|var
sum: Double;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_CANCELLATION_SUM_ALL);
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL);
fptr.queryData;

sum := fptr.getParamDouble(fptr.LIBFPTR_PARAM_SUM);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_CANCELLATION_SUM)
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE, fptr10.LIBFPTR_RT_SELL)
fptr.QueryData()

sum := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_SUM)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_CANCELLATION_SUM);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_RT_SELL);
Fptr.queryData();

sum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_SUM);
|

Запрос общей суммы отмененных чеков

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CANCELLATION_SUM_ALL);
libfptr_query_data(fptr);

double sum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_SUM);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CANCELLATION_SUM_ALL);
fptr.queryData();

double sum = fptr.getParamDouble(LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CANCELLATION_SUM_ALL)
fptr.queryData()

sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CANCELLATION_SUM_ALL);
fptr.queryData();

double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CANCELLATION_SUM_ALL);
fptr.queryData();

double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_CANCELLATION_SUM_ALL];
[fptr queryData];

double sum = [fptr getParamDouble:LIBFPTR_PARAM_SUM];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_CANCELLATION_SUM_ALL);
fptr.queryData();

double sum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_SUM);
|

|var
sum: Double;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_CANCELLATION_SUM_ALL);
fptr.queryData;

sum := fptr.getParamDouble(fptr.LIBFPTR_PARAM_SUM);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_CANCELLATION_SUM_ALL)
fptr.QueryData()

sum := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_SUM)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_CANCELLATION_SUM_ALL);
Fptr.queryData();

sum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_SUM);
|

Для запроса суммы отмененных чеков с заданным типом необходимо вызвать
метод /queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_CANCELLATION_SUM и указать тип чека
LIBFPTR_PARAM_RECEIPT_TYPE.

Тип чека (LIBFPTR_PARAM_RECEIPT_TYPE) может принимать следующие значения:

  • LIBFPTR_RT_SELL — чек прихода (продажи);
  • LIBFPTR_RT_SELL_RETURN — чек возврата прихода (продажи);
  • LIBFPTR_RT_SELL_CORRECTION — чек коррекции прихода (продажи);
  • LIBFPTR_RT_BUY — чек расхода (покупки);
  • LIBFPTR_RT_BUY_RETURN — чек возврата расхода (покупки);
  • LIBFPTR_RT_BUY_CORRECTION — чек коррекции расхода (покупки).

Поддерживается только для ККТ версий 3.X

Для запроса общей суммы отмененных чеков необходимо вызвать метод / queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_CANCELLATION_SUM_ALL.

Результатом этих запросов будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_SUM Сумма чеков double

Поддерживается для всех ККТ

Состояние источника питания

Запрос состояния аккумуляторов

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_POWER_SOURCE_STATE);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_POWER_SOURCE_TYPE, LIBFPTR_PST_BATTERY);
libfptr_query_data(fptr);

int charge = libfptr_get_param_int(fptr, LIBFPTR_PARAM_BATTERY_CHARGE);
double voltage = libfptr_get_param_double(fptr, LIBFPTR_PARAM_VOLTAGE);
bool useBattery = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_USE_BATTERY) != 0);
bool isCharging = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_BATTERY_CHARGING) != 0);
bool canPrint = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_CAN_PRINT_WHILE_ON_BATTERY) != 0);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_POWER_SOURCE_STATE);
fptr.setParam(LIBFPTR_PARAM_POWER_SOURCE_TYPE, LIBFPTR_PST_BATTERY);
fptr.queryData();

uint charge = fptr.getParamInt(LIBFPTR_PARAM_BATTERY_CHARGE);
double voltage = fptr.getParamDouble(LIBFPTR_PARAM_VOLTAGE);
bool useBattery = fptr.getParamBool(LIBFPTR_PARAM_USE_BATTERY);
bool isCharging = fptr.getParamBool(LIBFPTR_PARAM_BATTERY_CHARGING);
bool canPrint = fptr.getParamBool(LIBFPTR_PARAM_CAN_PRINT_WHILE_ON_BATTERY);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_POWER_SOURCE_STATE)
fptr.setParam(IFptr.LIBFPTR_PARAM_POWER_SOURCE_TYPE, IFptr.LIBFPTR_PST_BATTERY)
fptr.queryData()

charge = fptr.getParamInt(IFptr.LIBFPTR_PARAM_BATTERY_CHARGE)
voltage = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_VOLTAGE)
useBattery = fptr.getParamBool(IFptr.LIBFPTR_PARAM_USE_BATTERY)
isCharging = fptr.getParamBool(IFptr.LIBFPTR_PARAM_BATTERY_CHARGING)
canPrint = fptr.getParamBool(IFptr.LIBFPTR_PARAM_CAN_PRINT_WHILE_ON_BATTERY)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_POWER_SOURCE_STATE);
fptr.setParam(IFptr.LIBFPTR_PARAM_POWER_SOURCE_TYPE, IFptr.LIBFPTR_PST_BATTERY);
fptr.queryData();

long charge = fptr.getParamInt(IFptr.LIBFPTR_PARAM_BATTERY_CHARGE);
double voltage = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_VOLTAGE);
boolean useBattery = fptr.getParamBool(IFptr.LIBFPTR_PARAM_USE_BATTERY);
boolean isCharging = fptr.getParamBool(IFptr.LIBFPTR_PARAM_BATTERY_CHARGING);
boolean canPrint = fptr.getParamBool(IFptr.LIBFPTR_PARAM_CAN_PRINT_WHILE_ON_BATTERY);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_POWER_SOURCE_STATE);
fptr.setParam(IFptr.LIBFPTR_PARAM_POWER_SOURCE_TYPE, IFptr.LIBFPTR_PST_BATTERY);
fptr.queryData();

long charge = fptr.getParamInt(IFptr.LIBFPTR_PARAM_BATTERY_CHARGE);
double voltage = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_VOLTAGE);
boolean useBattery = fptr.getParamBool(IFptr.LIBFPTR_PARAM_USE_BATTERY);
boolean isCharging = fptr.getParamBool(IFptr.LIBFPTR_PARAM_BATTERY_CHARGING);
boolean canPrint = fptr.getParamBool(IFptr.LIBFPTR_PARAM_CAN_PRINT_WHILE_ON_BATTERY);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_POWER_SOURCE_STATE];
[fptr setParam:LIBFPTR_PARAM_POWER_SOURCE_TYPE intParam:LIBFPTR_PST_BATTERY];
[fptr queryData];

uint charge = [fptr getParamInt:LIBFPTR_PARAM_BATTERY_CHARGE];
double voltage = [fptr getParamDouble:LIBFPTR_PARAM_VOLTAGE];
bool useBattery = [fptr getParamBool:LIBFPTR_PARAM_USE_BATTERY];
bool isCharging = [fptr getParamBool:LIBFPTR_PARAM_BATTERY_CHARGING];
bool canPrint = [fptr getParamBool:LIBFPTR_PARAM_CAN_PRINT_WHILE_ON_BATTERY];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_POWER_SOURCE_STATE);
fptr.setParam(Constants.LIBFPTR_PARAM_POWER_SOURCE_TYPE, Constants.LIBFPTR_PST_BATTERY);
fptr.queryData();

uint charge = fptr.getParamInt(Constants.LIBFPTR_PARAM_BATTERY_CHARGE);
double voltage = fptr.getParamDouble(Constants.LIBFPTR_PARAM_VOLTAGE);
bool useBattery = fptr.getParamBool(Constants.LIBFPTR_PARAM_USE_BATTERY);
bool isCharging = fptr.getParamBool(Constants.LIBFPTR_PARAM_BATTERY_CHARGING);
bool canPrint = fptr.getParamBool(Constants.LIBFPTR_PARAM_CAN_PRINT_WHILE_ON_BATTERY);
|

|var
temperaturer: Integer;
voltage: Double;
useBattery: LongBool;
isCharging: LongBool;
canPrint: LongBool;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_POWER_SOURCE_STATE);
fptr.setParam(fptr.LIBFPTR_PARAM_POWER_SOURCE_TYPE, fptr.LIBFPTR_PST_BATTERY);
fptr.queryData;

charge          := fptr.getParamInt(fptr.LIBFPTR_PARAM_BATTERY_CHARGE);
voltage         := fptr.getParamDouble(fptr.LIBFPTR_PARAM_VOLTAGE);
useBattery      := fptr.getParamBool(fptr.LIBFPTR_PARAM_USE_BATTERY);
isCharging      := fptr.getParamBool(fptr.LIBFPTR_PARAM_BATTERY_CHARGING);
canPrint        := fptr.getParamBool(fptr.LIBFPTR_PARAM_CAN_PRINT_WHILE_ON_BATTERY);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_POWER_SOURCE_STATE)
fptr.SetParam(fptr10.LIBFPTR_PARAM_POWER_SOURCE_TYPE, fptr10.LIBFPTR_PST_BATTERY)
fptr.QueryData()

charge := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_BATTERY_CHARGE)
voltage := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_VOLTAGE)
useBattery := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_USE_BATTERY)
isCharging := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_BATTERY_CHARGING)
canPrint := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_CAN_PRINT_WHILE_ON_BATTERY)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_POWER_SOURCE_STATE);
Fptr.setParam(Fptr.LIBFPTR_PARAM_POWER_SOURCE_TYPE, Fptr.LIBFPTR_PST_BATTERY);
Fptr.queryData();

charge = fptr.getParamInt(Fptr.LIBFPTR_PARAM_BATTERY_CHARGE);
voltage = fptr.getParamDouble(Fptr.LIBFPTR_PARAM_VOLTAGE);
useBattery = fptr.getParamBool(Fptr.LIBFPTR_PARAM_USE_BATTERY);
isCharging = fptr.getParamBool(Fptr.LIBFPTR_PARAM_BATTERY_CHARGING);
canPrint = fptr.getParamBool(Fptr.LIBFPTR_PARAM_CAN_PRINT_WHILE_ON_BATTERY);
|

Для запроса состояния источника питания необходимо вызвать метод / queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_POWER_SOURCE_STATE и указать тип источника
LIBFPTR_PARAM_POWER_SOURCE_TYPE.

Тип источника (LIBFPTR_PARAM_POWER_SOURCE_TYPE) может принимать
следующие значения:

  • LIBFPTR_PST_POWER_SUPPLY — внешний блок питания/напряжение после
    преобразователя;
  • LIBFPTR_PST_RTC_BATTERY — батарея часов;
  • LIBFPTR_PST_BATTERY — встроенные аккумуляторы;

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_BATTERY_CHARGE Заряд аккумулятора, проценты int
LIBFPTR_PARAM_VOLTAGE Напряжения источника питания, В. double
LIBFPTR_PARAM_USE_BATTERY Работа от аккумулятора bool
LIBFPTR_PARAM_BATTERY_CHARGING Аккумуляторы заряжаются bool
LIBFPTR_PARAM_CAN_PRINT_WHILE_ON_BATTERY ККТ может печатать при
текущем заряде аккумулятора bool

Поддерживается для всех ККТ

Температура ТПГ

Запрос температуры ТПГ

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_PRINTER_TEMPERATURE);
libfptr_query_data(fptr);

std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_PRINTER_TEMPERATURE, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_PRINTER_TEMPERATURE, &str[0], str.size());
}
std::wstring temperature = std::wstring(&str[0]);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_PRINTER_TEMPERATURE);
fptr.queryData();

std::wstring temperature = fptr.getParamString(LIBFPTR_PARAM_PRINTER_TEMPERATURE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_PRINTER_TEMPERATURE)
fptr.queryData()

temperature = fptr.getParamString(IFptr.LIBFPTR_PARAM_PRINTER_TEMPERATURE)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_PRINTER_TEMPERATURE);
fptr.queryData();

String temperature = fptr.getParamString(IFptr.LIBFPTR_PARAM_PRINTER_TEMPERATURE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_PRINTER_TEMPERATURE);
fptr.queryData();

String temperature = fptr.getParamString(IFptr.LIBFPTR_PARAM_PRINTER_TEMPERATURE);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_PRINTER_TEMPERATURE];
[fptr queryData];

NSString *temperature = [fptr getParamString: LIBFPTR_PARAM_PRINTER_TEMPERATURE];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_PRINTER_TEMPERATURE);
fptr.queryData();

String temperature = fptr.getParamString(Constants.LIBFPTR_PARAM_PRINTER_TEMPERATURE);
|

|var
temperature: String;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_PRINTER_TEMPERATURE);
fptr.queryData;

temperature := fptr.getParamString(fptr.LIBFPTR_PARAM_PRINTER_TEMPERATURE);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_PRINTER_TEMPERATURE)
fptr.QueryData()

temperature := fptr.GetParamString(fptr10.LIBFPTR_PARAM_PRINTER_TEMPERATURE)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_PRINTER_TEMPERATURE);
Fptr.queryData();

temperature = Fptr.getParamString(Fptr.LIBFPTR_PARAM_PRINTER_TEMPERATURE);
|

Для запроса температуры ТПГ необходимо вызвать метод /queryData()/ с
типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_PRINTER_TEMPERATURE.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_PRINTER_TEMPERATURE Температура ТПГ, градусы Цельсия
string

Поддерживается для всех ККТ

Фатальные ошибки

Запрос фатальных ошибок

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_FATAL_STATUS);
libfptr_query_data(fptr);

bool noSerialNumber = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_NO_SERIAL_NUMBER) != 0);
bool rtcFault = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_RTC_FAULT) != 0);
bool settingsFault = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_SETTINGS_FAULT) != 0);
bool counterFault = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_COUNTERS_FAULT) != 0);
bool userMemoryFault = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_USER_MEMORY_FAULT) != 0);
bool serviceCountersFault = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_SERVICE_COUNTERS_FAULT) != 0);
bool attributesFault = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_ATTRIBUTES_FAULT) != 0);
bool fnFault = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_FN_FAULT) != 0);
bool invalidFN = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_INVALID_FN) != 0);
bool hardFault = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_HARD_FAULT) != 0);
bool memoryManagerFault = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_MEMORY_MANAGER_FAULT) != 0);
bool scriptFault = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_SCRIPTS_FAULT) != 0);
bool waitForReboot = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_WAIT_FOR_REBOOT) != 0);
bool universalCountersFault = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_UNIVERSAL_COUNTERS_FAULT) != 0);
bool commoditiesTableFault = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_COMMODITIES_TABLE_FAULT) != 0);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_FATAL_STATUS);
fptr.queryData();

bool noSerialNumber = fptr.getParamBool(LIBFPTR_PARAM_NO_SERIAL_NUMBER);
bool rtcFault = fptr.getParamBool(LIBFPTR_PARAM_RTC_FAULT);
bool settingsFault = fptr.getParamBool(LIBFPTR_PARAM_SETTINGS_FAULT);
bool counterFault = fptr.getParamBool(LIBFPTR_PARAM_COUNTERS_FAULT);
bool userMemoryFault = fptr.getParamBool(LIBFPTR_PARAM_USER_MEMORY_FAULT);
bool serviceCountersFault = fptr.getParamBool(LIBFPTR_PARAM_SERVICE_COUNTERS_FAULT);
bool attributesFault = fptr.getParamBool(LIBFPTR_PARAM_ATTRIBUTES_FAULT);
bool fnFault = fptr.getParamBool(LIBFPTR_PARAM_FN_FAULT);
bool invalidFN = fptr.getParamBool(LIBFPTR_PARAM_INVALID_FN);
bool hardFault = fptr.getParamBool(LIBFPTR_PARAM_HARD_FAULT);
bool memoryManagerFault = fptr.getParamBool(LIBFPTR_PARAM_MEMORY_MANAGER_FAULT);
bool scriptFault = fptr.getParamBool(LIBFPTR_PARAM_SCRIPTS_FAULT);
bool waitForReboot = fptr.getParamBool(LIBFPTR_PARAM_WAIT_FOR_REBOOT);
bool universalCountersFault = fptr.getParamBool(LIBFPTR_PARAM_UNIVERSAL_COUNTERS_FAULT);
bool commoditiesTableFault = fptr.getParamBool(LIBFPTR_PARAM_COMMODITIES_TABLE_FAULT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_FATAL_STATUS)
fptr.queryData()

noSerialNumber = fptr.getParamBool(IFptr.LIBFPTR_PARAM_NO_SERIAL_NUMBER)
rtcFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_RTC_FAULT)
settingsFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_SETTINGS_FAULT)
counterFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_COUNTERS_FAULT)
userMemoryFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_USER_MEMORY_FAULT)
serviceCountersFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_SERVICE_COUNTERS_FAULT)
attributesFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_ATTRIBUTES_FAULT)
fnFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_FAULT)
invalidFN = fptr.getParamBool(IFptr.LIBFPTR_PARAM_INVALID_FN)
hardFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_HARD_FAULT)
memoryManagerFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_MEMORY_MANAGER_FAULT)
scriptFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_SCRIPTS_FAULT)
waitForReboot = fptr.getParamBool(IFptr.LIBFPTR_PARAM_WAIT_FOR_REBOOT)
universalCountersFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_UNIVERSAL_COUNTERS_FAULT)
commoditiesTableFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_COMMODITIES_TABLE_FAULT)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_FATAL_STATUS);
fptr.queryData();

boolean noSerialNumber = fptr.getParamBool(IFptr.LIBFPTR_PARAM_NO_SERIAL_NUMBER);
boolean rtcFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_RTC_FAULT);
boolean settingsFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_SETTINGS_FAULT);
boolean counterFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_COUNTERS_FAULT);
boolean userMemoryFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_USER_MEMORY_FAULT);
boolean serviceCountersFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_SERVICE_COUNTERS_FAULT);
boolean attributesFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_ATTRIBUTES_FAULT);
boolean fnFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_FAULT);
boolean invalidFN = fptr.getParamBool(IFptr.LIBFPTR_PARAM_INVALID_FN);
boolean hardFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_HARD_FAULT);
boolean memoryManagerFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_MEMORY_MANAGER_FAULT);
boolean scriptFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_SCRIPTS_FAULT);
boolean waitForReboot = fptr.getParamBool(IFptr.LIBFPTR_PARAM_WAIT_FOR_REBOOT);
boolean universalCountersFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_UNIVERSAL_COUNTERS_FAULT);
boolean commoditiesTableFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_COMMODITIES_TABLE_FAULT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_FATAL_STATUS);
fptr.queryData();

boolean noSerialNumber = fptr.getParamBool(IFptr.LIBFPTR_PARAM_NO_SERIAL_NUMBER);
boolean rtcFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_RTC_FAULT);
boolean settingsFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_SETTINGS_FAULT);
boolean counterFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_COUNTERS_FAULT);
boolean userMemoryFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_USER_MEMORY_FAULT);
boolean serviceCountersFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_SERVICE_COUNTERS_FAULT);
boolean attributesFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_ATTRIBUTES_FAULT);
boolean fnFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_FAULT);
boolean invalidFN = fptr.getParamBool(IFptr.LIBFPTR_PARAM_INVALID_FN);
boolean hardFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_HARD_FAULT);
boolean memoryManagerFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_MEMORY_MANAGER_FAULT);
boolean scriptFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_SCRIPTS_FAULT);
boolean waitForReboot = fptr.getParamBool(IFptr.LIBFPTR_PARAM_WAIT_FOR_REBOOT);
boolean universalCountersFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_UNIVERSAL_COUNTERS_FAULT);
boolean commoditiesTableFault = fptr.getParamBool(IFptr.LIBFPTR_PARAM_COMMODITIES_TABLE_FAULT);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_FATAL_STATUS];
[fptr queryData];

bool noSerialNumber = [fptr getParamBool:LIBFPTR_PARAM_NO_SERIAL_NUMBER];
bool rtcFault = [fptr getParamBool:LIBFPTR_PARAM_RTC_FAULT];
bool settingsFault = [fptr getParamBool:LIBFPTR_PARAM_SETTINGS_FAULT];
bool counterFault = [fptr getParamBool:LIBFPTR_PARAM_COUNTERS_FAULT];
bool userMemoryFault = [fptr getParamBool:LIBFPTR_PARAM_USER_MEMORY_FAULT];
bool serviceCountersFault = [fptr getParamBool:LIBFPTR_PARAM_SERVICE_COUNTERS_FAULT];
bool attributesFault = [fptr getParamBool:LIBFPTR_PARAM_ATTRIBUTES_FAULT];
bool fnFault = [fptr getParamBool:LIBFPTR_PARAM_FN_FAULT];
bool invalidFN = [fptr getParamBool:LIBFPTR_PARAM_INVALID_FN];
bool hardFault = [fptr getParamBool:LIBFPTR_PARAM_HARD_FAULT];
bool memoryManagerFault = [fptr getParamBool:LIBFPTR_PARAM_MEMORY_MANAGER_FAULT];
bool scriptFault = [fptr getParamBool:LIBFPTR_PARAM_SCRIPTS_FAULT];
bool waitForReboot = [fptr getParamBool:LIBFPTR_PARAM_WAIT_FOR_REBOOT];
bool universalCountersFault = [fptr getParamBool:LIBFPTR_PARAM_UNIVERSAL_COUNTERS_FAULT];
bool commoditiesTableFault = [fptr getParamBool:LIBFPTR_PARAM_COMMODITIES_TABLE_FAULT];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_FATAL_STATUS);
fptr.queryData();

bool noSerialNumber = fptr.getParamBool(Constants.LIBFPTR_PARAM_NO_SERIAL_NUMBER);
bool rtcFault = fptr.getParamBool(Constants.LIBFPTR_PARAM_RTC_FAULT);
bool settingsFault = fptr.getParamBool(Constants.LIBFPTR_PARAM_SETTINGS_FAULT);
bool counterFault = fptr.getParamBool(Constants.LIBFPTR_PARAM_COUNTERS_FAULT);
bool userMemoryFault = fptr.getParamBool(Constants.LIBFPTR_PARAM_USER_MEMORY_FAULT);
bool serviceCountersFault = fptr.getParamBool(Constants.LIBFPTR_PARAM_SERVICE_COUNTERS_FAULT);
bool attributesFault = fptr.getParamBool(Constants.LIBFPTR_PARAM_ATTRIBUTES_FAULT);
bool fnFault = fptr.getParamBool(Constants.LIBFPTR_PARAM_FN_FAULT);
bool invalidFN = fptr.getParamBool(Constants.LIBFPTR_PARAM_INVALID_FN);
bool hardFault = fptr.getParamBool(Constants.LIBFPTR_PARAM_HARD_FAULT);
bool memoryManagerFault = fptr.getParamBool(Constants.LIBFPTR_PARAM_MEMORY_MANAGER_FAULT);
bool scriptFault = fptr.getParamBool(Constants.LIBFPTR_PARAM_SCRIPTS_FAULT);
bool waitForReboot = fptr.getParamBool(Constants.LIBFPTR_PARAM_WAIT_FOR_REBOOT);
bool universalCountersFault = fptr.getParamBool(Constants.LIBFPTR_PARAM_UNIVERSAL_COUNTERS_FAULT);
bool commoditiesTableFault = fptr.getParamBool(Constants.LIBFPTR_PARAM_COMMODITIES_TABLE_FAULT);
|

|var
noSerialNumber: LongBool;
rtcFault: LongBool;
settingsFault: LongBool;
counterFault: LongBool;
userMemoryFault: LongBool;
serviceCountersFault: LongBool;
attributesFault: LongBool;
fnFault: LongBool;
invalidFN: LongBool;
hardFault: LongBool;
memoryManagerFault: LongBool;
scriptFault: LongBool;
waitForReboot: LongBool;
universalCountersFault: LongBool;
commoditiesTableFault: LongBool;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_FATAL_STATUS);
fptr.queryData;

noSerialNumber          := fptr.getParamBool(fptr.LIBFPTR_PARAM_NO_SERIAL_NUMBER);
rtcFault                := fptr.getParamBool(fptr.LIBFPTR_PARAM_RTC_FAULT);
settingsFault           := fptr.getParamBool(fptr.LIBFPTR_PARAM_SETTINGS_FAULT);
counterFault            := fptr.getParamBool(fptr.LIBFPTR_PARAM_COUNTERS_FAULT);
userMemoryFault         := fptr.getParamBool(fptr.LIBFPTR_PARAM_USER_MEMORY_FAULT);
serviceCountersFault    := fptr.getParamBool(fptr.LIBFPTR_PARAM_SERVICE_COUNTERS_FAULT);
attributesFault         := fptr.getParamBool(fptr.LIBFPTR_PARAM_ATTRIBUTES_FAULT);
fnFault                 := fptr.getParamBool(fptr.LIBFPTR_PARAM_FN_FAULT);
invalidFN               := fptr.getParamBool(fptr.LIBFPTR_PARAM_INVALID_FN);
hardFault               := fptr.getParamBool(fptr.LIBFPTR_PARAM_HARD_FAULT);
memoryManagerFault      := fptr.getParamBool(fptr.LIBFPTR_PARAM_MEMORY_MANAGER_FAULT);
scriptFault             := fptr.getParamBool(fptr.LIBFPTR_PARAM_SCRIPTS_FAULT);
waitForReboot           := fptr.getParamBool(fptr.LIBFPTR_PARAM_WAIT_FOR_REBOOT);
universalCountersFault  := fptr.getParamBool(fptr.LIBFPTR_PARAM_UNIVERSAL_COUNTERS_FAULT);
commoditiesTableFault   := fptr.getParamBool(fptr.LIBFPTR_PARAM_COMMODITIES_TABLE_FAULT);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_FATAL_STATUS)
fptr.QueryData()

noSerialNumber := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_NO_SERIAL_NUMBER)
rtcFault := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_RTC_FAULT)
settingsFault := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_SETTINGS_FAULT)
counterFault := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_COUNTERS_FAULT)
userMemoryFault := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_USER_MEMORY_FAULT)
serviceCountersFault := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_SERVICE_COUNTERS_FAULT)
attributesFault := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_ATTRIBUTES_FAULT)
fnFault := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_FN_FAULT)
invalidFN := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_INVALID_FN)
hardFault := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_HARD_FAULT)
memoryManagerFault := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_MEMORY_MANAGER_FAULT)
scriptFault := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_SCRIPTS_FAULT)
waitForReboot := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_WAIT_FOR_REBOOT)
universalCountersFault := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_UNIVERSAL_COUNTERS_FAULT)
commoditiesTableFault := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_COMMODITIES_TABLE_FAULT)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_FATAL_STATUS);
Fptr.queryData();

noSerialNumber = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_NO_SERIAL_NUMBER);
rtcFault = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_RTC_FAULT);
settingsFault = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_SETTINGS_FAULT);
counterFault = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_COUNTERS_FAULT);
userMemoryFault = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_USER_MEMORY_FAULT);
serviceCountersFault = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_SERVICE_COUNTERS_FAULT);
attributesFault = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_ATTRIBUTES_FAULT);
fnFault = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_FN_FAULT);
invalidFN = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_INVALID_FN);
hardFault = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_HARD_FAULT);
memoryManagerFault = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_MEMORY_MANAGER_FAULT);
scriptFault = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_SCRIPTS_FAULT);
waitForReboot = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_WAIT_FOR_REBOOT);
universalCountersFault = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_UNIVERSAL_COUNTERS_FAULT);
commoditiesTableFault = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_COMMODITIES_TABLE_FAULT);
|

Для запроса фатальных ошибок необходимо вызвать метод /queryData()/ с
типом запроса LIBFPTR_PARAM_DATA_TYPE равным LIBFPTR_DT_FATAL_STATUS.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_NO_SERIAL_NUMBER Не введен ЗН ККТ bool
LIBFPTR_PARAM_RTC_FAULT Ошибка часов реального времени bool
LIBFPTR_PARAM_SETTINGS_FAULT Ошибка настроек bool
LIBFPTR_PARAM_COUNTERS_FAULT Ошибка счетчиков bool
LIBFPTR_PARAM_USER_MEMORY_FAULT Ошибка пользовательской памяти bool
LIBFPTR_PARAM_SERVICE_COUNTERS_FAULT Ошибка сервисных регистров bool
LIBFPTR_PARAM_ATTRIBUTES_FAULT Ошибка реквизитов bool
LIBFPTR_PARAM_FN_FAULT Фатальная ошибка ФН bool
LIBFPTR_PARAM_INVALID_FN Установлен ФН из другой ККТ bool
LIBFPTR_PARAM_HARD_FAULT Фатальная аппаратная ошибка bool
LIBFPTR_PARAM_MEMORY_MANAGER_FAULT Ошибка диспетчера памяти bool
LIBFPTR_PARAM_SCRIPTS_FAULT Шаблоны повреждены или отсутствуют bool
LIBFPTR_PARAM_WAIT_FOR_REBOOT Требуется перезагрузка bool
LIBFPTR_PARAM_UNIVERSAL_COUNTERS_FAULT Ошибка универсальных счётчиков
bool
LIBFPTR_PARAM_COMMODITIES_TABLE_FAULT Ошибка таблицы товаров bool

Поддерживается только для ККТ версий 5.X

MAC-адрес Ethernet

Запрос MAC-адреса Ethernet

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_MAC_ADDRESS);
libfptr_query_data(fptr);

std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_MAC_ADDRESS, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_MAC_ADDRESS, &str[0], str.size());
}
std::wstring mac = std::wstring(&str[0]);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_MAC_ADDRESS);
fptr.queryData();

std::wstring mac = fptr.getParamString(LIBFPTR_PARAM_MAC_ADDRESS);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_MAC_ADDRESS)
fptr.queryData()

mac = fptr.getParamString(IFptr.LIBFPTR_PARAM_MAC_ADDRESS)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_MAC_ADDRESS);
fptr.queryData();

String mac = fptr.getParamString(IFptr.LIBFPTR_PARAM_MAC_ADDRESS);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_MAC_ADDRESS);
fptr.queryData();

String mac = fptr.getParamString(IFptr.LIBFPTR_PARAM_MAC_ADDRESS);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_MAC_ADDRESS];
[fptr queryData];

NSString *mac = [fptr getParamString: LIBFPTR_PARAM_MAC_ADDRESS];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_MAC_ADDRESS);
fptr.queryData();

String mac = fptr.getParamString(Constants.LIBFPTR_PARAM_MAC_ADDRESS);
|

|var
uptime: String;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_MAC_ADDRESS);
fptr.queryData;

mac := fptr.getParamString(fptr.LIBFPTR_PARAM_MAC_ADDRESS);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_MAC_ADDRESS)
fptr.QueryData()

mac := fptr.GetParamString(fptr10.LIBFPTR_PARAM_MAC_ADDRESS)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_MAC_ADDRESS);
Fptr.queryData();

mac = Fptr.getParamString(Fptr.LIBFPTR_PARAM_MAC_ADDRESS);
|

Для запроса MAC-адреса Ethernet необходимо вызвать метод /queryData()/
с типом запроса LIBFPTR_PARAM_DATA_TYPE равным LIBFPTR_DT_MAC_ADDRESS.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_MAC_ADDRESS MAC-адрес string

Поддерживается для всех ККТ

Адрес модуля и сегмента

Запрос адреса модуля и сегмента

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_MODULE_ADDRESS);
libfptr_query_data(fptr);

uint segment = libfptr_get_param_int(fptr, LIBFPTR_PARAM_SEGMENT_ADDRESS);
uint module = libfptr_get_param_int(fptr, LIBFPTR_PARAM_MODULE_ADDRESS)
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_MODULE_ADDRESS);
fptr.queryData();

uint segment = fptr.getParamInt(LIBFPTR_PARAM_SEGMENT_ADDRESS);
uint module = fptr.getParamInt(LIBFPTR_PARAM_MODULE_ADDRESS);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_MODULE_ADDRESS)
fptr.queryData()

segment = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SEGMENT_ADDRESS)
module = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MODULE_ADDRESS)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_MODULE_ADDRESS);
fptr.queryData();

long segment = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SEGMENT_ADDRESS);
long module = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MODULE_ADDRESS);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_MODULE_ADDRESS);
fptr.queryData();

long segment = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SEGMENT_ADDRESS);
long module = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MODULE_ADDRESS);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_MODULE_ADDRESS];
[fptr queryData];

uint segment = [fptr getParamInt: LIBFPTR_PARAM_SEGMENT_ADDRESS];
uint module = [fptr getParamInt: LIBFPTR_PARAM_MODULE_ADDRESS];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_MODULE_ADDRESS);
fptr.queryData();

uint segment = fptr.getParamInt(Constants.LIBFPTR_PARAM_SEGMENT_ADDRESS);
uint module = fptr.getParamInt(Constants.LIBFPTR_PARAM_MODULE_ADDRESS);
|

|var
segment: Longint;
module: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_MODULE_ADDRESS);
fptr.queryData;

segment := fptr.getParamInt(fptr.LIBFPTR_PARAM_SEGMENT_ADDRESS);
module := fptr.getParamInt(fptr.LIBFPTR_PARAM_MODULE_ADDRESS);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_MODULE_ADDRESS)
fptr.QueryData()

segment := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_SEGMENT_ADDRESS)
module := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_MODULE_ADDRESS)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_MODULE_ADDRESS);
Fptr.queryData();

segment = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_SEGMENT_ADDRESS);
module = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_MODULE_ADDRESS);
|

Для запроса адреса модуля и сегмента необходимо вызвать метод / queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_MODULE_ADDRESS.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_SEGMENT_ADDRESS Адрес сегмента int
LIBFPTR_PARAM_MODULE_ADDRESS Адрес модуля int

Поддерживается только для ККТ АТОЛ 47ФА

Время работы ККТ

Запрос времени работы ККТ

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_DEVICE_UPTIME);
libfptr_query_data(fptr);

uint uptime = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DEVICE_UPTIME);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_DEVICE_UPTIME);
fptr.queryData();

uint uptime = fptr.getParamInt(LIBFPTR_PARAM_DEVICE_UPTIME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_DEVICE_UPTIME)
fptr.queryData()

uptime = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DEVICE_UPTIME)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_DEVICE_UPTIME);
fptr.queryData();

long uptime = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DEVICE_UPTIME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_DEVICE_UPTIME);
fptr.queryData();

long uptime = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DEVICE_UPTIME);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_DEVICE_UPTIME];
[fptr queryData];

uint uptime = [fptr getParamInt: LIBFPTR_PARAM_DEVICE_UPTIME];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_DEVICE_UPTIME);
fptr.queryData();

uint uptime = fptr.getParamInt(Constants.LIBFPTR_PARAM_DEVICE_UPTIME);
|

|var
uptime: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_DEVICE_UPTIME);
fptr.queryData;

uptime := fptr.getParamInt(fptr.LIBFPTR_PARAM_DEVICE_UPTIME);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_DEVICE_UPTIME)
fptr.QueryData()

uptime := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DEVICE_UPTIME)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_DEVICE_UPTIME);
Fptr.queryData();

uptime = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DEVICE_UPTIME);
|

Для запроса времени работы ККТ необходимо вызвать метод /queryData()/
с типом запроса LIBFPTR_PARAM_DATA_TYPE равным LIBFPTR_DT_DEVICE_UPTIME.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_DEVICE_UPTIME Время работы ККТ, с. int

Поддерживается только для ККТ версий 3.X

Суммы скидок и надбавок за смену

Запрос сумм скидок и надбавок за смену

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_DISCOUNT_AND_SURCHARGE_SUM);
libfptr_query_data(fptr);

double discountSum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_DISCOUNT_SUM);
double surchargeSum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_SURCHARGE_SUM);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_DISCOUNT_AND_SURCHARGE_SUM);
fptr.queryData();

double discountSum = fptr.getParamDouble(LIBFPTR_PARAM_DISCOUNT_SUM);
double surchargeSum = fptr.getParamDouble(LIBFPTR_PARAM_SURCHARGE_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_DISCOUNT_AND_SURCHARGE_SUM)
fptr.queryData()

discountSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_DISCOUNT_SUM)
surchargeSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SURCHARGE_SUM)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_DISCOUNT_AND_SURCHARGE_SUM);
fptr.queryData();

double discountSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_DISCOUNT_SUM);
double surchargeSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SURCHARGE_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_DISCOUNT_AND_SURCHARGE_SUM);
fptr.queryData();

double discountSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_DISCOUNT_SUM);
double surchargeSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SURCHARGE_SUM);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_DISCOUNT_AND_SURCHARGE_SUM];
[fptr queryData];

double discountSum = [fptr getParamDouble:LIBFPTR_PARAM_DISCOUNT_SUM];
double surchargeSum = [fptr getParamDouble:LIBFPTR_PARAM_SURCHARGE_SUM];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_DISCOUNT_AND_SURCHARGE_SUM);
fptr.queryData();

double discountSum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_DISCOUNT_SUM);
double surchargeSum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_SURCHARGE_SUM);
|

|var
discountSum: Double;
surchargeSum: Double;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_DISCOUNT_AND_SURCHARGE_SUM);
fptr.queryData;

discountSum := fptr.getParamDouble(fptr.LIBFPTR_PARAM_DISCOUNT_SUM);
surchargeSum := fptr.getParamDouble(fptr.LIBFPTR_PARAM_SURCHARGE_SUM);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_DISCOUNT_AND_SURCHARGE_SUM)
fptr.QueryData()

discountSum := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_DISCOUNT_SUM)
surchargeSum := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_SURCHARGE_SUM)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_DISCOUNT_AND_SURCHARGE_SUM);
Fptr.queryData();

discountSum = fptr.getParamDouble(Fptr.LIBFPTR_PARAM_DISCOUNT_SUM);
surchargeSum = fptr.getParamDouble(Fptr.LIBFPTR_PARAM_SURCHARGE_SUM);
|

Для сумм скидок и надбавок за смену необходимо вызвать метод / queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_DISCOUNT_AND_SURCHARGE_SUM.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_DISCOUNT_SUM Сумма скидок за смену double
LIBFPTR_PARAM_SURCHARGE_SUM Сумма надбавок за смену double

Поддерживается только для ККТ версий 3.X

Код привязки к личному кабинету

Запрос кода привязки к ЛК

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_LK_USER_CODE);
libfptr_query_data(fptr);

std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_LK_USER_CODE, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_LK_USER_CODE, &str[0], str.size());
}
std::wstring codeLK = std::wstring(&str[0]);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_LK_USER_CODE);
fptr.queryData();

std::wstring codeLK = fptr.getParamString(LIBFPTR_PARAM_LK_USER_CODE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_LK_USER_CODE)
fptr.queryData()

codeLK = fptr.getParamString(IFptr.LIBFPTR_PARAM_LK_USER_CODE)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_LK_USER_CODE);
fptr.queryData();

String codeLK = fptr.getParamString(IFptr.LIBFPTR_PARAM_LK_USER_CODE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_LK_USER_CODE);
fptr.queryData();

String codeLK = fptr.getParamString(IFptr.LIBFPTR_PARAM_LK_USER_CODE);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_LK_USER_CODE];
[fptr queryData];

NSString *codeLK = [fptr getParamString: LIBFPTR_PARAM_LK_USER_CODE];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_LK_USER_CODE);
fptr.queryData();

String codeLK = fptr.getParamString(Constants.LIBFPTR_PARAM_LK_USER_CODE);
|

|var
codeLK: String;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_LK_USER_CODE);
fptr.queryData;

codeLK := fptr.getParamString(fptr.LIBFPTR_PARAM_LK_USER_CODE);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_LK_USER_CODE)
fptr.QueryData()

codeLK := fptr.GetParamString(fptr10.LIBFPTR_PARAM_LK_USER_CODE)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_LK_USER_CODE);
Fptr.queryData();

codeLK = Fptr.getParamString(Fptr.LIBFPTR_PARAM_LK_USER_CODE);
|

Для запроса кода привязки ККТ к ЛК необходимо вызвать метод / queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_LK_USER_CODE.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_LK_USER_CODE Код привязки к ЛК string

Поддерживается только для ККТ версий 3.X

Дата и время последней успешной отправки документа в ОФД

Запрос даты и времени последней успешной отправки документа в ОФД

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_LAST_SENT_OFD_DOCUMENT_DATE_TIME);
libfptr_query_data(fptr);

int year, month, day, hour, minute, second;
ibfptr_get_param_datetime(fptr, LIBFPTR_PARAM_DATE_TIME, &year, &month, &day, &hour, &minute, &second);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_LAST_SENT_OFD_DOCUMENT_DATE_TIME);
fptr.queryData();

std::tm dateTime = fptr.getParamDateTime(LIBFPTR_PARAM_DATE_TIME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_LAST_SENT_OFD_DOCUMENT_DATE_TIME)
fptr.queryData()

Тип переменной datetime — datetime.datetime

dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_LAST_SENT_OFD_DOCUMENT_DATE_TIME);
fptr.queryData();

Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_LAST_SENT_OFD_DOCUMENT_DATE_TIME);
fptr.queryData();

Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_LAST_SENT_OFD_DOCUMENT_DATE_TIME];
[fptr queryData];

NSDate *dateTime = [fptr getParamDateTime:LIBFPTR_PARAM_DATE_TIME];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_LAST_SENT_OFD_DOCUMENT_DATE_TIME);
fptr.queryData();

Date dateTime = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);
|

|var
dateTime: TDateTime;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_LAST_SENT_OFD_DOCUMENT_DATE_TIME);
fptr.queryData;

dateTime := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_LAST_SENT_OFD_DOCUMENT_DATE_TIME)
fptr.QueryData()

dateTime := fptr.GetParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_LAST_SENT_OFD_DOCUMENT_DATE_TIME);
Fptr.queryData();

dateTime = Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_DATE_TIME);
|

Для запроса даты и времени последней успешной отправки документа в ОФД
необходимо вызвать метод /queryData()/ с типом запроса
LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_LAST_SENT_OFD_DOCUMENT_DATE_TIME.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_DATE_TIME Дата и время последней успешной отправки
документа в ОФД datetime

Поддерживается для всех ККТ

Текущая конфигурация Ethernet

Запрос текущей конфигурации Ethernet

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_ETHERNET_INFO);
libfptr_query_data(fptr);

std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_ETHERNET_IP, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_ETHERNET_IP, &str[0], str.size());
}
std::wstring ip = std::wstring(&str[0]);

size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_ETHERNET_MASK, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_ETHERNET_MASK, &str[0], str.size());
}
std::wstring mask = std::wstring(&str[0]);

size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_ETHERNET_GATEWAY, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_ETHERNET_GATEWAY, &str[0], str.size());
}
std::wstring gateway = std::wstring(&str[0]);

size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_ETHERNET_DNS_IP, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_ETHERNET_DNS_IP, &str[0], str.size());
}
std::wstring dns = std::wstring(&str[0]);

int timeout = libfptr_get_param_int(fptr, LIBFPTR_PARAM_ETHERNET_CONFIG_TIMEOUT);
int port = libfptr_get_param_int(fptr, LIBFPTR_PARAM_ETHERNET_PORT);

bool dhcp = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_ETHERNET_DHCP);
bool dnsStatic = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_ETHERNET_DNS_STATIC);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_ETHERNET_INFO);
fptr.queryData();

std::wstring ip = fptr.getParamString(LIBFPTR_PARAM_ETHERNET_IP);
std::wstring mask = fptr.getParamString(LIBFPTR_PARAM_ETHERNET_MASK);
std::wstring gateway = fptr.getParamString(LIBFPTR_PARAM_ETHERNET_GATEWAY);
std::wstring dns = fptr.getParamString(LIBFPTR_PARAM_ETHERNET_DNS_IP);

uint timeout = fptr.getParamInt(LIBFPTR_PARAM_ETHERNET_CONFIG_TIMEOUT);
uint port = fptr.getParamInt(LIBFPTR_PARAM_ETHERNET_PORT);

bool dhcp = fptr.getParamBool(LIBFPTR_PARAM_ETHERNET_DHCP);
bool dnsStatic = fptr.getParamBool(LIBFPTR_PARAM_ETHERNET_DNS_STATIC);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_ETHERNET_INFO)
fptr.queryData()

ip = fptr.getParamString(IFptr.LIBFPTR_PARAM_ETHERNET_IP)
mask = fptr.getParamString(IFptr.LIBFPTR_PARAM_ETHERNET_MASK)
gateway = fptr.getParamString(IFptr.LIBFPTR_PARAM_ETHERNET_GATEWAY)
dns = fptr.getParamString(IFptr.LIBFPTR_PARAM_ETHERNET_DNS_IP)

timeout = fptr.getParamInt(IFptr.LIBFPTR_PARAM_ETHERNET_CONFIG_TIMEOUT)
port = fptr.getParamInt(IFptr.LIBFPTR_PARAM_ETHERNET_PORT)

dhcp = fptr.getParamBool(IFptr.LIBFPTR_PARAM_ETHERNET_DHCP)
dnsStatic = fptr.getParamBool(IFptr.LIBFPTR_PARAM_ETHERNET_DNS_STATIC)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_ETHERNET_INFO);
fptr.queryData();

String ip = fptr.getParamString(IFptr.LIBFPTR_PARAM_ETHERNET_IP);
String mask = fptr.getParamString(IFptr.LIBFPTR_PARAM_ETHERNET_MASK);
String gateway = fptr.getParamString(IFptr.LIBFPTR_PARAM_ETHERNET_GATEWAY);
String dns = fptr.getParamString(IFptr.LIBFPTR_PARAM_ETHERNET_DNS_IP);

long timeout = fptr.getParamInt(IFptr.LIBFPTR_PARAM_ETHERNET_CONFIG_TIMEOUT);
long port = fptr.getParamInt(IFptr.LIBFPTR_PARAM_ETHERNET_PORT);

boolean dhcp = fptr.getParamBool(IFptr.LIBFPTR_PARAM_ETHERNET_DHCP);
boolean dnsStatic = fptr.getParamBool(IFptr.LIBFPTR_PARAM_ETHERNET_DNS_STATIC);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_ETHERNET_INFO);
fptr.queryData();

String ip = fptr.getParamString(IFptr.LIBFPTR_PARAM_ETHERNET_IP);
String mask = fptr.getParamString(IFptr.LIBFPTR_PARAM_ETHERNET_MASK);
String gateway = fptr.getParamString(IFptr.LIBFPTR_PARAM_ETHERNET_GATEWAY);
String dns = fptr.getParamString(IFptr.LIBFPTR_PARAM_ETHERNET_DNS_IP);

long timeout = fptr.getParamInt(IFptr.LIBFPTR_PARAM_ETHERNET_CONFIG_TIMEOUT);
long port = fptr.getParamInt(IFptr.LIBFPTR_PARAM_ETHERNET_PORT);

boolean dhcp = fptr.getParamBool(IFptr.LIBFPTR_PARAM_ETHERNET_DHCP);
boolean dnsStatic = fptr.getParamBool(IFptr.LIBFPTR_PARAM_ETHERNET_DNS_STATIC);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_ETHERNET_INFO];
[fptr queryData];

NSString *ip = [fptr getParamString:LIBFPTR_PARAM_ETHERNET_IP];
NSString *mask = [fptr getParamString:LIBFPTR_PARAM_ETHERNET_MASK];
NSString *gateway = [fptr getParamString:LIBFPTR_PARAM_ETHERNET_GATEWAY];
NSString *dns = [fptr getParamString:LIBFPTR_PARAM_ETHERNET_DNS_IP];

uint timeout = [fptr getParamInt:LIBFPTR_PARAM_ETHERNET_CONFIG_TIMEOUT];
uint port = [fptr getParamInt:LIBFPTR_PARAM_ETHERNET_PORT];

bool dhcp = [fptr getParamBool:LIBFPTR_PARAM_ETHERNET_DHCP];
bool dnsStatic = [fptr getParamBool:LIBFPTR_PARAM_ETHERNET_DNS_STATIC];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_ETHERNET_INFO);
fptr.queryData();

String ip = fptr.getParamString(Constants.LIBFPTR_PARAM_ETHERNET_IP);
String mask = fptr.getParamString(Constants.LIBFPTR_PARAM_ETHERNET_MASK);
String gateway = fptr.getParamString(Constants.LIBFPTR_PARAM_ETHERNET_GATEWAY);
String dns = fptr.getParamString(Constants.LIBFPTR_PARAM_ETHERNET_DNS_IP);

int timeout = fptr.getParamInt(Constants.LIBFPTR_PARAM_ETHERNET_CONFIG_TIMEOUT);
int port = fptr.getParamInt(Constants.LIBFPTR_PARAM_ETHERNET_PORT);

boolean dhcp = fptr.getParamBool(Constants.LIBFPTR_PARAM_ETHERNET_DHCP);
boolean dnsStatic = fptr.getParamBool(Constants.LIBFPTR_PARAM_ETHERNET_DNS_STATIC);
|

|var
ip: String;
mask: String;
gateway: String;
dns: String;

timeout:    Longint;
port:       Longint;

dhcp:       LongBool;
dnsStatic:  LongBool;

begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_ETHERNET_INFO);
fptr.queryData;

ip          := fptr.getParamString(fptr.LIBFPTR_PARAM_ETHERNET_IP);
mask        := fptr.getParamString(fptr.LIBFPTR_PARAM_ETHERNET_MASK);
gateway     := fptr.getParamString(fptr.LIBFPTR_PARAM_ETHERNET_GATEWAY);
dns         := fptr.getParamString(fptr.LIBFPTR_PARAM_ETHERNET_DNS_IP);

timeout     := fptr.getParamInt(fptr.LIBFPTR_PARAM_ETHERNET_CONFIG_TIMEOUT);
port        := fptr.getParamInt(fptr.LIBFPTR_PARAM_ETHERNET_PORT);

dhcp        := fptr.getParamBool(fptr.LIBFPTR_PARAM_ETHERNET_DHCP);
dnsStatic   := fptr.getParamBool(fptr.LIBFPTR_PARAM_ETHERNET_DNS_STATIC);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_ETHERNET_INFO)
fptr.QueryData()

ip := fptr.GetParamString(fptr10.LIBFPTR_PARAM_ETHERNET_IP)
mask := fptr.GetParamString(fptr10.LIBFPTR_PARAM_ETHERNET_MASK)
gateway := fptr.GetParamString(fptr10.LIBFPTR_PARAM_ETHERNET_GATEWAY)
dns := fptr.GetParamString(fptr10.LIBFPTR_PARAM_ETHERNET_DNS_IP)

timeout := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_ETHERNET_CONFIG_TIMEOUT)
port := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_ETHERNET_PORT)

dhcp := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_ETHERNET_DHCP)
dnsStatic := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_ETHERNET_DNS_STATIC)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_ETHERNET_INFO);
Fptr.queryData();

ip = Fptr.getParamString(Fptr.LIBFPTR_PARAM_ETHERNET_IP);
mask = Fptr.getParamString(Fptr.LIBFPTR_PARAM_ETHERNET_MASK);
gateway = Fptr.getParamString(Fptr.LIBFPTR_PARAM_ETHERNET_GATEWAY);
dns = Fptr.getParamString(Fptr.LIBFPTR_PARAM_ETHERNET_DNS_IP);

timeout = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_ETHERNET_CONFIG_TIMEOUT);
port = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_ETHERNET_PORT);

dhcp = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_ETHERNET_DHCP);
dnsStatic = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_ETHERNET_DNS_STATIC);
|

Для запроса текущей конфигурации Ethernet необходимо вызвать метод / queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_ETHERNET_INFO.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_ETHERNET_CONFIG_TIMEOUT Таймаут получения конфигурации
из сети int
LIBFPTR_PARAM_ETHERNET_DHCP Получает ли ККТ настройки по DHCP bool
LIBFPTR_PARAM_ETHERNET_IP IP-адрес string
LIBFPTR_PARAM_ETHERNET_MASK Маска сети string
LIBFPTR_PARAM_ETHERNET_GATEWAY Шлюз string
LIBFPTR_PARAM_ETHERNET_PORT Порт int
LIBFPTR_PARAM_ETHERNET_DNS_IP Адрес сервера DNS string
LIBFPTR_PARAM_ETHERNET_DNS_STATIC Используется статичный DNS или
получается из сети bool

Поддерживается только для ККТ версий 5.X

Текущая конфигурация Wi-Fi

Запрос текущей конфигурации Wi-Fi

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_WIFI_INFO);
libfptr_query_data(fptr);

std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_WIFI_IP, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_WIFI_IP, &str[0], str.size());
}
std::wstring ip = std::wstring(&str[0]);

size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_WIFI_MASK, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_WIFI_MASK, &str[0], str.size());
}
std::wstring mask = std::wstring(&str[0]);

size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_WIFI_GATEWAY, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_WIFI_GATEWAY, &str[0], str.size());
}
std::wstring gateway = std::wstring(&str[0]);

int timeout = libfptr_get_param_int(fptr, LIBFPTR_PARAM_WIFI_CONFIG_TIMEOUT);
int port = libfptr_get_param_int(fptr, LIBFPTR_PARAM_WIFI_PORT);

bool dhcp = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_WIFI_DHCP);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_WIFI_INFO);
fptr.queryData();

std::wstring ip = fptr.getParamString(LIBFPTR_PARAM_WIFI_IP);
std::wstring mask = fptr.getParamString(LIBFPTR_PARAM_WIFI_MASK);
std::wstring gateway = fptr.getParamString(LIBFPTR_PARAM_WIFI_GATEWAY);

uint timeout = fptr.getParamInt(LIBFPTR_PARAM_WIFI_CONFIG_TIMEOUT);
uint port = fptr.getParamInt(LIBFPTR_PARAM_WIFI_PORT);

bool dhcp = fptr.getParamBool(LIBFPTR_PARAM_WIFI_DHCP);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_WIFI_INFO)
fptr.queryData()

ip = fptr.getParamString(IFptr.LIBFPTR_PARAM_WIFI_IP)
mask = fptr.getParamString(IFptr.LIBFPTR_PARAM_WIFI_MASK)
gateway = fptr.getParamString(IFptr.LIBFPTR_PARAM_WIFI_GATEWAY)

timeout = fptr.getParamInt(IFptr.LIBFPTR_PARAM_WIFI_CONFIG_TIMEOUT)
port = fptr.getParamInt(IFptr.LIBFPTR_PARAM_WIFI_PORT)

dhcp = fptr.getParamBool(IFptr.LIBFPTR_PARAM_WIFI_DHCP)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_WIFI_INFO);
fptr.queryData();

String ip = fptr.getParamString(IFptr.LIBFPTR_PARAM_WIFI_IP);
String mask = fptr.getParamString(IFptr.LIBFPTR_PARAM_WIFI_MASK);
String gateway = fptr.getParamString(IFptr.LIBFPTR_PARAM_WIFI_GATEWAY);

long timeout = fptr.getParamInt(IFptr.LIBFPTR_PARAM_WIFI_CONFIG_TIMEOUT);
long port = fptr.getParamInt(IFptr.LIBFPTR_PARAM_WIFI_PORT);

boolean dhcp = fptr.getParamBool(IFptr.LIBFPTR_PARAM_WIFI_DHCP);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_WIFI_INFO);
fptr.queryData();

String ip = fptr.getParamString(IFptr.LIBFPTR_PARAM_WIFI_IP);
String mask = fptr.getParamString(IFptr.LIBFPTR_PARAM_WIFI_MASK);
String gateway = fptr.getParamString(IFptr.LIBFPTR_PARAM_WIFI_GATEWAY);

long timeout = fptr.getParamInt(IFptr.LIBFPTR_PARAM_WIFI_CONFIG_TIMEOUT);
long port = fptr.getParamInt(IFptr.LIBFPTR_PARAM_WIFI_PORT);

boolean dhcp = fptr.getParamBool(IFptr.LIBFPTR_PARAM_WIFI_DHCP);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_WIFI_INFO];
[fptr queryData];

NSString *ip = [fptr getParamString:LIBFPTR_PARAM_WIFI_IP];
NSString *mask = [fptr getParamString:LIBFPTR_PARAM_WIFI_MASK];
NSString *gateway = [fptr getParamString:LIBFPTR_PARAM_WIFI_GATEWAY];

uint timeout = [fptr getParamInt:LIBFPTR_PARAM_WIFI_CONFIG_TIMEOUT];
uint port = [fptr getParamInt:LIBFPTR_PARAM_WIFI_PORT];

bool dhcp = [fptr getParamBool:LIBFPTR_PARAM_WIFI_DHCP];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_WIFI_INFO);
fptr.queryData();

String ip = fptr.getParamString(Constants.LIBFPTR_PARAM_WIFI_IP);
String mask = fptr.getParamString(Constants.LIBFPTR_PARAM_WIFI_MASK);
String gateway = fptr.getParamString(Constants.LIBFPTR_PARAM_WIFI_GATEWAY);

int timeout = fptr.getParamInt(Constants.LIBFPTR_PARAM_WIFI_CONFIG_TIMEOUT);
int port = fptr.getParamInt(Constants.LIBFPTR_PARAM_WIFI_PORT);

boolean dhcp = fptr.getParamBool(Constants.LIBFPTR_PARAM_WIFI_DHCP);
|

|var
ip: String;
mask: String;
gateway: String;

timeout:    Longint;
port:       Longint;

dhcp:       LongBool;

begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_WIFI_INFO);
fptr.queryData;

ip          := fptr.getParamString(fptr.LIBFPTR_PARAM_WIFI_IP);
mask        := fptr.getParamString(fptr.LIBFPTR_PARAM_WIFI_MASK);
gateway     := fptr.getParamString(fptr.LIBFPTR_PARAM_WIFI_GATEWAY);

timeout     := fptr.getParamInt(fptr.LIBFPTR_PARAM_WIFI_CONFIG_TIMEOUT);
port        := fptr.getParamInt(fptr.LIBFPTR_PARAM_WIFI_PORT);

dhcp        := fptr.getParamBool(fptr.LIBFPTR_PARAM_WIFI_DHCP);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_WIFI_INFO)
fptr.QueryData()

ip := fptr.GetParamString(fptr10.LIBFPTR_PARAM_WIFI_IP)
mask := fptr.GetParamString(fptr10.LIBFPTR_PARAM_WIFI_MASK)
gateway := fptr.GetParamString(fptr10.LIBFPTR_PARAM_WIFI_GATEWAY)

timeout := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_WIFI_CONFIG_TIMEOUT)
port := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_WIFI_PORT)

dhcp := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_WIFI_DHCP)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_WIFI_INFO);
Fptr.queryData();

ip = Fptr.getParamString(Fptr.LIBFPTR_PARAM_WIFI_IP);
mask = Fptr.getParamString(Fptr.LIBFPTR_PARAM_WIFI_MASK);
gateway = Fptr.getParamString(Fptr.LIBFPTR_PARAM_WIFI_GATEWAY);

timeout = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_WIFI_CONFIG_TIMEOUT);
port = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_WIFI_PORT);

dhcp = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_WIFI_DHCP);
|

Для запроса текущей конфигурации Wi-Fi необходимо вызвать метод / queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_WIFI_INFO.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_WIFI_CONFIG_TIMEOUT Таймаут получения конфигурации из
сети Wi-Fi int
LIBFPTR_PARAM_WIFI_DHCP Получает ли ККТ настройки по DHCP в сети Wi-
Fi bool
LIBFPTR_PARAM_WIFI_IP IP-адрес в сети Wi-Fi string
LIBFPTR_PARAM_WIFI_MASK Маска сети Wi-Fi string
LIBFPTR_PARAM_WIFI_GATEWAY Шлюз в сети Wi-Fi string
LIBFPTR_PARAM_WIFI_PORT Порт в сети Wi-Fi int

Поддерживается только для ККТ версий 5.X

Загруженный шаблон

Запрос информации о загруженном шаблоне

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_SCRIPTS_INFO);
libfptr_query_data(fptr);

std::vector str(64);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_SCRIPT_NAME, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_SCRIPT_NAME, &str[0], str.size());
}
std::wstring name = std::wstring(&str[0]);

std::vector hash(32);
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_SCRIPT_HASH, &hash[0], hash.size());
if (size > hash.size())
{
hash.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_SCRIPT_HASH, &hash[0], hash.size());
}
hash.resize(size);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_SCRIPTS_INFO);
fptr.queryData();

std::wstring name = fptr.getParamString(LIBFPTR_PARAM_SCRIPT_NAME);
std::vector hash = fptr.getParamByteArray(LIBFPTR_PARAM_SCRIPT_HASH);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_SCRIPTS_INFO)
fptr.queryData()

name = fptr.getParamString(IFptr.LIBFPTR_PARAM_SCRIPT_NAME)
hash = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_SCRIPT_HASH)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_SCRIPTS_INFO);
fptr.queryData();

String name = fptr.getParamString(IFptr.LIBFPTR_PARAM_SCRIPT_NAME);
byte[] hash = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_SCRIPT_HASH);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_SCRIPTS_INFO);
fptr.queryData();

String name = fptr.getParamString(IFptr.LIBFPTR_PARAM_SCRIPT_NAME);
byte[] hash = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_SCRIPT_HASH);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_SCRIPTS_INFO];
[fptr queryData];

NSString *name = [fptr getParamString:LIBFPTR_PARAM_SCRIPT_NAME]
NSData *hash = [fptr getParamByteArray:LIBFPTR_PARAM_SCRIPT_HASH];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_SCRIPTS_INFO);
fptr.queryData();

String name = fptr.getParamString(Constants.LIBFPTR_PARAM_SCRIPT_NAME);
byte[] hash = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_SCRIPT_HASH);
|

|var
name: String;
hash: Variant;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_SCRIPTS_INFO);
fptr.queryData;

name := fptr.getParamString(fptr.LIBFPTR_PARAM_SCRIPT_NAME);
hash := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_SCRIPT_HASH);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_SCRIPTS_INFO)
fptr.QueryData()

name := fptr.GetParamString(IFptr.LIBFPTR_PARAM_SCRIPT_NAME);
hash := fptr.GetParamByteArray(IFptr.LIBFPTR_PARAM_SCRIPT_HASH);
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_SCRIPTS_INFO);
Fptr.queryData();

name = Fptr.getParamString(Fptr.LIBFPTR_PARAM_SCRIPT_NAME);
hash = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_SCRIPT_HASH);
|

Для запроса информации о загруженном в ККТ шаблоне необходимо вызвать
метод /queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_SCRIPTS_INFO.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_SCRIPT_NAME Наименование шаблона string
LIBFPTR_PARAM_SCRIPT_HASH Хеш шаблона bytearray

Поддерживается только для ККТ версий 5.X

Сменный итог

Запрос сменного итога по чекам прихода

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_SHIFT_TOTALS);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
libfptr_query_data(fptr);

double sum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_SUM);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_SHIFT_TOTALS);
fptr.setParam(LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
fptr.queryData();

double sum = fptr.getParamDouble(LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_SHIFT_TOTALS)
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL)
fptr.queryData()

sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_SHIFT_TOTALS);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.queryData();

double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_SHIFT_TOTALS);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.queryData();

double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_SHIFT_TOTALS];
[fptr setParam:LIBFPTR_PARAM_RECEIPT_TYPE intParam:LIBFPTR_RT_SELL];
[fptr queryData];

double sum = [fptr getParamDouble:LIBFPTR_PARAM_SUM];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_SHIFT_TOTALS);
fptr.setParam(Constants.LIBFPTR_PARAM_RECEIPT_TYPE, Constants.LIBFPTR_RT_SELL);
fptr.queryData();

double sum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_SUM);
|

|var
sum: Double;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_SHIFT_TOTALS);
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL);
fptr.queryData;

sum := fptr.getParamDouble(fptr.LIBFPTR_PARAM_SUM);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_SHIFT_TOTALS)
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE, fptr10.LIBFPTR_RT_SELL)
fptr.QueryData()

sum := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_SUM)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_SHIFT_TOTALS);
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE, Fptr.LIBFPTR_RT_SELL);
Fptr.queryData();

sum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_SUM);
|

Для запроса сменного итога необходимо вызвать метод /queryData()/ с
типом запроса LIBFPTR_PARAM_DATA_TYPE равным LIBFPTR_DT_SHIFT_TOTALS
и указать тип чека LIBFPTR_PARAM_RECEIPT_TYPE.

Тип чека (LIBFPTR_PARAM_RECEIPT_TYPE) может принимать следующие значения:

  • LIBFPTR_RT_SELL — чек прихода (продажи);
  • LIBFPTR_RT_SELL_RETURN — чек возврата прихода (продажи);
  • LIBFPTR_RT_SELL_CORRECTION — чек коррекции прихода (продажи);
  • LIBFPTR_RT_BUY — чек расхода (покупки);
  • LIBFPTR_RT_BUY_RETURN — чек возврата расхода (покупки);
  • LIBFPTR_RT_BUY_CORRECTION — чек коррекции расхода (покупки).

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_SUM Сумма налога double

Поддерживается только для ККТ версий 5.X

Параметры шрифта

Запрос параметров шрифта

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_FONT_INFO);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_FONT, 1);
libfptr_query_data(fptr);

int lineLength = libfptr_get_param_int(fptr, LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
int fontWidth = libfptr_get_param_int(fptr, LIBFPTR_PARAM_FONT_WIDTH);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_FONT_INFO);
fptr.setParam(LIBFPTR_PARAM_FONT, 1);
fptr.queryData();

uint lineLength = fptr.getParamInt(LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
uint fontWidth = fptr.getParamInt(LIBFPTR_PARAM_FONT_WIDTH);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_FONT_INFO)
fptr.setParam(IFptr.LIBFPTR_PARAM_FONT, 1)
fptr.queryData()

lineLength = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH)
fontWidth = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FONT_WIDTH)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_FONT_INFO);
fptr.setParam(IFptr.LIBFPTR_PARAM_FONT, 1);
fptr.queryData();

long lineLength = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
long fontWidth = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FONT_WIDTH);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_FONT_INFO);
fptr.setParam(IFptr.LIBFPTR_PARAM_FONT, 1);
fptr.queryData();

long lineLength = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
long fontWidth = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FONT_WIDTH);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_FONT_INFO];
[fptr setParam:LIBFPTR_PARAM_FONT intParam:1];
[fptr queryData];

uint lineLength = [fptr getParamInt:LIBFPTR_PARAM_RECEIPT_LINE_LENGTH];
uint fontWidth = [fptr getParamInt:LIBFPTR_PARAM_FONT_WIDTH];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_FONT_INFO);
fptr.setParam(Constants.LIBFPTR_PARAM_FONT, 1);
fptr.queryData();

uint lineLength = fptr.getParamInt(Constants.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
uint fontWidth = fptr.getParamInt(Constants.LIBFPTR_PARAM_FONT_WIDTH);
|

|var
lineLength: Longint;
fontWidth: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_FONT_INFO);
fptr.setParam(fptr.LIBFPTR_PARAM_FONT, 1);
fptr.queryData;

lineLength  := fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
fontWidth := fptr.getParamInt(fptr.LIBFPTR_PARAM_FONT_WIDTH);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_FONT_INFO)
fptr.SetParam(fptr10.LIBFPTR_PARAM_FONT, 1)
fptr.QueryData()

lineLength := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH)
fontWidth := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_FONT_WIDTH)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_FONT_INFO);
Fptr.setParam(Fptr.LIBFPTR_PARAM_FONT, 1);
Fptr.queryData();

lineLength = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_RECEIPT_LINE_LENGTH);
fontWidth = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_FONT_WIDTH);
|

Для запроса параметров шрифта необходимо вызвать метод /queryData()/ с
типом запроса LIBFPTR_PARAM_DATA_TYPE равным LIBFPTR_DT_FONT_INFO и
указать номер шрифта в параметре LIBFPTR_PARAM_FONT.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_RECEIPT_LINE_LENGTH Ширина чековой ленты для данного
шрифта, симв. int
LIBFPTR_PARAM_FONT_WIDTH Ширина символа данного шрифта, пикс. int

Поддерживается только для ККТ версий 5.X

Состояние привязки к ПО

Запрос состояния привязки к ПО

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_SOFTLOCK_STATUS);
libfptr_query_data(fptr);

bool bounded = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_BOUND) != 0;
if (bounded)
{
bool locked = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_LOCKED) != 0;
uint daysCount = libfptr_get_param_int(fptr, LIBFPTR_PARAM_COUNT);

std::vector<wchar_t> str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_SOFT_NAME, &str[0], str.size());
if (size > str.size())
{
    str.resize(size);
    libfptr_get_param_str(fptr, LIBFPTR_PARAM_SOFT_NAME, &str[0], str.size());
}
std::wstring softName = std::wstring(&str[0]);

}
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_SOFTLOCK_STATUS);
fptr.queryData();

bool bounded = fptr.getParamBool(LIBFPTR_PARAM_BOUND);
if (bounded)
{
bool locked = fptr.getParamBool(LIBFPTR_PARAM_LOCKED);
uint daysCount = fptr.getParamInt(LIBFPTR_PARAM_COUNT);
std::wstring softName = fptr.getParamString(LIBFPTR_PARAM_SOFT_NAME);
}
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_SOFTLOCK_STATUS)
fptr.queryData()

bounded = fptr.getParamBool(IFptr.LIBFPTR_PARAM_BOUND)
if bounded:
locked = fptr.getParamBool(IFptr.LIBFPTR_PARAM_LOCKED)
daysCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT)
softName = fptr.getParamString(IFptr.LIBFPTR_PARAM_SOFT_NAME)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_SOFTLOCK_STATUS);
fptr.queryData();

boolean bounded = fptr.getParamBool(IFptr.LIBFPTR_PARAM_BOUND);
if (bounded)
{
boolean locked = fptr.getParamBool(IFptr.LIBFPTR_PARAM_LOCKED);
long daysCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
String softName = fptr.getParamString(IFptr.LIBFPTR_PARAM_SOFT_NAME);
}
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_SOFTLOCK_STATUS);
fptr.queryData();

boolean bounded = fptr.getParamBool(IFptr.LIBFPTR_PARAM_BOUND);
if (bounded)
{
boolean locked = fptr.getParamBool(IFptr.LIBFPTR_PARAM_LOCKED);
long daysCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
String softName = fptr.getParamString(IFptr.LIBFPTR_PARAM_SOFT_NAME);
}
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_SOFTLOCK_STATUS];
[fptr queryData];

bool bounded = [fptr getParamBool:LIBFPTR_PARAM_BOUND];
if (bounded)
{
bool locked = [fptr getParamBool:LIBFPTR_PARAM_LOCKED];
uint daysCount = [fptr getParamInt:LIBFPTR_PARAM_COUNT];
NSString* softName = [fptr getParamString:LIBFPTR_PARAM_SOFT_NAME];
}
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_SOFTLOCK_STATUS);
fptr.queryData();

bool bounded = fptr.getParamBool(Constants.LIBFPTR_PARAM_BOUND);
if (bounded)
{
bool locked = fptr.getParamBool(Constants.LIBFPTR_PARAM_LOCKED);
uint daysCount = fptr.getParamInt(Constants.LIBFPTR_PARAM_COUNT);
String softName = fptr.getParamString(Constants.LIBFPTR_PARAM_SOFT_NAME);
}
|

|var
bounded, locked: LongBool;
daysCount: Longint;
softName: String;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_SOFTLOCK_STATUS);
fptr.queryData;

bounded := fptr.getParamBool(fptr.LIBFPTR_PARAM_BOUND);
if (bounded)
{
    locked := fptr.getParamBool(fptr.LIBFPTR_PARAM_LOCKED);
    daysCount := fptr.getParamInt(fptr.LIBFPTR_PARAM_COUNT);
    softName := fptr.getParamString(fptr.LIBFPTR_PARAM_SOFT_NAME);
}

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_SOFTLOCK_STATUS)
fptr.QueryData()

bounded := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_BOUND)
if bounded {
locked := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_LOCKED)
daysCount := fptr.getParamInt(fptr10.LIBFPTR_PARAM_COUNT)
softName := fptr.getParamString(fptr10.LIBFPTR_PARAM_SOFT_NAME)
}
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_SOFTLOCK_STATUS);
Fptr.queryData();

bounded = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_BOUND);
if (bounded)
{
locked = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_LOCKED);
daysCount = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_COUNT);
softName = Fptr.getParamString(Fptr.LIBFPTR_PARAM_SOFT_NAME);
}
|

Для запроса состояния привязки ККТ к ПО необходимо вызвать метод / queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_SOFTLOCK_STATUS.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_BOUND Признак привязки bool
LIBFPTR_PARAM_LOCKED Признак блокировки bool
LIBFPTR_PARAM_COUNT Количество дней до следующей проверки ПО int
LIBFPTR_PARAM_SOFT_NAME Название ПО, переданное при привязки string

Поддерживается только для ККТ версий 5.X

Дата и время последней успешной отправки уведомления в ИСМ

Запрос даты и времени последней успешной отправки уведомления в ИСМ

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_LAST_SENT_ISM_NOTICE_DATE_TIME);
libfptr_query_data(fptr);

int year, month, day, hour, minute, second;
ibfptr_get_param_datetime(fptr, LIBFPTR_PARAM_DATE_TIME, &year, &month, &day, &hour, &minute, &second);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_LAST_SENT_ISM_NOTICE_DATE_TIME);
fptr.queryData();

std::tm dateTime = fptr.getParamDateTime(LIBFPTR_PARAM_DATE_TIME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_LAST_SENT_ISM_NOTICE_DATE_TIME)
fptr.queryData()

Тип переменной datetime — datetime.datetime

dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_LAST_SENT_ISM_NOTICE_DATE_TIME);
fptr.queryData();

Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_LAST_SENT_ISM_NOTICE_DATE_TIME);
fptr.queryData();

Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_LAST_SENT_ISM_NOTICE_DATE_TIME];
[fptr queryData];

NSDate *dateTime = [fptr getParamDateTime:LIBFPTR_PARAM_DATE_TIME];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_LAST_SENT_ISM_NOTICE_DATE_TIME);
fptr.queryData();

Date dateTime = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);
|

|var
dateTime: TDateTime;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_LAST_SENT_ISM_NOTICE_DATE_TIME);
fptr.queryData;

dateTime := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_LAST_SENT_ISM_NOTICE_DATE_TIME)
fptr.QueryData()

dateTime := fptr.GetParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_LAST_SENT_ISM_NOTICE_DATE_TIME);
Fptr.queryData();

dateTime = Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_DATE_TIME);
|

Для запроса даты и времени последней успешной отправки уведомления в ИСМ
необходимо вызвать метод /queryData()/ с типом запроса
LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_LAST_SENT_ISM_NOTICE_DATE_TIME.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_DATE_TIME Дата и время последней успешной отправки
уведомления в ИСМ datetime

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.2

Информация о микроконтроллере

Запрос информации о микроконтроллере

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_MCU_INFO);
libfptr_query_data(fptr);

std::vector mcuSn(32);
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_MCU_SN, &mcuSn[0], mcuSn.size());
if (size > mcuSn.size())
{
mcuSn.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_MCU_SN, &mcuSn[0], mcuSn.size());
}
mcuSn.resize(size);

std::vector mcuPartId(32);
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_MCU_PART_ID, &mcuPartId[0], mcuPartId.size());
if (size > mcuPartId.size())
{
mcuPartId.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_MCU_PART_ID, &mcuPartId[0], mcuPartId.size());
}
mcuPartId.resize(size);

std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_MCU_PART_NAME, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_MCU_PART_NAME, &str[0], str.size());
}
std::wstring mcuPartName = std::wstring(&str[0]);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_MCU_INFO);
fptr.queryData();

std::vector mcuSn = fptr.getParamByteArray(LIBFPTR_PARAM_MCU_SN);
std::vector mcuPartId = fptr.getParamByteArray(LIBFPTR_PARAM_MCU_PART_ID);
std::wstring mcuPartName = fptr.getParamString(LIBFPTR_PARAM_MCU_PART_NAME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_MCU_INFO)
fptr.queryData()

mcuSn = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_MCU_SN)
mcuPartId = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_MCU_PART_ID)
mcuPartName = fptr.getParamString(IFptr.LIBFPTR_PARAM_MCU_PART_NAME)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_MCU_INFO);
fptr.queryData();

byte[] mcuSn = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_MCU_SN);
byte[] mcuPartId = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_MCU_PART_ID);
String mcuPartName = fptr.getParamString(IFptr.LIBFPTR_PARAM_MCU_PART_NAME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_MCU_INFO);
fptr.queryData();

byte[] mcuSn = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_MCU_SN);
byte[] mcuPartId = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_MCU_PART_ID);
String mcuPartName = fptr.getParamString(IFptr.LIBFPTR_PARAM_MCU_PART_NAME);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_MCU_INFO];
[fptr queryData];

NSData *mcuSn = [fptr getParamByteArray:LIBFPTR_PARAM_MCU_SN];
NSData *mcuPartId = [fptr getParamByteArray:LIBFPTR_PARAM_MCU_PART_ID];
NSString *mcuPartName = [fptr getParamString:LIBFPTR_PARAM_MCU_PART_NAME]
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_MCU_INFO);
fptr.queryData();

byte[] mcuSn = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_MCU_SN);
byte[] mcuPartId = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_MCU_PART_ID);
String mcuPartName = fptr.getParamString(Constants.LIBFPTR_PARAM_MCU_PART_NAME);
|

|var
mcuSn: Variant;
mcuPartId: Variant;
mcuPartName: String;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_MCU_INFO);
fptr.queryData;

mcuSn       := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_MCU_SN);
mcuPartId   := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_MCU_PART_ID);
mcuPartName := fptr.getParamString(fptr.LIBFPTR_PARAM_MCU_PART_NAME);  

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_MCU_INFO)
fptr.QueryData()

mcuSn := fptr.GetParamByteArray(IFptr.LIBFPTR_PARAM_MCU_SN)
mcuPartId := fptr.GetParamByteArray(IFptr.LIBFPTR_PARAM_MCU_PART_ID)
mcuPartName := fptr.GetParamString(IFptr.LIBFPTR_PARAM_MCU_PART_NAME)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_MCU_INFO);
Fptr.queryData();

mcuSn = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_MCU_SN);
mcuPartId = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_MCU_PART_ID);
mcuPartName = Fptr.getParamString(Fptr.LIBFPTR_PARAM_MCU_PART_NAME);
|

Для запроса информации о микроконтроллере ККТ необходимо вызвать метод
/queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_MCU_INFO.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_MCU_SN Уникальный номер bytearray
LIBFPTR_PARAM_MCU_PART_ID Номер модели bytearray
LIBFPTR_PARAM_MCU_PART_NAME Название модели string

Поддерживается только для ККТ версий 5.X

Информация о кэшированных реквизитах

Запрос кэшированных реквизитов

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CACHE_REQUISITES);
libfptr_query_data(fptr);

std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_FN_SERIAL_NUMBER, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_FN_SERIAL_NUMBER, &str[0], str.size());
}
std::wstring serialNumber = std::wstring(&str[0]);

size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_ECR_REGISTRATION_NUMBER, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_ECR_REGISTRATION_NUMBER, &str[0], str.size());
}
std::wstring ecrRegNumber = std::wstring(&str[0]);

size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_OFD_VATIN, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_OFD_VATIN, &str[0], str.size());
}
std::wstring ofdVatin = std::wstring(&str[0]);

size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_FNS_URL, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_FNS_URL, &str[0], str.size());
}
std::wstring fnsUrl = std::wstring(&str[0]);

int ffdVersion = libfptr_get_param_int(fptr, LIBFPTR_PARAM_FFD_VERSION);

size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_MACHINE_NUMBER, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_MACHINE_NUMBER, &str[0], str.size());
}
std::wstring machineNumber = std::wstring(&str[0]);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_CACHE_REQUISITES);
fptr.queryData();

std::wstring serialNumber = fptr.getParamString(LIBFPTR_PARAM_FN_SERIAL_NUMBER);
std::wstring ecrRegNumber = fptr.getParamString(LIBFPTR_PARAM_ECR_REGISTRATION_NUMBER);
std::wstring ofdVatin = fptr.getParamString(LIBFPTR_PARAM_OFD_VATIN);
std::wstring fnsUrl = fptr.getParamString(LIBFPTR_PARAM_FNS_URL);
uint ffdVersion = fptr.getParamInt(LIBFPTR_PARAM_FFD_VERSION);
std::wstring machineNumber = fptr.getParamString(LIBFPTR_PARAM_MACHINE_NUMBER);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CACHE_REQUISITES)
fptr.queryData()

serialNumber = fptr.getParamString(IFptr.LIBFPTR_PARAM_FN_SERIAL_NUMBER)
ecrRegNumber = fptr.getParamString(IFptr.LIBFPTR_PARAM_ECR_REGISTRATION_NUMBER)
ofdVatin = fptr.getParamString(IFptr.LIBFPTR_PARAM_OFD_VATIN)
fnsUrl = fptr.getParamString(IFptr.LIBFPTR_PARAM_FNS_URL)
ffdVersion = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FFD_VERSION)
machineNumber = fptr.getParamString(IFptr.LIBFPTR_PARAM_MACHINE_NUMBER)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CACHE_REQUISITES);
fptr.queryData();

String serialNumber = fptr.getParamString(IFptr.LIBFPTR_PARAM_FN_SERIAL_NUMBER);
String ecrRegNumber = fptr.getParamString(IFptr.LIBFPTR_PARAM_ECR_REGISTRATION_NUMBER);
String ofdVatin = fptr.getParamString(IFptr.LIBFPTR_PARAM_OFD_VATIN);
String fnsUrl = fptr.getParamString(IFptr.LIBFPTR_PARAM_FNS_URL);
long ffdVersion = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FFD_VERSION);
String machineNumber = fptr.getParamString(IFptr.LIBFPTR_PARAM_MACHINE_NUMBER);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_CACHE_REQUISITES);
fptr.queryData();

String serialNumber = fptr.getParamString(IFptr.LIBFPTR_PARAM_FN_SERIAL_NUMBER);
String ecrRegNumber = fptr.getParamString(IFptr.LIBFPTR_PARAM_ECR_REGISTRATION_NUMBER);
String ofdVatin = fptr.getParamString(IFptr.LIBFPTR_PARAM_OFD_VATIN);
String fnsUrl = fptr.getParamString(IFptr.LIBFPTR_PARAM_FNS_URL);
long ffdVersion = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FFD_VERSION);
String machineNumber = fptr.getParamString(IFptr.LIBFPTR_PARAM_MACHINE_NUMBER);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_CACHE_REQUISITES];
[fptr queryData()];

NSString *serialNumber = [fptr getParamString: LIBFPTR_PARAM_FN_SERIAL_NUMBER];
NSString *ecrRegNumber = [fptr getParamString: LIBFPTR_PARAM_ECR_REGISTRATION_NUMBER];
NSString *ofdVatin = [fptr getParamString: LIBFPTR_PARAM_OFD_VATIN];
NSString *fnsUrl = [fptr getParamString: LIBFPTR_PARAM_FNS_URL];
uint ffdVersion = [fptr getParamInt: LIBFPTR_PARAM_FFD_VERSION];
NSString *machineNumber = [fptr getParamString: LIBFPTR_PARAM_MACHINE_NUMBER];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_CACHE_REQUISITES);
fptr.queryData();

String serialNumber = fptr.getParamString(Constants.LIBFPTR_PARAM_FN_SERIAL_NUMBER);
String ecrRegNumber = fptr.getParamString(Constants.LIBFPTR_PARAM_ECR_REGISTRATION_NUMBER);
String ofdVatin = fptr.getParamString(Constants.LIBFPTR_PARAM_OFD_VATIN);
String fnsUrl = fptr.getParamString(Constants.LIBFPTR_PARAM_FNS_URL);
uint ffdVersion = fptr.getParamInt(Constants.LIBFPTR_PARAM_FFD_VERSION);
String machineNumber = fptr.getParamString(Constants.LIBFPTR_PARAM_MACHINE_NUMBER);
|

|var
serialNumber: string
ecrRegNumber: string
ofdVatin: string
fnsUrl: string
ffdVersion: integer;
machineNumber: string;
begin
fptr.SetParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_CACHE_REQUISITES);
fptr.QueryData();

serialNumber    := fptr.GetParamString(fptr.LIBFPTR_PARAM_FN_SERIAL_NUMBER);
ecrRegNumber    := fptr.GetParamString(fptr.LIBFPTR_PARAM_ECR_REGISTRATION_NUMBER);
ofdVatin        := fptr.GetParamString(fptr.LIBFPTR_PARAM_OFD_VATIN);
fnsUrl          := fptr.GetParamString(fptr.LIBFPTR_PARAM_FNS_URL);
ffdVersion      := fptr.GetParamInt(fptr.LIBFPTR_PARAM_FFD_VERSION);
machineNumber   := fptr.GetParamString(fptr.LIBFPTR_PARAM_MACHINE_NUMBER);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_CACHE_REQUISITES)
fptr.QueryData()

serialNumber := fptr.GetParamString(fptr10.LIBFPTR_PARAM_FN_SERIAL_NUMBER)
ecrRegNumber := fptr.GetParamString(fptr10.LIBFPTR_PARAM_ECR_REGISTRATION_NUMBER)
ofdVatin := fptr.GetParamString(fptr10.LIBFPTR_PARAM_OFD_VATIN)
fnsUrl := fptr.GetParamString(fptr10.LIBFPTR_PARAM_FNS_URL)
ffdVersion := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_FFD_VERSION)
machineNumber := fptr.GetParamString(fptr10.LIBFPTR_PARAM_MACHINE_NUMBER)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_CACHE_REQUISITES);
Fptr.queryData();

serialNumber = Fptr.getParamString(Fptr.LIBFPTR_PARAM_FN_SERIAL_NUMBER);
ecrRegNumber = Fptr.getParamString(Fptr.LIBFPTR_PARAM_ECR_REGISTRATION_NUMBER);
ofdVatin = Fptr.getParamString(Fptr.LIBFPTR_PARAM_OFD_VATIN);
fnsUrl = Fptr.getParamString(Fptr.LIBFPTR_PARAM_FNS_URL);
ffdVersion = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_FFD_VERSION);
machineNumber = Fptr.getParamString(Fptr.LIBFPTR_PARAM_MACHINE_NUMBER);
|

Для запроса информации о кэшированных реквизитах необходимо вызвать
метод /queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_CACHE_REQUISITES.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_FN_SERIAL_NUMBER Номер ФН string
LIBFPTR_PARAM_ECR_REGISTRATION_NUMBER РНМ string
LIBFPTR_PARAM_OFD_VATIN ИНН ОФД string
LIBFPTR_PARAM_FNS_URL Адрес сайта ФНС string
LIBFPTR_PARAM_FFD_VERSION Версия ФФД int
LIBFPTR_PARAM_MACHINE_NUMBER Номер автомата string

Поддерживается только для ККТ версий 5.X

Сменные итоги по секциям

Запрос сменных итогов по секциям (чек прихода, секция 2)

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_DEPARTMENT_SUM);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_DEPARTMENT, 2);
libfptr_query_data(fptr);

double departmentSum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_SUM);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_DEPARTMENT_SUM);
fptr.setParam(LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
fptr.setParam(LIBFPTR_PARAM_DEPARTMENT, 2);
fptr.queryData();

double departmentSum = fptr.getParamDouble(LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_DEPARTMENT_SUM)
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL)
fptr.setParam(IFptr.LIBFPTR_PARAM_DEPARTMENT, 2)
fptr.queryData()

departmentSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_DEPARTMENT_SUM);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEPARTMENT, 2);
fptr.queryData();

double departmentSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_DEPARTMENT_SUM);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEPARTMENT, 2);
fptr.queryData();

double departmentSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_DEPARTMENT_SUM];
[fptr setParam:LIBFPTR_PARAM_RECEIPT_TYPE intParam:LIBFPTR_RT_SELL];
[fptr setParam:LIBFPTR_PARAM_DEPARTMENT intParam:2];
[fptr queryData];

double departmentSum = [fptr getParamDouble:LIBFPTR_PARAM_SUM];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_DEPARTMENT_SUM);
fptr.setParam(Constants.LIBFPTR_PARAM_RECEIPT_TYPE, Constants.LIBFPTR_RT_SELL);
fptr.setParam(Constants.LIBFPTR_PARAM_DEPARTMENT, 2);
fptr.queryData();

double departmentSum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_SUM);
|

|var
departmentSum: Double;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_DEPARTMENT_SUM);
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL);
fptr.setParam(fptr.LIBFPTR_PARAM_DEPARTMENT, 2);
fptr.queryData;

departmentSum := fptr.getParamDouble(fptr.LIBFPTR_PARAM_SUM);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_DEPARTMENT_SUM)
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE, fptr10.LIBFPTR_RT_SELL)
fptr.SetParam(fptr10.LIBFPTR_PARAM_DEPARTMENT, 2)
fptr.QueryData()

departmentSum := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_SUM)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_DEPARTMENT_SUM);
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE, Fptr.LIBFPTR_RT_SELL);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DEPARTMENT, 2);
Fptr.queryData();

departmentSum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_SUM);
|

Для запроса сменных итогов по секциям необходимо вызвать метод / queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_DEPARTMENT_SUM, а также указать тип чека в параметре
LIBFPTR_PARAM_RECEIPT_TYPE и номер секции в параметре
LIBFPTR_PARAM_DEPARTMENT.

Тип чека (LIBFPTR_PARAM_RECEIPT_TYPE) может принимать следующие значения:

  • LIBFPTR_RT_SELL — чек прихода;
  • LIBFPTR_RT_SELL_RETURN — чек возврата прихода;
  • LIBFPTR_RT_BUY — чек расхода;
  • LIBFPTR_RT_BUY_RETURN — чек возврата расхода;

Номер секции (LIBFPTR_PARAM_DEPARTMENT) может принимать значение от 1
до 5. При подаче значения 0 метод отрабатывает для секции 1.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_SUM Сумма double

Поддерживается только для ККТ версий 5.X

Температура кристалла микроконтроллера

Запрос температуры кристалла микроконтроллера

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_MCU_TEMPERATURE);
libfptr_query_data(fptr);

int mcuTemperature = libfptr_get_param_int(fptr, LIBFPTR_PARAM_MCU_TEMPERATURE)
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_MCU_TEMPERATURE);
fptr.queryData();

int mcuTemperature = fptr.getParamInt(LIBFPTR_PARAM_MCU_TEMPERATURE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_MCU_TEMPERATURE)
fptr.queryData()

mcuTemperature = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MCU_TEMPERATURE)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_MCU_TEMPERATURE);
fptr.queryData();

long mcuTemperature = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MCU_TEMPERATURE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_MCU_TEMPERATURE);
fptr.queryData();

long mcuTemperature = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MCU_TEMPERATURE);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_MCU_TEMPERATURE];
[fptr queryData];

uint mcuTemperature = [fptr getParamInt:LIBFPTR_PARAM_MCU_TEMPERATURE];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_MCU_TEMPERATURE);
fptr.queryData();

int mcuTemperature = fptr.getParamInt(Constants.LIBFPTR_PARAM_MCU_TEMPERATURE);
|

|var
mcuTemperature: Integer;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_MCU_TEMPERATURE);
fptr.queryData;

mcuTemperature := fptr.getParamInt(fptr.LIBFPTR_PARAM_MCU_TEMPERATURE);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_MCU_TEMPERATURE)
fptr.QueryData()

mcuTemperature := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_MCU_TEMPERATURE)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_MCU_TEMPERATURE);
Fptr.queryData();

mcuTemperature = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_MCU_TEMPERATURE);
|

Для запроса температуры кристалла микроконтроллера необходимо вызвать
метод /queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_MCU_TEMPERATURE.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_MCU_TEMPERATURE Температура кристалла микроконтроллера,
градусы Цельсия int

Поддерживается только для ККТ модели АТОЛ 47ФА версий 5.X

Доступные операции

Запрос доступных операций

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_AVAILABLE_OPERATIONS);
libfptr_query_data(fptr);

bool availableClosing = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_AVAILABLE_CLOSING);
bool availableCancellation = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_AVAILABLE_CANCELLATION);
bool availablePositionsAdding = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_AVAILABLE_POSITION_ADDING);
bool availablePayment = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_AVAILABLE_PAYMENT);
bool availableTotal = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_AVAILABLE_TOTAL);
bool availableAttributesAdding = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_AVAILABLE_ATTRIBUTES_ADDING);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_AVAILABLE_OPERATIONS);
fptr.queryData();

bool availableClosing = fptr.getParamBool(LIBFPTR_PARAM_AVAILABLE_CLOSING);
bool availableCancellation = fptr.getParamBool(LIBFPTR_PARAM_AVAILABLE_CANCELLATION);
bool availablePositionsAdding = fptr.getParamBool(LIBFPTR_PARAM_AVAILABLE_POSITION_ADDING);
bool availablePayment = fptr.getParamBool(LIBFPTR_PARAM_AVAILABLE_PAYMENT);
bool availableTotal = fptr.getParamBool(LIBFPTR_PARAM_AVAILABLE_TOTAL);
bool availableAttributesAdding = fptr.getParamBool(LIBFPTR_PARAM_AVAILABLE_ATTRIBUTES_ADDING);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_AVAILABLE_OPERATIONS)
fptr.queryData()

availableClosing = fptr.getParamBool(IFptr.LIBFPTR_PARAM_AVAILABLE_CLOSING)
availableCancellation = fptr.getParamBool(IFptr.LIBFPTR_PARAM_AVAILABLE_CANCELLATION)
availablePositionsAdding = fptr.getParamBool(IFptr.LIBFPTR_PARAM_AVAILABLE_POSITION_ADDING)
availablePayment = fptr.getParamBool(IFptr.LIBFPTR_PARAM_AVAILABLE_PAYMENT)
availableTotal = fptr.getParamBool(IFptr.LIBFPTR_PARAM_AVAILABLE_TOTAL)
availableAttributesAdding = fptr.getParamBool(IFptr.LIBFPTR_PARAM_AVAILABLE_ATTRIBUTES_ADDING)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_AVAILABLE_OPERATIONS);
fptr.queryData();

boolean availableClosing = fptr.getParamBool(IFptr.LIBFPTR_PARAM_AVAILABLE_CLOSING);
boolean availableCancellation = fptr.getParamBool(IFptr.LIBFPTR_PARAM_AVAILABLE_CANCELLATION);
boolean availablePositionsAdding = fptr.getParamBool(IFptr.LIBFPTR_PARAM_AVAILABLE_POSITION_ADDING);
boolean availablePayment = fptr.getParamBool(IFptr.LIBFPTR_PARAM_AVAILABLE_PAYMENT);
boolean availableTotal = fptr.getParamBool(IFptr.LIBFPTR_PARAM_AVAILABLE_TOTAL);
boolean availableAttributesAdding = fptr.getParamBool(IFptr.LIBFPTR_PARAM_AVAILABLE_ATTRIBUTES_ADDING);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_AVAILABLE_OPERATIONS);
fptr.queryData();

boolean availableClosing = fptr.getParamBool(IFptr.LIBFPTR_PARAM_AVAILABLE_CLOSING);
boolean availableCancellation = fptr.getParamBool(IFptr.LIBFPTR_PARAM_AVAILABLE_CANCELLATION);
boolean availablePositionsAdding = fptr.getParamBool(IFptr.LIBFPTR_PARAM_AVAILABLE_POSITION_ADDING);
boolean availablePayment = fptr.getParamBool(IFptr.LIBFPTR_PARAM_AVAILABLE_PAYMENT);
boolean availableTotal = fptr.getParamBool(IFptr.LIBFPTR_PARAM_AVAILABLE_TOTAL);
boolean availableAttributesAdding = fptr.getParamBool(IFptr.LIBFPTR_PARAM_AVAILABLE_ATTRIBUTES_ADDING);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_AVAILABLE_OPERATIONS];
[fptr queryData];

bool availableClosing = [fptr getParamBool:LIBFPTR_PARAM_AVAILABLE_CLOSING];
bool availableCancellation = [fptr getParamBool:LIBFPTR_PARAM_AVAILABLE_CANCELLATION];
bool availablePositionsAdding = [fptr getParamBool:LIBFPTR_PARAM_AVAILABLE_POSITION_ADDING];
bool availablePayment = [fptr getParamBool:LIBFPTR_PARAM_AVAILABLE_PAYMENT];
bool availableTotal = [fptr getParamBool:LIBFPTR_PARAM_AVAILABLE_TOTAL];
bool availableAttributesAdding = [fptr getParamBool:LIBFPTR_PARAM_AVAILABLE_ATTRIBUTES_ADDING];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_AVAILABLE_OPERATIONS);
fptr.queryData();

bool availableClosing = fptr.getParamBool(Constants.LIBFPTR_PARAM_AVAILABLE_CLOSING);
bool availableCancellation = fptr.getParamBool(Constants.LIBFPTR_PARAM_AVAILABLE_CANCELLATION);
bool availablePositionsAdding = fptr.getParamBool(Constants.LIBFPTR_PARAM_AVAILABLE_POSITION_ADDING);
bool availablePayment = fptr.getParamBool(Constants.LIBFPTR_PARAM_AVAILABLE_PAYMENT);
bool availableTotal = fptr.getParamBool(Constants.LIBFPTR_PARAM_AVAILABLE_TOTAL);
bool availableAttributesAdding = fptr.getParamBool(Constants.LIBFPTR_PARAM_AVAILABLE_ATTRIBUTES_ADDING);
|

|var
availableClosing: LongBool;
availableCancellation: LongBool;
availablePositionsAdding: LongBool;
availablePayment: LongBool;
availableTotal: LongBool;
availableAttributesAdding: LongBool;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_AVAILABLE_OPERATIONS);
fptr.queryData;

availableClosing          := fptr.getParamBool(fptr.LIBFPTR_PARAM_AVAILABLE_CLOSING);
availableCancellation     := fptr.getParamBool(fptr.LIBFPTR_PARAM_AVAILABLE_CANCELLATION);
availablePositionsAdding  := fptr.getParamBool(fptr.LIBFPTR_PARAM_AVAILABLE_POSITION_ADDING);
availablePayment          := fptr.getParamBool(fptr.LIBFPTR_PARAM_AVAILABLE_PAYMENT);
availableTotal            := fptr.getParamBool(fptr.LIBFPTR_PARAM_AVAILABLE_TOTAL);
availableAttributesAdding := fptr.getParamBool(fptr.LIBFPTR_PARAM_AVAILABLE_ATTRIBUTES_ADDING);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_AVAILABLE_OPERATIONS)
fptr.QueryData()

availableClosing := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_AVAILABLE_CLOSING)
availableCancellation := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_AVAILABLE_CANCELLATION)
availablePositionsAdding := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_AVAILABLE_POSITION_ADDING)
availablePayment := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_AVAILABLE_PAYMENT)
availableTotal := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_AVAILABLE_TOTAL)
availableAttributesAdding := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_AVAILABLE_ATTRIBUTES_ADDING)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_AVAILABLE_OPERATIONS);
Fptr.queryData();

availableClosing = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_AVAILABLE_CLOSING);
availableCancellation = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_AVAILABLE_CANCELLATION);
availablePositionsAdding = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_AVAILABLE_POSITION_ADDING);
availablePayment = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_AVAILABLE_PAYMENT);
availableTotal = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_AVAILABLE_TOTAL);
availableAttributesAdding = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_AVAILABLE_ATTRIBUTES_ADDING);
|

Для запроса доступных операций необходимо вызвать метод /queryData()/
с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_AVAILABLE_OPERATIONS.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_AVAILABLE_CLOSING Разрешено закрытие документа bool
LIBFPTR_PARAM_AVAILABLE_CANCELLATION Разрешено аннулирование
документа bool
LIBFPTR_PARAM_AVAILABLE_POSITION_ADDING Разрешена регистрация
товарных позиций bool
LIBFPTR_PARAM_AVAILABLE_PAYMENT Разрешена регистрация оплаты bool
LIBFPTR_PARAM_AVAILABLE_TOTAL Разрешена регистрация итога чека bool
LIBFPTR_PARAM_AVAILABLE_ATTRIBUTES_ADDING Разрешена регистрация
реквизита bool

Поддерживается только для ККТ версий 5.X

Регистрация кассира

Регистрация кассира

|libfptr_set_param_str(fptr, 1021, L»Кассир Иванов И.»);
libfptr_set_param_str(fptr, 1203, L»123456789047″);
libfptr_operator_login(fptr);
|

|fptr.setParam(1021, L»Кассир Иванов И.»);
fptr.setParam(1203, L»123456789047″);
fptr.operatorLogin();
|

|fptr.setParam(1021, «Кассир Иванов И.»)
fptr.setParam(1203, «123456789047»)
fptr.operatorLogin()
|

|fptr.setParam(1021, «Кассир Иванов И.»);
fptr.setParam(1203, «123456789047»);
fptr.operatorLogin();
|

|fptr.setParam(1021, «Кассир Иванов И.»);
fptr.setParam(1203, «123456789047»);
fptr.operatorLogin();
|

|[fptr setParam:1021 NSStringParam:@»Кассир Иванов И.»];
[fptr setParam:1203 NSStringParam:@»123456789047″];
[fptr operatorLogin];
|

|fptr.setParam(1021, «Кассир Иванов И.»);
fptr.setParam(1203, «123456789047»);
fptr.operatorLogin();
|

|begin
fptr.setParam(1021, ‘Кассир Иванов И.’);
fptr.setParam(1203, ‘123456789047’);
fptr.operatorLogin;
end;
|

|fptr.SetParam(1021, «Кассир Иванов И.»)
fptr.SetParam(1203, «123456789047»)
fptr.OperatorLogin()
|

|Fptr.setParam(1021, «Кассир Иванов И.»);
Fptr.setParam(1203, «123456789047»);
Fptr.operatorLogin();
|

Для регистрации кассира необходимо вызвать метод /operatorLogin()/.

Рекомендуется вызывать данный метод перед каждой фискальной операцией
(открытие чека, печать отчета, …).

Поддерживается для всех ККТ

Операции со сменой

Открыть смену

Открытие смены

|libfptr_set_param_str(fptr, 1021, L»Кассир Иванов И.»);
libfptr_set_param_str(fptr, 1203, L»123456789047″);
libfptr_operator_login(fptr);

libfptr_open_shift(fptr);

libfptr_check_document_closed();
// …
|

|fptr.setParam(1021, L»Кассир Иванов И.»);
fptr.setParam(1203, L»123456789047″);
fptr.operatorLogin();

fptr.openShift();

fptr.checkDocumentClosed();
// …
|

|fptr.setParam(1021, «Кассир Иванов И.»)
fptr.setParam(1203, «123456789047»)
fptr.operatorLogin()

fptr.openShift()

fptr.checkDocumentClosed()

|

|fptr.setParam(1021, «Кассир Иванов И.»);
fptr.setParam(1203, «123456789047»);
fptr.operatorLogin();

fptr.openShift();

fptr.checkDocumentClosed();
// …
|

|fptr.setParam(1021, «Кассир Иванов И.»);
fptr.setParam(1203, «123456789047»);
fptr.operatorLogin();

fptr.openShift();

fptr.checkDocumentClosed();
// …
|

|[fptr setParam:1021, NSString:@»Кассир Иванов И.»];
[fptr setParam:1203, NSString:@»123456789047″];
[fptr operatorLogin];

[fptr openShift];

[fptr checkDocumentClosed];
// …
|

|fptr.setParam(1021, «Кассир Иванов И.»);
fptr.setParam(1203, «123456789047»);
fptr.operatorLogin();

fptr.openShift();

fptr.checkDocumentClosed();
// …
|

|begin
fptr.setParam(1021, ‘Кассир Иванов И.’);
fptr.setParam(1203, ‘123456789047’);
fptr.operatorLogin;

fptr.openShift;

fptr.checkDocumentClosed;
// ...

end;
|

|fptr.SetParam(1021, «Кассир Иванов И.»)
fptr.SetParam(1203, «123456789047»)
fptr.OperatorLogin()

fptr.OpenShift()

fptr.CheckDocumentClosed()
// …
|

|Fptr.setParam(1021, «Кассир Иванов И.»);
Fptr.setParam(1203, «123456789047»);
Fptr.operatorLogin();

Fptr.openShift();

Fptr.checkDocumentClosed();
// …
|

Для открытия смены необходимо вызвать метод /openShift()/. Метод
возвращает ошибку, если смена уже открыта. Открывать смену
необязательно, т.к. она будет открыта первой фискальной операцией
автоматически.

На некоторых ККТ возможно отключить печать отчета об открытии смены с
помощью установки параметра LIBFPTR_PARAM_REPORT_ELECTRONICALLY в
true. Если ККТ не поддерживает такой функционал, параметр будет
проигнорирован и отчет будет напечатан.

Открытие смены произойдет от зарегистрированного в данный момент
кассира. Для его регистрации используется метод /operatorLogin()/.

После открытия смены следует проверить, что операция успешно завершена.
Подробнее см. описание метода /checkDocumentClosed()/.

Поддерживается для всех ККТ

Закрыть смену

Закрытие смены

|libfptr_set_param_str(fptr, 1021, L»Кассир Иванов И.»);
libfptr_set_param_str(fptr, 1203, L»123456789047″);
libfptr_operator_login(fptr);

libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_CLOSE_SHIFT);
libfptr_report(fptr);

libfptr_check_document_closed();
// …
|

|fptr.setParam(1021, L»Кассир Иванов И.»);
fptr.setParam(1203, L»123456789047″);
fptr.operatorLogin();

fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_CLOSE_SHIFT);
fptr.report();

fptr.checkDocumentClosed();
// …
|

|fptr.setParam(1021, «Кассир Иванов И.»)
fptr.setParam(1203, «123456789047»)
fptr.operatorLogin()

fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_CLOSE_SHIFT)
fptr.report()

fptr.checkDocumentClosed()

|

|fptr.setParam(1021, «Кассир Иванов И.»);
fptr.setParam(1203, «123456789047»);
fptr.operatorLogin();

fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_CLOSE_SHIFT);
fptr.report();

fptr.checkDocumentClosed();
// …
|

|fptr.setParam(1021, «Кассир Иванов И.»);
fptr.setParam(1203, «123456789047»);
fptr.operatorLogin();

fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_CLOSE_SHIFT);
fptr.report();

fptr.checkDocumentClosed();
// …
|

|[fptr setParam:1021, NSString:@»Кассир Иванов И.»];
[fptr setParam:1203, NSString:@»123456789047″];
[fptr operatorLogin];

[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_CLOSE_SHIFT];
[fptr report];

[fptr checkDocumentClosed];
// …
|

|fptr.setParam(1021, «Кассир Иванов И.»);
fptr.setParam(1203, «123456789047»);
fptr.operatorLogin();

fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_CLOSE_SHIFT);
fptr.report();

fptr.checkDocumentClosed();
// …
|

|begin
fptr.setParam(1021, ‘Кассир Иванов И.’);
fptr.setParam(1203, ‘123456789047’);
fptr.operatorLogin;

fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_CLOSE_SHIFT);
fptr.report;

fptr.checkDocumentClosed;
// ...

end;
|

|fptr.SetParam(1021, «Кассир Иванов И.»)
fptr.SetParam(1203, «123456789047»)
fptr.OperatorLogin()

fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_CLOSE_SHIFT)
fptr.Report()

fptr.CheckDocumentClosed()
// …
|

|Fptr.setParam(1021, «Кассир Иванов И.»);
Fptr.setParam(1203, «123456789047»);
Fptr.operatorLogin();

Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_CLOSE_SHIFT);
Fptr.report();

Fptr.checkDocumentClosed();
// …
|

Для закрытия смены требуется вызвать метод /report()/ с типом отчета
LIBFPTR_PARAM_REPORT_TYPE равным LIBFPTR_RT_CLOSE_SHIFT.
Автоматически может напечататься так же и Z-отчет.

На некоторых ККТ возможно отключить печать отчета о закрытии смены с
помощью установки параметра LIBFPTR_PARAM_REPORT_ELECTRONICALLY в
true. Если ККТ не поддерживает такой функционал, параметр будет
проигнорирован и отчет будет напечатан.

Закрытие смены произойдет от зарегистрированного в данный момент
кассира. Для его регистрации используется метод /operatorLogin()/.

После закрытия смены следует проверить, что операция успешно завершена.
Подробнее см. описание метода /checkDocumentClosed()/.

Поддерживается для всех ККТ

Операции с чеком

Общий алгоритм формирования чека

Формирование чека состоит из следующих операций:

  • открытие чека и передача реквизитов чека;
  • регистрация позиций, печать нефискальных данных (текст, штрихкоды,
    изображения);
  • регистрация итога (необязательный пункт — если регистрацию итога не
    провести, он автоматически рассчитается из суммы всех позиций);
  • регистрация налогов на чек (необязательный пункт — налоги могут быть
    подтянуты из позиций и суммированы);
  • регистрация оплат;
  • закрытие чека;
  • проверка состояния чека.

Формирование чека коррекции (ФФД 1.05) состоит из следующих операций:

  • открытие чека и передача реквизитов чека;
  • регистрация итога;
  • регистрация налогов на чек (необязательный пункт);
  • регистрация оплат (необязательный пункт);
  • закрытие чека;
  • проверка состояния чека. Открыть чек Открытие печатного чека

|libfptr_set_param_str(fptr, 1021, L»Кассир Иванов И.»);
libfptr_set_param_str(fptr, 1203, L»123456789047″);
libfptr_operator_login(fptr);

libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
libfptr_open_receipt(fptr);
|

|fptr.setParam(1021, L»Кассир Иванов И.»);
fptr.setParam(1203, L»123456789047″);
fptr.operatorLogin();

fptr.setParam(LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
fptr.openReceipt();
|

|fptr.setParam(1021, «Кассир Иванов И.»)
fptr.setParam(1203, «123456789047»)
fptr.operatorLogin()

fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL)
fptr.openReceipt()
|

|fptr.setParam(1021, «Кассир Иванов И.»);
fptr.setParam(1203, «123456789047»);
fptr.operatorLogin();

fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.openReceipt();
|

|fptr.setParam(1021, «Кассир Иванов И.»);
fptr.setParam(1203, «123456789047»);
fptr.operatorLogin();

fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.openReceipt();
|

|[fptr setParam:1021 NSStringParam:@»Кассир Иванов И.»];
[fptr setParam:1203 NSStringParam:@»123456789047″];
[fptr operatorLogin];

[fptr setParam:LIBFPTR_PARAM_RECEIPT_TYPE intParam:LIBFPTR_RT_SELL];
[fptr openReceipt]
|

|fptr.setParam(1021, «Кассир Иванов И.»);
fptr.setParam(1203, «123456789047»);
fptr.operatorLogin();

fptr.setParam(Constants.LIBFPTR_PARAM_RECEIPT_TYPE, Constants.LIBFPTR_RT_SELL);
fptr.openReceipt();
|

|begin
fptr.setParam(1021, ‘Кассир Иванов И.’);
fptr.setParam(1203, ‘123456789047’);
fptr.operatorLogin;

fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL);
fptr.openReceipt;

end;
|

|fptr.SetParam(1021, «Кассир Иванов И.»)
fptr.SetParam(1203, «123456789047»)
fptr.OperatorLogin()

fptr.SetParam(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE, fptr10.LIBFPTR_RT_SELL)
fptr.OpenReceipt()
|

|Fptr.setParam(1021, «Кассир Иванов И.»);
Fptr.setParam(1203, «123456789047»);
Fptr.operatorLogin();

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE, Fptr.LIBFPTR_RT_SELL);
Fptr.openReceipt();
|

Открытие электронного чека

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
libfptr_set_param_bool(fptr, LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY, true);
libfptr_open_receipt(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
fptr.setParam(LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY, true);
fptr.openReceipt();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL)
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY, True)
fptr.openReceipt()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY, true);
fptr.openReceipt();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY, true);
fptr.openReceipt();
|

|[fptr setParam:LIBFPTR_PARAM_RECEIPT_TYPE intParam:LIBFPTR_RT_SELL];
[fptr setParam:LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY boolParam:true];
[fptr openReceipt]
|

|fptr.setParam(Constants.LIBFPTR_PARAM_RECEIPT_TYPE, Constants.LIBFPTR_RT_SELL);
fptr.setParam(Constants.LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY, true);
fptr.openReceipt();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL);
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY, True);
fptr.openReceipt;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE, fptr10.LIBFPTR_RT_SELL)
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY, true)
fptr.OpenReceipt()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE, Fptr.LIBFPTR_RT_SELL);
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY, true);
Fptr.openReceipt();
|

Открытие чека коррекции прихода (ФФД 1.05)

|libfptr_set_param_datetime(fptr, 1178, 2018, 1, 2, 0, 0, 0);
libfptr_set_param_str(fptr, 1179, L»№1234″);
libfptr_util_form_tlv(fptr);

std::vector correctionInfo(128);
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE,
&correctionInfo[0], correctionInfo.size());
if (size > correctionInfo.size())
{
correctionInfo.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE,
&correctionInfo[0], correctionInfo.size());
}
correctionInfo.resize(size);

libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL_CORRECTION);
libfptr_set_param_int(fptr, 1173, 1);
libfptr_set_param_bytearray(fptr, 1174, &correctionInfo[0], correctionInfo.size());
libfptr_open_receipt(fptr);
|

|fptr.setParam(1178, std::tm{.tm_mday = 2, .tm_mon = 0, .tm_year = 2018 — 1900});
fptr.setParam(1179, L»№1234″);
fptr.utilFormTlv();

std::vector correctionInfo = fptr.getParamByteArray(LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL_CORRECTION);
fptr.setParam(1173, 1);
fptr.setParam(1174, correctionInfo);
fptr.openReceipt();
|

|fptr.setParam(1178, datetime.datetime(2018, 1, 2))
fptr.setParam(1179, «№1234»)
fptr.utilFormTlv()

correctionInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE)

fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL_CORRECTION)
fptr.setParam(1173, 1)
fptr.setParam(1174, correctionInfo)
fptr.openReceipt()
|

|Calendar c = Calendar.getInstance();
c.set(2018, 1, 2);
fptr.setParam(1178, c.getTime());
fptr.setParam(1179, «№1234»);
fptr.utilFormTlv();
byte[] correctionInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL_CORRECTION);
fptr.setParam(1173, 1);
fptr.setParam(1174, correctionInfo);
fptr.openReceipt();
|

|Calendar c = Calendar.getInstance();
c.set(2018, 1, 2);
fptr.setParam(1178, c.getTime());
fptr.setParam(1179, «№1234»);
fptr.utilFormTlv();
byte[] correctionInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL_CORRECTION);
fptr.setParam(1173, 1);
fptr.setParam(1174, correctionInfo);
fptr.openReceipt();
|

|NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setYear:[2018 intValue]];
[components setMonth:[1 intValue]];
[components setDay:[2 intValue]];

[fptr setParam:1178 NSDateParam:[calendar dateFromComponents:components]];
[fptr setParam:1179 NSStringParam:@»№1234″];
[fptr utilFormTlv];
NSData *correctionInfo = [fptr getParamByteArray:LIBFPTR_PARAM_TAG_VALUE];

[fptr setParam:LIBFPTR_PARAM_RECEIPT_TYPE intParam:LIBFPTR_RT_SELL_CORRECTION];
[fptr setParam:1173 intParam:1];
[fptr setParam:1174 NSDataParam:correctionInfo];
[fptr openReceipt];
|

|DateTime date = new DateTime(2018, 1, 2);
fptr.setParam(1178, date);
fptr.setParam(1179, «№1234»);
fptr.utilFormTlv();
byte[] correctionInfo = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(Constants.LIBFPTR_PARAM_RECEIPT_TYPE, Constants.LIBFPTR_RT_SELL_CORRECTION);
fptr.setParam(1173, 1);
fptr.setParam(1174, correctionInfo);
fptr.openReceipt();
|

|var
date: TDateTime;
correctionInfo: Variant;
begin
date := StrToDate(‘02.01.2018’);
fptr.setParam(1178, date);
fptr.setParam(1179, ‘№1234’);
fptr.utilFormTlv;
correctionInfo := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL_CORRECTION);
fptr.setParam(1173, 1);
fptr.setParam(1174, correctionInfo);
fptr.openReceipt;

end;
|

|fptr.SetParam(1178, time.date(2018, 1, 2, 0, 0, 0, 0, time.Now().Location()))
fptr.SetParam(1179, «№1234»)
fptr.UtilFormTlv()

correctionInfo := fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_TAG_VALUE)

fptr.SetParam(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE, fptr10.LIBFPTR_RT_SELL_CORRECTION)
fptr.SetParam(1173, 1)
fptr.SetParam(1174, correctionInfo)
fptr.OpenReceipt()
|

|Fptr.setParam(1178, new Date(«2018-01-02T00:00:00»));
Fptr.setParam(1179, «№1234»);
Fptr.utilFormTlv();

correctionInfo = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_TAG_VALUE);

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE, Fptr.LIBFPTR_RT_SELL_CORRECTION);
Fptr.setParam(1173, 1);
Fptr.setParam(1174, correctionInfo);
Fptr.openReceipt();
|

Открытие чека со сведениями о покупателе (ФФД 1.2)

|libfptr_set_param_str(fptr, 1227, L»Покупатель А»);
libfptr_set_param_str(fptr, 1228, L»112233445573″);
libfptr_util_form_tlv(fptr);

std::vector clientInfo(128);
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE,
&clientInfo[0], clientInfo.size());
if (size > clientInfo.size())
{
clientInfo.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE,
&clientInfo[0], clientInfo.size());
}
clientInfo.resize(size);

libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
libfptr_set_param_bytearray(fptr, 1256, &clientInfo[0], clientInfo.size());
libfptr_open_receipt(fptr);
|

|fptr.setParam(1227, L»Покупатель А»);
fptr.setParam(1228, L»112233445573″);
fptr.utilFormTlv();

std::vector clientInfo = fptr.getParamByteArray(LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
fptr.setParam(1256, clientInfo);
fptr.openReceipt();
|

|fptr.setParam(1227, L»Покупатель А»)
fptr.setParam(1228, L»112233445573″)
fptr.utilFormTlv()

clientInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE)

fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL)
fptr.setParam(1256, clientInfo)
fptr.openReceipt()
|

|fptr.setParam(1227, «Покупатель А»);
fptr.setParam(1228, «112233445573»);
fptr.utilFormTlv();
byte[] clientInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.setParam(1256, clientInfo);
fptr.openReceipt();
|

|fptr.setParam(1227, «Покупатель А»);
fptr.setParam(1228, «112233445573»);
fptr.utilFormTlv();
byte[] clientInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.setParam(1256, clientInfo);
fptr.openReceipt();
|

|[fptr setParam:1227 NSStringParam:@»Покупатель А»];
[fptr setParam:1228 NSStringParam:@»112233445573″];
[fptr utilFormTlv];
NSData *clientInfo = [fptr getParamByteArray:LIBFPTR_PARAM_TAG_VALUE];

[fptr setParam:LIBFPTR_PARAM_RECEIPT_TYPE intParam:LIBFPTR_RT_SELL];
[fptr setParam:1256 NSDataParam:clientInfo];
[fptr openReceipt];
|

|fptr.setParam(1227, «Покупатель А»);
fptr.setParam(1228, «112233445573»);
fptr.utilFormTlv();
byte[] clientInfo = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(Constants.LIBFPTR_PARAM_RECEIPT_TYPE, Constants.LIBFPTR_RT_SELL);
fptr.setParam(1256, clientInfo);
fptr.openReceipt();
|

|var
clientInfo: Variant;
begin
fptr.setParam(1227, ‘Покупатель А’);
fptr.setParam(1228, ‘112233445573’);
fptr.utilFormTlv;
clientInfo := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL);
fptr.setParam(1256, clientInfo);
fptr.openReceipt;

end;
|

|fptr.SetParam(1227, «Покупатель А»)
fptr.SetParam(1228, «112233445573»)
fptr.UtilFormTlv()

clientInfo := fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_TAG_VALUE)

fptr.SetParam(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE, fptr10.LIBFPTR_RT_SELL)
fptr.SetParam(1256, clientInfo)
fptr.OpenReceipt()
|

|Fptr.setParam(1227, «Покупатель А»);
Fptr.setParam(1228, «112233445573»);
Fptr.utilFormTlv();

clientInfo = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_TAG_VALUE);

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE, Fptr.LIBFPTR_RT_SELL);
Fptr.setParam(1256, clientInfo);
Fptr.openReceipt();
|

Открытие чека с отраслевым реквизитом чека (тег 1261, ФФД 1.2)

|libfptr_set_param_str(fptr, 1262, L»020″);
libfptr_set_param_str(fptr, 1263, L»14.12.2018″);
libfptr_set_param_str(fptr, 1264, L»1556″);
libfptr_set_param_str(fptr, 1265, L»tm=mdlp&sid=00000000105200″);
libfptr_util_form_tlv(fptr);

std::vector industryInfo(128);
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE,
&industryInfo[0], industryInfo.size());
if (size > industryInfo.size())
{
industryInfo.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE,
&industryInfo[0], industryInfo.size());
}
industryInfo.resize(size);

libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
libfptr_set_param_bytearray(fptr, 1261, &industryInfo[0]. industryInfo.size());
libfptr_open_receipt(fptr);
|

|fptr.setParam(1262, L»020″);
fptr.setParam(1263, L»14.12.2018″);
fptr.setParam(1264, L»1556″);
fptr.setParam(1265, L»tm=mdlp&sid=00000000105200″);
fptr.utilFormTlv();

std::vector industryInfo = fptr.getParamByteArray(LIBFPTR_PARAM_TAG_VALUE);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.setParam(1261, industryInfo);
fptr.openReceipt();
|

|fptr.setParam(1262, «020»)
fptr.setParam(1263, «14.12.2018»)
fptr.setParam(1264, «1556»)
fptr.setParam(1265, «tm=mdlp&sid=00000000105200»)
fptr.utilFormTlv()

industryInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE)
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL)
fptr.setParam(1261, industryInfo)
fptr.openReceipt()
|

|fptr.setParam(1262, «020»);
fptr.setParam(1263, «14.12.2018»);
fptr.setParam(1264, «1556»);
fptr.setParam(1265, «tm=mdlp&sid=00000000105200»);
fptr.utilFormTlv();

byte[] industryInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.setParam(1261, industryInfo);
fptr.openReceipt();
|

|fptr.setParam(1262, «020»);
fptr.setParam(1263, «14.12.2018»);
fptr.setParam(1264, «1556»);
fptr.setParam(1265, «tm=mdlp&sid=00000000105200»);
fptr.utilFormTlv();

byte[] industryInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.setParam(1261, industryInfo);
fptr.openReceipt();
|

|[fptr setParam:1262 NSStringParam:@»020″];
[fptr setParam:1263 NSStringParam:@»14.12.2018″];
[fptr setParam:1264 NSStringParam:@»1556″];
[fptr setParam:1265 NSStringParam:@»tm=mdlp&sid=00000000105200″];
[fptr utilFormTlv];

NSData *industryInfo = [fptr getParamByteArray:LIBFPTR_PARAM_TAG_VALUE];
[fptr setParam:LIBFPTR_PARAM_RECEIPT_TYPE intParam:LIBFPTR_RT_SELL];
[fptr setParam:1261 NSDataParam:industryInfo];
[fptr openReceipt];
|

|fptr.setParam(1262, «020»);
fptr.setParam(1263, «14.12.2018»);
fptr.setParam(1264, «1556»);
fptr.setParam(1265, «tm=mdlp&sid=00000000105200»);
fptr.utilFormTlv();

byte[] industryInfo = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_TAG_VALUE);
fptr.setParam(Constants.LIBFPTR_PARAM_RECEIPT_TYPE, Constants.LIBFPTR_RT_SELL);
fptr.setParam(1261, industryInfo);
fptr.openReceipt();
|

|var
industryInfo: Variant;
begin
fptr.setParam(1262, ‘020’);
fptr.setParam(1263, ‘14.12.2018’);
fptr.setParam(1264, ‘1556’);
fptr.setParam(1265, ‘tm=mdlp&sid=00000000105200’);
fptr.utilFormTlv;

industryInfo := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_TAG_VALUE);
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL);    
fptr.setParam(1261, industryInfo);
fptr.openReceipt;

end;
|

|fptr.SetParam(1262, «020»)
fptr.SetParam(1263, «14.12.2018»)
fptr.SetParam(1264, «1556»)
fptr.SetParam(1265, «tm=mdlp&sid=00000000105200»)
fptr.UtilFormTlv()

industryInfo := fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_TAG_VALUE)
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE, fptr10.LIBFPTR_RT_SELL)
fptr.SetParam(1261, industryInfo)
fptr.OpenReceipt()
|

|Fptr.setParam(1262, «020»);
Fptr.setParam(1263, «14.12.2018»);
Fptr.setParam(1264, «1556»);
Fptr.setParam(1265, «tm=mdlp&sid=00000000105200»);
Fptr.utilFormTlv();

industryInfo = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_TAG_VALUE);
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE, Fptr.LIBFPTR_RT_SELL);
Fptr.setParam(1261, industryInfo);
Fptr.openReceipt();
|

Для открытия чека требуется вызвать метод /openReceipt()/ с указанием
типа чека (параметр LIBFPTR_PARAM_RECEIPT_TYPE).

Тип чека (LIBFPTR_PARAM_RECEIPT_TYPE) может принимать следующие значения:

  • LIBFPTR_RT_SELL — чек прихода (продажи);
  • LIBFPTR_RT_SELL_RETURN — чек возврата прихода (продажи);
  • LIBFPTR_RT_SELL_CORRECTION — чек коррекции прихода;
  • LIBFPTR_RT_SELL_RETURN_CORRECTION — чек коррекции возврата прихода;
  • LIBFPTR_RT_BUY — чек расхода (покупки);
  • LIBFPTR_RT_BUY_RETURN — чек возврата расхода (покупки);
  • LIBFPTR_RT_BUY_CORRECTION — чек коррекции расхода;
  • LIBFPTR_RT_BUY_RETURN_CORRECTION — чек коррекции возврата расхода.

Чтобы чек не печатался (электронный чек), нужно установить параметру
LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY значение true.

Также в данном методе можно передать следующие реквизиты (для всех
чеков, кроме чеков коррекции):

Реквизит Описание Тип Версии ФФД
1008 Телефон или электронный адрес покупателя string Все
1227 Покупатель (клиент) string < 1.2
1228 ИНН покупателя (клиента) string < 1.2
1117 Адрес электронной почты отправителя чека string Все
1055 Применяемая система налогообложения (СНО) int Все
1187 Место расчетов string Все
1060 Адрес сайта ФНС string Все
1057 Признак агента int < 1.2
1171 Телефон поставщика string < 1.2
1044 Операция банковского платежного агента string < 1.2
1073 Телефон платежного агента (может повторяться несколько раз)
string < 1.2
1005 Адрес оператора перевода string < 1.2
1016 ИНН оператора перевода string < 1.2
1026 Наименование оператора перевода string < 1.2
1075 Телефон оператора перевода (может повторяться несколько раз)
string < 1.2
1074 Телефон оператора по приему платежей (может повторяться
несколько раз) string < 1.2
1084 Дополнительный реквизит пользователя bytearray Все
1192 Дополнительный реквизит чека (БСО) string Все
1256 Сведения о покупателе (клиенте) bytearray ≥ 1.2
1261 Отраслевой реквизит чека bytearray ≥ 1.2
1270 Операционный реквизит чека bytearray ≥ 1.2

Реквизит 1256 составной и состоит из следующих реквизитов:

Реквизит Описание Тип
1227 Покупатель (клиент) string
1228 ИНН покупателя (клиента) string
1243 Дата рождения покупателя (клиента) string
1244 Гражданство string
1245 Код вида документа, удостоверяющего личность string
1246 Данные документа, удостоверяющего личность string
1254 Адрес покупателя (клиента) string

Реквизит 1261 составной и состоит из следующих реквизитов:

Реквизит Описание Тип
1262 Идентификатор ФОИВ string
1263 Дата документа основания datetime
1264 Номер документа основания string
1265 Значение отраслевого реквизита string

Реквизит 1270 составной и состоит из следующих реквизитов:

Реквизит Описание Тип
1271 Идентификатор операции int
1272 Данные операции string
1273 Дата и время операции datetime

Реквизит 1261 можно передать только с маркированным товаром для ФФД ≥
1.2.

При работе по ФФД ≥ 1.2. реквизиты 1228 (ИНН покупателя) и 1261
(отраслевой реквизит) могут быть также переданы после регистрации всех
позиций в чеке как данные уведомления методом writeSalesNotice(), если
в чеке присутствуют позиции, содержащие КМ. Подробнее в соответствующем
разделе <#sales_notice>.

Реквизит 1084 составной и состоит из следующих реквизитов:

Реквизит Описание Тип
1085 Наименование дополнительного реквизита пользователя string
1086 Значение дополнительного реквизита пользователя string

Реквизит 1055 может принимать следующие значения:

  • LIBFPTR_TT_OSN — общая;
  • LIBFPTR_TT_USN_INCOME — упрощенная доход;
  • LIBFPTR_TT_USN_INCOME_OUTCOME — упрощенная доход минус расход;
  • LIBFPTR_TT_ESN — единый сельскохозяйственный доход;
  • LIBFPTR_TT_PATENT — патентная система налогообложения.

Реквизит 1057 может принимать следующие значения:

  • LIBFPTR_AT_BANK_PAYING_AGENT — банковский платежный агент;
  • LIBFPTR_AT_BANK_PAYING_SUBAGENT — банковский платежный субагент;
  • LIBFPTR_AT_PAYING_AGENT — платежный агент;
  • LIBFPTR_AT_PAYING_SUBAGENT — платежный субагент;
  • LIBFPTR_AT_ATTORNEY — поверенный;
  • LIBFPTR_AT_COMMISSION_AGENT — комиссионер;
  • LIBFPTR_AT_ANOTHER — другой тип агента, «иной» агент.

Для чеков коррекций допустимы следующие реквизиты:

Реквизит Описание Тип
1055 Применяемая система налогообложения int
1173 Тип коррекции int
1174 Основание для коррекции bytearray

Реквизит 1174 составной и состоит из следующих реквизитов:

Реквизит Описание Тип
1178 Дата совершения корректируемого расчета datetime
1179 Номер предписания налогового органа string

Для формирования реквизита 1174 рекомендуется использовать метод / utilFormTlv()/.

Результатом команды будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_SHIFT_AUTO_OPENED true, если при выполнении операции
была автоматически открыта смена в ККТ bool

Поддерживается для всех ККТ

Отменить чек

Отмена чека

|libfptr_cancel_receipt(fptr);
|

|fptr.cancelReceipt();
|

|fptr.cancelReceipt()
|

|fptr.cancelReceipt();
|

|fptr.cancelReceipt();
|

|[fptr cancelReceipt]
|

|fptr.cancelReceipt();
|

|begin
fptr.cancelReceipt;
end;
|

|fptr.CancelReceipt()
|

|Fptr.cancelReceipt();
|

Для отмены чека требуется вызвать метод /cancelReceipt()/. Метод
содержит необязательный параметр LIBFPTR_PARAM_CLEAR_MARKING_TABLE,
при необходимости есть возможность отменить чек без очистки внутренней
таблицы КМ драйвера, для этого необходимо передать значение false. По
умолчанию, параметр имеет значение true, внутренняя таблица КМ
драйвера чистится.

Параметр LIBFPTR_PARAM_CLEAR_MARKING_TABLE используется в основном в
случаях, когда после отмены чека будет немедленно проведён точно такой
же чек с теми же маркированными позициями. Таким образом, можно не
проверять КМ снова, а сразу провести чек, идентичный отменённому.
Внимание! Использование этого параметра в иных ситуациях не рекомендуется, так как может приводить к неконтролируемому заполнению
таблицы КМ и, возможно, её переполнению.

Поддерживается для всех ККТ

Зарегистрировать позицию

Регистрация позиции без указания суммы налога

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_COMMODITY_NAME, L»Товар»);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_PRICE, 100);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_QUANTITY, 5.15);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT0);
libfptr_registration(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_COMMODITY_NAME, L»Товар»);
fptr.setParam(LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT0);
fptr.registration();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»)
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 100)
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5.15)
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT0)
fptr.registration()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT0);
fptr.registration();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT0);
fptr.registration();
|

|[fptr setParam:LIBFPTR_PARAM_COMMODITY_NAME NSStringParam:@»Товар»];
[fptr setParam:LIBFPTR_PARAM_PRICE doubleParam:100];
[fptr setParam:LIBFPTR_PARAM_QUANTITY doubleParam:5.15];
[fptr setParam:LIBFPTR_PARAM_TAX_TYPE intParam:LIBFPTR_TAX_VAT0];
[fptr registration]
|

|fptr.setParam(Constants.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
fptr.setParam(Constants.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(Constants.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(Constants.LIBFPTR_PARAM_TAX_TYPE, Constants.LIBFPTR_TAX_VAT10);
fptr.registration();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_COMMODITY_NAME, ‘Товар’);
fptr.setParam(fptr.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(fptr.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(fptr.LIBFPTR_PARAM_TAX_TYPE, fptr.LIBFPTR_TAX_VAT0);
fptr.registration;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_PRICE, 100)
fptr.SetParam(fptr10.LIBFPTR_PARAM_QUANTITY, 5.15)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TAX_TYPE, fptr10.LIBFPTR_TAX_VAT0)
fptr.Registration()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_PRICE, 100);
Fptr.setParam(Fptr.LIBFPTR_PARAM_QUANTITY, 5.15);
Fptr.setParam(Fptr.LIBFPTR_PARAM_TAX_TYPE, Fptr.LIBFPTR_TAX_VAT10);
Fptr.registration();
|

Регистрация позиции с указанием суммы налога

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_COMMODITY_NAME, L»Товар»);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_PRICE, 100);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_QUANTITY, 5.15);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_TAX_SUM, 51.5);
libfptr_registration(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_COMMODITY_NAME, L»Товар»);
fptr.setParam(LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
fptr.setParam(LIBFPTR_PARAM_TAX_SUM, 51.5);
fptr.registration();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»)
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 100)
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5.15)
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10)
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_SUM, 51.5)
fptr.registration()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_SUM, 51.5);
fptr.registration();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_SUM, 51.5);
fptr.registration();
|

|[fptr setParam:LIBFPTR_PARAM_COMMODITY_NAME NSStringParam:@»Товар»];
[fptr setParam:LIBFPTR_PARAM_PRICE doubleParam:100];
[fptr setParam:LIBFPTR_PARAM_QUANTITY doubleParam:5.15];
[fptr setParam:LIBFPTR_PARAM_TAX_TYPE intParam:LIBFPTR_TAX_VAT10];
[fptr setParam:LIBFPTR_PARAM_TAX_SUM doubleParam:51.5];
[fptr registration]
|

|fptr.setParam(Constants.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
fptr.setParam(Constants.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(Constants.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(Constants.LIBFPTR_PARAM_TAX_TYPE, Constants.LIBFPTR_TAX_VAT10);
fptr.setParam(Constants.LIBFPTR_PARAM_TAX_SUM, 51.5);
fptr.registration();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_COMMODITY_NAME, ‘Товар’);
fptr.setParam(fptr.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(fptr.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(fptr.LIBFPTR_PARAM_TAX_TYPE, fptr.LIBFPTR_TAX_VAT0);
fptr.setParam(fptr.LIBFPTR_PARAM_TAX_SUM, 51.5);
fptr.registration;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_PRICE, 100)
fptr.SetParam(fptr10.LIBFPTR_PARAM_QUANTITY, 5.15)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TAX_TYPE, fptr10.LIBFPTR_TAX_VAT10)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TAX_SUM, 51.5)
fptr.Registration()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_PRICE, 100);
Fptr.setParam(Fptr.LIBFPTR_PARAM_QUANTITY, 5.15);
Fptr.setParam(Fptr.LIBFPTR_PARAM_TAX_TYPE, Fptr.LIBFPTR_TAX_VAT10);
Fptr.setParam(Fptr.LIBFPTR_PARAM_TAX_SUM, 51.5)
Fptr.registration();
|

Регистрация позиции без расчета суммы налога

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_COMMODITY_NAME, L»Товар»);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_PRICE, 100);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_QUANTITY, 5.15);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_USE_ONLY_TAX_TYPE, true);
libfptr_registration(fptr);

// …

libfptr_set_param_int(fptr, LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_TAX_SUM, 78.56);
libfptr_receipt_tax(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_COMMODITY_NAME, L»Товар»);
fptr.setParam(LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT0);
fptr.setParam(LIBFPTR_PARAM_USE_ONLY_TAX_TYPE, true);
fptr.registration();

// …

fptr.setParam(LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
fptr.setParam(LIBFPTR_PARAM_TAX_SUM, 78.56);
fptr.receiptTax();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»)
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 100)
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5.15)
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT0)
fptr.setParam(IFptr.LIBFPTR_PARAM_USE_ONLY_TAX_TYPE, True)
fptr.registration()

fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10)
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_SUM, 78.56)
fptr.receiptTax()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT0);
fptr.setParam(IFptr.LIBFPTR_PARAM_USE_ONLY_TAX_TYPE, true);
fptr.registration();

// …

fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_SUM, 78.56);
fptr.receiptTax();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT0);
fptr.setParam(IFptr.LIBFPTR_PARAM_USE_ONLY_TAX_TYPE, true);
fptr.registration();

// …

fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_SUM, 78.56);
fptr.receiptTax();
|

|[fptr setParam:LIBFPTR_PARAM_COMMODITY_NAME NSStringParam:@»Товар»];
[fptr setParam:LIBFPTR_PARAM_PRICE doubleParam:100];
[fptr setParam:LIBFPTR_PARAM_QUANTITY doubleParam:5.15];
[fptr setParam:LIBFPTR_PARAM_TAX_TYPE intParam:LIBFPTR_TAX_VAT0];
[fptr setParam:LIBFPTR_PARAM_USE_ONLY_TAX_TYPE boolParam:true];

[fptr registration]

// …

[fptr setParam:LIBFPTR_PARAM_TAX_TYPE intParam:LIBFPTR_TAX_VAT10];
[fptr setParam:LIBFPTR_PARAM_TAX_SUM doubleParam:78.56];
[fptr receiptTax]
|

|fptr.setParam(Constants.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
fptr.setParam(Constants.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(Constants.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(Constants.LIBFPTR_PARAM_TAX_TYPE, Constants.LIBFPTR_TAX_VAT0);
fptr.setParam(Constants.LIBFPTR_PARAM_USE_ONLY_TAX_TYPE, true);
fptr.registration();

// …

fptr.setParam(Constants.LIBFPTR_PARAM_TAX_TYPE, Constants.LIBFPTR_TAX_VAT10);
fptr.setParam(Constants.LIBFPTR_PARAM_TAX_SUM, 78.56);
fptr.receiptTax();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_COMMODITY_NAME, ‘Товар’);
fptr.setParam(fptr.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(fptr.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(fptr.LIBFPTR_PARAM_TAX_TYPE, fptr.LIBFPTR_TAX_VAT0);
fptr.setParam(fptr.LIBFPTR_PARAM_USE_ONLY_TAX_TYPE, True);
fptr.registration;

// ...

fptr.setParam(fptr.LIBFPTR_PARAM_TAX_TYPE, fptr.LIBFPTR_TAX_VAT10);
fptr.setParam(fptr.LIBFPTR_PARAM_TAX_SUM, 78.56);
fptr.receiptTax;

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_PRICE, 100)
fptr.SetParam(fptr10.LIBFPTR_PARAM_QUANTITY, 5.15)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TAX_TYPE, fptr10.LIBFPTR_TAX_VAT0)
fptr.SetParam(fptr10.LIBFPTR_PARAM_USE_ONLY_TAX_TYPE, true)
fptr.Registration()

// …

fptr.SetParam(fptr10.LIBFPTR_PARAM_TAX_TYPE, fptr10.LIBFPTR_TAX_VAT10)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TAX_SUM, 78.56)
fptr.ReceiptTax()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_PRICE, 100);
Fptr.setParam(Fptr.LIBFPTR_PARAM_QUANTITY, 5.15);
Fptr.setParam(Fptr.LIBFPTR_PARAM_TAX_TYPE, Fptr.LIBFPTR_TAX_VAT10);
Fptr.setParam(Fptr.LIBFPTR_PARAM_USE_ONLY_TAX_TYPE, true);
Fptr.registration();

// …

Fptr.setParam(Fptr.LIBFPTR_PARAM_TAX_TYPE, Fptr.LIBFPTR_TAX_VAT10)
Fptr.setParam(Fptr.LIBFPTR_PARAM_TAX_SUM, 78.56)
Fptr.receiptTax()
|

Регистрация позиции с кодом маркировки

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_COMMODITY_NAME, L»Товар»);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_PRICE, 100);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_QUANTITY, 5.15);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_TAX_SUM, 51.5);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_MARKING_CODE_TYPE, LIBFPTR_MCT_EGAIS_20);
uchar mark[] = {<массив байт от сканера>};
libfptr_set_param_bytearray(fptr, LIBFPTR_PARAM_MARKING_CODE, &mark[0], sizeof(mark));
libfptr_registration(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_COMMODITY_NAME, L»Товар»);
fptr.setParam(LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
fptr.setParam(LIBFPTR_PARAM_TAX_SUM, 51.5);
fptr.setParam(LIBFPTR_PARAM_MARKING_CODE_TYPE, LIBFPTR_MCT_EGAIS_20);
fptr.setParam(LIBFPTR_PARAM_MARKING_CODE, {<массив байт от сканера>});
fptr.registration();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»)
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 100)
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5.15)
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10)
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_SUM, 51.5)
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, IFptr.LIBFPTR_MCT_EGAIS_20)
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE, [<массив байт от сканера>])
fptr.registration()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_SUM, 51.5);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, IFptr.LIBFPTR_MCT_EGAIS_20);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE, new byte[]{<массив байт от сканера>});
fptr.registration();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_SUM, 51.5);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, IFptr.LIBFPTR_MCT_EGAIS_20);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE, new byte[]{<массив байт от сканера>});
fptr.registration();
|

|[fptr setParam:LIBFPTR_PARAM_COMMODITY_NAME NSStringParam:@»Товар»];
[fptr setParam:LIBFPTR_PARAM_PRICE doubleParam:100];
[fptr setParam:LIBFPTR_PARAM_QUANTITY doubleParam:5.15];
[fptr setParam:LIBFPTR_PARAM_TAX_TYPE intParam:LIBFPTR_TAX_VAT10];
[fptr setParam:LIBFPTR_PARAM_TAX_SUM doubleParam:51.5];
uchar mark[] = {<массив байт от сканера>};
[fptr setParam:LIBFPTR_PARAM_MARKING_CODE_TYPE intParam:LIBFPTR_MCT_EGAIS_20];
[fptr setParam:LIBFPTR_PARAM_MARKING_CODE NSDataParam:[NSData dataWithBytes:(const void*)mark length:sizeof(mark)]];
[fptr registration]
|

|fptr.setParam(Constants.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
fptr.setParam(Constants.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(Constants.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(Constants.LIBFPTR_PARAM_TAX_TYPE, Constants.LIBFPTR_TAX_VAT10);
fptr.setParam(Constants.LIBFPTR_PARAM_TAX_SUM, 51.5);
fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_CODE_TYPE, Constants.LIBFPTR_MCT_EGAIS_20);
fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_CODE, new byte[]{<массив байт от сканера>});
fptr.registration();
|

|var
mark: Array[0 .. 31] of Byte = (<массив байт от сканера>);
mark_var: Variant;
i: Integer;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_COMMODITY_NAME, ‘Товар’);
fptr.setParam(fptr.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(fptr.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(fptr.LIBFPTR_PARAM_TAX_TYPE, fptr.LIBFPTR_TAX_VAT0);
fptr.setParam(fptr.LIBFPTR_PARAM_TAX_SUM, 51.5);
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, fptr.LIBFPTR_MCT_EGAIS_20);

mark_var := VarArrayCreate([0, high(mark)], varByte);
for i := VarArrayLowBound(mark_var, 1) to VarArrayHighBound(mark_var, 1) do
begin
    VarArrayPut(mark_var, mark[i], [i]);
end;
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_CODE, mark_var);

fptr.registration;

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_PRICE, 100)
fptr.SetParam(fptr10.LIBFPTR_PARAM_QUANTITY, 5.15)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TAX_TYPE, fptr10.LIBFPTR_TAX_VAT10)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TAX_SUM, 51.5)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_CODE_TYPE, fptr10.LIBFPTR_MCT_EGAIS_20)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_CODE, []byte{<массив байт от сканера>})
fptr.Registration()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_PRICE, 100);
Fptr.setParam(Fptr.LIBFPTR_PARAM_QUANTITY, 5.15);
Fptr.setParam(Fptr.LIBFPTR_PARAM_TAX_TYPE, Fptr.LIBFPTR_TAX_VAT10);
Fptr.setParam(Fptr.LIBFPTR_PARAM_TAX_SUM, 51.5)
Fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, Fptr.LIBFPTR_MCT_EGAIS_20);
fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_CODE, new Uint8Array([<массив байт от сканера>]));
Fptr.registration();
|

Регистрация позиции с кодом товара (1162)

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_COMMODITY_NAME, L»Товар»);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_PRICE, 100);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_QUANTITY, 5.15);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_TAX_SUM, 51.5);
uchar code[] = {<массив байт реквизита 1162>};
libfptr_set_param_bytearray(fptr, 1162, &code[0], sizeof(code));
libfptr_registration(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_COMMODITY_NAME, L»Товар»);
fptr.setParam(LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
fptr.setParam(LIBFPTR_PARAM_TAX_SUM, 51.5);
fptr.setParam(1162, {<массив байт реквизита 1162>});
fptr.registration();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»)
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 100)
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5.15)
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10)
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_SUM, 51.5)
fptr.setParam(1162, [<массив байт реквизита 1162>])
fptr.registration()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_SUM, 51.5);
fptr.setParam(1162, new byte[]{<массив байт реквизита 1162>});
fptr.registration();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_SUM, 51.5);
fptr.setParam(1162, new byte[]{<массив байт реквизита 1162>});
fptr.registration();
|

|[fptr setParam:LIBFPTR_PARAM_COMMODITY_NAME NSStringParam:@»Товар»];
[fptr setParam:LIBFPTR_PARAM_PRICE doubleParam:100];
[fptr setParam:LIBFPTR_PARAM_QUANTITY doubleParam:5.15];
[fptr setParam:LIBFPTR_PARAM_TAX_TYPE intParam:LIBFPTR_TAX_VAT10];
[fptr setParam:LIBFPTR_PARAM_TAX_SUM doubleParam:51.5];
uchar mark[] = {<массив байт реквизита 1162>};
[fptr setParam:1162 NSDataParam:[NSData dataWithBytes:(const void*)mark length:sizeof(mark)]];
[fptr registration]
|

|fptr.setParam(Constants.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
fptr.setParam(Constants.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(Constants.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(Constants.LIBFPTR_PARAM_TAX_TYPE, Constants.LIBFPTR_TAX_VAT10);
fptr.setParam(Constants.LIBFPTR_PARAM_TAX_SUM, 51.5);
fptr.setParam(1162, new byte[]{<массив байт реквизита 1162>});
fptr.registration();
|

|var
mark: Array[0 .. 31] of Byte = (<массив байт реквизита 1162>);
mark_var: Variant;
i: Integer;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_COMMODITY_NAME, ‘Товар’);
fptr.setParam(fptr.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(fptr.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(fptr.LIBFPTR_PARAM_TAX_TYPE, fptr.LIBFPTR_TAX_VAT0);
fptr.setParam(fptr.LIBFPTR_PARAM_TAX_SUM, 51.5);

mark_var := VarArrayCreate([0, high(mark)], varByte);
for i := VarArrayLowBound(mark_var, 1) to VarArrayHighBound(mark_var, 1) do
begin
    VarArrayPut(mark_var, mark[i], [i]);
end;
fptr.setParam(1162, mark_var);

fptr.registration;

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_PRICE, 100)
fptr.SetParam(fptr10.LIBFPTR_PARAM_QUANTITY, 5.15)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TAX_TYPE, fptr10.LIBFPTR_TAX_VAT10)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TAX_SUM, 51.5)
fptr.SetParam(1162, []byte{<массив байт реквизита 1162>})
fptr.Registration()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_PRICE, 100);
Fptr.setParam(Fptr.LIBFPTR_PARAM_QUANTITY, 5.15);
Fptr.setParam(Fptr.LIBFPTR_PARAM_TAX_TYPE, Fptr.LIBFPTR_TAX_VAT10);
Fptr.setParam(Fptr.LIBFPTR_PARAM_TAX_SUM, 51.5)
fptr.setParam(1162, new Uint8Array([<массив байт реквизита 1162>]));
Fptr.registration();
|

Регистрация позиции с агентом и поставщиком

|libfptr_set_param_str(fptr, 1005, L»Улица Свободы, д.1″);
libfptr_set_param_str(fptr, 1016, L»123456789047″);
libfptr_set_param_str(fptr, 1026, L»ООО Оператор»);
libfptr_set_param_str(fptr, 1075, L»+79161234567″);
libfptr_set_param_str(fptr, 1075, L»+79169876543″);
libfptr_util_form_tlv(fptr);

std::vector agentInfo(128);
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE,
&agentInfo[0], agentInfo.size());
if (size > agentInfo.size())
{
agentInfo.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE,
&agentInfo[0], agentInfo.size());
}
agentInfo.resize(size);

libfptr_set_param_str(fptr, 1171, L»+79113456789″);
libfptr_set_param_str(fptr, 1225, L»ООО Поставщик»);
libfptr_util_form_tlv(fptr);

std::vector suplierInfo;
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE,
&suplierInfo[0], suplierInfo.size());
if (size > suplierInfo.size())
{
suplierInfo.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE,
&suplierInfo[0], suplierInfo.size());
}
suplierInfo.resize(size);

libfptr_set_param_str(fptr, LIBFPTR_PARAM_COMMODITY_NAME, L»Товар»);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_PRICE, 100);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_QUANTITY, 5.15);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
libfptr_set_param_int(fptr, 1222, LIBFPTR_AT_ANOTHER);
libfptr_set_param_bytearray(fptr, 1223, &agentInfo[0]. agentInfo.size());
libfptr_set_param_str(fptr, 1226, L»123456789047″);
libfptr_set_param_bytearray(fptr, 1224, &suplierInfo[0]. suplierInfo.size());
libfptr_registration(fptr);
|

|fptr.setParam(1005, L»Улица Свободы, д.1″);
fptr.setParam(1016, L»123456789047″);
fptr.setParam(1026, L»ООО Оператор»);
fptr.setParam(1075, L»+79161234567″);
fptr.setParam(1075, L»+79169876543″);
fptr.utilFormTlv();
std::vector agentInfo = fptr.getParamByteArray(LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(1171, L»+79113456789″);
fptr.setParam(1225, L»ООО Поставщик»);
fptr.utilFormTlv();
std::vector suplierInfo = fptr.getParamByteArray(LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(LIBFPTR_PARAM_COMMODITY_NAME, L»Товар»);
fptr.setParam(LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
fptr.setParam(1222, LIBFPTR_AT_ANOTHER);
fptr.setParam(1223, agentInfo);
fptr.setParam(1226, L»123456789047″);
fptr.setParam(1224, suplierInfo);
fptr.registration();
|

|fptr.setParam(1005, «Улица Свободы, д.1»)
fptr.setParam(1016, «123456789047»)
fptr.setParam(1026, «ООО Оператор»)
fptr.setParam(1075, «+79161234567»)
fptr.setParam(1075, «+79169876543»)
fptr.utilFormTlv()
agentInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE)

fptr.setParam(1171, «+79113456789»)
fptr.setParam(1225, «ООО Поставщик»)
fptr.utilFormTlv()
suplierInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE)

fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»)
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 100)
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5.15)
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10)
fptr.setParam(1222, IFptr.LIBFPTR_AT_ANOTHER)
fptr.setParam(1223, agentInfo)
fptr.setParam(1226, «123456789047»)
fptr.setParam(1224, suplierInfo)
fptr.registration()
|

|fptr.setParam(1005, «Улица Свободы, д.1»);
fptr.setParam(1016, «123456789047»);
fptr.setParam(1026, «ООО Оператор»);
fptr.setParam(1075, «+79161234567»);
fptr.setParam(1075, «+79169876543»);
fptr.utilFormTlv();
byte[] agentInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(1171, «+79113456789»);
fptr.setParam(1225, «ООО Поставщик»);
fptr.utilFormTlv();
byte[] suplierInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
fptr.setParam(1222, IFptr.LIBFPTR_AT_ANOTHER);
fptr.setParam(1223, agentInfo);
fptr.setParam(1226, «123456789047»);
fptr.setParam(1224, suplierInfo);
fptr.registration();
|

|fptr.setParam(1005, «Улица Свободы, д.1»);
fptr.setParam(1016, «123456789047»);
fptr.setParam(1026, «ООО Оператор»);
fptr.setParam(1075, «+79161234567»);
fptr.setParam(1075, «+79169876543»);
fptr.utilFormTlv();
byte[] agentInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(1171, «+79113456789»);
fptr.setParam(1225, «ООО Поставщик»);
fptr.utilFormTlv();
byte[] suplierInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
fptr.setParam(1222, IFptr.LIBFPTR_AT_ANOTHER);
fptr.setParam(1223, agentInfo);
fptr.setParam(1226, «123456789047»);
fptr.setParam(1224, suplierInfo);
fptr.registration();
|

|[fptr setParam:1005 NSStringParam:@»Улица Свободы, д.1″];
[fptr setParam:1016 NSStringParam:@»123456789047″];
[fptr setParam:1026 NSStringParam:@»ООО Оператор»];
[fptr setParam:1075 NSStringParam:@»+79161234567″];
[fptr setParam:1075 NSStringParam:@»+79169876543″];
[fptr utilFormTlv];
NSData *agentInfo = [fptr getParamByteArray:LIBFPTR_PARAM_TAG_VALUE];

[fptr setParam:1171 NSStringParam:@»+79113456789″];
[fptr setParam:1225 NSStringParam:@»ООО Поставщик»];
[fptr utilFormTlv];
NSData *suplierInfo = [fptr getParamByteArray:LIBFPTR_PARAM_TAG_VALUE];

[fptr setParam:LIBFPTR_PARAM_COMMODITY_NAME NSStringParam:@»Товар»];
[fptr setParam:LIBFPTR_PARAM_PRICE doubleParam:100];
[fptr setParam:LIBFPTR_PARAM_QUANTITY doubleParam:5.15];
[fptr setParam:LIBFPTR_PARAM_TAX_TYPE intParam:LIBFPTR_TAX_VAT10];
[fptr setParam:1222 intParam:LIBFPTR_AT_ANOTHER];
[fptr setParam:1223 NSDataParam:agentInfo];
[fptr setParam:1226 NSStringParam:@»123456789047″];
[fptr setParam:1224 NSDataParam:suplierInfo];
[fptr registration]
|

|fptr.setParam(1005, «Улица Свободы, д.1»);
fptr.setParam(1016, «123456789047»);
fptr.setParam(1026, «ООО Оператор»);
fptr.setParam(1075, «+79161234567»);
fptr.setParam(1075, «+79169876543»);
fptr.utilFormTlv();
byte[] agentInfo = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(1171, «+79113456789»);
fptr.setParam(1225, «ООО Поставщик»);
fptr.utilFormTlv();
byte[] suplierInfo = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(Constants.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
fptr.setParam(Constants.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(Constants.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(Constants.LIBFPTR_PARAM_TAX_TYPE, Constants.LIBFPTR_TAX_VAT10);
fptr.setParam(1222, Constants.LIBFPTR_AT_ANOTHER);
fptr.setParam(1223, agentInfo);
fptr.setParam(1226, «123456789047»);
fptr.setParam(1224, suplierInfo);
fptr.registration();
|

|var
agentInfo: Variant;
suplierInfo: Variant;
begin
fptr.setParam(1005, ‘Улица Свободы, д.1’);
fptr.setParam(1016, ‘123456789047’);
fptr.setParam(1026, ‘ООО Оператор’);
fptr.setParam(1075, ‘+79161234567’);
fptr.setParam(1075, ‘+79169876543’);
fptr.utilFormTlv;
agentInfo := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(1171, '+79113456789');
fptr.setParam(1225, 'ООО Поставщик');
fptr.utilFormTlv;
suplierInfo := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(fptr.LIBFPTR_PARAM_COMMODITY_NAME, 'Товар');
fptr.setParam(fptr.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(fptr.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(fptr.LIBFPTR_PARAM_TAX_TYPE, fptr.LIBFPTR_TAX_VAT10);
fptr.setParam(1222, fptr.LIBFPTR_AT_ANOTHER);
fptr.setParam(1223, agentInfo);
fptr.setParam(1226, '123456789047');
fptr.setParam(1224, suplierInfo);
fptr.registration;

end;
|

|fptr.SetParam(1005, «Улица Свободы, д.1»)
fptr.SetParam(1016, «123456789047»)
fptr.SetParam(1026, «ООО Оператор»)
fptr.SetParam(1075, «+79161234567»)
fptr.SetParam(1075, «+79169876543»)
fptr.UtilFormTlv()
agentInfo := fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_TAG_VALUE)

fptr.SetParam(1171, «+79113456789»)
fptr.SetParam(1225, «ООО Поставщик»)
fptr.UtilFormTlv()
suplierInfo := fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_TAG_VALUE)

fptr.SetParam(fptr10.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_PRICE, 100)
fptr.SetParam(fptr10.LIBFPTR_PARAM_QUANTITY, 5.15)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TAX_TYPE, fptr10.LIBFPTR_TAX_VAT10)
fptr.SetParam(1222, fptr10.LIBFPTR_AT_ANOTHER)
fptr.SetParam(1223, agentInfo)
fptr.SetParam(1226, «123456789047»)
fptr.SetParam(1224, suplierInfo)
fptr.Registration()
|

|Fptr.setParam(1005, «Улица Свободы, д.1»);
Fptr.setParam(1016, «123456789047»);
Fptr.setParam(1026, «ООО Оператор»);
Fptr.setParam(1075, «+79161234567»);
Fptr.setParam(1075, «+79169876543»);
Fptr.utilFormTlv();
agentInfo = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_TAG_VALUE);

Fptr.setParam(1171, «+79113456789»);
Fptr.setParam(1225, «ООО Поставщик»);
Fptr.utilFormTlv();
suplierInfo = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_TAG_VALUE);

Fptr.setParam(Fptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_PRICE, 100);
Fptr.setParam(Fptr.LIBFPTR_PARAM_QUANTITY, 5.15);
Fptr.setParam(Fptr.LIBFPTR_PARAM_TAX_TYPE, Fptr.LIBFPTR_TAX_VAT10);
Fptr.setParam(1222, Constants.LIBFPTR_AT_ANOTHER);
Fptr.setParam(1223, agentInfo);
Fptr.setParam(1226, «123456789047»);
Fptr.setParam(1224, suplierInfo);
Fptr.registration();
|

Регистрация позиции с отраслевым реквизитом предмета расчета (тег
1260, ФФД 1.2)

|const wchar_t mark[] = L»014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=»;
uint status = 2;

libfptr_set_param_str(fptr, 1262, L»020″);
libfptr_set_param_str(fptr, 1263, L»14.12.2018″);
libfptr_set_param_str(fptr, 1264, L»1556″);
libfptr_set_param_str(fptr, 1265, L»tm=mdlp&sid=00000000105200″);
libfptr_util_form_tlv(fptr);

std::vector industryInfo(128);
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE,
&industryInfo[0], industryInfo.size());
if (size > industryInfo.size())
{
industryInfo.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE,
&industryInfo[0], industryInfo.size());
}
industryInfo.resize(size);

uint validationResult = libfptr_get_param_int(fptr, LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_COMMODITY_NAME, L»Афобазол»);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_PRICE, 450);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_QUANTITY, 1.000);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_MEASUREMENT_UNIT, LIBFPTR_IU_PIECE);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
libfptr_set_param_int(fptr, 1212, 33);
libfptr_set_param_int(fptr, 1214, 4);
libfptr_set_param_bytearray(fptr, 1260, &industryInfo[0]. industryInfo.size());
libfptr_set_param_bytearray(fptr, LIBFPTR_PARAM_MARKING_CODE, mark);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_MARKING_CODE_STATUS, status);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_MARKING_CODE_TYPE, LIBFPTR_MCT12_AUTO);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT, validationResult);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
libfptr_registration(fptr);

|

|std::wstring mark = L»014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=»;
uint status = 2;

fptr.setParam(1262, L»020″);
fptr.setParam(1263, L»14.12.2018″);
fptr.setParam(1264, L»1556″);
fptr.setParam(1265, L»tm=mdlp&sid=00000000105200″);
fptr.utilFormTlv();

std::vector industryInfo = fptr.getParamByteArray(LIBFPTR_PARAM_TAG_VALUE);
uint validationResult = fptr.getParamInt(LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);
fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, L»Афобазол»);
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 450);
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 1.000);
fptr.setParam(IFptr.LIBFPTR_PARAM_MEASUREMENT_UNIT, IFptr.LIBFPTR_IU_PIECE);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
fptr.setParam(1212, 33);
fptr.setParam(1214, 4);
fptr.setParam(1260, industryInfo);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE, mark);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_STATUS, status);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, IFptr.LIBFPTR_MCT12_AUTO);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT, validationResult);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
fptr.registration();
|

|mark = ‘014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=’
status = 2

fptr.setParam(1262, «020»)
fptr.setParam(1263, «14.12.2018»)
fptr.setParam(1264, «1556»)
fptr.setParam(1265, «tm=mdlp&sid=00000000105200»)
fptr.utilFormTlv()

industryInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE)
validationResult = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT)
fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Афобазол»)
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 450)
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 1.000)
fptr.setParam(IFptr.LIBFPTR_PARAM_MEASUREMENT_UNIT, IFptr.LIBFPTR_IU_PIECE)
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10)
fptr.setParam(1212, 33)
fptr.setParam(1214, 4)
fptr.setParam(1260, industryInfo)
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE, mark)
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_STATUS, status)
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, IFptr.LIBFPTR_MCT12_AUTO)
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT, validationResult)
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0)
fptr.registration()
|

|String mark = «014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=»;
long status = 2;

fptr.setParam(1262, «020»);
fptr.setParam(1263, «14.12.2018»);
fptr.setParam(1264, «1556»);
fptr.setParam(1265, «tm=mdlp&sid=00000000105200»);
fptr.utilFormTlv();

byte[] industryInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);
long validationResult = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);
fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Афобазол»);
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 450);
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 1.000);
fptr.setParam(IFptr.LIBFPTR_PARAM_MEASUREMENT_UNIT, IFptr.LIBFPTR_IU_PIECE);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
fptr.setParam(1212, 33);
fptr.setParam(1214, 4);
fptr.setParam(1260, industryInfo);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE, mark);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_STATUS, status);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, IFptr.LIBFPTR_MCT12_AUTO);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT, validationResult);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
fptr.registration();
|

|String mark = «014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=»;
long status = 2;

fptr.setParam(1262, «020»);
fptr.setParam(1263, «14.12.2018»);
fptr.setParam(1264, «1556»);
fptr.setParam(1265, «tm=mdlp&sid=00000000105200»);
fptr.utilFormTlv();

byte[] industryInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);
long validationResult = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);
fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Афобазол»);
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 450);
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 1.000);
fptr.setParam(IFptr.LIBFPTR_PARAM_MEASUREMENT_UNIT, IFptr.LIBFPTR_IU_PIECE);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
fptr.setParam(1212, 33);
fptr.setParam(1214, 4);
fptr.setParam(1260, industryInfo);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE, mark);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_STATUS, status);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, IFptr.LIBFPTR_MCT12_AUTO);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT, validationResult);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
fptr.registration();
|

|NSString *mark = @»014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=»;
int status = 2;

[fptr setParam:1262 NSStringParam:@»020″];
[fptr setParam:1263 NSStringParam:@»14.12.2018″];
[fptr setParam:1264 NSStringParam:@»1556″];
[fptr setParam:1265 NSStringParam:@»tm=mdlp&sid=00000000105200″];
[fptr utilFormTlv];

NSData *industryInfo = [fptr getParamByteArray:LIBFPTR_PARAM_TAG_VALUE];
int validationResult = [fptr getParamInt:LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT];
[fptr setParam:LIBFPTR_PARAM_COMMODITY_NAME NSStringParam:@»Афобазол»];
[fptr setParam:LIBFPTR_PARAM_PRICE doubleParam:450];
[fptr setParam:LIBFPTR_PARAM_QUANTITY doubleParam:1.000];
[fptr setParam:LIBFPTR_PARAM_MEASUREMENT_UNIT intParam:LIBFPTR_IU_PIECE];
[fptr setParam:LIBFPTR_PARAM_TAX_TYPE intParam:LIBFPTR_TAX_VAT10];
[fptr setParam:1212 intParam:33];
[fptr setParam:1214 intParam:4];
[fptr setParam:1260 NSDataParam:industryInfo];
[fptr setParam:LIBFPTR_PARAM_MARKING_CODE intParam:mark];
[fptr setParam:LIBFPTR_PARAM_MARKING_CODE_STATUS intParam:status];
[fptr setParam:LIBFPTR_PARAM_MARKING_CODE_TYPE intParam:LIBFPTR_MCT12_AUTO];
[fptr setParam:LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT intParam:validationResult];
[fptr setParam:LIBFPTR_PARAM_MARKING_PROCESSING_MODE intParam:0];
[fptr registration]
|

|String mark = «014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=»;
uint status = 2;

fptr.setParam(1262, «020»);
fptr.setParam(1263, «14.12.2018»);
fptr.setParam(1264, «1556»);
fptr.setParam(1265, «tm=mdlp&sid=00000000105200»);
fptr.utilFormTlv();

byte[] industryInfo = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_TAG_VALUE);
uint validationResult = fptr.getParamInt(Constants.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);
fptr.setParam(Constants.LIBFPTR_PARAM_COMMODITY_NAME, «Афобазол»);
fptr.setParam(Constants.LIBFPTR_PARAM_PRICE, 450);
fptr.setParam(Constants.LIBFPTR_PARAM_QUANTITY, 1.000);
fptr.setParam(Constants.LIBFPTR_PARAM_MEASUREMENT_UNIT, Constants.LIBFPTR_IU_PIECE);
fptr.setParam(Constants.LIBFPTR_PARAM_TAX_TYPE, Constants.LIBFPTR_TAX_VAT10);
fptr.setParam(1212, 33);
fptr.setParam(1214, 4);
fptr.setParam(1260, industryInfo);
fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_CODE, mark);
fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_CODE_STATUS, status);
fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_CODE_TYPE, Constants.LIBFPTR_MCT12_AUTO);
fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT, validationResult);
fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
fptr.registration();
|

|var
industryInfo: Variant;
mark: String;
status: Integer;
begin
mark := ‘014494550435306821QXYXSALGLMYQQ’ + #29 + ’91EE06′ + #29 + ’92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=’;
status := 2;

fptr.setParam(1262, '020');
fptr.setParam(1263, '14.12.2018');
fptr.setParam(1264, '1556');
fptr.setParam(1265, 'tm=mdlp&sid=00000000105200');
fptr.utilFormTlv;

industryInfo := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_TAG_VALUE);
validationResult := fptr.getParamInt(fptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);
fptr.setParam(fptr.LIBFPTR_PARAM_COMMODITY_NAME, 'Афобазол');
fptr.setParam(fptr.LIBFPTR_PARAM_PRICE, 450);
fptr.setParam(fptr.LIBFPTR_PARAM_QUANTITY, 1.000);
fptr.setParam(fptr.LIBFPTR_PARAM_MEASUREMENT_UNIT, fptr.LIBFPTR_IU_PIECE);
fptr.setParam(fptr.LIBFPTR_PARAM_TAX_TYPE, fptr.LIBFPTR_TAX_VAT10);
fptr.setParam(1212, 33);
fptr.setParam(1214, 4);
fptr.setParam(1260, industryInfo);
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_CODE, mark);
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_CODE_STATUS, status);
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, fptr.LIBFPTR_MCT12_AUTO);
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT, validationResult);
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
fptr.registration;

end;
|

|mark := «014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=»
status := 2

fptr.SetParam(1262, «020»)
fptr.SetParam(1263, «14.12.2018»)
fptr.SetParam(1264, «1556»)
fptr.SetParam(1265, «tm=mdlp&sid=00000000105200»)
fptr.UtilFormTlv()

industryInfo := fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_TAG_VALUE)
validationResult := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT)
fptr.SetParam(fptr10.LIBFPTR_PARAM_COMMODITY_NAME, «Афобазол»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_PRICE, 450)
fptr.SetParam(fptr10.LIBFPTR_PARAM_QUANTITY, 1.000)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MEASUREMENT_UNIT, fptr10.LIBFPTR_IU_PIECE)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TAX_TYPE, fptr10.LIBFPTR_TAX_VAT10)
fptr.SetParam(1212, 33)
fptr.SetParam(1214, 4)
fptr.SetParam(1260, industryInfo)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_CODE, mark)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_CODE_STATUS, status)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_CODE_TYPE, fptr10.LIBFPTR_MCT12_AUTO)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT, validationResult)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0)
fptr.Registration()
|

|var mark = «014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=»;
var status = 2;

Fptr.setParam(1262, «020»);
Fptr.setParam(1263, «14.12.2018»);
Fptr.setParam(1264, «1556»);
Fptr.setParam(1265, «tm=mdlp&sid=00000000105200»);
Fptr.utilFormTlv();

industryInfo = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_TAG_VALUE);
var validationResult = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);
Fptr.setParam(Fptr.LIBFPTR_PARAM_COMMODITY_NAME, «Афобазол»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_PRICE, 450);
Fptr.setParam(Fptr.LIBFPTR_PARAM_QUANTITY, 1.000);
Fptr.setParam(Fptr.LIBFPTR_PARAM_MEASUREMENT_UNIT, Fptr.LIBFPTR_IU_PIECE);
Fptr.setParam(Fptr.LIBFPTR_PARAM_TAX_TYPE, Fptr.LIBFPTR_TAX_VAT10);
Fptr.setParam(1212, 33);
Fptr.setParam(1214, 4);
Fptr.setParam(1260, industryInfo);
Fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_CODE, mark);
Fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_CODE_STATUS, status);
Fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, Fptr.LIBFPTR_MCT12_AUTO);
Fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT, validationResult);
Fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
Fptr.registration();
|

Регистрация позиции с кодами товаров без указания типа (тег 1163,
ФФД 1.2)

|…
libfptr_set_param_str(fptr, LIBFPTR_PARAM_PRODUCT_CODE, L»61940017″); //EAN-8
libfptr_set_param_str(fptr, LIBFPTR_PARAM_PRODUCT_CODE, L»6199000000012″); //EAN-13
libfptr_set_param_str(fptr, LIBFPTR_PARAM_PRODUCT_CODE, L»14841234567890″); //ITF-14
libfptr_registration(fptr);
|

|…
fptr.setParam(LIBFPTR_PARAM_PRODUCT_CODE, L»61940017″); //EAN-8
fptr.setParam(LIBFPTR_PARAM_PRODUCT_CODE, L»6199000000012″); //EAN-13
fptr.setParam(LIBFPTR_PARAM_PRODUCT_CODE, L»14841234567890″); //ITF-14
fptr.registration();
|

|…
fptr.setParam(IFptr.LIBFPTR_PARAM_PRODUCT_CODE, «61940017») //EAN-8
fptr.setParam(IFptr.LIBFPTR_PARAM_PRODUCT_CODE, «6199000000012») //EAN-13
fptr.setParam(IFptr.LIBFPTR_PARAM_PRODUCT_CODE, «14841234567890») //ITF-14
fptr.registration()
|

|…
fptr.setParam(IFptr.LIBFPTR_PARAM_PRODUCT_CODE, «61940017»); //EAN-8
fptr.setParam(IFptr.LIBFPTR_PARAM_PRODUCT_CODE, «6199000000012»); //EAN-13
fptr.setParam(IFptr.LIBFPTR_PARAM_PRODUCT_CODE, «14841234567890»); //ITF-14
fptr.registration();
|

|…
fptr.setParam(IFptr.LIBFPTR_PARAM_PRODUCT_CODE, «61940017»); //EAN-8
fptr.setParam(IFptr.LIBFPTR_PARAM_PRODUCT_CODE, «6199000000012»); //EAN-13
fptr.setParam(IFptr.LIBFPTR_PARAM_PRODUCT_CODE, «14841234567890»); //ITF-14
fptr.registration();
|

|…
[fptr setParam:LIBFPTR_PARAM_PRODUCT_CODE NSStringParam:@»61940017″]; //EAN-8
[fptr setParam:LIBFPTR_PARAM_PRODUCT_CODE NSStringParam:@»6199000000012″]; //EAN-13
[fptr setParam:LIBFPTR_PARAM_PRODUCT_CODE NSStringParam:@»14841234567890″]; //ITF-14
[fptr registration]
|

|…
fptr.setParam(Constants.LIBFPTR_PARAM_PRODUCT_CODE, «61940017»); //EAN-8
fptr.setParam(Constants.LIBFPTR_PARAM_PRODUCT_CODE, «6199000000012»); //EAN-13
fptr.setParam(Constants.LIBFPTR_PARAM_PRODUCT_CODE, «14841234567890»); //ITF-14
fptr.registration();
|

|begin

fptr.setParam(fptr.LIBFPTR_PARAM_PRODUCT_CODE, ‘61940017’); //EAN-8
fptr.setParam(fptr.LIBFPTR_PARAM_PRODUCT_CODE, ‘6199000000012’); //EAN-13
fptr.setParam(fptr.LIBFPTR_PARAM_PRODUCT_CODE, ‘14841234567890’); //ITF-14
fptr.registration;
end;
|

|…
fptr.SetParam(fptr10.LIBFPTR_PARAM_PRODUCT_CODE, «61940017»); //EAN-8
fptr.SetParam(fptr10.LIBFPTR_PARAM_PRODUCT_CODE, «6199000000012»); //EAN-13
fptr.SetParam(fptr10.LIBFPTR_PARAM_PRODUCT_CODE, «14841234567890»); //ITF-14
fptr.Registration();
|

|…
Fptr.setParam(Fptr.LIBFPTR_PARAM_PRODUCT_CODE, «61940017»); //EAN-8
Fptr.setParam(Fptr.LIBFPTR_PARAM_PRODUCT_CODE, «6199000000012»); //EAN-13
Fptr.setParam(Fptr.LIBFPTR_PARAM_PRODUCT_CODE, «14841234567890»); //ITF-14
Fptr.registration();
|

Регистрация позиции с кодами товаров с указанием типа (тег 1163, ФФД
1.2)

|…
libfptr_set_param_str(fptr, 1301, L»61940017″); //EAN-8
libfptr_set_param_str(fptr, 1302, L»6199000000012″); //EAN-13
libfptr_set_param_str(fptr, 1303, L»14841234567890″); //ITF-14
libfptr_registration(fptr);
|

|…
fptr.setParam(1301, L»61940017″); //EAN-8
fptr.setParam(1302, L»6199000000012″); //EAN-13
fptr.setParam(1303, L»14841234567890″); //ITF-14
fptr.registration();
|

|…
fptr.setParam(1301, «61940017») //EAN-8
fptr.setParam(1302, «6199000000012») //EAN-13
fptr.setParam(1303, «14841234567890») //ITF-14
fptr.registration()
|

|…
fptr.setParam(1301, «61940017»); //EAN-8
fptr.setParam(1302, «6199000000012»); //EAN-13
fptr.setParam(1303, «14841234567890»); //ITF-14
fptr.registration();
|

|…
fptr.setParam(1301, «61940017»); //EAN-8
fptr.setParam(1302, «6199000000012»); //EAN-13
fptr.setParam(1303, «14841234567890»); //ITF-14
fptr.registration();
|

|…
[fptr setParam:1301 NSStringParam:@»61940017″]; //EAN-8
[fptr setParam:1302 NSStringParam:@»6199000000012″]; //EAN-13
[fptr setParam:1303 NSStringParam:@»14841234567890″]; //ITF-14
[fptr registration]
|

|…
fptr.setParam(1301, «61940017»); //EAN-8
fptr.setParam(1302, «6199000000012»); //EAN-13
fptr.setParam(1303, «14841234567890»); //ITF-14
fptr.registration();
|

|begin

fptr.setParam(1301, ‘61940017’); //EAN-8
fptr.setParam(1302, ‘6199000000012’); //EAN-13
fptr.setParam(1303, ‘14841234567890’); //ITF-14
fptr.registration;
end;
|

|…
fptr.SetParam(1301, «61940017»); //EAN-8
fptr.SetParam(1302, «6199000000012»); //EAN-13
fptr.SetParam(1303, «14841234567890»); //ITF-14
fptr.Registration();
|

|…
Fptr.setParam(1301, «61940017»); //EAN-8
Fptr.setParam(1302, «6199000000012»); //EAN-13
Fptr.setParam(1303, «14841234567890»); //ITF-14
Fptr.registration();
|

Для регистрации позиции требуется вызвать метод /registration()/.

Обязательными входными параметрами для метода являются:

  • LIBFPTR_PARAM_COMMODITY_NAME — название товара
  • LIBFPTR_PARAM_PRICE — цена за единицу
  • LIBFPTR_PARAM_QUANTITY — количество единиц товара

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

Ниже представлен список дополнительных параметров позиции (могут не
поддерживаться в ККТ — в этом случае будет выдана ошибка):

  • LIBFPTR_PARAM_TAX_TYPE — номер налоговой ставки, по умолчанию
    передаётся LIBFPTR_TAX_NO
    o LIBFPTR_TAX_DEPARTMENT — тип, привязанный к секции товара
    o LIBFPTR_TAX_VAT10 — НДС 10%
    o LIBFPTR_TAX_VAT110 — НДС рассчитанный 10/110
    o LIBFPTR_TAX_VAT0 — НДС 0%
    o LIBFPTR_TAX_NO — не облагается
    o LIBFPTR_TAX_VAT20 — НДС 20%
    o LIBFPTR_TAX_VAT120 — НДС рассчитанный 20/120
  • LIBFPTR_PARAM_POSITION_SUM — полная сумма позиции. Может
    отличаться от произведения цены на количество. В этом случае ККТ
    разобьет позицию на две, распределив получившуюся разницу (скидку
    или надбавку) между позициями.
  • LIBFPTR_PARAM_DEPARTMENT — номер отдела
  • LIBFPTR_PARAM_TAX_SUM — сумма налога. При передаче значения 0
    рассчитывается автоматически
  • LIBFPTR_PARAM_USE_ONLY_TAX_TYPE — регистрировать в ФН только
    ставку налога. В этом случае требуется до закрытия чека
    зарегистрировать сумму налога по данной ставке с помощью метода
    receiptTax()
  • LIBFPTR_PARAM_TAX_MODE — способ начисления налога. Параметр
    принимает следующие значения:
    o LIBFPTR_TM_POSITION — на позицию целиком
    o LIBFPTR_TM_UNIT — на единицу товара (не поддерживается на ККТ
    версий 5.X)
  • LIBFPTR_PARAM_INFO_DISCOUNT_SUM — информация о скидке/надбавке.
    Параметр не влияет на итоговую сумму позиции, просто будет
    напечатана информационная строка о сумме скидки/надбавки.
  • LIBFPTR_PARAM_COMMODITY_PIECE — флаг штучного товара (не
    поддерживается на ККТ версий 5.X). В количестве не будут напечатаны
    нули в дробной части.
  • LIBFPTR_PARAM_CHECK_SUM — флаг проверки наличности в ДЯ при
    регистрации позиции (не поддерживается на ККТ версий 5.X). По
    умолчанию false
  • LIBFPTR_PARAM_MARKING_CODE — массив с данными штрихкода
    маркировки. По умолчанию не передается в ККТ. В этом параметре можно
    передать данные от сканера. ККТ их разберет в реквизит 1162
    самостоятельно.
  • LIBFPTR_PARAM_MARKING_CODE_TYPE — тип кода маркировки
    LIBFPTR_PARAM_MARKING_CODE. Принимает следующие значения:
    o LIBFPTR_MCT_EGAIS_20 — ЕГАИС 2.0
    o LIBFPTR_MCT_EGAIS_30 — ЕГАИС 3.0
    o LIBFPTR_MCT_OTHER — другая марка, кроме перечисленных выше
    (также используется в случае, если параметр не был передан)
  • LIBFPTR_PARAM_PRODUCT_CODE — код товара, содержит данные
    штрихкода, включается в реквизит 1163 (на стороне ККТ). В этом
    параметре можно передать данные от сканера. Данный параметр можно
    подать несколько раз (в зависимости от количества кодов товара).
  • LIBFPTR_PARAM_REGISTRATION_POSITION_FORM — формы фискального
    документа, куда требуется добавить предмет расчёта. Принимает
    следующие значения:
    o LIBFPTR_RPF_ELECTRONIC_AND_PRINT — добавить предмет расчёта в
    электронную и печатную форму (по умолчанию);
    o LIBFPTR_RPF_ONLY_ELECTRONIC — добавить предмет расчёта только
    в электронную форму;
    o LIBFPTR_RPF_ONLY_PRINT — добавить предмет расчёта только в
    печатную форму;

Также в данном методе можно передать следующие реквизиты ФН:

Реквизит Описание Тип Версии ФФД
1162 Код товара bytearray ≤ 1.1
1191 Дополнительный реквизит предмета расчета string Все
1197 Единицы измерения предмета расчета string ≤ 1.1
2108 Мера количества предмета расчета int ≥ 1.2
1212 Признак предмета расчета int Все
1214 Признак способа расчета int Все
1222 Признак агента по предмету расчета int Все
1223 Данные агента bytearray Все
1224 Данные поставщика bytearray Все
1226 ИНН поставщика string Все
1229 Акциз double Все
1230 Код страны происхождения товара string Все
1231 Номер таможенной декларации string Все
1260 Отраслевой реквизит предмета расчета bytearray ≥ 1.2

Реквизит 1260 составной и состоит из следующих реквизитов:

Реквизит Описание Тип
1262 Идентификатор ФОИВ string
1263 Дата документа основания datetime
1264 Номер документа основания string
1265 Значение отраслевого реквизита string

Реквизит 1222 может принимать следующие значения:

  • LIBFPTR_AT_BANK_PAYING_AGENT — банковский платежный агент;
  • LIBFPTR_AT_BANK_PAYING_SUBAGENT — банковский платежный субагент;
  • LIBFPTR_AT_PAYING_AGENT — платежный агент;
  • LIBFPTR_AT_PAYING_SUBAGENT — платежный субагент;
  • LIBFPTR_AT_ATTORNEY — поверенный;
  • LIBFPTR_AT_COMMISSION_AGENT — комиссионер;
  • LIBFPTR_AT_ANOTHER — другой тип агента.

Реквизит 1223 составной и состоит из следующих реквизитов:

Реквизит Описание Тип
1005 Адрес оператора перевода string
1016 ИНН оператора перевода string
1026 Наименование оператора перевода string
1044 Операция банковского платежного агента string
1073 Телефон платежного агента (может повторяться несколько раз) string
1074 Телефон оператора по приему платежей (может повторяться
несколько раз) string
1075 Телефон оператора перевода (может повторяться несколько раз)
string

Реквизит 1224 составной и состоит из следующих реквизитов:

Реквизит Описание Тип
1171 Телефон поставщика (может повторяться несколько раз) string
1225 Наименование поставщика string

В позицию также можно передать коды товара (реквизит 1163), при этом сам
реквизит 1163 формировать не требуется, коды товара подаются одним из
следующих способов:

  • с указанием типов КТ (пользователь сам формирует реквизиты с
    конкретным типом кодов товара — реквизиты 13XX);
  • без указания типов КТ (пользователь задаёт массив кодов товара, ККТ
    сама разбирает их тип и формирует реквизит 1163 — параметр
    LIBFPTR_PARAM_PRODUCT_CODE, может быть подан несколько раз);

Комбинировать данные способы запрещено! То есть необходимо подать либо
все коды товара с заданным типом, либо с автоопределением.

Используемые коды товара описаны ниже:

Реквизит Описание Тип
1300 Нераспознанный код товара string
1301 КТ EAN-8 string
1302 КТ EAN-13 string
1303 КТ ITF-14 string
1304 КТ GS1.0 string
1305 КТ GS1.M string
1306 КТ КМК (короткий маркировочный код) string
1307 КТ МИ (меховые изделия) string
1308 КТ ЕГАИС-2.0 string
1309 КТ ЕГАИС-3.0 string
1320 КТ Ф.1 string
1321 КТ Ф.2 string
1322 КТ Ф.3 string
1323 КТ Ф.4 string
1324 КТ Ф.5 string
1325 КТ Ф.6 string

Коды маркировки /1305/ и /1306/ формируются параметром / LIBFPTR_PARAM_MARKING_CODE/ и будут включены в реквизит 1163
автоматически. Специально подавать их не следует!

Для формирования реквизитов /1223/ и /1224/ рекомендуется
использовать метод /utilFormTlv()/.

Чтобы зарегистрировать маркированный товар для ФФД ≤ 1.1, можно
воспользоваться одним из следующих способов:

  • передать код маркировки (данных марки от сканера) через параметры
    LIBFPTR_PARAM_MARKING_CODE_TYPE и LIBFPTR_PARAM_MARKING_CODE;
  • передать реквизит 1162, сформированный самостоятельно;
  • передать реквизит 1162, сформированный с помощью метода / utilFormNomenclature()/ на основании частично разобранной марки.

Результатом команды будет следующая информация:

Параметр Описание Тип
1162 значение реквизита 1162 (код товара), если был передан
параметр LIBFPTR_PARAM_MARKING_CODE для ФФД ≤ 1.1 bytearray

Поддерживается для всех ККТ. На ККТ версий 5.X поддерживаются не все
параметры.

Зарегистрировать оплату

Оплата чека

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_PAYMENT_TYPE, LIBFPTR_PT_CASH);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_PAYMENT_SUM, 100.00);
libfptr_payment(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_PAYMENT_TYPE, LIBFPTR_PT_CASH);
fptr.setParam(LIBFPTR_PARAM_PAYMENT_SUM, 100.00);
fptr.payment();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_TYPE, IFptr.LIBFPTR_PT_CASH)
fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_SUM, 100.00)
fptr.payment()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_TYPE, IFptr.LIBFPTR_PT_CASH);
fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_SUM, 100.00);
fptr.payment();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_TYPE, IFptr.LIBFPTR_PT_CASH);
fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_SUM, 100.00);
fptr.payment();
|

|[fptr setParam:LIBFPTR_PARAM_PAYMENT_TYPE intParam:LIBFPTR_PT_CASH];
[fptr setParam:LIBFPTR_PARAM_PAYMENT_SUM doubleParam:100.00];
[fptr payment]
|

|fptr.setParam(Constants.LIBFPTR_PARAM_PAYMENT_TYPE, Constants.LIBFPTR_PT_CASH);
fptr.setParam(Constants.LIBFPTR_PARAM_PAYMENT_SUM, 100.00);
fptr.payment();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_PAYMENT_TYPE, fptr.LIBFPTR_PT_CASH);
fptr.setParam(fptr.LIBFPTR_PARAM_PAYMENT_SUM, 100.00);
fptr.payment;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_PAYMENT_TYPE, fptr10.LIBFPTR_PT_CASH)
fptr.SetParam(fptr10.LIBFPTR_PARAM_PAYMENT_SUM, 100.00)
fptr.Payment()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_PAYMENT_TYPE, Fptr.LIBFPTR_PT_CASH);
Fptr.setParam(Fptr.LIBFPTR_PARAM_PAYMENT_SUM, 100.00);
Fptr.payment();
|

Для регистрации оплаты чека требуется вызвать метод /payment()/,
передав способ расчета в параметре LIBFPTR_PARAM_PAYMENT_TYPE и сумму
расчета в параметре LIBFPTR_PARAM_PAYMENT_SUM.

Способ расчета (LIBFPTR_PARAM_PAYMENT_TYPE) может принимать следующие
значения:

  • LIBFPTR_PT_CASH — наличными;
  • LIBFPTR_PT_ELECTRONICALLY — безналичными;
  • LIBFPTR_PT_PREPAID — предварительная оплата (аванс);
  • LIBFPTR_PT_CREDIT — последующая оплата (кредит);
  • LIBFPTR_PT_OTHER — иная форма оплаты (встречное предоставление);
  • LIBFPTR_PT_6 — способ расчета №6;
  • LIBFPTR_PT_7 — способ расчета №7;
  • LIBFPTR_PT_8 — способ расчета №8;
  • LIBFPTR_PT_9 — способ расчета №9;
  • LIBFPTR_PT_10 — способ расчета №10.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_REMAINDER Неоплаченный остаток чека double
LIBFPTR_PARAM_CHANGE Сдача по чеку double

Оплатить чек свыше его неоплаченного остатка можно только наличным
способом оплаты. Поэтому при смешанной оплате нужно сначала
зарегистрировать все безналичные оплаты, и только потом наличную.

Поддерживается для всех ККТ

Зарегистрировать налог на чек

Регистрация налога на чек

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_TAX_SUM, 100.00);
libfptr_receipt_tax(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
fptr.setParam(LIBFPTR_PARAM_TAX_SUM, 100.00);
fptr.receiptTax();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10)
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_SUM, 100.00)
fptr.receiptTax()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_SUM, 100.00);
fptr.receiptTax();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_SUM, 100.00);
fptr.receiptTax();
|

|[fptr setParam:LIBFPTR_PARAM_TAX_TYPE intParam:LIBFPTR_TAX_VAT10];
[fptr setParam:LIBFPTR_PARAM_TAX_SUM doubleParam:100.00];
[fptr receiptTax]
|

|fptr.setParam(Constants.LIBFPTR_PARAM_TAX_TYPE, Constants.LIBFPTR_TAX_VAT10);
fptr.setParam(Constants.LIBFPTR_PARAM_TAX_SUM, 100.00);
fptr.receiptTax();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_TAX_TYPE, fptr.LIBFPTR_TAX_VAT10);
fptr.setParam(fptr.LIBFPTR_PARAM_TAX_SUM, 100.00);
fptr.receiptTax;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_TAX_TYPE, fptr10.LIBFPTR_TAX_VAT10)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TAX_SUM, 100.00)
fptr.ReceiptTax()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_TAX_TYPE, Fptr.LIBFPTR_TAX_VAT10);
Fptr.setParam(Fptr.LIBFPTR_PARAM_PAYMENT_SUM, 100.00);
Fptr.receiptTax();
|

Для регистрации налога на чек требуется вызвать метод /receiptTax()/,
передав тип налога в параметре LIBFPTR_PARAM_TAX_TYPE и сумму налога в
параметре LIBFPTR_PARAM_TAX_SUM.

Тип налога (LIBFPTR_PARAM_TAX_TYPE) может принимать следующие значения:

  • LIBFPTR_TAX_VAT10 — НДС 10%;
  • LIBFPTR_TAX_VAT110 — НДС рассчитанный 10/110;
  • LIBFPTR_TAX_VAT0 — НДС 0%;
  • LIBFPTR_TAX_NO — не облагается;
  • LIBFPTR_TAX_VAT20 — НДС 20%;
  • LIBFPTR_TAX_VAT120 — НДС рассчитанный 20/120.

Поддерживается для всех ККТ

Зарегистрировать итог

Регистрация итога чека

|libfptr_set_param_double(fptr, LIBFPTR_PARAM_SUM, 1000.00);
libfptr_receipt_total(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_SUM, 1000.00);
fptr.receiptTotal();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SUM, 1000.00)
fptr.receiptTotal()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SUM, 1000.00);
fptr.receiptTotal();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SUM, 1000.00);
fptr.receiptTotal();
|

|[fptr setParam:LIBFPTR_PARAM_SUM intParam:1000.00];
[fptr receiptTotal]
|

|fptr.setParam(Constants.LIBFPTR_PARAM_SUM, 1000.00);
fptr.receiptTotal();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_SUM, 1000.00);
fptr.receiptTotal;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_SUM, 1000.00)
fptr.ReceiptTotal()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_SUM, 1000.00);
Fptr.receiptTotal();
|

Для регистрации итога чека требуется вызвать метод /receiptTotal()/,
передав сумму чека в параметре LIBFPTR_PARAM_SUM.

Допускается регистрация итога меньше суммы чека, но только в рамках
копеек. Т.е., если общая сумма чека равна 1000.57, то можно
зарегистрировать итог от 1000.00 до 1000.57.

Метод не является обязательным. Если его не использовать, сумма чека
будет посчитана автоматически, без округлений копеек.

Поддерживается для всех ККТ

Закрыть чек

Закрытие частично оплаченного или неоплаченного чека

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_PAYMENT_TYPE, LIBFPTR_PT_ELECTRONICALLY);
libfptr_close_receipt(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_PAYMENT_TYPE, LIBFPTR_PT_ELECTRONICALLY);
fptr.closeReceipt();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_TYPE, IFptr.LIBFPTR_PT_ELECTRONICALLY)
fptr.closeReceipt()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_TYPE, IFptr.LIBFPTR_PT_ELECTRONICALLY);
fptr.closeReceipt();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_TYPE, IFptr.LIBFPTR_PT_ELECTRONICALLY);
fptr.closeReceipt();
|

|[fptr setParam:LIBFPTR_PARAM_PAYMENT_TYPE intParam:LIBFPTR_PT_ELECTRONICALLY];
[fptr closeReceipt]
|

|fptr.setParam(Constants.LIBFPTR_PARAM_PAYMENT_TYPE, Constants.LIBFPTR_PT_ELECTRONICALLY);
fptr.closeReceipt();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_PAYMENT_TYPE, fptr.LIBFPTR_PT_ELECTRONICALLY);
fptr.closeReceipt;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_PAYMENT_TYPE, fptr10.LIBFPTR_PT_ELECTRONICALLY)
fptr.CloseReceipt()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_PAYMENT_TYPE, Fptr.LIBFPTR_PT_ELECTRONICALLY);
Fptr.closeReceipt();
|

Закрытие полностью оплаченного чека

|libfptr_close_receipt(fptr);
|

|fptr.closeReceipt();
|

|fptr.closeReceipt()
|

|fptr.closeReceipt();
|

|fptr.closeReceipt();
|

|[fptr closeReceipt]
|

|fptr.closeReceipt();
|

|begin
fptr.closeReceipt;
end;
|

|fptr.CloseReceipt()
|

|Fptr.closeReceipt();
|

Для закрытия чека требуется вызвать метод /closeReceipt()/.

Если чек оплачен не полностью или не оплачен совсем (не зарегистрирована
ни одна оплата), то чек будет автоматически оплачен / доплачен заданным
в параметре LIBFPTR_PARAM_PAYMENT_TYPE типом оплаты и закрыт. Если в
этом случае способ расчета не передан, будет использован наличный способ
расчета (LIBFPTR_PT_CASH). Если чек уже полностью оплачен, то значение
параметра LIBFPTR_PARAM_PAYMENT_TYPE ни на что не влияет.

После закрытия чека следует проверить, что операция успешно завершена.
Подробнее см. описание метода /checkDocumentClosed()/.

Поддерживается для всех ККТ

Проверить закрытие документа

Проверка закрытия документа (на примере закрытия фискального чека)

|// Вспомогательная функция для чтения текста ошибки
std::wstring getErrorDescription(libfptr_handle fptr)
{
std::vector str(32);
int size = libfptr_error_description(fptr, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_error_description(fptr, &str[0], str.size());
}
return std::wstring(&str[0]);
}

libfptr_close_receipt(fptr);

while (libfptr_check_document_closed(fptr) < 0) {
// Не удалось проверить состояние документа. Вывести пользователю текст ошибки, попросить устранить неполадку и повторить запрос
std::wcout << getErrorDescription(fptr) << std::endl;
continue;
}

if (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_DOCUMENT_CLOSED) == 0) {
// Документ не закрылся. Требуется его отменить (если это чек) и сформировать заново
libfptr_cancel_receipt(fptr);
return;
}

if (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_DOCUMENT_PRINTED) == 0) {
// Можно сразу вызвать метод допечатывания документа, он завершится с ошибкой, если это невозможно
while (libfptr_continue_print(fptr) < 0) {
// Если не удалось допечатать документ — показать пользователю ошибку и попробовать еще раз.
std::wcout << L»Не удалось напечатать документ (Ошибка \»» << getErrorDescription(fptr) << L»\»). Устраните неполадку и повторите.» << std::endl;
continue;
}
}
|

|fptr.closeReceipt();

while (fptr.checkDocumentClosed() < 0)
{
// Не удалось проверить состояние документа. Вывести пользователю текст ошибки, попросить устранить неполадку и повторить запрос
std::wcout << fptr.errorDescription(fptr) << std::endl;
continue;
}

if (!fptr.getParamBool(LIBFPTR_PARAM_DOCUMENT_CLOSED))
{
// Документ не закрылся. Требуется его отменить (если это чек) и сформировать заново
fptr.cancelReceipt();
return;
}

if (!fptr.getParamBool(LIBFPTR_PARAM_DOCUMENT_PRINTED))
{
// Можно сразу вызвать метод допечатывания документа, он завершится с ошибкой, если это невозможно
while (fptr.continuePrint() < 0)
{
// Если не удалось допечатать документ — показать пользователю ошибку и попробовать еще раз.
std::wcout << L»Не удалось напечатать документ (Ошибка \»» << fptr.errorDescription() << L»\»). Устраните неполадку и повторите.» << std::endl;
continue;
}
}
|

|fptr.closeReceipt()

while fptr.checkDocumentClosed() < 0:
# Не удалось проверить состояние документа. Вывести пользователю текст ошибки, попросить устранить неполадку и повторить запрос
print(fptr.errorDescription())
continue

if not fptr.getParamBool(IFptr.LIBFPTR_PARAM_DOCUMENT_CLOSED):
# Документ не закрылся. Требуется его отменить (если это чек) и сформировать заново
fptr.cancelReceipt()
return

if not fptr.getParamBool(IFptr.LIBFPTR_PARAM_DOCUMENT_PRINTED):
# Можно сразу вызвать метод допечатывания документа, он завершится с ошибкой, если это невозможно
while fptr.continuePrint() < 0:
# Если не удалось допечатать документ — показать пользователю ошибку и попробовать еще раз.
print(‘Не удалось напечатать документ (Ошибка «%s»). Устраните неполадку и повторите.’, fptr.errorDescription())
continue
|

|fptr.closeReceipt();

while (fptr.checkDocumentClosed() < 0) {
// Не удалось проверить состояние документа. Вывести пользователю текст ошибки, попросить устранить неполадку и повторить запрос
System.out.println(fptr.errorDescription());
continue;
}

if (!fptr.getParamBool(IFptr.LIBFPTR_PARAM_DOCUMENT_CLOSED)) {
// Документ не закрылся. Требуется его отменить (если это чек) и сформировать заново
fptr.cancelReceipt();
return;
}

if (!fptr.getParamBool(IFptr.LIBFPTR_PARAM_DOCUMENT_PRINTED)) {
// Можно сразу вызвать метод допечатывания документа, он завершится с ошибкой, если это невозможно
while (fptr.continuePrint() < 0) {
// Если не удалось допечатать документ — показать пользователю ошибку и попробовать еще раз.
System.out.println(String.format(«Не удалось напечатать документ (Ошибка \»%s\»). Устраните неполадку и повторите.», fptr.errorDescription()));
continue;
}
}
|

|fptr.closeReceipt();

while (fptr.checkDocumentClosed() < 0) {
// Не удалось проверить состояние документа. Вывести пользователю текст ошибки, попросить устранить неполадку и повторить запрос
Log.d(TAG, fptr.errorDescription());
continue;
}

if (!fptr.getParamBool(IFptr.LIBFPTR_PARAM_DOCUMENT_CLOSED)) {
// Документ не закрылся. Требуется его отменить (если это чек) и сформировать заново
fptr.cancelReceipt();
return;
}

if (!fptr.getParamBool(IFptr.LIBFPTR_PARAM_DOCUMENT_PRINTED)) {
// Можно сразу вызвать метод допечатывания документа, он завершится с ошибкой, если это невозможно
while (fptr.continuePrint() < 0) {
// Если не удалось допечатать документ — показать пользователю ошибку и попробовать еще раз.
Log.d(TAG, String.format(«Не удалось напечатать документ (Ошибка \»%s\»). Устраните неполадку и повторите.», fptr.errorDescription()));
continue;
}
}
|

|[fptr closeReceipt];

while ([fptr checkDocumentClosed] < 0) {
// Не удалось проверить состояние документа. Вывести пользователю текст ошибки, попросить устранить неполадку и повторить запрос
NSLog([fptr errorDescription]);
continue;
}

if (![fptr getParamBool:LIBFPTR_PARAM_DOCUMENT_CLOSED]) {
// Документ не закрылся. Требуется его отменить (если это чек) и сформировать заново
[fptr cancelReceipt];
return;
}

if (![fptr getParamBool:LIBFPTR_PARAM_DOCUMENT_PRINTED]) {
// Можно сразу вызвать метод допечатывания документа, он завершится с ошибкой, если это невозможно
while ([fptr continuePrint] < 0) {
// Если не удалось допечатать документ — показать пользователю ошибку и попробовать еще раз.
NSLog(@»Не удалось напечатать документ (Ошибка \»%@\»). Устраните неполадку и повторите.», [fptr errorDescription]);
continue;
}
}
|

|fptr.closeReceipt();

while (fptr.checkDocumentClosed() < 0)
{
// Не удалось проверить состояние документа. Вывести пользователю текст ошибки, попросить устранить неполадку и повторить запрос
Console.WriteLine(fptr.errorDescription());
continue;
}

if (!fptr.getParamBool(Constants.LIBFPTR_PARAM_DOCUMENT_CLOSED))
{
// Документ не закрылся. Требуется его отменить (если это чек) и сформировать заново
fptr.cancelReceipt();
return;
}

if (!fptr.getParamBool(Constants.LIBFPTR_PARAM_DOCUMENT_PRINTED))
{
// Можно сразу вызвать метод допечатывания документа, он завершится с ошибкой, если это невозможно
while (fptr.continuePrint() < 0)
{
// Если не удалось допечатать документ — показать пользователю ошибку и попробовать еще раз.
Console.WriteLine(String.Format(«Не удалось напечатать документ (Ошибка \»{0}\»). Устраните неполадку и повторите.», fptr.errorDescription()));
continue;
}
}
|

|begin
fptr.closeReceipt;

While fptr.checkDocumentClosed <> 0 do
begin
    // Не удалось проверить состояние документа. Вывести пользователю текст ошибки, попросить устранить неполадку и повторить запрос
    showmessage(fptr.errorDescription);
    Continue;
end;

if not fptr.getParamBool(fptr.LIBFPTR_PARAM_DOCUMENT_CLOSED) then
begin
    // Документ не закрылся. Требуется его отменить (если это чек) и сформировать заново
    fptr.cancelReceipt;
    exit;
end;

if not fptr.getParamBool(fptr.LIBFPTR_PARAM_DOCUMENT_PRINTED) then
begin
    // Можно сразу вызвать метод допечатывания документа, он завершится с ошибкой, если это невозможно
    While fptr.continuePrint <> 0 do
    begin
        // Если не удалось допечатать документ - показать пользователю ошибку и попробовать еще раз.
        showmessage('Не удалось напечатать документ (Ошибка "' + fptr.errorDescription + '"). Устраните неполадку и повторите.');
        Continue;
    end;
end;

end;
|

|fptr.CloseReceipt()

for fptr.CheckDocumentClosed() < 0 {
// Не удалось проверить состояние документа. Вывести пользователю текст ошибки, попросить устранить неполадку и повторить запрос
log.Println(fptr.ErrorDescription())
continue
}

if !fptr.GetParamBool(fptr10.LIBFPTR_PARAM_DOCUMENT_CLOSED) {
// Документ не закрылся. Требуется его отменить (если это чек) и сформировать заново
fptr.CancelReceipt()
return
}

if !fptr.GetParamBool(fptr10.LIBFPTR_PARAM_DOCUMENT_PRINTED) {
// Можно сразу вызвать метод допечатывания документа, он завершится с ошибкой, если это невозможно
for fptr.ContinuePrint() < 0 {
// Если не удалось допечатать документ — показать пользователю ошибку и попробовать еще раз.
log.Printf(«Не удалось напечатать документ (Ошибка «%s»). Устраните неполадку и повторите.», fptr.ErrorDescription())
continue
}
}
|

|Fptr.closeReceipt();

while (Fptr.checkDocumentClosed() < 0) {
// Не удалось проверить состояние документа. Вывести пользователю текст ошибки, попросить устранить неполадку и повторить запрос
Fptr.logWrite(«FiscalPrinter», Fptr.LIBFPTR_LOG_ERROR, Fptr.errorDescription());
continue;
}

if (!Fptr.getParamBool(Fptr.LIBFPTR_PARAM_DOCUMENT_CLOSED))
{
// Документ не закрылся. Требуется его отменить (если это чек) и сформировать заново
Fptr.cancelReceipt();
return;
}

if (!Fptr.getParamBool(Fptr.LIBFPTR_PARAM_DOCUMENT_PRINTED))
{
// Можно сразу вызвать метод допечатывания документа, он завершится с ошибкой, если это невозможно
while (Fptr.continuePrint() < 0)
{
// Если не удалось допечатать документ — показать пользователю ошибку и попробовать еще раз.
Fptr.logWrite(«FiscalPrinter», Fptr.LIBFPTR_LOG_ERROR, «Не удалось напечатать документ (Ошибка \»» +
Fptr.errorDescription() + «\»). Устраните неполадку и повторите.»);
continue;
}
}
|

В ряде ситуаций (окончание бумаги, потеря связи с ККТ в момент
регистрации документа) состояние документа остается неизвестным. Он
может закрыться в ФН (что является необратимой операцией), но не
напечататься на чековой ленте. Данный метод сверяет счетчики ККТ с
сохраненными до закрытия документа копиями и вычисляет, закрылся ли он,
а также проверяет состояние печати документа.

Метод применим для следующих типов документов:

  • чеков;
  • отчетов закрытия и открытия смены;
  • отчетов регистрации, перерегистрации ККТ, закрытия ФН;
  • отчета о состоянии расчетов.

Если какой-то из документов формируется автоматически (например,
открытие смены при формировании первого чека в смене), то метод / checkDocumentClosed()/ его учитывать не будет.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_DOCUMENT_CLOSED Документ закрылся bool
LIBFPTR_PARAM_DOCUMENT_PRINTED Документ допечатался bool

Если метод /checkDocumentClosed()/ вернул ошибку, узнать состояние
документа невозможно. Нужно оповестить пользователя о том, что нельзя
выключать ПК и попытаться восстановить работу ККТ. Наиболее вероятны две
причины — нарушение обмена Драйвер-ККТ и нарушение обмена ККТ-ФН. В
первом случае нужно проверить физическое состояние используемого канала
обмена, во втором может помочь перезагрузка ККТ.

Если не обработать флаг LIBFPTR_PARAM_DOCUMENT_PRINTED и не допечатать
документ самостоятельно командой /continuePrint()/, то документ будет
автоматически допечатан при следующей печатной операции.

Поддерживается для всех ККТ

Допечатать документ

Допечатывание документа

|libfptr_continue_print(fptr);
|

|fptr.continuePrint();
|

|fptr.continuePrint()
|

|fptr.continuePrint();
|

|fptr.continuePrint();
|

|[fptr continuePrint];
|

|fptr.continuePrint();
|

|begin
fptr.continuePrint;
end;
|

|fptr.ContinuePrint()
|

|Fptr.continuePrint();
|

Для допечатывания фискального документа требуется вызвать метод / continuePrint()/.

Метод не возвращает ошибки, если нет документов для допечатывания.

Поддерживается для всех ККТ

Работа с кодами маркировки в ФФД 1.2

Дополнительные настройки

В драйвер добавлена дополнительная настройка
LIBFPTR_SETTING_VALIDATE_MARK_WITH_FNM_ONLY, позволяющая проводить
проверку кода маркировки (далее КМ) средствами драйвера.

Проверка КМ


  Общий алгоритм

|const wchar_t mark[] = L»014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=»;
uint status = 2;

// Запускаем проверку КМ
libfptr_set_param_int(fptr, LIBFPTR_PARAM_MARKING_CODE_TYPE, LIBFPTR_MCT12_AUTO);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_MARKING_CODE, mark);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_MARKING_CODE_STATUS, status);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_QUANTITY, 1.000);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_MEASUREMENT_UNIT, LIBFPTR_IU_PIECE);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, L»1/2″);
libfptr_begin_marking_code_validation(fptr);

// Дожидаемся окончания проверки и запоминаем результат
while (true) {
libfptr_get_marking_code_validation_status(fptr);
if (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY))
break;
}
uint validationResult = libfptr_get_param_int(fptr, LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);

// Подтверждаем реализацию товара с указанным КМ
libfptr_accept_marking_code(fptr);

// … Проверяем остальные КМ

// Формируем чек
libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
libfptr_open_receipt(fptr);

libfptr_set_param_str(fptr, LIBFPTR_PARAM_COMMODITY_NAME, L»Молоко»);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_PRICE, 80);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_QUANTITY, 1.000);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_MEASUREMENT_UNIT, LIBFPTR_IU_PIECE);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, L»1/2″);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
libfptr_set_param_int(fptr, 1212, 1);
libfptr_set_param_int(fptr, 1214, 7);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_MARKING_CODE, mark);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_MARKING_CODE_STATUS, status);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT, validationResult);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
libfptr_registration(fptr);

// … Регистрируем остальные позиции

libfptr_set_param_int(fptr, LIBFPTR_PARAM_SUM, 120);
libfptr_receipt_total(fptr);

libfptr_set_param_int(fptr, LIBFPTR_PARAM_PAYMENT_TYPE, LIBFPTR_PT_CASH);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_PAYMENT_SUM, 1000);
libfptr_payment(fptr);

// Перед закрытием проверяем, что все КМ отправились (на случай, если были проверки КМ без ожидания результата
while (true) {
libfptr_check_marking_code_validations_ready(fptr);
if (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY))
break;
}

libfptr_close_receipt(fptr);
|

|std::wstring mark = L»014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=»;
uint status = 2;

// Запускаем проверку КМ
fptr.setParam(LIBFPTR_PARAM_MARKING_CODE_TYPE, LIBFPTR_MCT12_AUTO);
fptr.setParam(LIBFPTR_PARAM_MARKING_CODE, mark);
fptr.setParam(LIBFPTR_PARAM_MARKING_CODE_STATUS, status);
fptr.setParam(LIBFPTR_PARAM_QUANTITY, 1.000);
fptr.setParam(LIBFPTR_PARAM_MEASUREMENT_UNIT, LIBFPTR_IU_PIECE);
fptr.setParam(LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
fptr.setParam(LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, L»1/2″);
fptr.beginMarkingCodeValidation();

// Дожидаемся окончания проверки и запоминаем результат
while (true) {
fptr.getMarkingCodeValidationStatus();
if (fptr.getParamBool(LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY))
break;
}
uint validationResult = fptr.getParamInt(LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);

// Подтверждаем реализацию товара с указанным КМ
fptr.acceptMarkingCode();

// … Проверяем остальные КМ

// Формируем чек
fptr.setParam(LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
fptr.openReceipt();

fptr.setParam(LIBFPTR_PARAM_COMMODITY_NAME, L»Молоко»);
fptr.setParam(LIBFPTR_PARAM_PRICE, 80);
fptr.setParam(LIBFPTR_PARAM_QUANTITY, 1.000);
fptr.setParam(LIBFPTR_PARAM_MEASUREMENT_UNIT, LIBFPTR_IU_PIECE);
fptr.setParam(LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, L»1/2″);
fptr.setParam(LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
fptr.setParam(1212, 33);
fptr.setParam(1214, 4);
fptr.setParam(LIBFPTR_PARAM_MARKING_CODE, mark);
fptr.setParam(LIBFPTR_PARAM_MARKING_CODE_STATUS, status);
fptr.setParam(LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT, validationResult);
fptr.setParam(LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
fptr.registration();

// … Регистрируем остальные позиции

fptr.setParam(LIBFPTR_PARAM_SUM, 120);
fptr.receiptTotal();

fptr.setParam(LIBFPTR_PARAM_PAYMENT_TYPE, LIBFPTR_PT_CASH);
fptr.setParam(LIBFPTR_PARAM_PAYMENT_SUM, 1000);
fptr.payment();

// Перед закрытием проверяем, что все КМ отправились (на случай, если были проверки КМ без ожидания результата
while (true) {
fptr.checkMarkingCodeValidationsReady();
if (fptr.getParamBool(LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY))
break;
}

fptr.closeReceipt();
|

|mark = ‘014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=’
status = 2

Запускаем проверку КМ

fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, IFptr.LIBFPTR_MCT12_AUTO)
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE, mark)
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_STATUS, status)
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 1.000)
fptr.setParam(IFptr.LIBFPTR_PARAM_MEASUREMENT_UNIT, IFptr.LIBFPTR_IU_PIECE)
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0)
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, ‘1/2’)
fptr.beginMarkingCodeValidation()

Дожидаемся окончания проверки и запоминаем результат

while True:
fptr.getMarkingCodeValidationStatus()
if fptr.getParamBool(IFptr.LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY):
break
validationResult = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT)

Подтверждаем реализацию товара с указанным КМ

fptr.acceptMarkingCode()

… Проверяем остальные КМ

Формируем чек

fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL)
fptr.openReceipt()

fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, ‘Молоко’)
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 80)
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 1.000)
fptr.setParam(IFptr.LIBFPTR_PARAM_MEASUREMENT_UNIT, IFptr.LIBFPTR_IU_PIECE)
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, ‘1/2’)
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10)
fptr.setParam(1212, 33)
fptr.setParam(1214, 4)
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE, mark)
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_STATUS, status)
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT, validationResult)
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0)
fptr.registration()

… Регистрируем остальные позиции

fptr.setParam(IFptr.LIBFPTR_PARAM_SUM, 120)
fptr.receiptTotal()

fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_TYPE, IFptr.LIBFPTR_PT_CASH)
fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_SUM, 1000)
fptr.payment()

Перед закрытием проверяем, что все КМ отправились (на случай, если были проверки КМ без ожидания результата

while True:
fptr.checkMarkingCodeValidationsReady()
if fptr.getParamBool(IFptr.LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY):
break

fptr.closeReceipt()
|

|String mark = «014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=»;
long status = 2;

// Запускаем проверку КМ
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, IFptr.LIBFPTR_MCT12_AUTO);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE, mark);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_STATUS, status);
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 1.000);
fptr.setParam(IFptr.LIBFPTR_PARAM_MEASUREMENT_UNIT, IFptr.LIBFPTR_IU_PIECE);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, «1/2»);
fptr.beginMarkingCodeValidation();

// Дожидаемся окончания проверки и запоминаем результат
while (true) {
fptr.getMarkingCodeValidationStatus();
if (fptr.getParamBool(IFptr.LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY))
break;
}
long validationResult = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);

// Подтверждаем реализацию товара с указанным КМ
fptr.acceptMarkingCode();

// … Проверяем остальные КМ

// Формируем чек
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.openReceipt();

fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Молоко»);
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 80);
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 1.000);
fptr.setParam(IFptr.LIBFPTR_PARAM_MEASUREMENT_UNIT, IFptr.LIBFPTR_IU_PIECE);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, «1/2»);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
fptr.setParam(1212, 33);
fptr.setParam(1214, 4);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE, mark);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_STATUS, status);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT, validationResult);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
fptr.registration();

// … Регистрируем остальные позиции

fptr.setParam(IFptr.LIBFPTR_PARAM_SUM, 120);
fptr.receiptTotal();

fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_TYPE, IFptr.LIBFPTR_PT_CASH);
fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_SUM, 1000);
fptr.payment();

// Перед закрытием проверяем, что все КМ отправились (на случай, если были проверки КМ без ожидания результата
while (true) {
fptr.checkMarkingCodeValidationsReady();
if (fptr.getParamBool(IFptr.LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY))
break;
}

fptr.closeReceipt();
|

|String mark = «014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=»;
long status = 2;

// Запускаем проверку КМ
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, IFptr.LIBFPTR_MCT12_AUTO);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE, mark);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_STATUS, status);
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 1.000);
fptr.setParam(IFptr.LIBFPTR_PARAM_MEASUREMENT_UNIT, IFptr.LIBFPTR_IU_PIECE);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, «1/2»);
fptr.beginMarkingCodeValidation();

// Дожидаемся окончания проверки и запоминаем результат
while (true) {
fptr.getMarkingCodeValidationStatus();
if (fptr.getParamBool(IFptr.LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY))
break;
}
long validationResult = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);

// Подтверждаем реализацию товара с указанным КМ
fptr.acceptMarkingCode();

// … Проверяем остальные КМ

// Формируем чек
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.openReceipt();

fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Молоко»);
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 80);
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 1.000);
fptr.setParam(IFptr.LIBFPTR_PARAM_MEASUREMENT_UNIT, IFptr.LIBFPTR_IU_PIECE);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, «1/2»);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
fptr.setParam(1212, 33);
fptr.setParam(1214, 4);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE, mark);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_STATUS, status);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT, validationResult);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
fptr.registration();

// … Регистрируем остальные позиции

fptr.setParam(IFptr.LIBFPTR_PARAM_SUM, 120);
fptr.receiptTotal();

fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_TYPE, IFptr.LIBFPTR_PT_CASH);
fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_SUM, 1000);
fptr.payment();

// Перед закрытием проверяем, что все КМ отправились (на случай, если были проверки КМ без ожидания результата
while (true) {
fptr.checkMarkingCodeValidationsReady();
if (fptr.getParamBool(IFptr.LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY))
break;
}

fptr.closeReceipt();
|

|NSString *mark = @»014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=»;
int status = 2;

// Запускаем проверку КМ
[fptr setParam:LIBFPTR_PARAM_MARKING_CODE_TYPE intParam:LIBFPTR_MCT12_AUTO];
[fptr setParam:LIBFPTR_PARAM_MARKING_CODE NSStringParam:mark];
[fptr setParam:LIBFPTR_PARAM_MARKING_CODE_STATUS intParam:status];
[fptr setParam:LIBFPTR_PARAM_QUANTITY doubleParam:1.000];
[fptr setParam:LIBFPTR_PARAM_MEASUREMENT_UNIT intParam:LIBFPTR_IU_PIECE];
[fptr setParam:LIBFPTR_PARAM_MARKING_PROCESSING_MODE intParam:0];
[fptr setParam:LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY NSStringParam:@»1/2″];
[fptr beginMarkingCodeValidation];

// Дожидаемся окончания проверки и запоминаем результат
while (true) {
[fptr getMarkingCodeValidationStatus];
if ([fptr getParamBool:LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY])
break;
}
int validationResult = [fptr getParamInt:LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT];

// Подтверждаем реализацию товара с указанным КМ
[fptr acceptMarkingCode];

// … Проверяем остальные КМ

// Формируем чек
[fptr setParam:LIBFPTR_PARAM_RECEIPT_TYPE intParam:LIBFPTR_RT_SELL];
[fptr openReceipt];

[fptr setParam:LIBFPTR_PARAM_COMMODITY_NAME NSStringParam:@»Молоко»];
[fptr setParam:LIBFPTR_PARAM_PRICE intParam:80];
[fptr setParam:LIBFPTR_PARAM_QUANTITY, 1.000];
[fptr setParam:LIBFPTR_PARAM_MEASUREMENT_UNIT intParam:LIBFPTR_IU_PIECE];
[fptr setParam:LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY NSStringParam:@»1/2″];
[fptr setParam:LIBFPTR_PARAM_TAX_TYPE intParam:LIBFPTR_TAX_VAT10];
[fptr setParam:1212 intParam:1];
[fptr setParam:1214 intParam:7];
[fptr setParam:LIBFPTR_PARAM_MARKING_CODE NSStringParam:mark];
[fptr setParam:LIBFPTR_PARAM_MARKING_CODE_STATUS intParam:status];
[fptr setParam:LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT intParam:validationResult];
[fptr setParam:LIBFPTR_PARAM_MARKING_PROCESSING_MODE intParam:0];
[fptr registration];

// … Регистрируем остальные позиции

[fptr setParam:LIBFPTR_PARAM_SUM intParam:120];
[fptr receiptTotal];

[fptr setParam:LIBFPTR_PARAM_PAYMENT_TYPE intParam:LIBFPTR_PT_CASH];
[fptr setParam:LIBFPTR_PARAM_PAYMENT_SUM intParam:1000];
[fptr payment];

// Перед закрытием проверяем, что все КМ отправились (на случай, если были проверки КМ без ожидания результата
while (true) {
[fptr checkMarkingCodeValidationsReady];
if ([fptr getParamBool:LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY])
break;
}

[fptr closeReceipt];
|

|String mark = «014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=»;
uint status = 2;

// Запускаем проверку КМ
fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_CODE_TYPE, Constants.LIBFPTR_MCT12_AUTO);
fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_CODE, mark);
fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_CODE_STATUS, status);
fptr.setParam(Constants.LIBFPTR_PARAM_QUANTITY, 1.000);
fptr.setParam(Constants.LIBFPTR_PARAM_MEASUREMENT_UNIT, Constants.LIBFPTR_IU_PIECE);
fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, «1/2»);
fptr.beginMarkingCodeValidation();

// Дожидаемся окончания проверки и запоминаем результат
while (true) {
fptr.getMarkingCodeValidationStatus();
if (fptr.getParamBool(Constants.LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY))
break;
}
uint validationResult = fptr.getParamInt(Constants.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);

// Подтверждаем реализацию товара с указанным КМ
fptr.acceptMarkingCode();

// … Проверяем остальные КМ

// Формируем чек
fptr.setParam(Constants.LIBFPTR_PARAM_RECEIPT_TYPE, Constants.LIBFPTR_RT_SELL);
fptr.openReceipt();

fptr.setParam(Constants.LIBFPTR_PARAM_COMMODITY_NAME, «Молоко»);
fptr.setParam(Constants.LIBFPTR_PARAM_PRICE, 80);
fptr.setParam(Constants.LIBFPTR_PARAM_QUANTITY, 1.000);
fptr.setParam(Constants.LIBFPTR_PARAM_MEASUREMENT_UNIT, Constants.LIBFPTR_IU_PIECE);
fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, «1/2»);
fptr.setParam(Constants.LIBFPTR_PARAM_TAX_TYPE, Constants.LIBFPTR_TAX_VAT10);
fptr.setParam(1212, 33);
fptr.setParam(1214, 4);
fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_CODE, mark);
fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_CODE_STATUS, status);
fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT, validationResult);
fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
fptr.registration();

// … Регистрируем остальные позиции

fptr.setParam(Constants.LIBFPTR_PARAM_SUM, 120);
fptr.receiptTotal();

fptr.setParam(Constants.LIBFPTR_PARAM_PAYMENT_TYPE, Constants.LIBFPTR_PT_CASH);
fptr.setParam(Constants.LIBFPTR_PARAM_PAYMENT_SUM, 1000);
fptr.payment();

// Перед закрытием проверяем, что все КМ отправились (на случай, если были проверки КМ без ожидания результата
while (true) {
fptr.checkMarkingCodeValidationsReady();
if (fptr.getParamBool(Constants.LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY))
break;
}

fptr.closeReceipt();
|

|var
mark: String;
status: Integer;
validationResult: Integer;
begin
mark := ‘014494550435306821QXYXSALGLMYQQ’ + #29 + ’91EE06′ + #29 + ’92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=’;
status := 2;

// Запускаем проверку КМ
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, fptr.LIBFPTR_MCT12_AUTO);
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_CODE, mark);
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_CODE_STATUS, status);
fptr.setParam(fptr.LIBFPTR_PARAM_QUANTITY, 1.000);
fptr.setParam(fptr.LIBFPTR_PARAM_MEASUREMENT_UNIT, fptr.LIBFPTR_IU_PIECE);
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, '1/2');
fptr.beginMarkingCodeValidation;

// Дожидаемся окончания проверки и запоминаем результат
while True do
begin
    fptr.getMarkingCodeValidationStatus;
    if fptr.getParamBool(fptr.LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY) then
        break;
end;
validationResult := fptr.getParamInt(fptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);

// Подтверждаем реализацию товара с указанным КМ
fptr.acceptMarkingCode;

// ... Проверяем остальные КМ

// Формируем чек
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL);
fptr.openReceipt;

fptr.setParam(fptr.LIBFPTR_PARAM_COMMODITY_NAME, 'Молоко');
fptr.setParam(fptr.LIBFPTR_PARAM_PRICE, 80);
fptr.setParam(fptr.LIBFPTR_PARAM_QUANTITY, 1.000);
fptr.setParam(fptr.LIBFPTR_PARAM_MEASUREMENT_UNIT, fptr.LIBFPTR_IU_PIECE);
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, '1/2');
fptr.setParam(fptr.LIBFPTR_PARAM_TAX_TYPE, fptr.LIBFPTR_TAX_VAT10);
fptr.setParam(1212, 33);
fptr.setParam(1214, 4);
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_CODE, mark);
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_CODE_STATUS, status);
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT, validationResult);
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
fptr.registration;

// ... Регистрируем остальные позиции

fptr.setParam(fptr.LIBFPTR_PARAM_SUM, 120);
fptr.receiptTotal;

fptr.setParam(fptr.LIBFPTR_PARAM_PAYMENT_TYPE, fptr.LIBFPTR_PT_CASH);
fptr.setParam(fptr.LIBFPTR_PARAM_PAYMENT_SUM, 1000);
fptr.payment;

// Перед закрытием проверяем, что все КМ отправились (на случай, если были проверки КМ без ожидания результата
while True do
begin
    fptr.checkMarkingCodeValidationsReady;
    if fptr.getParamBool(fptr.LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY) then
        break;
end;

fptr.closeReceipt;

end;
|

|mark := ‘014494550435306821QXYXSALGLMYQQ’ + #29 + ’91EE06′ + #29 + ’92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=’
status := 2

// Запускаем проверку КМ
fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_CODE_TYPE, fptr10.LIBFPTR_MCT12_AUTO)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_CODE, mark)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_CODE_STATUS, status)
fptr.SetParam(fptr10.LIBFPTR_PARAM_QUANTITY, 1.000)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MEASUREMENT_UNIT, fptr10.LIBFPTR_IU_PIECE)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, «1/2»)
fptr.BeginMarkingCodeValidation()

// Дожидаемся окончания проверки и запоминаем результат
for true {
fptr.GetMarkingCodeValidationStatus()
if (fptr.GetParamBool(fptr10.LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY)){
break
}
}
validationResult := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT)

// Подтверждаем реализацию товара с указанным КМ
fptr.AcceptMarkingCode()

// … Проверяем остальные КМ

// Формируем чек
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE, fptr10.LIBFPTR_RT_SELL)
fptr.OpenReceipt()

fptr.SetParam(fptr10.LIBFPTR_PARAM_COMMODITY_NAME, «Молоко»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_PRICE, 80)
fptr.SetParam(fptr10.LIBFPTR_PARAM_QUANTITY, 1.000)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MEASUREMENT_UNIT, fptr10.LIBFPTR_IU_PIECE)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, «1/2»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TAX_TYPE, fptr10.LIBFPTR_TAX_VAT10)
fptr.SetParam(1212, 33)
fptr.SetParam(1214, 4)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_CODE, mark)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_CODE_STATUS, status)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT, validationResult)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0)
fptr.Registration()

// … Регистрируем остальные позиции

fptr.SetParam(fptr10.LIBFPTR_PARAM_SUM, 120)
fptr.ReceiptTotal()

fptr.SetParam(fptr10.LIBFPTR_PARAM_PAYMENT_TYPE, fptr10.LIBFPTR_PT_CASH)
fptr.SetParam(fptr10.LIBFPTR_PARAM_PAYMENT_SUM, 1000)
fptr.Payment()

// Перед закрытием проверяем, что все КМ отправились (на случай, если были проверки КМ без ожидания результата
for true {
fptr.CheckMarkingCodeValidationsReady()
if (fptr.GetParamBool(fptr10.LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY)) {
break
}
}
fptr.CloseReceipt()
|

|var mark = ‘014494550435306821QXYXSALGLMYQQ’ + #29 + ’91EE06′ + #29 + ’92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=’;
var status = 2;

// Запускаем проверку КМ
Fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, Fptr.LIBFPTR_MCT12_AUTO);
Fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_CODE, ‘014494550435306821QXYXSALGLMYQQ’ + #29 + ’91EE06′ + #29 + ’92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=’);
Fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_CODE_STATUS, 2);
Fptr.setParam(Fptr.LIBFPTR_PARAM_QUANTITY, 1.000);
Fptr.setParam(Fptr.LIBFPTR_PARAM_MEASUREMENT_UNIT, Fptr.LIBFPTR_IU_PIECE);
Fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
Fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, «1/2»);
Fptr.beginMarkingCodeValidation();

// Дожидаемся окончания проверки и запоминаем результат
while (true) {
Fptr.getMarkingCodeValidationStatus();
if (Fptr.getParamBool(Fptr.LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY))
break;
}
var validationResult = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);

// Подтверждаем реализацию товара с указанным КМ
Fptr.acceptMarkingCode();

// … Проверяем остальные КМ

// Формируем чек
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE, Fptr.LIBFPTR_RT_SELL);
Fptr.openReceipt();

Fptr.setParam(Fptr.LIBFPTR_PARAM_COMMODITY_NAME, «Молоко»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_PRICE, 80);
Fptr.setParam(Fptr.LIBFPTR_PARAM_QUANTITY, 1.000);
Fptr.setParam(Fptr.LIBFPTR_PARAM_MEASUREMENT_UNIT, Fptr.LIBFPTR_IU_PIECE);
Fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, «1/2»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_TAX_TYPE, Fptr.LIBFPTR_TAX_VAT10);
fptr.setParam(1212, 33);
fptr.setParam(1214, 4);
Fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_CODE, mark);
Fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_CODE_STATUS, status);
Fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT, validationResult);
Fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
Fptr.registration();

// … Регистрируем остальные позиции

Fptr.setParam(Fptr.LIBFPTR_PARAM_SUM, 120);
Fptr.receiptTotal();

Fptr.setParam(Fptr.LIBFPTR_PARAM_PAYMENT_TYPE, Fptr.LIBFPTR_PT_CASH);
Fptr.setParam(Fptr.LIBFPTR_PARAM_PAYMENT_SUM, 1000);
Fptr.payment();

// Перед закрытием проверяем, что все КМ отправились (на случай, если были проверки КМ без ожидания результата
while (true) {
Fptr.checkMarkingCodeValidationsReady();
if (Fptr.getParamBool(Fptr.LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY))
break;
}

Fptr.closeReceipt();
|

Проверка КМ состоит из нескольких операций, которые должны быть
последовательно выполнены для каждого кода маркировки. Проверка КМ может
быть выполнена в двух режимах:

  • синхронный режим — режим, при котором выполнение метода драйвера
    блокируется на время ожидания проверки КМ в пределах установленного
    таймаута;
  • асинхронный режим — режим, при котором выполнение всех методов
    проверки КМ не блокируются, процедура ожидания ответа КМ выполняется
    пользователем; Проверка КМ в синхронном режиме

При проверке КМ в синхронном режиме выполнение метода проверки КМ / beginMarkingCodeValidation()/ блокируются на время ожидания проверки КМ
в пределах установленного таймаута.

  • начать проверку КМ (/beginMarkingCodeValidation()/), драйвер
    запускает процедуру отправки данных КМ на сервер для онлайн-
    проверки. Следующий КМ можно проверить только после окончания
    предыдущей проверки. Метод является блокирующим, необходимо
    дождаться его выполнения в течение установленного таймаута;
  • если предыдущий метод ошибки не вернул, то необходимо запросить
    результат онлайн-проверки КМ методом / getMarkingCodeValidationStatus()/. Данный метод обязательно должен
    быть вызван, иначе будет невозможно подтвердить реализацию КМ или
    отказаться;
  • подтвердить реализацию КМ (/acceptMarkingCode()/) или отказаться
    (/declineMarkingCode()/).

Работу с данным КМ можно прервать методом / cancelMarkingCodeValidation()/.

Блокирующую проверку методом /beginMarkingCodeValidation()/ прервать нельзя, необходимо дождаться проверки в течение установленного таймаута.

Внимание! Синхронный режим проверки КМ поддерживается только для ККТ
версий ≥ 5.10.X

    Проверка КМ в асинхронном режиме

При проверке КМ в асинхронном режиме выполнение всех методов проверки КМ
не блокируются, процедура ожидания ответа КМ выполняется пользователем.

  • начать проверку КМ (/beginMarkingCodeValidation()/), драйвер
    запускает процедуру отправки данных КМ на сервер для онлайн-
    проверки. Следующий КМ можно проверить только после окончания
    предыдущей проверки;
  • дождаться ответа на проверку (/getMarkingCodeValidationStatus()/).
    Метод нужно вызывать до тех пор, пока выходной параметр
    LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY не станет равным
    true и метод вернёт результат онлайн-проверки.
  • подтвердить реализацию КМ (/acceptMarkingCode()/) или отказаться
    (/declineMarkingCode()/).

Онлайн-проверку можно прервать методом /cancelMarkingCodeValidation()/.

Внимание! Для работы со следующей КМ необходимо завершить работу с
текущей одним из методов:

  • acceptMarkingCode() — для подтверждения реализации КМ
  • declineMarkingCode() — для отказа от реализации КМ
  • cancelMarkingCodeValidation() — для отмены проверки КМ Запуск проверки КМ

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_MARKING_CODE_TYPE, LIBFPTR_MCT12_AUTO);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_MARKING_CODE, L»014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=»);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_MARKING_CODE_STATUS, 2);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_QUANTITY, 1.000);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_MEASUREMENT_UNIT, fptr.LIBFPTR_IU_PIECE);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, L»1/2″);
libfptr_begin_marking_code_validation(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_MARKING_CODE_TYPE, LIBFPTR_MCT12_AUTO);
fptr.setParam(LIBFPTR_PARAM_MARKING_CODE, L»014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=»);
fptr.setParam(LIBFPTR_PARAM_MARKING_CODE_STATUS, 2);
fptr.setParam(LIBFPTR_PARAM_QUANTITY, 1.000);
fptr.setParam(LIBFPTR_PARAM_MEASUREMENT_UNIT, LIBFPTR_IU_PIECE);
fptr.setParam(LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
fptr.setParam(LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, L»1/2″);
fptr.beginMarkingCodeValidation();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, IFptr.LIBFPTR_MCT12_AUTO)
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE, ‘014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=’)
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_STATUS, 2)
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 1.000)
fptr.setParam(IFptr.LIBFPTR_PARAM_MEASUREMENT_UNIT, IFptr.LIBFPTR_IU_PIECE)
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0)
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, ‘1/2’)
fptr.beginMarkingCodeValidation()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, IFptr.LIBFPTR_MCT12_AUTO);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE, L»014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=»);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_STATUS, 2);
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 1.000);
fptr.setParam(IFptr.LIBFPTR_PARAM_MEASUREMENT_UNIT, IFptr.LIBFPTR_IU_PIECE);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, L»1/2″);
fptr.beginMarkingCodeValidation();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, IFptr.LIBFPTR_MCT12_AUTO);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE, L»014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=»);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_STATUS, 2);
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 1.000);
fptr.setParam(IFptr.LIBFPTR_PARAM_MEASUREMENT_UNIT, IFptr.LIBFPTR_IU_PIECE);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, L»1/2″);
fptr.beginMarkingCodeValidation();
|

|[fptr setParam:LIBFPTR_PARAM_MARKING_CODE_TYPE intParam:LIBFPTR_MCT12_AUTO];
[fptr setParam:LIBFPTR_PARAM_MARKING_CODE NSStringParam:@»014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=»];
[fptr setParam:LIBFPTR_PARAM_MARKING_CODE_STATUS intParam:2];
[fptr setParam:LIBFPTR_PARAM_QUANTITY doubleParam:1.000];
[fptr setParam:LIBFPTR_PARAM_MEASUREMENT_UNIT intParam:LIBFPTR_IU_PIECE];
[fptr setParam:LIBFPTR_PARAM_MEASUREMENT_UNIT boolParam:true];
[fptr setParam:LIBFPTR_PARAM_MARKING_PROCESSING_MODE intParam:0];
[fptr setParam:LIBFPTR_PARAM_MARKING_CODE NSStringParam:@»1/2″];
[fptr beginMarkingCodeValidation];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_CODE_TYPE, Constants.LIBFPTR_MCT12_AUTO);
fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_CODE, «014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=»);
fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_CODE_STATUS, 2);
fptr.setParam(Constants.LIBFPTR_PARAM_QUANTITY, 1.000);
fptr.setParam(Constants.LIBFPTR_PARAM_MEASUREMENT_UNIT, LIBFPTR_IU_PIECE);
fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, «1/2»);
fptr.beginMarkingCodeValidation();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, fptr.LIBFPTR_MCT12_AUTO);
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_CODE, ‘014494550435306821QXYXSALGLMYQQ’ + #29 + ’91EE06′ + #29 + ’92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=’);
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_CODE_STATUS, 2);
fptr.setParam(fptr.LIBFPTR_PARAM_QUANTITY, 1.000);
fptr.setParam(fptr.LIBFPTR_PARAM_MEASUREMENT_UNIT, fptr.LIBFPTR_IU_PIECE);
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, ‘1/2’);
fptr.beginMarkingCodeValidation;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_CODE_TYPE, fptr10.LIBFPTR_MCT12_AUTO)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_CODE, «014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_CODE_STATUS, 2)
fptr.SetParam(fptr10.LIBFPTR_PARAM_QUANTITY, 1.000)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MEASUREMENT_UNIT, fptr10.LIBFPTR_IU_PIECE)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, «1/2»)
fptr.BeginMarkingCodeValidation()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, Fptr.LIBFPTR_MCT12_AUTO);
Fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_CODE, «014494550435306821QXYXSALGLMYQQ\u001D91EE06\u001D92YWCXbmK6SN8vvwoxZFk7WAY8WoJNMGGr6Cgtiuja04c=»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_CODE_STATUS, 2);
Fptr.setParam(Fptr.LIBFPTR_PARAM_QUANTITY, 1.000);
Fptr.setParam(Fptr.LIBFPTR_PARAM_MEASUREMENT_UNIT, Fptr.LIBFPTR_IU_PIECE);
Fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_PROCESSING_MODE, 0);
Fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, «1/2»);
Fptr.beginMarkingCodeValidation();
|

Входные параметры для метода /beginMarkingCodeValidation()/:

Параметр Описание Тип Обязательность
LIBFPTR_PARAM_MARKING_CODE_TYPE Тип КМ (тег 2100) int
LIBFPTR_PARAM_MARKING_CODE КМ (тег 2000) bytearray +
LIBFPTR_PARAM_MARKING_CODE_STATUS Планируемый статус КМ (тег 2003)
int +
LIBFPTR_PARAM_QUANTITY Количество товара (тег 1023) double
LIBFPTR_PARAM_MEASUREMENT_UNIT Мера количества товара (тег 2108) int
LIBFPTR_PARAM_MARKING_PROCESSING_MODE Режим обработки кода товара
(тег 2102) int +
LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY Дробное количество товара
(тег 1291) string
LIBFPTR_PARAM_TIMEOUT Таймаут ожидания проверки КМ (мс) int
LIBFPTR_PARAM_MARKING_NOT_SEND_TO_SERVER Не отправлять запрос на
сервер bool

Параметр LIBFPTR_PARAM_MARKING_NOT_SEND_TO_SERVER применяется в
случаях, когда при продаже маркированного товара указывать код
маркировки в чеке необязательно. По умолчанию принимает значение false.

В соответствии с Федеральным законом от 29 декабря 2022 г. N 597-ФЗ
такой порядок формирования позиции чека допускается, если маркированный
товар:

  • Продается через вендинговый аппарат. Товар должен выдаваться
    покупателю в момент расчета.
  • Передается при оказании услуг общественного питания. Товар может
    передаваться покупателю целиком в потребительской упаковке, на
    которую нанесен код маркировки, либо частью без такой
    потребительской упаковки, до или после момента расчета за указанные
    услуги.
  • Продается ИП или организации за наличные деньги или с предъявлением
    банковской карты. При этом обязательно указывать в чеке ИНН покупателя.

В этом случае необходимо начать проверку маркированного товара с
установленным параметром LIBFPTR_PARAM_MARKING_NOT_SEND_TO_SERVER в
значении true. Все дальнейшие действия проводятся как с обычным
маркированным товаром, т.е. необходимо после метода
beginMarkingCodeValidation() вызвать метод
getMarkingCodeValidationStatus() и после подтвердить реализацию
маркированного товара методом acceptMarkingCode().

Значения параметра LIBFPTR_PARAM_MARKING_CODE_TYPE соответствуют
значениям реквизита 2100 и могут принимать следующие значения:

  • LIBFPTR_MCT12_AUTO — определить автоматически;
  • LIBFPTR_MCT12_UNKNOWN — неопознанный КМ, тип кода маркировки не
    идентифицирован (код маркировки отсутствует, не может быть прочитан
    или может быть прочитан, но не может быть распознан);
  • LIBFPTR_MCT12_SHORT — короткий КМ;
  • LIBFPTR_MCT12_88_CHECK — КМ со значением кода проверки длиной 88
    символов, подлежащим проверке в ФН;
  • LIBFPTR_MCT12_44_NO_CHECK — КМ со значением кода проверки длиной
    44 символа, не подлежащим проверке в ФН;
  • LIBFPTR_MCT12_44_CHECK — КМ со значением кода проверки длиной 44
    символа, подлежащим проверке в ФН;
  • LIBFPTR_MCT12_4_NO_CHECK — КМ со значением кода проверки длиной 4
    символа, не подлежащим проверке в ФН.

Значения параметра LIBFPTR_PARAM_MARKING_CODE_STATUS соответствуют
значениям реквизита 2003 и могут принимать следующие значения:

  • LIBFPTR_MES_PIECE_SOLD — штучный товар, реализован;
  • LIBFPTR_MES_DRY_FOR_SALE — мерный товар, в стадии реализации;
  • LIBFPTR_MES_PIECE_RETURN — штучный товар, возвращен;
  • LIBFPTR_MES_DRY_RETURN — часть товара, возвращена;
  • LIBFPTR_MES_UNCHANGED — статус товара не изменился.

Значения параметра LIBFPTR_PARAM_QUANTITY соответствуют значениям
реквизита 1023.

Значения параметра LIBFPTR_PARAM_MEASUREMENT_UNIT соответствуют
значениям реквизита 2108 и могут принимать следующие значения:

  • LIBFPTR_IU_PIECE — штука, единица;
  • LIBFPTR_IU_GRAM — грамм;
  • LIBFPTR_IU_KILOGRAM — килограмм;
  • LIBFPTR_IU_TON — тонна;
  • LIBFPTR_IU_CENTIMETER — сантиметр;
  • LIBFPTR_IU_DECIMETER — дециметр;
  • LIBFPTR_IU_METER — метр;
  • LIBFPTR_IU_SQUARE_CENTIMETER — квадратный сантиметр;
  • LIBFPTR_IU_SQUARE_DECIMETER — квадратный дециметр;
  • LIBFPTR_IU_SQUARE_METER — квадратный метр;
  • LIBFPTR_IU_MILLILITER — миллилитр;
  • LIBFPTR_IU_LITER — литр;
  • LIBFPTR_IU_CUBIC_METER — кубический метр;
  • LIBFPTR_IU_KILOWATT_HOUR — киловатт час;
  • LIBFPTR_IU_GKAL — гигакалория;
  • LIBFPTR_IU_DAY — сутки (день);
  • LIBFPTR_IU_HOUR — час;
  • LIBFPTR_IU_MINUTE — минута;
  • LIBFPTR_IU_SECOND — секунда;
  • LIBFPTR_IU_KILOBYTE — килобайт;
  • LIBFPTR_IU_MEGABYTE — мегабайт;
  • LIBFPTR_IU_GIGABYTE — гигабайт;
  • LIBFPTR_IU_TERABYTE — терабайт;
  • LIBFPTR_IU_OTHER — иные единицы измерения.

Значения параметра LIBFPTR_PARAM_MARKING_PROCESSING_MODE соответствуют
значениям реквизита 2102.

Значения параметра LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY
представляют собой строку, в которой записана дробь в формате «Ц…Ц/
Ц…Ц», т.е. два числа, разделённых символом «/» — числитель и
знаменатель. Числитель и знаменатель должны быть отличны от нуля, а
также дробь должна быть правильная, т.е. числитель строго меньше
знаменателя. Данный реквизит соответствует значениям реквизита 1292,
реквизит 1291 формируется автоматически на основании значения этого
реквизита.

Значения параметра LIBFPTR_PARAM_TIMEOUT позволяют выбрать режим
(синхронный или асинхронный), а также задать таймаут для ожидания
проверки КМ при синхронном режиме. Если параметр не задан или равен 0,
то используется асинхронный режим (по умолчанию). Если в параметре
задано положительное число, то устанавливается синхронный режим с
соответствующим таймаутом в мс.

Внимание! Параметры LIBFPTR_PARAM_QUANTITY и
LIBFPTR_PARAM_MEASUREMENT_UNIT подаются только в случае, если параметр
LIBFPTR_PARAM_MARKING_CODE_STATUS принимает значения /
LIBFPTR_MES_DRY_FOR_SALE/ или /LIBFPTR_MES_DRY_RETURN/

В синхронном режиме выходных параметров нет.

В асинхронном режиме результатом метода будут параметры, описывающие
результат локальной проверки:

Параметр Описание Тип
LIBFPTR_PARAM_MARKING_CODE_VALIDATION_RESULT Результат локальной
проверки (тег 2004) int
LIBFPTR_PARAM_MARKING_CODE_OFFLINE_VALIDATION_ERROR Ошибка локальной
проверки int

Значения параметра LIBFPTR_PARAM_MARKING_CODE_OFFLINE_VALIDATION_ERROR
могут принимать следующие значения:

  • LIBFPTR_CER_CHECKED — КМ проверен в ФН;
  • LIBFPTR_CER_TYPE_INCORRECT — КМ данного типа не подлежит проверке
    в ФН;
  • LIBFPTR_CER_NO_KEYS — ФН не содержит ключ проверки кода проверки
    этого КМ;
  • LIBFPTR_CER_NO_GS1 — проверка невозможна, так как отсутствуют
    идентификаторы применения GS1 91 и/или 92 или их формат неверный;
  • LIBFPTR_CER_OTHER — проверка КМ в ФН невозможна по иной причине. Ожидание окончания проверки КМ

|// ожидание окончания проверки КМ в асихнхронном режиме
libfptr_get_marking_code_validation_status(fptr);
bool ready = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY);
if (ready) {
std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR_DESCRIPTION, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR_DESCRIPTION, &str[0], str.size());
}
std::wstring errorDescription = std::wstring(&str[0]);

uint result = libfptr_get_param_int(fptr, LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);
bool isRequestSent = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_IS_REQUEST_SENT);
uint error = libfptr_get_param_int(fptr, LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR);
uint info = libfptr_get_param_int(fptr, 2109);
uint processingResult = libfptr_get_param_int(fptr, 2005);
uint processingCode = libfptr_get_param_int(fptr, 2105);
...

}
|

|// ожидание окончания проверки КМ в асихнхронном режиме
fptr.getMarkingCodeValidationStatus();
bool ready = fptr.getParamBool(LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY);
if (ready) {
uint result = fptr.getParamInt(LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);
bool isRequestSent = fptr.getParamBool(LIBFPTR_PARAM_IS_REQUEST_SENT);
uint error = fptr.getParamInt(LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR);
std::wstring errorDescription = fptr.getParamString(LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR_DESCRIPTION);
uint info = fptr.getParamInt(2109);
uint processingResult = fptr.getParamInt(2005);
uint processingCode = fptr.getParamInt(2105);

}
|

|# ожидание окончания проверки КМ в асихнхронном режиме
fptr.getMarkingCodeValidationStatus()
ready = fptr.getParamBool(IFptr.LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY)
if ready:
result = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT)
isRequestSent = fptr.getParamBool(IFptr.LIBFPTR_PARAM_IS_REQUEST_SENT)
error = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR)
errorDescription = fptr.getParamString(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR_DESCRIPTION)
info = fptr.getParamInt(2109)
processingResult = fptr.getParamInt(2005)
processingCode = fptr.getParamInt(2105)

|

|// ожидание окончания проверки КМ в асихнхронном режиме
fptr.getMarkingCodeValidationStatus();
boolean ready = fptr.getParamBool(IFptr.LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY);
if (ready) {
long result = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);
boolean isRequestSent = fptr.getParamBool(IFptr.LIBFPTR_PARAM_IS_REQUEST_SENT);
long error = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR);
String errorDescription = fptr.getParamString(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR_DESCRIPTION);
long info = fptr.getParamInt(2109);
long processingResult = fptr.getParamInt(2005);
long processingCode = fptr.getParamInt(2105);

}
|

|// ожидание окончания проверки КМ в асихнхронном режиме
fptr.getMarkingCodeValidationStatus();
boolean ready = fptr.getParamBool(IFptr.LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY);
if (ready) {
long result = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);
boolean isRequestSent = fptr.getParamBool(IFptr.LIBFPTR_PARAM_IS_REQUEST_SENT);
long error = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR);
String errorDescription = fptr.getParamString(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR_DESCRIPTION);
long info = fptr.getParamInt(2109);
long processingResult = fptr.getParamInt(2005);
long processingCode = fptr.getParamInt(2105);

}
|

|// ожидание окончания проверки КМ в асихнхронном режиме
[fptr getMarkingCodeValidationStatus];
bool ready = [fptr getParamBool:LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY];
if (ready) {
uint result = [fptr getParamInt:LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT];
bool isRequestSent = [fptr getParamBool:LIBFPTR_PARAM_IS_REQUEST_SENT];
uint error = [fptr getParamInt:LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR];
NSString *errorDescription = [fptr getParamString:LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR_DESCRIPTION];
uint info = [fptr getParamInt:2109];
uint processingResult = [fptr getParamInt:2005];
uint processingCode = [fptr getParamInt:2105];

}
|

|// ожидание окончания проверки КМ в асихнхронном режиме
fptr.getMarkingCodeValidationStatus();
bool ready = fptr.getParamBool(Constants.LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY);
if (ready) {
uint result = fptr.getParamInt(Constants.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);
bool isRequestSent = fptr.getParamBool(Constants.LIBFPTR_PARAM_IS_REQUEST_SENT);
uint error = fptr.getParamInt(Constants.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR);
String errorDescription = fptr.getParamString(Constants.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR_DESCRIPTION);
uint info = fptr.getParamInt(2109);
uint processingResult = fptr.getParamInt(2005);
uint processingCode = fptr.getParamInt(2105);

}
|

|// ожидание окончания проверки КМ в асихнхронном режиме
var
result: Integer;
error: Integer;
info: Integer;
processingResult: Integer;
processingCode: Integer;
ready: Boolean;
isRequestSent: Boolean;
errorDescription: String;
begin
fptr.getMarkingCodeValidationStatus;
ready := fptr.getParamBool(fptr.LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY);
if ready then
begin
result := fptr.getParamInt(fptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);
isRequestSent := fptr.getParamBool(fptr.LIBFPTR_PARAM_IS_REQUEST_SENT);
error := fptr.getParamInt(fptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR);
errorDescription := fptr.getParamString(fptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR_DESCRIPTION);
info := fptr.getParamInt(2109);
processingResult := fptr.getParamInt(2005);
processingCode := fptr.getParamInt(2105);

end;
end;
|

|// ожидание окончания проверки КМ в асихнхронном режиме
fptr.GetMarkingCodeValidationStatus()
ready := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY)
if ready {
result := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT)
isRequestSent := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_IS_REQUEST_SENT)
error := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR)
errorDescription := fptr.GetParamString(fptr10.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR_DESCRIPTION)
info := fptr.GetParamInt(2109)
processingResult := fptr.GetParamInt(2005)
processingCode := fptr.GetParamInt(2105)

}
|

|// ожидание окончания проверки КМ в асихнхронном режиме
Fptr.getMarkingCodeValidationStatus();
ready = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY);
if (ready) {
result = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);
isRequestSent = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_IS_REQUEST_SENT);
error = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR);
errorDescription = Fptr.getParamString(Fptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR_DESCRIPTION);
info = Fptr.getParamInt(2109);
processingResult = Fptr.getParamInt(2005);
processingCode = Fptr.getParamInt(2105);

}
|

В синхронном режиме метод /getMarkingCodeValidationStatus()/
вызывается для получения результатов онлайн-проверки КМ, если при
выполнении метода /beginMarkingCodeValidation()/ не возникло ошибок.

В асинхронном режиме метод /getMarkingCodeValidationStatus()/ нужно
вызывать до тех пор, пока параметр
LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY не станет равен true.

Входные параметры для метода /getMarkingCodeValidationStatus()/
отсутствуют.

Выходные параметры:

Параметр Описание Тип
LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY Проверка завершена bool
LIBFPTR_PARAM_IS_REQUEST_SENT КМ был отправлен на сервер bool
LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT Результат
проверки сведений о товаре (тег 2106) int
LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR Ошибка онлайн
проверки int
LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR_DESCRIPTION
Описание ошибки онлайн проверки string
LIBFPTR_PARAM_TLV_LIST Список полученных TLV-реквизитов string
2109 Сведения о статусе товара (тег 2109) int
2005 Результаты обработки запроса (тег 2005) int
2105 Код обработки запроса (тег 2105) int
2100 Тип кода маркировки (тег 2100) int
2101 Идентификатор товара (тег 2101) string
2102 Режим обработки кода маркировки (тег 2102) int

В зависимости от данных, которые вернёт сервер ИСМ, некоторые выходные
параметры могут отсутствовать (реквизиты с числовыми параметрами 2109,
2005, 2105, 2100, 2101 и 2102). Для определения списка полученных
реквизитов необходимо использовать свойство LIBFPTR_PARAM_TLV_LIST,
которое содержит список из чисел (номер тега), разделённых символом «;».
Например, /»2109;2005;2105;2100″/.

Также, узнать отсутствует или присутствует данный параметр можно методом
/isParamAvailable()/ (см. приложение Методы и параметры драйвера
<#methods_setters_getters>).

Параметры LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR и
LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR_DESCRIPTION
соответствуют коду ошибки драйвера и его описанию в соответствии с
документацией. Если вернулась ошибка, отличная от 0, то актуальны только
следующие параметры:

  • LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY — проверка завершена
  • LIBFPTR_PARAM_IS_REQUEST_SENT — КМ был отправлен на сервер Подтверждение и отказ от реализации товара

|libfptr_accept_marking_code(fptr);
uint result = libfptr_get_param_int(fptr, LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);
|

|fptr.acceptMarkingCode();
uint result = fptr.getParamInt(LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);
|

|fptr.acceptMarkingCode()
result = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT)
|

|fptr.acceptMarkingCode();
long result = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);
|

|fptr.acceptMarkingCode();
long result = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);
|

|[fptr acceptMarkingCode];
uint result = [fptr getParamInt:LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT];
|

|fptr.acceptMarkingCode();
uint result = fptr.getParamInt(Constants.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);
|

|var
result: Integer;
begin
fptr.acceptMarkingCode;
result := fptr.getParamInt(fptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);
end;
|

|fptr.AcceptMarkingCode()
result := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);
|

|Fptr.acceptMarkingCode();
result = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT);
|

Для подтверждения реализации нужно вызвать метод /acceptMarkingCode()/.

Выходные параметры:

Параметр Описание Тип
LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT Результат
проверки сведений о товаре (тег 2106) int

|libfptr_decline_marking_code(fptr);
|

|fptr.declineMarkingCode();
|

|fptr.declineMarkingCode()
|

|fptr.declineMarkingCode();
|

|fptr.declineMarkingCode();
|

|[fptr declineMarkingCode];
|

|fptr.declineMarkingCode();
|

|begin
fptr.declineMarkingCode;
end;
|

|fptr.DeclineMarkingCode()
|

|Fptr.declineMarkingCode();
|

Для отказа от реализации нужно вызвать метод /declineMarkingCode()/.

Выходных параметров нет.

Процедура проверки КМ должна заканчиваться одним из этих методов, без
этого к следующей проверке приступать нельзя.

  Прерывание проверки КМ

|libfptr_cancel_marking_code_validation(fptr);
|

|fptr.cancelMarkingCodeValidation();
|

|fptr.cancelMarkingCodeValidation()
|

|fptr.cancelMarkingCodeValidation();
|

|fptr.cancelMarkingCodeValidation();
|

|[fptr cancelMarkingCodeValidation];
|

|fptr.cancelMarkingCodeValidation();
|

|begin
fptr.cancelMarkingCodeValidation;
end;
|

|fptr.CancelMarkingCodeValidation()
|

|Fptr.cancelMarkingCodeValidation();
|

Проверку КМ можно прервать с помощью метода / cancelMarkingCodeValidation()/.

  Очистка таблицы проверенных КМ

|libfptr_clear_marking_code_validation_result(fptr);
|

|fptr.clearMarkingCodeValidationResult();
|

|fptr.clearMarkingCodeValidationResult()
|

|fptr.clearMarkingCodeValidationResult();
|

|fptr.clearMarkingCodeValidationResult();
|

|[fptr clearMarkingCodeValidationResult];
|

|fptr.clearMarkingCodeValidationResult();
|

|begin
fptr.clearMarkingCodeValidationResult;
end;
|

|fptr.ClearMarkingCodeValidationResult()
|

|Fptr.clearMarkingCodeValidationResult();
|

Для очистки таблицы проверенных КМ в ФН требуется вызвать метод / clearMarkingCodeValidationResult()/.

Передать данные уведомления

В уведомление о реализации товара с КМ также можно передать данные о
реализации маркированного товара с помощью метода */writeSalesNotice()/
*, который принимает параметры:

  • 1228 — ИНН клиента
  • 1261 — отраслевой реквизит чека (можно несколько)

|
libfptr_set_param_str(fptr, 1262, L»016″);
libfptr_set_param_str(fptr, 1263, L»24.09.2020″);
libfptr_set_param_str(fptr, 1264, L»8252″);
libfptr_set_param_str(fptr, 1265, L»значение»);
libfptr_util_form_tlv(fptr);

std::vector industryInfo(128);
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE, &industryInfo[0], industryInfo.size());
if (size > industryInfo.size())
{
industryInfo.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE, &industryInfo[0], industryInfo.size());
}
industryInfo.resize(size);

libfptr_set_param_str(fptr, 1228, L»123456789047″);
libfptr_set_param_bytearray(fptr, 1261, &industryInfo[0], industryInfo.size());
libfptr_write_sales_notice(fptr);
|

|fptr.setParam(1262, L»016″);
fptr.setParam(1263, L»24.09.2020″);
fptr.setParam(1264, L»8252″);
fptr.setParam(1265, L»значение»);
fptr.utilFormTlv();
std::vector industryInfo = fptr.getParamByteArray(LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(1228, L»123456789047″);
fptr.setParam(1261, industryInfo);
fptr.writeSalesNotice();
|

|
fptr.setParam(1262, ‘016’)
fptr.setParam(1263, ‘24.09.2020’)
fptr.setParam(1264, ‘8252’)
fptr.setParam(1265, ‘значение’)
fptr.utilFormTlv()
industryInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE)

fptr.setParam(1228, ‘123456789047’)
fptr.setParam(1261, industryInfo)
fptr.writeSalesNotice()
|

|fptr.setParam(1262, «016»);
fptr.setParam(1263, «24.09.2020»);
fptr.setParam(1264, «8252»);
fptr.setParam(1265, «значение»);
fptr.utilFormTlv();
byte[] industryInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(1228, «123456789047»);
fptr.setParam(1261, industryInfo);
fptr.writeSalesNotice();
|

|fptr.setParam(1262, «016»);
fptr.setParam(1263, «24.09.2020»);
fptr.setParam(1264, «8252»);
fptr.setParam(1265, «значение»);
fptr.utilFormTlv();
byte[] industryInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(1228, «123456789047»);
fptr.setParam(1261, industryInfo);
fptr.writeSalesNotice();
|

|[fptr setParam: 1262, NSString:@»016″];
[fptr setParam: 1263, NSString:@»24.09.2020″];
[fptr setParam: 1264, NSString:@»8252″];
[fptr setParam: 1265, NSString:@»значение»];
[fptr utilFormTlv];
NSData *industryInfo = [fptr getParamByteArray:LIBFPTR_PARAM_TAG_VALUE];

[fptr setParam: 1228, NSString:@»123456789047″];
[fptr setParam: 1261, NSDataParam:industryInfo];
[fptr writeSalesNotice];
|

|fptr.setParam(1262, «016»);
fptr.setParam(1263, «24.09.2020»);
fptr.setParam(1264, «8252»);
fptr.setParam(1265, «значение»);
fptr.utilFormTlv();
byte[] industryInfo = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(1228, «123456789047»);
fptr.setParam(1261, industryInfo);
fptr.writeSalesNotice();
|

|var
industryInfo: Variant;
begin
fptr.setParam(1262, ‘016’);
fptr.setParam(1263, ‘24.09.2020’);
fptr.setParam(1264, ‘8252’);
fptr.setParam(1265, ‘значение’);
fptr.utilFormTlv;
industryInfo := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_TAG_VALUE);

fptr.setParam(1228, '123456789047');
fptr.setParam(1261, industryInfo);
fptr.writeSalesNotice;

end;
|

|fptr.SetParam(1262, «016»)
fptr.SetParam(1263, «24.09.2020»)
fptr.SetParam(1264, «8252»)
fptr.SetParam(1265, «значение»)
fptr.UtilFormTlv()
industryInfo := fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_TAG_VALUE)

fptr.SetParam(1228, «123456789047»)
fptr.SetParam(1261, industryInfo)
fptr.WriteSalesNotice()
|

|Fptr.setParam(1262, «016»);
Fptr.setParam(1263, «24.09.2020»);
Fptr.setParam(1264, «8252»);
Fptr.setParam(1265, «значение»);
Fptr.utilFormTlv();
industryInfo = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_TAG_VALUE);

Fptr.setParam(1228, «123456789047»);
Fptr.setParam(1261, industryInfo);
Fptr.writeSalesNotice();
|

Данный метод необходимо вызывать после регистрации всех позиций в чеке,
причём среди позиций обязательно должны быть позиции с КМ.

Регистрация чека

После проверки всех КМ можно начать регистрировать позиции чека. В
нужных позициях нужно повторно передать код маркировки, привязанный к
товару. Для этого используются параметры:

  • LIBFPTR_PARAM_MARKING_CODE — код маркировки (тег 2000);
  • LIBFPTR_PARAM_MARKING_CODE_STATUS — новый статус товара (тег
    2110). Параметр должен принимать тоже значение, что и параметр
    LIBFPTR_PARAM_MARKING_CODE_STATUS при проверке КМ;
  • LIBFPTR_PARAM_MARKING_PROCESSING_MODE — режим обработки КМ (тег 2102);
  • LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT — результат
    проверки КМ (тег 2106) (из результата метода /acceptMarkingCode()/);
  • LIBFPTR_PARAM_MARKING_PRODUCT_ID — идентификатор товара (тег
    2101), параметр подаётся, если был получен в ответе от сервера
    методом /getMarkingServerStatus()/;

Также можно передать данные о реализации маркированного товара в
уведомление с помощью метода /writeSalesNotice()/ после регистрации
всех позиций чека (если среди них есть позиции с КМ). Подробнее в
соответствующем разделе <#sales_notice>

Перед самым закрытием чека можно дождаться, пока драйвер не отправит все
КМ, проверка которых была запущена без ожидания результата. Это можно
сделать с помощью метода /checkMarkingCodeValidationsReady()/,
возвращающего признак завершения фоновых проверок
LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY. Если этого не сделать,
драйвер всё равно дождётся окончания проверок в блокирующем режиме.

Обновление ключей проверки ФН-М

| libfptr_update_fnm_keys(fptr);
|

|fptr.updateFnmKeys();
|

|fptr.updateFnmKeys()
|

|fptr.updateFnmKeys();
|

|fptr.updateFnmKeys();
|

|[fptr updateFnmKeys];
|

|fptr.updateFnmKeys();
|

|begin
fptr.updateFnmKeys;
end;
|

|fptr.UpdateFnmKeys()
|

|Fptr.updateFnmKeys();
|

Для обновления ключей проверки ФН-М требуется вызвать метод / updateFnmKeys()/. Метод является блокирующим и выполняется до полного
обновления ключей проверки, возникновения ошибки или если истекло время
таймаута.

Таймаут, указывающий максимальное время выполнения операции можно задать
соответствующим параметром, по умолчанию равен 60000 мс.

Входные параметры:

Параметр Описание Тип Обязательность
LIBFPTR_PARAM_TIMEOUT Таймаут ожидания, мс int
LIBFPTR_PARAM_PRINT_UPDATE_FNM_KEYS_REPORT Печать отчёта ОКП bool

Данные параметры являются необязательными.

Результатом метода будут параметры, описывающие результат проверки:

Параметр Описание Тип
LIBFPTR_PARAM_MARKING_SERVER_ERROR_CODE Ошибка проверки int
LIBFPTR_PARAM_MARKING_SERVER_ERROR_DESCRIPTION Описание ошибки string

Данные параметры будут возвращены, если обновления ключей проверки
выполняется на стороне ККТ. Если ККТ не поддерживает обновление ключей
проверки, то данные параметры будут отсутствовать.

Значения параметров LIBFPTR_PARAM_MARKING_SERVER_ERROR_CODE и
LIBFPTR_PARAM_MARKING_SERVER_ERROR_DESCRIPTION соответствуют коду и
описанию ошибки драйвера, см. приложение Список кодов ошибок <#error_list>.

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.2

Проверка сервера ИСМ

|// Начать проверку связи с сервером ИСМ
libfptr_ping_marking_server(fptr);

// Ожидание результатов проверки связи с сервером ИСМ
while (true) {
libfptr_get_marking_server_status(fptr);
if (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_CHECK_MARKING_SERVER_READY))
break;
}

uint errorCode = libfptr_get_param_int(fptr, LIBFPTR_PARAM_MARKING_SERVER_ERROR_CODE);
std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_MARKING_SERVER_ERROR_DESCRIPTION, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_MARKING_SERVER_ERROR_DESCRIPTION, &str[0], str.size());
}
std::wstring errorDescription = std::wstring(&str[0]);

uint responseTime = libfptr_get_param_int(fptr, LIBFPTR_PARAM_MARKING_SERVER_RESPONSE_TIME);
|

|// Начать проверку связи с сервером ИСМ
fptr.pingMarkingServer();

// Ожидание результатов проверки связи с сервером ИСМ
while (true) {
fptr.getMarkingServerStatus();
if (fptr.getParamBool(LIBFPTR_PARAM_CHECK_MARKING_SERVER_READY))
break;
}

uint errorCode = fptr.getParamInt(LIBFPTR_PARAM_MARKING_SERVER_ERROR_CODE);
std::wstring errorDescription = fptr.getParamString(LIBFPTR_PARAM_MARKING_SERVER_ERROR_DESCRIPTION);
uint responseTime = fptr.getParamInt(LIBFPTR_PARAM_MARKING_SERVER_RESPONSE_TIME);
|

|# Начать проверку связи с сервером ИСМ
fptr.pingMarkingServer()

Ожидание результатов проверки связи с сервером ИСМ

while True:
fptr.getMarkingServerStatus()
if fptr.getParamBool(IFptr.LIBFPTR_PARAM_CHECK_MARKING_SERVER_READY)
break

errorCode = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_SERVER_ERROR_CODE)
errorDescription = fptr.getParamString(IFptr.LIBFPTR_PARAM_MARKING_SERVER_ERROR_DESCRIPTION)
responseTime = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_SERVER_RESPONSE_TIME)
|

|// Начать проверку связи с сервером ИСМ
fptr.pingMarkingServer();

// Ожидание результатов проверки связи с сервером ИСМ
while (true) {
fptr.getMarkingServerStatus();
if (fptr.getParamBool(IFptr.LIBFPTR_PARAM_CHECK_MARKING_SERVER_READY))
break;
}

long errorCode = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_SERVER_ERROR_CODE);
String errorDescription = fptr.getParamString(IFptr.LIBFPTR_PARAM_MARKING_SERVER_ERROR_DESCRIPTION);
long responseTime = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_SERVER_RESPONSE_TIME);
|

|// Начать проверку связи с сервером ИСМ
fptr.pingMarkingServer();

// Ожидание результатов проверки связи с сервером ИСМ
while (true) {
fptr.getMarkingServerStatus();
if (fptr.getParamBool(IFptr.LIBFPTR_PARAM_CHECK_MARKING_SERVER_READY))
break;
}

long errorCode = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_SERVER_ERROR_CODE);
String errorDescription = fptr.getParamString(IFptr.LIBFPTR_PARAM_MARKING_SERVER_ERROR_DESCRIPTION);
long responseTime = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_SERVER_RESPONSE_TIME);
|

|// Начать проверку связи с сервером ИСМ
[fptr pingMarkingServer];

// Ожидание результатов проверки связи с сервером ИСМ
while (true) {
[fptr getMarkingServerStatus];
if ([fptr getParamBool:LIBFPTR_PARAM_CHECK_MARKING_SERVER_READY])
break;
}

int errorCode = [fptr getParamInt:LIBFPTR_PARAM_MARKING_SERVER_ERROR_CODE];
NSString *errorDescription = [fptr getParamString:LIBFPTR_PARAM_MARKING_SERVER_ERROR_DESCRIPTION];
int responseTime = [fptr getParamInt:LIBFPTR_PARAM_MARKING_SERVER_RESPONSE_TIME];
|

|// Начать проверку связи с сервером ИСМ
fptr.pingMarkingServer();

// Ожидание результатов проверки связи с сервером ИСМ
while (true) {
fptr.getMarkingServerStatus();
if (fptr.getParamBool(Constants.LIBFPTR_PARAM_CHECK_MARKING_SERVER_READY))
break;
}

uint errorCode = fptr.getParamInt(Constants.LIBFPTR_PARAM_MARKING_SERVER_ERROR_CODE);
String errorDescription = fptr.getParamString(Constants.LIBFPTR_PARAM_MARKING_SERVER_ERROR_DESCRIPTION);
uint responseTime = fptr.getParamInt(Constants.LIBFPTR_PARAM_MARKING_SERVER_RESPONSE_TIME);
|

|var
errorCode: Integer;
errorDescription: String;
responseTime: Integer;
begin
// Начать проверку связи с сервером ИСМ
fptr.pingMarkingServer;

// Ожидание результатов проверки связи с сервером ИСМ
while True do
begin
    fptr.getMarkingServerStatus;
    if fptr.getParamBool(fptr.LIBFPTR_PARAM_CHECK_MARKING_SERVER_READY) then
        break;
end;

errorCode := fptr.getParamInt(fptr.LIBFPTR_PARAM_MARKING_SERVER_ERROR_CODE);
errorDescription := fptr.getParamString(fptr.LIBFPTR_PARAM_MARKING_SERVER_ERROR_DESCRIPTION);
responseTime := fptr.getParamInt(fptr.LIBFPTR_PARAM_MARKING_SERVER_RESPONSE_TIME);

end;
|

|// Начать проверку связи с сервером ИСМ
fptr.PingMarkingServer()

// Ожидание результатов проверки связи с сервером ИСМ
for true {
fptr.GetMarkingServerStatus()
if (fptr.GetParamBool(fptr10.LIBFPTR_PARAM_CHECK_MARKING_SERVER_READY)) {
break
}
}

errorCode := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_MARKING_SERVER_ERROR_CODE)
errorDescription := fptr.GetParamString(fptr10.LIBFPTR_PARAM_MARKING_SERVER_ERROR_DESCRIPTION)
responseTime := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_MARKING_SERVER_RESPONSE_TIME)
|

|// Начать проверку связи с сервером ИСМ
Fptr.pingMarkingServer();

// Ожидание результатов проверки связи с сервером ИСМ
while (true) {
Fptr.getMarkingServerStatus();
if (Fptr.getParamBool(Fptr.LIBFPTR_PARAM_CHECK_MARKING_SERVER_READY))
break;
}

errorCode = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_MARKING_SERVER_ERROR_CODE);
errorDescription = Fptr.getParamString(Fptr.LIBFPTR_PARAM_MARKING_SERVER_ERROR_DESCRIPTION);
responseTime = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_MARKING_SERVER_RESPONSE_TIME);
|

Проверка сервера ИСМ состоит из следующих этапов:

  • начать проверку сервера ИСМ с помощью метода /pingMarkingServer()/;
  • дождаться ответа на проверку (/getMarkingServerStatus()/). Метод
    нужно вызывать до тех пор, пока выходной параметр
    LIBFPTR_PARAM_CHECK_MARKING_SERVER_READY не станет равным true.

Для метода /pingMarkingServer()/ входные и выходные параметры отсутствуют.

Для метода /getMarkingServerStatus()/ входные параметры отсутствуют.
Результатом метода будут параметры, описывающие результат проверки:

Параметр Описание Тип
LIBFPTR_PARAM_CHECK_MARKING_SERVER_READY Проверка завершена bool
LIBFPTR_PARAM_MARKING_SERVER_ERROR_CODE Ошибка проверки int
LIBFPTR_PARAM_MARKING_SERVER_ERROR_DESCRIPTION Описание ошибки string
LIBFPTR_PARAM_MARKING_SERVER_RESPONSE_TIME Время ожидания ответа от
сервера, мс int

Значения параметров LIBFPTR_PARAM_MARKING_SERVER_ERROR_CODE и
LIBFPTR_PARAM_MARKING_SERVER_ERROR_DESCRIPTION соответствуют коду и
описанию ошибки драйвера, см. приложение Список кодов ошибок <#error_list>.

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.2

Внесения и выплаты

Внесение

Внесение

|libfptr_set_param_double(fptr, LIBFPTR_PARAM_SUM, 100.00);
libfptr_cash_income(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_SUM, 100.00);
fptr.cashIncome();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SUM, 100.00)
fptr.cashIncome()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SUM, 100.00);
fptr.cashIncome();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SUM, 100.00);
fptr.cashIncome();
|

|[fptr setParam:LIBFPTR_PARAM_SUM doubleParam:100.00];
[fptr cashIncome];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_SUM, 100.00);
fptr.cashIncome();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_SUM, 100.00);
fptr.cashIncome;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_SUM, 100.00)
fptr.CashIncome()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_SUM, 100.00);
Fptr.cashIncome();
|

Для регистрации внесения требуется вызвать метод /cashIncome()/ и
указать сумму внесения в параметре LIBFPTR_PARAM_SUM. Чтобы документ
не печатался, нужно установить параметру
LIBFPTR_PARAM_DOCUMENT_ELECTRONICALLY значение true.

Результатом команды будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_SHIFT_AUTO_OPENED true, если при выполнении операции
была автоматически открыта смена в ККТ bool

Поддерживается для всех ККТ

Выплата

Выплата

|libfptr_set_param_double(fptr, LIBFPTR_PARAM_SUM, 100.00);
libfptr_cash_outcome(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_SUM, 100.00);
fptr.cashOutcome();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SUM, 100.00)
fptr.cashOutcome()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SUM, 100.00);
fptr.cashOutcome();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SUM, 100.00);
fptr.cashOutcome();
|

|[fptr setParam:LIBFPTR_PARAM_SUM doubleParam:100.00];
[fptr cashOutcome];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_SUM, 100.00);
fptr.cashOutcome();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_SUM, 100.00);
fptr.cashOutcome;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_SUM, 100.00)
fptr.CashOutcome()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_SUM, 100.00);
Fptr.cashOutcome();
|

Для регистрации выплаты требуется вызвать метод /cashOutcome()/ и
указать сумму выплаты в параметре LIBFPTR_PARAM_SUM. Чтобы документ не
печатался, нужно установить параметру
LIBFPTR_PARAM_DOCUMENT_ELECTRONICALLY значение true.

Результатом команды будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_SHIFT_AUTO_OPENED true, если при выполнении операции
была автоматически открыта смена в ККТ bool

Поддерживается для всех ККТ

Печать отчетов

Для печати отчета необходим заполнить тип отчета (параметр
LIBFPTR_PARAM_REPORT_TYPE) и дополнительные параметры отчета (если они
требуются) и вызвать метод /report()/.

X-отчет

X-отчет

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_X);
libfptr_report(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_X);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_X)
fptr.report()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_X);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_X);
fptr.report();
|

|[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_X];
[fptr report];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_X);
fptr.report();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_X);
fptr.report;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_X)
fptr.Report()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_X);
Fptr.report();
|

Для печати X-отчета требуется вызвать метод /report()/ с типом отчета
LIBFPTR_PARAM_REPORT_TYPE равным LIBFPTR_RT_X.

Поддерживается для всех ККТ

Копия последнего документа

Копия последнего документа

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_LAST_DOCUMENT);
libfptr_report(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_LAST_DOCUMENT);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_LAST_DOCUMENT)
fptr.report()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_LAST_DOCUMENT);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_LAST_DOCUMENT);
fptr.report();
|

|[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_LAST_DOCUMENT];
[fptr report];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_LAST_DOCUMENT);
fptr.report();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_LAST_DOCUMENT);
fptr.report;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_LAST_DOCUMENT)
fptr.Report()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_LAST_DOCUMENT);
Fptr.report();
|

Для печати копии последнего документа требуется вызвать метод / report()/ с типом отчета LIBFPTR_PARAM_REPORT_TYPE равным
LIBFPTR_RT_LAST_DOCUMENT.

Поддерживается для всех ККТ

Отчет о состоянии расчетов

Отчет о состоянии расчетов

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_OFD_EXCHANGE_STATUS);
libfptr_report(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_OFD_EXCHANGE_STATUS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_OFD_EXCHANGE_STATUS)
fptr.report()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_OFD_EXCHANGE_STATUS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_OFD_EXCHANGE_STATUS);
fptr.report();
|

|[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_OFD_EXCHANGE_STATUS];
[fptr report];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_OFD_EXCHANGE_STATUS);
fptr.report();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_OFD_EXCHANGE_STATUS);
fptr.report;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_OFD_EXCHANGE_STATUS)
fptr.Report()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_OFD_EXCHANGE_STATUS);
Fptr.report();
|

Для печати отчета о состоянии расчетов требуется вызвать метод / report()/ с типом отчета LIBFPTR_PARAM_REPORT_TYPE равным
LIBFPTR_RT_OFD_EXCHANGE_STATUS.

После печати отчета о состоянии расчетов следует проверить, что операция
успешно завершена. Подробнее см. описание метода checkDocumentClosed().

Поддерживается для всех ККТ

Демо-печать

Демо-печать

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_KKT_DEMO);
libfptr_report(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_KKT_DEMO);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_KKT_DEMO)
fptr.report()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_KKT_DEMO);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_KKT_DEMO);
fptr.report();
|

|[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_KKT_DEMO];
[fptr report];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_KKT_DEMO);
fptr.report();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_KKT_DEMO);
fptr.report;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_KKT_DEMO)
fptr.Report()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_KKT_DEMO);
Fptr.report();
|

Для демо-печати требуется вызвать метод /report()/ с типом отчета
LIBFPTR_PARAM_REPORT_TYPE равным LIBFPTR_RT_KKT_DEMO.

Поддерживается для всех ККТ

Печать информации о ККТ

Печать информации о ККТ

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_KKT_INFO);
libfptr_report(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_KKT_INFO);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_KKT_INFO)
fptr.report()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_KKT_INFO);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_KKT_INFO);
fptr.report();
|

|[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_KKT_INFO];
[fptr report];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_KKT_INFO);
fptr.report();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_KKT_INFO);
fptr.report;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_KKT_INFO)
fptr.Report()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_KKT_INFO);
Fptr.report();
|

Для печати информации о ККТ требуется вызвать метод /report()/ с типом
отчета LIBFPTR_PARAM_REPORT_TYPE равным LIBFPTR_RT_KKT_INFO.

Поддерживается для всех ККТ

Диагностика соединения с ОФД

Диагностика соединения с ОФД

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_OFD_TEST);
libfptr_report(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_OFD_TEST);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_OFD_TEST)
fptr.report()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_OFD_TEST);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_OFD_TEST);
fptr.report();
|

|[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_OFD_TEST];
[fptr report];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_OFD_TEST);
fptr.report();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_OFD_TEST);
fptr.report;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_OFD_TEST)
fptr.Report()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_OFD_TEST);
Fptr.report();
|

Для печати диагностики соединения с ОФД требуется вызвать метод / report()/ с типом отчета LIBFPTR_PARAM_REPORT_TYPE равным
LIBFPTR_RT_OFD_TEST.

Поддерживается для всех ККТ

Печать документа из ФН

Печать документа из ФН

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_FN_DOC_BY_NUMBER);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_DOCUMENT_NUMBER, 12);
libfptr_report(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_FN_DOC_BY_NUMBER);
fptr.setParam(LIBFPTR_PARAM_DOCUMENT_NUMBER, 12);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_FN_DOC_BY_NUMBER)
fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 12)
fptr.report()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_FN_DOC_BY_NUMBER);
fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 12);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_FN_DOC_BY_NUMBER);
fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 12);
fptr.report();
|

|[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_FN_DOC_BY_NUMBER];
[fptr setParam:LIBFPTR_PARAM_DOCUMENT_NUMBER intParam:12];
[fptr report];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_FN_DOC_BY_NUMBER);
fptr.setParam(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER, 12);
fptr.report();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_FN_DOC_BY_NUMBER);
fptr.setParam(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 12);
fptr.report;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_FN_DOC_BY_NUMBER)
fptr.SetParam(fptr10.LIBFPTR_PARAM_DOCUMENT_NUMBER, 12)
fptr.Report()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_FN_DOC_BY_NUMBER);
Fptr.setParam(fptr10.LIBFPTR_PARAM_DOCUMENT_NUMBER, 12);
Fptr.report();
|

Для печати документа из архива фискального накопителя требуется вызвать
метод /report()/ с типом отчета LIBFPTR_PARAM_REPORT_TYPE равным
LIBFPTR_RT_FN_DOC_BY_NUMBER.

Для указания номер документа используется параметр
LIBFPTR_PARAM_DOCUMENT_NUMBER.

Поддерживается для всех ККТ

Отчет количеств

Отчет количеств

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_QUANTITY);
libfptr_report(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_QUANTITY);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_QUANTITY)
fptr.report()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_QUANTITY);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_QUANTITY);
fptr.report();
|

|[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_QUANTITY];
[fptr report];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_QUANTITY);
fptr.report();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_QUANTITY);
fptr.report;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_QUANTITY)
fptr.Report()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_QUANTITY);
Fptr.report();
|

Для печати отчета количеств требуется вызвать метод /report()/ с типом
отчета LIBFPTR_PARAM_REPORT_TYPE равным LIBFPTR_RT_QUANTITY.

Поддерживается только для ККТ версий 3.X

Отчет по секциям

Отчет по секциям

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_DEPARTMENTS);
libfptr_report(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_DEPARTMENTS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_DEPARTMENTS)
fptr.report()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_DEPARTMENTS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_DEPARTMENTS);
fptr.report();
|

|[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_DEPARTMENTS];
[fptr report];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_DEPARTMENTS);
fptr.report();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_DEPARTMENTS);
fptr.report;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_DEPARTMENTS)
fptr.Report()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_DEPARTMENTS);
Fptr.report();
|

Для печати отчета по секциям требуется вызвать метод /report()/ с
типом отчета LIBFPTR_PARAM_REPORT_TYPE равным LIBFPTR_RT_DEPARTMENTS.

Поддерживается для всех ККТ

Отчет по кассирам

Отчет по кассирам

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_OPERATORS);
libfptr_report(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_OPERATORS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_OPERATORS)
fptr.report()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_OPERATORS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_OPERATORS);
fptr.report();
|

|[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_OPERATORS];
[fptr report];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_OPERATORS);
fptr.report();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_OPERATORS);
fptr.report;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_OPERATORS)
fptr.Report()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_OPERATORS);
Fptr.report();
|

Для печати отчета по кассирам требуется вызвать метод /report()/ с
типом отчета LIBFPTR_PARAM_REPORT_TYPE равным LIBFPTR_RT_OPERATORS.

Поддерживается только для ККТ версий 3.X

Отчет по часам

Отчет по часам

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_HOURS);
libfptr_report(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_HOURS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_HOURS)
fptr.report()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_HOURS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_HOURS);
fptr.report();
|

|[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_HOURS];
[fptr report];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_HOURS);
fptr.report();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_HOURS);
fptr.report;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_HOURS)
fptr.Report()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_HOURS);
Fptr.report();
|

Для печати отчета по часам требуется вызвать метод /report()/ с типом
отчета LIBFPTR_PARAM_REPORT_TYPE равным LIBFPTR_RT_HOURS.

Поддерживается только для ККТ версий 3.X

Печать итогов регистрации / перерегистрации

Печать итогов регистрации / перерегистрации

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_FN_REGISTRATIONS);
libfptr_report(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_FN_REGISTRATIONS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_FN_REGISTRATIONS)
fptr.report()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_FN_REGISTRATIONS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_FN_REGISTRATIONS);
fptr.report();
|

|[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_FN_REGISTRATIONS];
[fptr report];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_FN_REGISTRATIONS);
fptr.report();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_FN_REGISTRATIONS);
fptr.report;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_FN_REGISTRATIONS)
fptr.Report()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_FN_REGISTRATIONS);
Fptr.report();
|

Для печати итогов регистрации/перерегистрации требуется вызвать метод / report()/ с типом отчета LIBFPTR_PARAM_REPORT_TYPE равным
LIBFPTR_RT_FN_REGISTRATIONS.

Поддерживается для всех ККТ

Счетчики итогов смены

Счетчики итогов смены

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_FN_SHIFT_TOTAL_COUNTERS);
libfptr_report(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_FN_SHIFT_TOTAL_COUNTERS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_FN_SHIFT_TOTAL_COUNTERS)
fptr.report()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_FN_SHIFT_TOTAL_COUNTERS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_FN_SHIFT_TOTAL_COUNTERS);
fptr.report();
|

|[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_FN_SHIFT_TOTAL_COUNTERS];
[fptr report];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_FN_SHIFT_TOTAL_COUNTERS);
fptr.report();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_FN_SHIFT_TOTAL_COUNTERS);
fptr.report;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_FN_SHIFT_TOTAL_COUNTERS)
fptr.Report()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_FN_SHIFT_TOTAL_COUNTERS);
Fptr.report();
|

Для печати счетчиков итогов смены требуется вызвать метод /report()/ с
типом отчета LIBFPTR_PARAM_REPORT_TYPE равным
LIBFPTR_RT_FN_SHIFT_TOTAL_COUNTERS.

Поддерживается только для ККТ версий 3.X

Счетчики итогов ФН

Счетчики итогов ФН

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_FN_TOTAL_COUNTERS);
libfptr_report(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_FN_TOTAL_COUNTERS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_FN_TOTAL_COUNTERS)
fptr.report()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_FN_TOTAL_COUNTERS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_FN_TOTAL_COUNTERS);
fptr.report();
|

|[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_FN_TOTAL_COUNTERS];
[fptr report];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_FN_TOTAL_COUNTERS);
fptr.report();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_FN_TOTAL_COUNTERS);
fptr.report;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_FN_TOTAL_COUNTERS)
fptr.Report()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_FN_TOTAL_COUNTERS);
Fptr.report();
|

Для печати счетчиков итогов ФН требуется вызвать метод /report()/ с
типом отчета LIBFPTR_PARAM_REPORT_TYPE равным
LIBFPTR_RT_FN_TOTAL_COUNTERS.

Поддерживается только для ККТ версий 3.X

Счетчики по непереданным документам

Счетчики по непереданным документам

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_FN_NOT_SENT_DOCUMENTS_COUNTERS);
libfptr_report(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_FN_NOT_SENT_DOCUMENTS_COUNTERS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_FN_NOT_SENT_DOCUMENTS_COUNTERS)
fptr.report()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_FN_NOT_SENT_DOCUMENTS_COUNTERS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_FN_NOT_SENT_DOCUMENTS_COUNTERS);
fptr.report();
|

|[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_FN_NOT_SENT_DOCUMENTS_COUNTERS];
[fptr report];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_FN_NOT_SENT_DOCUMENTS_COUNTERS);
fptr.report();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_FN_NOT_SENT_DOCUMENTS_COUNTERS);
fptr.report;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_FN_NOT_SENT_DOCUMENTS_COUNTERS)
fptr.Report()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_FN_NOT_SENT_DOCUMENTS_COUNTERS);
Fptr.report();
|

Для печати счетчиков по непереданным документам требуется вызвать метод
/report()/ с типом отчета LIBFPTR_PARAM_REPORT_TYPE равным
LIBFPTR_RT_FN_NOT_SENT_DOCUMENTS_COUNTERS.

Поддерживается только для ККТ версий 3.X

Отчет по товарам по СНО

Отчет по товарам по СНО

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_COMMODITIES_BY_TAXATION_TYPES);
libfptr_report(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_COMMODITIES_BY_TAXATION_TYPES);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_COMMODITIES_BY_TAXATION_TYPES)
fptr.report()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_COMMODITIES_BY_TAXATION_TYPES);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_COMMODITIES_BY_TAXATION_TYPES);
fptr.report();
|

|[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_COMMODITIES_BY_TAXATION_TYPES];
[fptr report];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_COMMODITIES_BY_TAXATION_TYPES);
fptr.report();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_COMMODITIES_BY_TAXATION_TYPES);
fptr.report;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_COMMODITIES_BY_TAXATION_TYPES)
fptr.Report()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_COMMODITIES_BY_TAXATION_TYPES);
Fptr.report();
|

Для печати отчета по товарам по СНО требуется вызвать метод /report()/
с типом отчета LIBFPTR_PARAM_REPORT_TYPE равным
LIBFPTR_RT_COMMODITIES_BY_TAXATION_TYPES.

Поддерживается только для ККТ версий 3.X

Отчет по товарам по отделам

Отчет по товарам по отделам

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_COMMODITIES_BY_DEPARTMENTS);
libfptr_report(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_COMMODITIES_BY_DEPARTMENTS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_COMMODITIES_BY_DEPARTMENTS)
fptr.report()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_COMMODITIES_BY_DEPARTMENTS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_COMMODITIES_BY_DEPARTMENTS);
fptr.report();
|

|[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_COMMODITIES_BY_DEPARTMENTS];
[fptr report];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_COMMODITIES_BY_DEPARTMENTS);
fptr.report();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_COMMODITIES_BY_DEPARTMENTS);
fptr.report;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_COMMODITIES_BY_DEPARTMENTS)
fptr.Report()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_COMMODITIES_BY_DEPARTMENTS);
Fptr.report();
|

Для печати отчета по товарам по отделам требуется вызвать метод / report()/ с типом отчета LIBFPTR_PARAM_REPORT_TYPE равным
LIBFPTR_RT_COMMODITIES_BY_DEPARTMENTS.

Поддерживается только для ККТ версий 3.X

Отчет по товарам по суммам

Отчет по товарам по суммам

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_COMMODITIES_BY_SUMS);
libfptr_report(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_COMMODITIES_BY_SUMS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_COMMODITIES_BY_SUMS)
fptr.report()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_COMMODITIES_BY_SUMS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_COMMODITIES_BY_SUMS);
fptr.report();
|

|[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_COMMODITIES_BY_SUMS];
[fptr report];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_COMMODITIES_BY_SUMS);
fptr.report();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_COMMODITIES_BY_SUMS);
fptr.report;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_COMMODITIES_BY_SUMS)
fptr.Report()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_COMMODITIES_BY_SUMS);
Fptr.report();
|

Для печати отчета по товарам по суммам требуется вызвать метод / report()/ с типом отчета LIBFPTR_PARAM_REPORT_TYPE равным
LIBFPTR_RT_COMMODITIES_BY_SUMS.

Поддерживается только для ККТ версий 3.X

Начать служебный отчет

Начать служебный отчет

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_START_SERVICE);
libfptr_report(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_START_SERVICE);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_START_SERVICE)
fptr.report()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_START_SERVICE);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_START_SERVICE);
fptr.report();
|

|[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_START_SERVICE];
[fptr report];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_START_SERVICE);
fptr.report();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_START_SERVICE);
fptr.report;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_START_SERVICE)
fptr.Report()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_START_SERVICE);
Fptr.report();
|

Для начала формирования служебного отчета требуется вызвать метод / report()/ с типом отчета LIBFPTR_PARAM_REPORT_TYPE равным
LIBFPTR_RT_START_SERVICE.

Для его завершения необходимо вызвать метод /endNonfiscalDocument()/.

Поддерживается только для ККТ версий 3.X

Отчет по скидкам

Отчет по скидкам

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_DISCOUNTS);
libfptr_report(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_DISCOUNTS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_DISCOUNTS)
fptr.report()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_DISCOUNTS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_DISCOUNTS);
fptr.report();
|

|[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_DISCOUNTS];
[fptr report];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_DISCOUNTS);
fptr.report();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_DISCOUNTS);
fptr.report;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_DISCOUNTS)
fptr.Report()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_DISCOUNTS);
Fptr.report();
|

Для печати отчета по скидкам требуется вызвать метод /report()/ с
типом отчета LIBFPTR_PARAM_REPORT_TYPE равным LIBFPTR_RT_DISCOUNTS.

Поддерживается только для ККТ версий 3.X

Печать нераспечатанных отчетов о закрытии смены

Печать нераспечатанных отчетов о закрытии смены

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_CLOSE_SHIFT_REPORTS);
libfptr_report(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_CLOSE_SHIFT_REPORTS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_CLOSE_SHIFT_REPORTS)
fptr.report()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_CLOSE_SHIFT_REPORTS);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_CLOSE_SHIFT_REPORTS);
fptr.report();
|

|[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_CLOSE_SHIFT_REPORTS];
[fptr report];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_CLOSE_SHIFT_REPORTS);
fptr.report();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_CLOSE_SHIFT_REPORTS);
fptr.report;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_CLOSE_SHIFT_REPORTS)
fptr.Report()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_CLOSE_SHIFT_REPORTS);
Fptr.report();
|

Для печати нераспечатанных отчетов о закрытии смены требуется вызвать
метод /report()/ с типом отчета LIBFPTR_PARAM_REPORT_TYPE равным
LIBFPTR_RT_CLOSE_SHIFT_REPORTS.

Поддерживается только для ККТ версий 5.X

Запрос информации из ФН

Значение реквизита регистрации

Запрос значения реквизита регистрации

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_TAG_VALUE);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_TAG_NUMBER, 1018);
libfptr_fn_query_data(fptr);

std::vector str(32);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_TAG_VALUE, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_TAG_VALUE, &str[0], str.size());
}
std::wstring companyVATIN = std::wstring(&str[0]);
|

|fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_TAG_VALUE);
fptr.setParam(LIBFPTR_PARAM_TAG_NUMBER, 1018);
fptr.fnQueryData();

std::wstring companyVATIN = fptr.getParamString(LIBFPTR_PARAM_TAG_VALUE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_TAG_VALUE)
fptr.setParam(IFptr.LIBFPTR_PARAM_TAG_NUMBER, 1018)
fptr.fnQueryData()

companyVATIN = fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_VALUE)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_TAG_VALUE);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAG_NUMBER, 1018);
fptr.fnQueryData();

String companyVATIN = fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_VALUE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_TAG_VALUE);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAG_NUMBER, 1018);
fptr.fnQueryData();

String companyVATIN = fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_VALUE);
|

|[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_TAG_VALUE];
[fptr setParam:LIBFPTR_PARAM_TAG_NUMBER intParam:1018];
[fptr fnQueryData];

NSString* companyVATIN = [fptr getParamString:LIBFPTR_PARAM_TAG_VALUE]
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_TAG_VALUE);
fptr.setParam(Constants.LIBFPTR_PARAM_TAG_NUMBER, 1018);
fptr.fnQueryData();

String companyVATIN = fptr.getParamString(Constants.LIBFPTR_PARAM_TAG_VALUE);
|

|var
companyVATIN: String;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_TAG_VALUE);
fptr.setParam(fptr.LIBFPTR_PARAM_TAG_NUMBER, 1018);
fptr.fnQueryData;

companyVATIN := fptr.getParamString(fptr.LIBFPTR_PARAM_TAG_VALUE);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_TAG_VALUE)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TAG_NUMBER, 1018)
fptr.FnQueryData()

companyVATIN := fptr.GetParamString(fptr10.LIBFPTR_PARAM_TAG_VALUE)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_TAG_VALUE);
Fptr.setParam(Fptr.LIBFPTR_PARAM_TAG_NUMBER, 1018);
Fptr.fnQueryData();

companyVATIN = Fptr.getParamString(Fptr.LIBFPTR_PARAM_TAG_VALUE);
|

Для запроса одного из реквизитов регистрации требуется вызвать метод / fnQueryData()/ с типом запроса LIBFPTR_PARAM_FN_DATA_TYPE равным
LIBFPTR_FNDT_TAG_VALUE и указать номер реквизита
LIBFPTR_PARAM_TAG_NUMBER.

После выполнения метода значение реквизита можно прочитать из параметра
LIBFPTR_PARAM_TAG_VALUE. Тип параметра зависит от номера реквизита.

Список доступных к запросу реквизитов представлен в описании запроса
Регистрационные данные <#fn_query_reginfo>.

В отличие от запроса LIBFPTR_FNDT_REGISTRATION_TLV данные считываются
преимущественно из кеша параметров ККТ.

Поддерживается для всех ККТ

Чтение реквизита регистрации по номеру отчета

Чтение реквизита регистрации

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_REGISTRATION_TLV);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_REGISTRATION_NUMBER, 1);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_TAG_NUMBER, 1018);
libfptr_fn_query_data(fptr);

uint tagNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_TAG_NUMBER);
uint tagType = libfptr_get_param_int(fptr, LIBFPTR_PARAM_TAG_TYPE);

std::vector str(32);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_TAG_VALUE, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_TAG_VALUE, &str[0], str.size());
}
std::wstring companyVATIN = std::wstring(&str[0]);
|

|fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_REGISTRATION_TLV);
fptr.setParam(LIBFPTR_PARAM_REGISTRATION_NUMBER, 1);
fptr.setParam(LIBFPTR_PARAM_TAG_NUMBER, 1018);
fptr.fnQueryData();

std::wstring tagName = fptr.getParamString(LIBFPTR_PARAM_TAG_NAME);
uint tagType = fptr.getParamInt(LIBFPTR_PARAM_TAG_TYPE);
std::wstring companyVATIN = fptr.getParamString(LIBFPTR_PARAM_TAG_VALUE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_REGISTRATION_TLV)
fptr.setParam(IFptr.LIBFPTR_PARAM_REGISTRATION_NUMBER, 1)
fptr.setParam(IFptr.LIBFPTR_PARAM_TAG_NUMBER, 1018)
fptr.fnQueryData()

tagName = fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_NAME)
tagType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_TYPE)
companyVATIN = fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_VALUE)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_REGISTRATION_TLV);
fptr.setParam(IFptr.LIBFPTR_PARAM_REGISTRATION_NUMBER, 1);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAG_NUMBER, 1018);
fptr.fnQueryData();

String tagName = fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_NAME);
long tagType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_TYPE);
String companyVATIN = fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_VALUE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_REGISTRATION_TLV);
fptr.setParam(IFptr.LIBFPTR_PARAM_REGISTRATION_NUMBER, 1);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAG_NUMBER, 1018);
fptr.fnQueryData();

String tagName = fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_NAME);
long tagType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_TYPE);
String companyVATIN = fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_VALUE);
|

|[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_REGISTRATION_TLV];
[fptr setParam:LIBFPTR_PARAM_REGISTRATION_NUMBER intParam:1];
[fptr setParam:LIBFPTR_PARAM_TAG_NUMBER intParam:1018];
[fptr fnQueryData];

NSString tagName = [fptr getParamString:LIBFPTR_PARAM_TAG_NAME]; uint tagType = [fptr getParamInt:LIBFPTR_PARAM_TAG_TYPE]; NSString companyVATIN = [fptr getParamString:LIBFPTR_PARAM_TAG_VALUE]
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_REGISTRATION_TLV);
fptr.setParam(Constants.LIBFPTR_PARAM_REGISTRATION_NUMBER, 1);
fptr.setParam(Constants.LIBFPTR_PARAM_TAG_NUMBER, 1018);
fptr.fnQueryData();

String tagName = fptr.getParamString(Constants.LIBFPTR_PARAM_TAG_NAME);
uint tagType = fptr.getParamInt(Constants.LIBFPTR_PARAM_TAG_TYPE);
String companyVATIN = fptr.getParamString(Constants.LIBFPTR_PARAM_TAG_VALUE);
|

|var
tagName: String;
tagType: Integer;
companyVATIN: String;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_REGISTRATION_TLV);
fptr.setParam(fptr.LIBFPTR_PARAM_REGISTRATION_NUMBER, 1);
fptr.setParam(fptr.LIBFPTR_PARAM_TAG_NUMBER, 1018);
fptr.fnQueryData;

tagName      := fptr.getParamString(fptr.LIBFPTR_PARAM_TAG_NAME);
tagType      := fptr.getParamInt(fptr.LIBFPTR_PARAM_TAG_TYPE);
companyVATIN := fptr.getParamString(fptr.LIBFPTR_PARAM_TAG_VALUE);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_REGISTRATION_TLV)
fptr.SetParam(fptr10.LIBFPTR_PARAM_REGISTRATION_NUMBER, 1)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TAG_NUMBER, 1018)
fptr.FnQueryData()

tagName := fptr.GetParamString(fptr10.LIBFPTR_PARAM_TAG_NAME)
tagType := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_TAG_TYPE)
companyVATIN := fptr.GetParamString(fptr10.LIBFPTR_PARAM_TAG_VALUE)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_REGISTRATION_TLV);
Fptr.setParam(Fptr.LIBFPTR_PARAM_REGISTRATION_NUMBER, 1);
Fptr.setParam(Fptr.LIBFPTR_PARAM_TAG_NUMBER, 1018);
Fptr.fnQueryData();

tagName = Fptr.getParamString(Fptr.LIBFPTR_PARAM_TAG_NAME);
tagType = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_TAG_TYPE);
companyVATIN = Fptr.getParamString(Fptr.LIBFPTR_PARAM_TAG_VALUE);
|

Для запроса одного из реквизитов регистрации требуется вызвать метод / fnQueryData()/ с типом запроса LIBFPTR_PARAM_FN_DATA_TYPE равным
LIBFPTR_FNDT_REGISTRATION_TLV и указать номер реквизита
LIBFPTR_PARAM_TAG_NUMBER и порядковый номер регистрации
LIBFPTR_PARAM_REGISTRATION_NUMBER.

После выполнения метода доступны следующие выходные параметры:

Параметр Описание Тип
LIBFPTR_PARAM_TAG_VALUE Значение реквизита Зависит от номера реквизита
LIBFPTR_PARAM_TAG_TYPE Тип реквизита int
LIBFPTR_PARAM_TAG_NAME Название реквизита string
LIBFPTR_PARAM_TAG_IS_COMPLEX true, если реквизит составной bool
LIBFPTR_PARAM_TAG_IS_REPEATABLE true, если реквизит может
повторяться bool

Реквизит можно сразу считать в удобном для обработки виде. Для этого
нужно ориентироваться на значение параметра LIBFPTR_PARAM_TAG_TYPE, и,
в зависимости от него, использовать методы для чтения разных типов
параметров — /getParamInt()/, /getParamBool()/, /getParamDouble()/
и т.п.

В отличие от запроса LIBFPTR_FNDT_TAG_VALUE данные считываются
напрямую из ФН. Закешированные значения из ККТ не учитываются.

Поддерживается для всех ККТ

Регистрационные данные

Запрос реквизитов регистрации ККТ

|// Вспомогательная функция для чтения строковых параметров
std::wstring readStringAttribute(libfptr_handle fptr, int paramNumber) {
std::vector str(32);
int size = libfptr_get_param_str(fptr, paramNumber, &str[0], str.size());
if (size > str.size()) {
str.resize(size);
libfptr_get_param_str(fptr, paramNumber, &str[0], str.size());
}
return std::wstring(&str[0]);
}

libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_REG_INFO);
libfptr_fn_query_data(fptr);

int taxationTypes = libfptr_get_param_int(fptr, 1062);
int agentSign = libfptr_get_param_int(fptr, 1057);
int ffdVersion = libfptr_get_param_int(fptr, 1209);

bool autoModeSign = (libfptr_get_param_bool(fptr, 1001) != 0);
bool offlineModeSign = (libfptr_get_param_bool(fptr, 1002) != 0);
bool encryptionSign = (libfptr_get_param_bool(fptr, 1056) != 0);
bool internetSign = (libfptr_get_param_bool(fptr, 1108) != 0);
bool serviceSign = (libfptr_get_param_bool(fptr, 1109) != 0);
bool bsoSign = (libfptr_get_param_bool(fptr, 1110) != 0);
bool lotterySign = (libfptr_get_param_bool(fptr, 1126) != 0);
bool gamblingSign = (libfptr_get_param_bool(fptr, 1193) != 0);
bool exciseSign = (libfptr_get_param_bool(fptr, 1207) != 0);
bool machineInstallationSign = (libfptr_get_param_bool(fptr, 1221) != 0);

std::wstring fnsUrl = readStringAttribute(fptr, 1060);
std::wstring organizationAddress = readStringAttribute(fptr, 1009);
std::wstring organizationVATIN = readStringAttribute(fptr, 1018);
std::wstring organizationName = readStringAttribute(fptr, 1048);
std::wstring organizationEmail = readStringAttribute(fptr, 1117);
std::wstring paymentsAddress = readStringAttribute(fptr, 1187);
std::wstring registrationNumber = readStringAttribute(fptr, 1037);
std::wstring machineNumber = readStringAttribute(fptr, 1036);
std::wstring ofdVATIN = readStringAttribute(fptr, 1017);
std::wstring ofdName = readStringAttribute(fptr, 1046);
|

|fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_REG_INFO);
fptr.fnQueryData();

uint taxationTypes = fptr.getParamInt(1062);
uint agentSign = fptr.getParamInt(1057);
uint ffdVersion = fptr.getParamInt(1209);

bool autoModeSign = fptr.getParamBool(1001);
bool offlineModeSign = fptr.getParamBool(1002);
bool encryptionSign = fptr.getParamBool(1056);
bool internetSign = fptr.getParamBool(1108);
bool serviceSign = fptr.getParamBool(1109);
bool bsoSign = fptr.getParamBool(1110);
bool lotterySign = fptr.getParamBool(1126);
bool gamblingSign = fptr.getParamBool(1193);
bool exciseSign = fptr.getParamBool(1207);
bool machineInstallationSign = fptr.getParamBool(1221);

std::wstring fnsUrl = fptr.getParamString(1060);
std::wstring organizationAddress = fptr.getParamString(1009);
std::wstring organizationVATIN = fptr.getParamString(1018);
std::wstring organizationName = fptr.getParamString(1048);
std::wstring organizationEmail = fptr.getParamString(1117);
std::wstring paymentsAddress = fptr.getParamString(1187);
std::wstring registrationNumber = fptr.getParamString(1037);
std::wstring machineNumber = fptr.getParamString(1036);
std::wstring ofdVATIN = fptr.getParamString(1017);
std::wstring ofdName = fptr.getParamString(1046);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_REG_INFO)
fptr.fnQueryData()

taxationTypes = fptr.getParamInt(1062)
agentSign = fptr.getParamInt(1057)
ffdVersion = fptr.getParamInt(1209)

autoModeSign = fptr.getParamBool(1001)
offlineModeSign = fptr.getParamBool(1002)
encryptionSign = fptr.getParamBool(1056)
internetSign = fptr.getParamBool(1108)
serviceSign = fptr.getParamBool(1109)
bsoSign = fptr.getParamBool(1110)
lotterySign = fptr.getParamBool(1126)
gamblingSign = fptr.getParamBool(1193)
exciseSign = fptr.getParamBool(1207)
machineInstallationSign = fptr.getParamBool(1221)

fnsUrl = fptr.getParamString(1060)
organizationAddress = fptr.getParamString(1009)
organizationVATIN = fptr.getParamString(1018)
organizationName = fptr.getParamString(1048)
organizationEmail = fptr.getParamString(1117)
paymentsAddress = fptr.getParamString(1187)
registrationNumber = fptr.getParamString(1037)
machineNumber = fptr.getParamString(1036)
ofdVATIN = fptr.getParamString(1017)
ofdName = fptr.getParamString(1046)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_REG_INFO);
fptr.fnQueryData();

long taxationTypes = fptr.getParamInt(1062);
long agentSign = fptr.getParamInt(1057);
long ffdVersion = fptr.getParamInt(1209);

boolean autoModeSign = fptr.getParamBool(1001);
boolean offlineModeSign = fptr.getParamBool(1002);
boolean encryptionSign = fptr.getParamBool(1056);
boolean internetSign = fptr.getParamBool(1108);
boolean serviceSign = fptr.getParamBool(1109);
boolean bsoSign = fptr.getParamBool(1110);
boolean lotterySign = fptr.getParamBool(1126);
boolean gamblingSign = fptr.getParamBool(1193);
boolean exciseSign = fptr.getParamBool(1207);
boolean machineInstallationSign = fptr.getParamBool(1221);

String fnsUrl = fptr.getParamString(1060);
String organizationAddress = fptr.getParamString(1009);
String organizationVATIN = fptr.getParamString(1018);
String organizationName = fptr.getParamString(1048);
String organizationEmail = fptr.getParamString(1117);
String paymentsAddress = fptr.getParamString(1187);
String registrationNumber = fptr.getParamString(1037);
String machineNumber = fptr.getParamString(1036);
String ofdVATIN = fptr.getParamString(1017);
String ofdName = fptr.getParamString(1046);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_REG_INFO);
fptr.fnQueryData();

long taxationTypes = fptr.getParamInt(1062);
long agentSign = fptr.getParamInt(1057);
long ffdVersion = fptr.getParamInt(1209);

boolean autoModeSign = fptr.getParamBool(1001);
boolean offlineModeSign = fptr.getParamBool(1002);
boolean encryptionSign = fptr.getParamBool(1056);
boolean internetSign = fptr.getParamBool(1108);
boolean serviceSign = fptr.getParamBool(1109);
boolean bsoSign = fptr.getParamBool(1110);
boolean lotterySign = fptr.getParamBool(1126);
boolean gamblingSign = fptr.getParamBool(1193);
boolean exciseSign = fptr.getParamBool(1207);
boolean machineInstallationSign = fptr.getParamBool(1221);

String fnsUrl = fptr.getParamString(1060);
String organizationAddress = fptr.getParamString(1009);
String organizationVATIN = fptr.getParamString(1018);
String organizationName = fptr.getParamString(1048);
String organizationEmail = fptr.getParamString(1117);
String paymentsAddress = fptr.getParamString(1187);
String registrationNumber = fptr.getParamString(1037);
String machineNumber = fptr.getParamString(1036);
String ofdVATIN = fptr.getParamString(1017);
String ofdName = fptr.getParamString(1046);
|

|[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_REG_INFO];
[fptr fnQueryData];

uint taxationTypes = [fptr getParamInt:1062];
uint agentSign = [fptr getParamInt:1057];
uint ffdVersion = [fptr getParamInt:1209];

bool autoModeSign = [fptr getParamBool:1001];
bool offlineModeSign = [fptr getParamBool:1002];
bool encryptionSign = [fptr getParamBool:1056];
bool internetSign = [fptr getParamBool:1108];
bool serviceSign = [fptr getParamBool:1109];
bool bsoSign = [fptr getParamBool:1110];
bool lotterySign = [fptr getParamBool:1126];
bool gamblingSign = [fptr getParamBool:1193];
bool exciseSign = [fptr getParamBool:1207];
bool machineInstallationSign = [fptr getParamBool:1221];

NSString *fnsUrl = [fptr getParamString:1060];
NSString *organizationAddress = [fptr getParamString:1009];
NSString *organizationVATIN = [fptr getParamString:1018];
NSString *organizationName = [fptr getParamString:1048];
NSString *organizationEmail = [fptr getParamString:1117];
NSString *paymentsAddress = [fptr getParamString:1187];
NSString *registrationNumber = [fptr getParamString:1037];
NSString *machineNumber = [fptr getParamString:1036];
NSString *ofdVATIN = [fptr getParamString:1017];
NSString *ofdName = [fptr getParamString:1046];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_REG_INFO);
fptr.fnQueryData();

uint taxationTypes = fptr.getParamInt(1062);
uint agentSign = fptr.getParamInt(1057);
uint ffdVersion = fptr.getParamInt(1209);

bool autoModeSign = fptr.getParamBool(1001);
bool offlineModeSign = fptr.getParamBool(1002);
bool encryptionSign = fptr.getParamBool(1056);
bool internetSign = fptr.getParamBool(1108);
bool serviceSign = fptr.getParamBool(1109);
bool bsoSign = fptr.getParamBool(1110);
bool lotterySign = fptr.getParamBool(1126);
bool gamblingSign = fptr.getParamBool(1193);
bool exciseSign = fptr.getParamBool(1207);
bool machineInstallationSign = fptr.getParamBool(1221);

String fnsUrl = fptr.getParamString(1060);
String organizationAddress = fptr.getParamString(1009);
String organizationVATIN = fptr.getParamString(1018);
String organizationName = fptr.getParamString(1048);
String organizationEmail = fptr.getParamString(1117);
String paymentsAddress = fptr.getParamString(1187);
String registrationNumber = fptr.getParamString(1037);
String machineNumber = fptr.getParamString(1036);
String ofdVATIN = fptr.getParamString(1017);
String ofdName = fptr.getParamString(1046);
|

|var
taxationTypes: Longint;
agentSign: Longint;
ffdVersion: Longint;

autoModeSign:             LongBool;
offlineModeSign:          LongBool;
encryptionSign:           LongBool;
internetSign:             LongBool;
serviceSign:              LongBool;
bsoSign:                  LongBool;
lotterySign:              LongBool;
gamblingSign:             LongBool;
exciseSign:               LongBool;
machineInstallationSign:  LongBool;

fnsUrl:                   String;
organizationAddress:      String;
organizationVATIN:        String;
organizationName:         String;
organizationEmail:        String;
paymentsAddress:          String;
registrationNumber:       String;
machineNumber:            String;
ofdVATIN:                 String;
ofdName:                  String;

begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_REG_INFO);
fptr.fnQueryData;

taxationTypes             := fptr.getParamInt(1062);
agentSign                 := fptr.getParamInt(1057);
ffdVersion                := fptr.getParamInt(1209);

autoModeSign              := fptr.getParamBool(1001);
offlineModeSign           := fptr.getParamBool(1002);
encryptionSign            := fptr.getParamBool(1056);
internetSign              := fptr.getParamBool(1108);
serviceSign               := fptr.getParamBool(1109);
bsoSign                   := fptr.getParamBool(1110);
lotterySign               := fptr.getParamBool(1126);
gamblingSign              := fptr.getParamBool(1193);
exciseSign                := fptr.getParamBool(1207);
machineInstallationSign   := fptr.getParamBool(1221);

fnsUrl                    := fptr.getParamString(1060);
organizationAddress       := fptr.getParamString(1009);
organizationVATIN         := fptr.getParamString(1018);
organizationName          := fptr.getParamString(1048);
organizationEmail         := fptr.getParamString(1117);
paymentsAddress           := fptr.getParamString(1187);
registrationNumber        := fptr.getParamString(1037);
machineNumber             := fptr.getParamString(1036);
ofdVATIN                  := fptr.getParamString(1017);
ofdName                   := fptr.getParamString(1046);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_REG_INFO)
fptr.FnQueryData()

taxationTypes := fptr.GetParamInt(1062)
agentSign := fptr.GetParamInt(1057)
ffdVersion := fptr.GetParamInt(1209)

autoModeSign := fptr.GetParamBool(1001)
offlineModeSign := fptr.GetParamBool(1002)
encryptionSign := fptr.GetParamBool(1056)
internetSign := fptr.GetParamBool(1108)
serviceSign := fptr.GetParamBool(1109)
bsoSign := fptr.GetParamBool(1110)
lotterySign := fptr.GetParamBool(1126)
gamblingSign := fptr.GetParamBool(1193)
exciseSign := fptr.GetParamBool(1207)
machineInstallationSign := fptr.GetParamBool(1221)

fnsUrl := fptr.GetParamString(1060)
organizationAddress := fptr.GetParamString(1009)
organizationVATIN := fptr.GetParamString(1018)
organizationName := fptr.GetParamString(1048)
organizationEmail := fptr.GetParamString(1117)
paymentsAddress := fptr.GetParamString(1187)
registrationNumber := fptr.GetParamString(1037)
machineNumber := fptr.GetParamString(1036)
ofdVATIN := fptr.GetParamString(1017)
ofdName := fptr.GetParamString(1046)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_REG_INFO);
Fptr.fnQueryData();

taxationTypes = fptr.getParamInt(1062);
agentSign = fptr.getParamInt(1057);
ffdVersion = fptr.getParamInt(1209);

autoModeSign = fptr.getParamBool(1001);
offlineModeSign = fptr.getParamBool(1002);
encryptionSign = fptr.getParamBool(1056);
internetSign = fptr.getParamBool(1108);
serviceSign = fptr.getParamBool(1109);
bsoSign = fptr.getParamBool(1110);
lotterySign = fptr.getParamBool(1126);
gamblingSign = fptr.getParamBool(1193);
exciseSign = fptr.getParamBool(1207);
machineInstallationSign = fptr.getParamBool(1221);

fnsUrl = fptr.getParamString(1060);
organizationAddress = fptr.getParamString(1009);
organizationVATIN = fptr.getParamString(1018);
organizationName = fptr.getParamString(1048);
organizationEmail = fptr.getParamString(1117);
paymentsAddress = fptr.getParamString(1187);
registrationNumber = fptr.getParamString(1037);
machineNumber = fptr.getParamString(1036);
ofdVATIN = fptr.getParamString(1017);
ofdName = fptr.getParamString(1046);
|

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
1060 Адрес сайта ФНС string
1009 Адрес расчетов string
1018 ИНН пользователя string
1048 Наименование пользователя string
1062 Системы налогообложения int
1117 Адрес электронной почты отправителя чека string
1057 Признак агента int
1187 Место расчетов string
1037 Регистрационный номер ККТ string
1209 Номер версии ФФД int
1001 Признак автоматического режима bool
1036 Номер автомата string
1002 Признак автономного режима bool
1056 Признак шифрования bool
1108 Признак ККТ для расчетов в сети Интернет bool
1109 Признак расчетов за услуги bool
1110 Признак АС БСО bool
1126 Признак проведения лотерей bool
1193 Признак проведения азартных игр bool
1207 Признак подакцизного товара bool
1221 Признак установки принтера в автомате bool
1017 ИНН ОФД string
1046 Название ОФД string
LIBFPTR_PARAM_TRADE_MARKED_PRODUCTS Признак торговли маркированными
товарами bool
LIBFPTR_PARAM_INSURANCE_ACTIVITY Признак осуществления страховой
деятельности bool
LIBFPTR_PARAM_PAWN_SHOP_ACTIVITY Признак осуществления ломбардной
деятельности bool
LIBFPTR_PARAM_VENDING Признак применения в торговом автомате bool
LIBFPTR_PARAM_CATERING Признак осуществления услуг общ. питания bool
LIBFPTR_PARAM_WHOLESALE Признак оптовой торговли bool

Значение реквизита 1062 (системы налогообложения) — битовое поле,
значениями которого являются одно или несколько из следующих значений:

  • LIBFPTR_TT_OSN — общая;
  • LIBFPTR_TT_USN_INCOME — упрощенная доход;
  • LIBFPTR_TT_USN_INCOME_OUTCOME — упрощенная доход минус расход;
  • LIBFPTR_TT_ESN — единый сельскохозяйственный доход;
  • LIBFPTR_TT_PATENT — патентная система налогообложения.

Значение реквизита 1057 (признак агента) — битовое поле, значениями
которого являются одно или несколько из следующих значений:

  • LIBFPTR_AT_NONE — признак агента отсутствует;
  • LIBFPTR_AT_BANK_PAYING_AGENT — банковский платежный агент;
  • LIBFPTR_AT_BANK_PAYING_SUBAGENT — банковский платежный субагент;
  • LIBFPTR_AT_PAYING_AGENT — платежный агент;
  • LIBFPTR_AT_PAYING_SUBAGENT — платежный субагент;
  • LIBFPTR_AT_ATTORNEY — поверенный;
  • LIBFPTR_AT_COMMISSION_AGENT — комиссионер;
  • LIBFPTR_AT_ANOTHER — другой тип агента.

Реквизит 1209 (номер версии ФФД) может принимать следующие значения:

  • LIBFPTR_FFD_UNKNOWN — неизвестная;
  • LIBFPTR_FFD_1_0_5 — ФФД 1.05;
  • LIBFPTR_FFD_1_1 — ФФД 1.1;
  • LIBFPTR_FFD_1_2 — ФФД 1.2.

В случае отсутствия реквизита 1057 драйвер вернёт значение 0

Поддерживается для всех ККТ

Статус информационного обмена с ОФД

Запрос статуса информационного обмена с ОФД

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_OFD_EXCHANGE_STATUS);
libfptr_fn_query_data(fptr);

int exchangeStatus = libfptr_get_param_int(fptr, LIBFPTR_PARAM_OFD_EXCHANGE_STATUS);
int unsentCount = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENTS_COUNT);
int firstUnsentNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENT_NUMBER);
int ofdMessageRead = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_OFD_MESSAGE_READ) != 0);
int year, month, day, hour, minute, second;
libfptr_get_param_datetime(fptr, LIBFPTR_PARAM_DATE_TIME, &year, &month, &day, &hour, &minute, &second);
libfptr_get_param_datetime(fptr, LIBFPTR_PARAM_LAST_SUCCESSFUL_OKP, &year, &month, &day, &hour, &minute, &second);
|

|fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_OFD_EXCHANGE_STATUS);
fptr.fnQueryData();

uint exchangeStatus = fptr.getParamInt(LIBFPTR_PARAM_OFD_EXCHANGE_STATUS);
uint unsentCount = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENTS_COUNT);
uint firstUnsentNumber = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENT_NUMBER);
std::wstring ofdMessageRead = fptr.getParamBool(LIBFPTR_PARAM_OFD_MESSAGE_READ);
std::tm dateTime = fptr.getParamDateTime(LIBFPTR_PARAM_DATE_TIME);
std::tm okpTime = fptr.getParamDateTime(LIBFPTR_PARAM_LAST_SUCCESSFUL_OKP);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_OFD_EXCHANGE_STATUS)
fptr.fnQueryData()

exchangeStatus = fptr.getParamInt(IFptr.LIBFPTR_PARAM_OFD_EXCHANGE_STATUS)
unsentCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT)
firstUnsentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER)
ofdMessageRead = fptr.getParamBool(IFptr.LIBFPTR_PARAM_OFD_MESSAGE_READ)
dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME)
okpTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_LAST_SUCCESSFUL_OKP)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_OFD_EXCHANGE_STATUS);
fptr.fnQueryData();

long exchangeStatus = fptr.getParamInt(IFptr.LIBFPTR_PARAM_OFD_EXCHANGE_STATUS);
long unsentCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
long firstUnsentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
boolean ofdMessageRead = fptr.getParamBool(IFptr.LIBFPTR_PARAM_OFD_MESSAGE_READ);
Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
Date okpTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_LAST_SUCCESSFUL_OKP);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_OFD_EXCHANGE_STATUS);
fptr.fnQueryData();

long exchangeStatus = fptr.getParamInt(IFptr.LIBFPTR_PARAM_OFD_EXCHANGE_STATUS);
long unsentCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
long firstUnsentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
boolean ofdMessageRead = fptr.getParamBool(IFptr.LIBFPTR_PARAM_OFD_MESSAGE_READ);
Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
Date okpTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_LAST_SUCCESSFUL_OKP);
|

|[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_OFD_EXCHANGE_STATUS];
[fptr fnQueryData];

uint exchangeStatus = [fptr getParamInt:LIBFPTR_PARAM_OFD_EXCHANGE_STATUS];
uint unsentCount = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENTS_COUNT];
uint firstUnsentNumber = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENT_NUMBER];
bool ofdMessageRead = [fptr getParamBool:LIBFPTR_PARAM_OFD_MESSAGE_READ];
NSDate *dateTime = [fptr getParamDateTime:LIBFPTR_PARAM_DATE_TIME];
NSDate *okpTime = [fptr getParamDateTime:LIBFPTR_PARAM_LAST_SUCCESSFUL_OKP];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_OFD_EXCHANGE_STATUS);
fptr.fnQueryData();

uint exchangeStatus = fptr.getParamInt(Constants.LIBFPTR_PARAM_OFD_EXCHANGE_STATUS);
uint unsentCount = fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENTS_COUNT);
uint firstUnsentNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER);
bool ofdMessageRead = fptr.getParamBool(Constants.LIBFPTR_PARAM_OFD_MESSAGE_READ);
DateTime dateTime = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);
DateTime okpTime = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_LAST_SUCCESSFUL_OKP);
|

|var
exchangeStatus: Longint;
unsentCount: Longint;
firstUnsentNumber: Longint;
ofdMessageRead: LongBool;
dateTime: TDateTime;
okpTime: TDateTime;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_OFD_EXCHANGE_STATUS);
fptr.fnQueryData;

exchangeStatus      := fptr.getParamInt(fptr.LIBFPTR_PARAM_OFD_EXCHANGE_STATUS);
unsentCount         := fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
firstUnsentNumber   := fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
ofdMessageRead      := fptr.getParamBool(fptr.LIBFPTR_PARAM_OFD_MESSAGE_READ);
dateTime            := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME);
okpTime            := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_LAST_SUCCESSFUL_OKP);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_OFD_EXCHANGE_STATUS)
fptr.FnQueryData()

exchangeStatus := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_OFD_EXCHANGE_STATUS)
unsentCount := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENTS_COUNT)
firstUnsentNumber := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENT_NUMBER)
ofdMessageRead := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_OFD_MESSAGE_READ)
dateTime := fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_DATE_TIME)
okpTime := fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_LAST_SUCCESSFUL_OKP)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_OFD_EXCHANGE_STATUS);
Fptr.fnQueryData();

exchangeStatus = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_OFD_EXCHANGE_STATUS);
unsentCount = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
firstUnsentNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
ofdMessageRead = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_OFD_MESSAGE_READ);
dateTime = Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_DATE_TIME);
okpTime = Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_LAST_SUCCESSFUL_OKP);
|

Для запроса cтатуса информационного обмена с ОФД необходимо вызвать
метод /fnQueryData()/ с типом запроса LIBFPTR_PARAM_FN_DATA_TYPE,
равным LIBFPTR_FNDT_OFD_EXCHANGE_STATUS.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_OFD_EXCHANGE_STATUS Статус информационного обмена с ОФД
int
Битовое поле:

  • бит 0 — транспортное соединение установлено
  • бит 1 – есть сообщение для передачи в ОФД
  • бит 2 – ожидание ответного сообщения (квитанции) от ОФД
  • бит 3 – есть команда от ОФД
  • бит 4 – изменились настройки соединения с ОФД
  • бит 5 – ожидание ответа на команду от ОФД

LIBFPTR_PARAM_DOCUMENTS_COUNT Количество неотправленных документов int
LIBFPTR_PARAM_DOCUMENT_NUMBER Номер первого неотправленного документа
int
LIBFPTR_PARAM_DATE_TIME Дата и время первого неотправленного
документа datetime
LIBFPTR_PARAM_LAST_SUCCESSFUL_OKP Дата и время последнего успешного
ОКП datetime
LIBFPTR_PARAM_OFD_MESSAGE_READ Флаг наличия сообщения для ОФД bool

Поддерживается для всех ККТ

Информация о ФН

Запрос информации и статуса ФН

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_FN_INFO);
libfptr_fn_query_data(fptr);

std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_SERIAL_NUMBER, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_SERIAL_NUMBER, &str[0], str.size());
}
std::wstring fnSerial = std::wstring(&str[0]);

size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_FN_VERSION, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_FN_VERSION, &str[0], str.size());
}
std::wstring fnVersion = std::wstring(&str[0]);

size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_FN_EXECUTION, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_FN_EXECUTION, &str[0], str.size());
}
std::wstring fnExecution = std::wstring(&str[0]);

int fnType = libfptr_get_param_int(fptr, LIBFPTR_PARAM_FN_TYPE);
int fnState = libfptr_get_param_int(fptr, LIBFPTR_PARAM_FN_STATE);
int fnFlags = libfptr_get_param_int(fptr, LIBFPTR_PARAM_FN_FLAGS);

bool fnNeedReplacement = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_FN_NEED_REPLACEMENT) != 0);
bool fnExhausted = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_FN_RESOURCE_EXHAUSTED) != 0);
bool fnMemoryOverflow = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_FN_MEMORY_OVERFLOW) != 0);
bool fnOfdTimeout = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_FN_OFD_TIMEOUT) != 0);
bool fnCriticalError = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_FN_CRITICAL_ERROR) != 0);
bool fnContainsServerUri = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_FN_CONTAINS_KEYS_UPDATER_SERVER_URI) != 0);
if (fnContainsServerUri)
{
size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_FN_KEYS_UPDATER_SERVER_URI, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_FN_KEYS_UPDATER_SERVER_URI, &str[0], str.size());
}
std::wstring fnKeysUpdaterServerUri = std::wstring(&str[0]);
}

|

|fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_FN_INFO);
fptr.fnQueryData();

std::wstring fnSerial = fptr.getParamString(LIBFPTR_PARAM_SERIAL_NUMBER);
std::wstring fnVersion = fptr.getParamString(LIBFPTR_PARAM_FN_VERSION);
std::wstring fnExecution = fptr.getParamString(LIBFPTR_PARAM_FN_EXECUTION);

uint fnType = fptr.getParamInt(LIBFPTR_PARAM_FN_TYPE);
uint fnState = fptr.getParamInt(LIBFPTR_PARAM_FN_STATE);
uint fnFlags = fptr.getParamInt(LIBFPTR_PARAM_FN_FLAGS);

bool fnNeedReplacement = fptr.getParamBool(LIBFPTR_PARAM_FN_NEED_REPLACEMENT);
bool fnExhausted = fptr.getParamBool(LIBFPTR_PARAM_FN_RESOURCE_EXHAUSTED);
bool fnMemoryOverflow = fptr.getParamBool(LIBFPTR_PARAM_FN_MEMORY_OVERFLOW);
bool fnOfdTimeout = fptr.getParamBool(LIBFPTR_PARAM_FN_OFD_TIMEOUT);
bool fnCriticalError = fptr.getParamBool(LIBFPTR_PARAM_FN_CRITICAL_ERROR);
bool fnContainsServerUri = fptr.getParamBool(LIBFPTR_PARAM_FN_CONTAINS_KEYS_UPDATER_SERVER_URI);
if (fnContainsServerUri)
std::wstring fnKeysUpdaterServerUri = fptr.getParamString(LIBFPTR_PARAM_FN_KEYS_UPDATER_SERVER_URI);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_FN_INFO)
fptr.fnQueryData()

fnSerial = fptr.getParamString(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER)
fnVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_FN_VERSION)
fnExecution = fptr.getParamString(IFptr.LIBFPTR_PARAM_FN_EXECUTION)

fnType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_TYPE)
fnState = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_STATE)
fnFlags = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_FLAGS)

fnNeedReplacement = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_NEED_REPLACEMENT)
fnExhausted = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_RESOURCE_EXHAUSTED)
fnMemoryOverflow = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_MEMORY_OVERFLOW)
fnOfdTimeout = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_OFD_TIMEOUT)
fnCriticalError = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_CRITICAL_ERROR)
fnContainsServerUri = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_CONTAINS_KEYS_UPDATER_SERVER_URI)
if fnContainsServerUri:
fnKeysUpdaterServerUri = fptr.getParamString(IFptr.LIBFPTR_PARAM_FN_KEYS_UPDATER_SERVER_URI)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_FN_INFO);
fptr.fnQueryData();

String fnSerial = fptr.getParamString(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER);
String fnVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_FN_VERSION);
String fnExecution = fptr.getParamString(IFptr.LIBFPTR_PARAM_FN_EXECUTION);

long fnType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_TYPE);
long fnState = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_STATE);
long fnFlags = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_FLAGS);

boolean fnNeedReplacement = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_NEED_REPLACEMENT);
boolean fnExhausted = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_RESOURCE_EXHAUSTED);
boolean fnMemoryOverflow = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_MEMORY_OVERFLOW);
boolean fnOfdTimeout = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_OFD_TIMEOUT);
boolean fnCriticalError = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_CRITICAL_ERROR);
boolean fnContainsServerUri = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_CONTAINS_KEYS_UPDATER_SERVER_URI);
if (fnContainsServerUri)
{
String fnKeysUpdaterServerUri = fptr.getParamString(IFptr.LIBFPTR_PARAM_FN_KEYS_UPDATER_SERVER_URI);
}
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_FN_INFO);
fptr.fnQueryData();

String fnSerial = fptr.getParamString(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER);
String fnVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_FN_VERSION);
String fnExecution = fptr.getParamString(IFptr.LIBFPTR_PARAM_FN_EXECUTION);

long fnType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_TYPE);
long fnState = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_STATE);
long fnFlags = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_FLAGS);

boolean fnNeedReplacement = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_NEED_REPLACEMENT);
boolean fnExhausted = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_RESOURCE_EXHAUSTED);
boolean fnMemoryOverflow = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_MEMORY_OVERFLOW);
boolean fnOfdTimeout = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_OFD_TIMEOUT);
boolean fnCriticalError = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_CRITICAL_ERROR);
boolean fnContainsServerUri = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FN_CONTAINS_KEYS_UPDATER_SERVER_URI);
if (fnContainsServerUri)
{
String fnKeysUpdaterServerUri = fptr.getParamString(IFptr.LIBFPTR_PARAM_FN_KEYS_UPDATER_SERVER_URI);
}
|

|[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_FN_INFO];
[fptr fnQueryData];

NSString *fnSerial = [fptr getParamString:LIBFPTR_PARAM_SERIAL_NUMBER];
NSString *fnVersion = [fptr getParamString:LIBFPTR_PARAM_FN_VERSION];
NSString *fnExecution = [fptr getParamString:LIBFPTR_PARAM_FN_EXECUTION];

uint fnType = [fptr getParamInt:LIBFPTR_PARAM_FN_TYPE];
uint fnState = [fptr getParamInt:LIBFPTR_PARAM_FN_STATE];
uint fnFlags = [fptr getParamInt:LIBFPTR_PARAM_FN_FLAGS];

bool fnNeedReplacement = [fptr getParamBool:LIBFPTR_PARAM_FN_NEED_REPLACEMENT];
bool fnExhausted = [fptr getParamBool:LIBFPTR_PARAM_FN_RESOURCE_EXHAUSTED];
bool fnMemoryOverflow = [fptr getParamBool:LIBFPTR_PARAM_FN_MEMORY_OVERFLOW];
bool fnOfdTimeout = [fptr getParamBool:LIBFPTR_PARAM_FN_OFD_TIMEOUT];
bool fnCriticalError = [fptr getParamBool:LIBFPTR_PARAM_FN_CRITICAL_ERROR];
bool fnContainsServerUri = [fptr getParamBool:LIBFPTR_PARAM_FN_CONTAINS_KEYS_UPDATER_SERVER_URI];
if (fnContainsServerUri)
{
NSString *fnKeysUpdaterServerUri = [fptr getParamString:LIBFPTR_PARAM_FN_KEYS_UPDATER_SERVER_URI];
}
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_FN_INFO);
fptr.fnQueryData();

String fnSerial = fptr.getParamString(Constants.LIBFPTR_PARAM_SERIAL_NUMBER);
String fnVersion = fptr.getParamString(Constants.LIBFPTR_PARAM_FN_VERSION);
String fnExecution = fptr.getParamString(Constants.LIBFPTR_PARAM_FN_EXECUTION);

uint fnType = fptr.getParamInt(Constants.LIBFPTR_PARAM_FN_TYPE);
uint fnState = fptr.getParamInt(Constants.LIBFPTR_PARAM_FN_STATE);
uint fnFlags = fptr.getParamInt(Constants.LIBFPTR_PARAM_FN_FLAGS);

bool fnNeedReplacement = fptr.getParamBool(Constants.LIBFPTR_PARAM_FN_NEED_REPLACEMENT);
bool fnExhausted = fptr.getParamBool(Constants.LIBFPTR_PARAM_FN_RESOURCE_EXHAUSTED);
bool fnMemoryOverflow = fptr.getParamBool(Constants.LIBFPTR_PARAM_FN_MEMORY_OVERFLOW);
bool fnOfdTimeout = fptr.getParamBool(Constants.LIBFPTR_PARAM_FN_OFD_TIMEOUT);
bool fnCriticalError = fptr.getParamBool(Constants.LIBFPTR_PARAM_FN_CRITICAL_ERROR);
bool fnContainsServerUri = fptr.getParamBool(Constants.LIBFPTR_PARAM_FN_CONTAINS_KEYS_UPDATER_SERVER_URI);
if (fnContainsServerUri)
{
String fnKeysUpdaterServerUri = fptr.getParamString(Constants.LIBFPTR_PARAM_FN_KEYS_UPDATER_SERVER_URI);
}
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_FN_INFO)
fptr.FnQueryData()

fnSerial := fptr.GetParamString(fptr10.LIBFPTR_PARAM_SERIAL_NUMBER)
fnVersion := fptr.GetParamString(fptr10.LIBFPTR_PARAM_FN_VERSION)
fnExecution := fptr.GetParamString(fptr10.LIBFPTR_PARAM_FN_EXECUTION)

fnType := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_FN_TYPE)
fnState := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_FN_STATE)
fnFlags := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_FN_FLAGS)

fnNeedReplacement := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_FN_NEED_REPLACEMENT)
fnExhausted := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_FN_RESOURCE_EXHAUSTED)
fnMemoryOverflow := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_FN_MEMORY_OVERFLOW)
fnOfdTimeout := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_FN_OFD_TIMEOUT)
fnCriticalError := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_FN_CRITICAL_ERROR)
fnContainsServerUri := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_FN_CONTAINS_KEYS_UPDATER_SERVER_URI)
if fnContainsServerUri {
fnKeysUpdaterServerUri := fptr.GetParamString(fptr10.LIBFPTR_PARAM_FN_KEYS_UPDATER_SERVER_URI)
}
|

|var
fnSerial String;
fnVersion: String;
fnExecution: String;
fnType: Longint;
fnState: Longint;
fnFlags: Longint;
fnNeedReplacement: LongBool;
fnExhausted: LongBool;
fnMemoryOverflow: LongBool;
fnOfdTimeout: LongBool;
fnCriticalError: LongBool;
fnContainsServerUri: LongBool;
fnKeysUpdaterServerUri: String;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_FN_INFO);
fptr.fnQueryData;

fnSerial            := fptr.getParamString(fptr.LIBFPTR_PARAM_SERIAL_NUMBER);
fnVersion           := fptr.getParamString(fptr.LIBFPTR_PARAM_FN_VERSION);
fnExecution         := fptr.getParamString(fptr.LIBFPTR_PARAM_FN_EXECUTION);

fnType              := fptr.getParamInt(fptr.LIBFPTR_PARAM_FN_TYPE);
fnState             := fptr.getParamInt(fptr.LIBFPTR_PARAM_FN_STATE);
fnFlags             := fptr.getParamInt(fptr.LIBFPTR_PARAM_FN_FLAGS);

fnNeedReplacement   := fptr.getParamBool(fptr.LIBFPTR_PARAM_FN_NEED_REPLACEMENT);
fnExhausted         := fptr.getParamBool(fptr.LIBFPTR_PARAM_FN_RESOURCE_EXHAUSTED);
fnMemoryOverflow    := fptr.getParamBool(fptr.LIBFPTR_PARAM_FN_MEMORY_OVERFLOW);
fnOfdTimeout        := fptr.getParamBool(fptr.LIBFPTR_PARAM_FN_OFD_TIMEOUT);
fnCriticalError     := fptr.getParamBool(fptr.LIBFPTR_PARAM_FN_CRITICAL_ERROR);
fnContainsServerUri := fptr.getParamBool(fptr.LIBFPTR_PARAM_FN_CONTAINS_KEYS_UPDATER_SERVER_URI);
if fnContainsServerUri then
    fnKeysUpdaterServerUri := fptr.getParamString(fptr.LIBFPTR_PARAM_FN_KEYS_UPDATER_SERVER_URI);

end;
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_FN_INFO);
Fptr.fnQueryData();

fnSerial = Fptr.getParamString(Fptr.LIBFPTR_PARAM_SERIAL_NUMBER);
fnVersion = Fptr.getParamString(Fptr.LIBFPTR_PARAM_FN_VERSION);
fnExecution = Fptr.getParamString(Fptr.LIBFPTR_PARAM_FN_EXECUTION);

fnType = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_FN_TYPE);
fnState = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_FN_STATE);
fnFlags = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_FN_FLAGS);

fnNeedReplacement = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_FN_NEED_REPLACEMENT);
fnExhausted = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_FN_RESOURCE_EXHAUSTED);
fnMemoryOverflow = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_FN_MEMORY_OVERFLOW);
fnOfdTimeout = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_FN_OFD_TIMEOUT);
fnCriticalError = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_FN_CRITICAL_ERROR);
fnContainsServerUri = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_FN_CONTAINS_KEYS_UPDATER_SERVER_URI);
if (fnContainsServerUri)
{
fnKeysUpdaterServerUri = Fptr.getParamString(Fptr.LIBFPTR_PARAM_FN_KEYS_UPDATER_SERVER_URI);
}
|

Для запроса информации и статуса ФН необходимо вызвать метод / fnQueryData()/ с типом запроса LIBFPTR_PARAM_FN_DATA_TYPE равным
LIBFPTR_FNDT_FN_INFO.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_SERIAL_NUMBER Серийный номер ФН string
LIBFPTR_PARAM_FN_VERSION Версия ФН string
LIBFPTR_PARAM_FN_EXECUTION Исполнение ФН (только для ФН-М) string
LIBFPTR_PARAM_FN_TYPE Тип ФН int
LIBFPTR_PARAM_FN_STATE Состояние ФН int
LIBFPTR_PARAM_FN_FLAGS Нерасшифрованный байт флагов ФН int
LIBFPTR_PARAM_FN_NEED_REPLACEMENT Требуется срочная замена ФН bool
LIBFPTR_PARAM_FN_RESOURCE_EXHAUSTED Исчерпан ресурс ФН bool
LIBFPTR_PARAM_FN_MEMORY_OVERFLOW Память ФН переполнена bool
LIBFPTR_PARAM_FN_OFD_TIMEOUT Превышено время ожидания ответа от ОФД
bool
LIBFPTR_PARAM_FN_CRITICAL_ERROR Критическая ошибка ФН bool
LIBFPTR_PARAM_FN_CONTAINS_KEYS_UPDATER_SERVER_URI ФН содержит URI
сервера ОКП bool
LIBFPTR_PARAM_FN_KEYS_UPDATER_SERVER_URI URI сервера ОКП string

Тип ФН (LIBFPTR_PARAM_FN_TYPE) может принимать следующие значения:

  • LIBFPTR_FNT_UNKNOWN — неизвестная (не удалось получить);
  • LIBFPTR_FNT_DEBUG — отладочная версия;
  • LIBFPTR_FNT_RELEASE — боевая версия.

Состояние ФН (LIBFPTR_PARAM_FN_STATE) может принимать следующие значения:

  • LIBFPTR_FNS_INITIAL — настройка ФН;
  • LIBFPTR_FNS_CONFIGURED — готовность к активации;
  • LIBFPTR_FNS_FISCAL_MODE — фискальный режим;
  • LIBFPTR_FNS_POSTFISCAL_MODE — постфискальный режим;
  • LIBFPTR_FNS_ACCESS_ARCHIVE — доступ к архиву.

Параметр LIBFPTR_PARAM_FN_KEYS_UPDATER_SERVER_URI содержит актуальное
значение URI сервера ОКП, если параметр
LIBFPTR_PARAM_FN_CONTAINS_KEYS_UPDATER_SERVER_URI = True.

Поддерживается для всех ККТ

Информация о последней регистрации / перерегистрации

Запрос информации о последней регистрации / перерегистрации

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_LAST_REGISTRATION);
libfptr_fn_query_data(fptr);

int documentNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENT_NUMBER);
int registrationsCount = libfptr_get_param_int(fptr, LIBFPTR_PARAM_REGISTRATIONS_COUNT);
int year, month, day, hour, minute, second;
libfptr_get_param_datetime(fptr, LIBFPTR_PARAM_DATE_TIME, &year, &month, &day, &hour, &minute, &second);
|

|fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_LAST_REGISTRATION);
fptr.fnQueryData();

uint documentNumber = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENT_NUMBER);
uint registrationsCount = fptr.getParamInt(LIBFPTR_PARAM_REGISTRATIONS_COUNT);
std::tm dateTime = fptr.getParamDateTime(LIBFPTR_PARAM_DATE_TIME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_LAST_REGISTRATION)
fptr.fnQueryData()

documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER)
registrationsCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_REGISTRATIONS_COUNT)
dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_LAST_REGISTRATION);
fptr.fnQueryData();

long documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
long registrationsCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_REGISTRATIONS_COUNT);
Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_LAST_REGISTRATION);
fptr.fnQueryData();

long documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
long registrationsCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_REGISTRATIONS_COUNT);
Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_LAST_REGISTRATION];
[fptr fnQueryData];

uint documentNumber = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENT_NUMBER];
uint registrationsCount = [fptr getParamInt:LIBFPTR_PARAM_REGISTRATIONS_COUNT];
NSDate *dateTime = [fptr getParamDateTime:LIBFPTR_PARAM_DATE_TIME];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_LAST_REGISTRATION);
fptr.fnQueryData();

uint documentNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER);
uint registrationsCount = fptr.getParamInt(Constants.LIBFPTR_PARAM_REGISTRATIONS_COUNT);
DateTime dateTime = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);
|

|var
documentNumber: Longint;
registrationsCount: Longint;
dateTime: TDateTime;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_LAST_REGISTRATION);
fptr.fnQueryData;

documentNumber      := fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
registrationsCount  := fptr.getParamInt(fptr.LIBFPTR_PARAM_REGISTRATIONS_COUNT);
dateTime            := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_LAST_REGISTRATION)
fptr.FnQueryData()

documentNumber := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENT_NUMBER)
registrationsCount := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_REGISTRATIONS_COUNT)
dateTime := fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_DATE_TIME)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_LAST_REGISTRATION);
Fptr.fnQueryData();

documentNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
registrationsCount = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_REGISTRATIONS_COUNT);
dateTime = Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_DATE_TIME);
|

Для запроса информации о последней регистрации / перерегистрации
необходимо вызвать метод /fnQueryData()/ с типом запроса
LIBFPTR_PARAM_FN_DATA_TYPE равным LIBFPTR_FNDT_LAST_REGISTRATION.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_DOCUMENT_NUMBER Номер документа int
LIBFPTR_PARAM_REGISTRATIONS_COUNT Номер регистрации / перерегистрации
int
LIBFPTR_PARAM_DATE_TIME Дата и время документа datetime

Поддерживается для всех ККТ

Информация о последнем чеке

Запрос информации о последнем чеке

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_LAST_RECEIPT);
libfptr_fn_query_data(fptr);

int documentNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENT_NUMBER);
int receiptType = libfptr_get_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE);

double receiptSum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_RECEIPT_SUM);

std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_FISCAL_SIGN, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_FISCAL_SIGN, &str[0], str.size());
}
std::wstring fiscalSign = std::wstring(&str[0]);

int year, month, day, hour, minute, second;
libfptr_get_param_datetime(fptr, LIBFPTR_PARAM_DATE_TIME, &year, &month, &day, &hour, &minute, &second);
|

|fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_LAST_RECEIPT);
fptr.fnQueryData();

uint documentNumber = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENT_NUMBER);
uint receiptType = fptr.getParamInt(LIBFPTR_PARAM_RECEIPT_TYPE);

double receiptSum = fptr.getParamDouble(LIBFPTR_PARAM_RECEIPT_SUM);

std::wstring fiscalSign = fptr.getParamString(LIBFPTR_PARAM_FISCAL_SIGN);

std::tm dateTime = fptr.getParamDateTime(LIBFPTR_PARAM_DATE_TIME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_LAST_RECEIPT)
fptr.fnQueryData()

documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER)
receiptType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE)

receiptSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_RECEIPT_SUM)

fiscalSign = fptr.getParamString(IFptr.LIBFPTR_PARAM_FISCAL_SIGN)

dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_LAST_RECEIPT);
fptr.fnQueryData();

long documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
long receiptType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE);

double receiptSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_RECEIPT_SUM);

String fiscalSign = fptr.getParamString(IFptr.LIBFPTR_PARAM_FISCAL_SIGN);

Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_LAST_RECEIPT);
fptr.fnQueryData();

long documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
long receiptType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE);

double receiptSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_RECEIPT_SUM);

String fiscalSign = fptr.getParamString(IFptr.LIBFPTR_PARAM_FISCAL_SIGN);

Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_LAST_RECEIPT];
[fptr fnQueryData];

uint documentNumber = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENT_NUMBER];
uint receiptType = [fptr getParamInt:LIBFPTR_PARAM_RECEIPT_TYPE];

double receiptSum = [fptr getParamDouble:LIBFPTR_PARAM_RECEIPT_SUM];

NSString *fiscalSign = [fptr getParamString:LIBFPTR_PARAM_FISCAL_SIGN];

NSDate *dateTime = [fptr getParamDateTime:LIBFPTR_PARAM_DATE_TIME];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_LAST_RECEIPT);
fptr.fnQueryData();

uint documentNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER);
uint receiptType = fptr.getParamInt(Constants.LIBFPTR_PARAM_RECEIPT_TYPE);

double receiptSum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_RECEIPT_SUM);

String fiscalSign = fptr.getParamString(Constants.LIBFPTR_PARAM_FISCAL_SIGN);

DateTime dateTime = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);
|

|var
documentNumber: Longint;
receiptType: Longint;
receiptSum: Double;
fiscalSign: String;
dateTime: TDateTime;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_LAST_RECEIPT);
fptr.fnQueryData;

documentNumber  := fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
receiptType     := fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_TYPE);

receiptSum      := fptr.getParamDouble(fptr.LIBFPTR_PARAM_RECEIPT_SUM);

fiscalSign      := fptr.getParamString(fptr.LIBFPTR_PARAM_FISCAL_SIGN);

dateTime        := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_LAST_RECEIPT)
fptr.FnQueryData()

documentNumber := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENT_NUMBER)
receiptType := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE)

receiptSum := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_RECEIPT_SUM)

fiscalSign := fptr.GetParamString(fptr10.LIBFPTR_PARAM_FISCAL_SIGN)

dateTime := fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_DATE_TIME)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_LAST_RECEIPT);
Fptr.fnQueryData();

documentNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
receiptType = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE);

receiptSum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_RECEIPT_SUM);

fiscalSign = Fptr.getParamString(Fptr.LIBFPTR_PARAM_FISCAL_SIGN);

dateTime = Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_DATE_TIME);
|

Для запроса информации о последнем чеке в ФН необходимо вызвать метод / fnQueryData()/ с типом запроса LIBFPTR_PARAM_FN_DATA_TYPE равным
LIBFPTR_FNDT_LAST_RECEIPT.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_DOCUMENT_NUMBER Номер документа int
LIBFPTR_PARAM_RECEIPT_TYPE Тип чека int
LIBFPTR_PARAM_RECEIPT_SUM Сумма чека double
LIBFPTR_PARAM_FISCAL_SIGN Фискальный признак документа string
LIBFPTR_PARAM_DATE_TIME Дата и время документа datetime

Тип чека (LIBFPTR_PARAM_RECEIPT_TYPE) может принимать следующие значения:

  • LIBFPTR_RT_SELL — чек прихода;
  • LIBFPTR_RT_SELL_RETURN — чек возврата прихода;
  • LIBFPTR_RT_SELL_CORRECTION — чек коррекции прихода;
  • LIBFPTR_RT_BUY — чек расхода;
  • LIBFPTR_RT_BUY_RETURN — чек возврата расхода;
  • LIBFPTR_RT_BUY_CORRECTION — чек коррекции расхода.

Параметр LIBFPTR_PARAM_RECEIPT_TYPE поддерживается только для ККТ
версий 3.X

Не рекомендуется использовать данный запрос из-за его неуниверсальности.
Для выяснения информации о последнем чеке лучше использовать запрос
LIBFPTR_FNDT_LAST_DOCUMENT

Поддерживается для всех ККТ

Информация о последнем документе

Запрос информации о последнем фискальном документе

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_LAST_DOCUMENT);
libfptr_fn_query_data(fptr);

int documentNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENT_NUMBER);

std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_FISCAL_SIGN, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_FISCAL_SIGN, &str[0], str.size());
}
std::wstring fiscalSign = std::wstring(&str[0]);

int year, month, day, hour, minute, second;
libfptr_get_param_datetime(fptr, LIBFPTR_PARAM_DATE_TIME, &year, &month, &day, &hour, &minute, &second);
|

|fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_LAST_DOCUMENT);
fptr.fnQueryData();

uint documentNumber = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENT_NUMBER);

std::wstring fiscalSign = fptr.getParamString(LIBFPTR_PARAM_FISCAL_SIGN);

std::tm dateTime = fptr.getParamDateTime(LIBFPTR_PARAM_DATE_TIME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_LAST_DOCUMENT)
fptr.fnQueryData()

documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER)

fiscalSign = fptr.getParamString(IFptr.LIBFPTR_PARAM_FISCAL_SIGN)

dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_LAST_DOCUMENT);
fptr.fnQueryData();

long documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);

String fiscalSign = fptr.getParamString(IFptr.LIBFPTR_PARAM_FISCAL_SIGN);

Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_LAST_DOCUMENT);
fptr.fnQueryData();

long documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);

String fiscalSign = fptr.getParamString(IFptr.LIBFPTR_PARAM_FISCAL_SIGN);

Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_LAST_DOCUMENT];
[fptr fnQueryData];

uint documentNumber = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENT_NUMBER];

NSString *fiscalSign = [fptr getParamString:LIBFPTR_PARAM_FISCAL_SIGN];

NSDate *dateTime = [fptr getParamDateTime:LIBFPTR_PARAM_DATE_TIME];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_LAST_DOCUMENT);
fptr.fnQueryData();

uint documentNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER);

String fiscalSign = fptr.getParamString(Constants.LIBFPTR_PARAM_FISCAL_SIGN);

DateTime dateTime = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);
|

|var
documentNumber: Longint;
fiscalSign: String;
dateTime: TDateTime;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_LAST_DOCUMENT);
fptr.fnQueryData;

documentNumber  := fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);

fiscalSign      := fptr.getParamString(fptr.LIBFPTR_PARAM_FISCAL_SIGN);

dateTime        := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_LAST_DOCUMENT)
fptr.FnQueryData()

documentNumber := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENT_NUMBER)

fiscalSign := fptr.GetParamString(fptr10.LIBFPTR_PARAM_FISCAL_SIGN)

dateTime := fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_DATE_TIME)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_LAST_DOCUMENT);
Fptr.fnQueryData();

documentNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);

fiscalSign = Fptr.getParamString(Fptr.LIBFPTR_PARAM_FISCAL_SIGN);

dateTime = Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_DATE_TIME);
|

Для запроса информации о последнем чеке в ФН необходимо вызвать метод / fnQueryData()/ с типом запроса LIBFPTR_PARAM_FN_DATA_TYPE равным
LIBFPTR_FNDT_LAST_DOCUMENT.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_DOCUMENT_NUMBER Номер документа int
LIBFPTR_PARAM_FISCAL_SIGN Фискальный признак документа string
LIBFPTR_PARAM_DATE_TIME Дата и время документа datetime

Поддерживается для всех ККТ

Информация о смене

Запрос информации о текущей смене в ФН

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_SHIFT);
libfptr_fn_query_data(fptr);

int receiptNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_RECEIPT_NUMBER);
int shiftNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_SHIFT_NUMBER);
|

|fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_SHIFT);
fptr.fnQueryData();

uint receiptNumber = fptr.getParamInt(LIBFPTR_PARAM_RECEIPT_NUMBER);
uint shiftNumber = fptr.getParamInt(LIBFPTR_PARAM_SHIFT_NUMBER);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_SHIFT)
fptr.fnQueryData()

receiptNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_NUMBER)
shiftNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SHIFT_NUMBER)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_SHIFT);
fptr.fnQueryData();

long receiptNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_NUMBER);
long shiftNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SHIFT_NUMBER);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_SHIFT);
fptr.fnQueryData();

long receiptNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_NUMBER);
long shiftNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SHIFT_NUMBER);
|

|[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_SHIFT];
[fptr fnQueryData];

uint receiptNumber = [fptr getParamInt:LIBFPTR_PARAM_RECEIPT_NUMBER];
uint shiftNumber = [fptr getParamInt:LIBFPTR_PARAM_SHIFT_NUMBER];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_SHIFT);
fptr.fnQueryData();

uint receiptNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_RECEIPT_NUMBER);
uint shiftNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_SHIFT_NUMBER);
|

|var
receiptNumber: Longint;
shiftNumber: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_SHIFT);
fptr.fnQueryData;

receiptNumber   := fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_NUMBER);
shiftNumber     := fptr.getParamInt(fptr.LIBFPTR_PARAM_SHIFT_NUMBER);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_SHIFT)
fptr.FnQueryData()

receiptNumber := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_RECEIPT_NUMBER)
shiftNumber := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_SHIFT_NUMBER)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_SHIFT);
Fptr.fnQueryData();

receiptNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_RECEIPT_NUMBER);
shiftNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_SHIFT_NUMBER);
|

Для запроса информации о смене в ФН необходимо вызвать метод / fnQueryData()/ с типом запроса LIBFPTR_PARAM_FN_DATA_TYPE равным
LIBFPTR_FNDT_SHIFT.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_RECEIPT_NUMBER Количество чеков за смену int
LIBFPTR_PARAM_SHIFT_NUMBER Номер смены int

Поддерживается для всех ККТ

Количество ФД за смену

Запрос количества ФД за смену

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_DOCUMENTS_COUNT_IN_SHIFT);
libfptr_fn_query_data(fptr);

int documentsCount = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_DOCUMENTS_COUNT_IN_SHIFT);
fptr.fnQueryData();

uint documentsCount = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_DOCUMENTS_COUNT_IN_SHIFT)
fptr.fnQueryData()

documentsCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_DOCUMENTS_COUNT_IN_SHIFT);
fptr.fnQueryData();

long documentsCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_DOCUMENTS_COUNT_IN_SHIFT);
fptr.fnQueryData();

long documentsCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_DOCUMENTS_COUNT_IN_SHIFT];
[fptr fnQueryData];

uint documentsCount = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENTS_COUNT];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_DOCUMENTS_COUNT_IN_SHIFT);
fptr.fnQueryData();

uint documentsCount = fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

|var
documentsCount: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_DOCUMENTS_COUNT_IN_SHIFT);
fptr.fnQueryData;

documentsCount := fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_DOCUMENTS_COUNT_IN_SHIFT)
fptr.FnQueryData()

documentsCount := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENTS_COUNT)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_DOCUMENTS_COUNT_IN_SHIFT);
Fptr.fnQueryData();

documentsCount = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
|

Для запроса количества фискальных документов за смену необходимо вызвать
метод /fnQueryData()/ с типом запроса LIBFPTR_PARAM_FN_DATA_TYPE
равным LIBFPTR_FNDT_DOCUMENTS_COUNT_IN_SHIFT.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_DOCUMENTS_COUNT Количество ФД за смену int

Результат метода актуален только после закрытия смены

Поддерживается для всех ККТ

Версии ФФД

Запрос версий ФФД

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_FFD_VERSIONS);
libfptr_fn_query_data(fptr);

int deviceFfdVersion = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DEVICE_FFD_VERSION);
int fnFfdVersion = libfptr_get_param_int(fptr, LIBFPTR_PARAM_FN_FFD_VERSION);
int maxFnFfdVersion = libfptr_get_param_int(fptr, LIBFPTR_PARAM_FN_MAX_FFD_VERSION);
int ffdVersion = libfptr_get_param_int(fptr, LIBFPTR_PARAM_FFD_VERSION);
int maxFfdVersion = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DEVICE_MAX_FFD_VERSION);
int minFfdVersion = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DEVICE_MIN_FFD_VERSION);
int versionKKT = libfptr_get_param_int(fptr, LIBFPTR_PARAM_VERSION);
|

|fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_FFD_VERSIONS);
fptr.fnQueryData();

uint deviceFfdVersion = fptr.getParamInt(LIBFPTR_PARAM_DEVICE_FFD_VERSION);
uint fnFfdVersion = fptr.getParamInt(LIBFPTR_PARAM_FN_FFD_VERSION);
uint maxFnFfdVersion = fptr.getParamInt(LIBFPTR_PARAM_FN_MAX_FFD_VERSION);
uint ffdVersion = fptr.getParamInt(LIBFPTR_PARAM_FFD_VERSION);
uint maxFfdVersion = fptr.getParamInt(LIBFPTR_PARAM_DEVICE_MAX_FFD_VERSION);
uint minFfdVersion = fptr.getParamInt(LIBFPTR_PARAM_DEVICE_MIN_FFD_VERSION);
uint versionKKT = fptr.getParamInt(LIBFPTR_PARAM_VERSION);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_FFD_VERSIONS)
fptr.fnQueryData()

deviceFfdVersion = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DEVICE_FFD_VERSION)
fnFfdVersion = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_FFD_VERSION)
maxFnFfdVersion = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_MAX_FFD_VERSION)
ffdVersion = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FFD_VERSION)
maxFfdVersion = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DEVICE_MAX_FFD_VERSION)
minFfdVersion = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DEVICE_MIN_FFD_VERSION)
versionKKT = fptr.getParamInt(IFptr.LIBFPTR_PARAM_VERSION);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_FFD_VERSIONS);
fptr.fnQueryData();

long deviceFfdVersion = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DEVICE_FFD_VERSION);
long fnFfdVersion = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_FFD_VERSION);
long maxFnFfdVersion = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_MAX_FFD_VERSION);
long ffdVersion = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FFD_VERSION);
long maxFfdVersion = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DEVICE_MAX_FFD_VERSION);
long minFfdVersion = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DEVICE_MIN_FFD_VERSION);
long versionKKT = fptr.getParamInt(IFptr.LIBFPTR_PARAM_VERSION);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_FFD_VERSIONS);
fptr.fnQueryData();

long deviceFfdVersion = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DEVICE_FFD_VERSION);
long fnFfdVersion = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_FFD_VERSION);
long maxFnFfdVersion = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_MAX_FFD_VERSION);
long ffdVersion = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FFD_VERSION);
long maxFfdVersion = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DEVICE_MAX_FFD_VERSION);
long minFfdVersion = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DEVICE_MIN_FFD_VERSION);
long versionKKT = fptr.getParamInt(IFptr.LIBFPTR_PARAM_VERSION);
|

|[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_FFD_VERSIONS];
[fptr fnQueryData];

uint deviceFfdVersion = [fptr getParamInt:LIBFPTR_PARAM_DEVICE_FFD_VERSION];
uint fnFfdVersion = [fptr getParamInt:LIBFPTR_PARAM_FN_FFD_VERSION];
uint maxFnFfdVersion = [fptr getParamInt:LIBFPTR_PARAM_FN_MAX_FFD_VERSION];
uint ffdVersion = [fptr getParamInt:LIBFPTR_PARAM_FFD_VERSION];
uint maxFfdVersion = [fptr getParamInt:LIBFPTR_PARAM_DEVICE_MAX_FFD_VERSION];
uint minFfdVersion = [fptr getParamInt:LIBFPTR_PARAM_DEVICE_MIN_FFD_VERSION];
uint versionKKT = [fptr getParamInt:LIBFPTR_PARAM_VERSION];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_FFD_VERSIONS);
fptr.fnQueryData();

uint deviceFfdVersion = fptr.getParamInt(Constants.LIBFPTR_PARAM_DEVICE_FFD_VERSION);
uint fnFfdVersion = fptr.getParamInt(Constants.LIBFPTR_PARAM_FN_FFD_VERSION);
uint maxFnFfdVersion = fptr.getParamInt(Constants.LIBFPTR_PARAM_FN_MAX_FFD_VERSION);
uint ffdVersion = fptr.getParamInt(Constants.LIBFPTR_PARAM_FFD_VERSION);
uint maxFfdVersion = fptr.getParamInt(Constants.LIBFPTR_PARAM_DEVICE_MAX_FFD_VERSION);
uint minFfdVersion = fptr.getParamInt(Constants.LIBFPTR_PARAM_DEVICE_MIN_FFD_VERSION);
uint versionKKT = fptr.getParamInt(Constants.LIBFPTR_PARAM_VERSION);
|

|var
deviceFfdVersion: Longint;
fnFfdVersion: Longint;
maxFnFfdVersion: Longint;
ffdVersion: Longint;
maxFfdVersion: Longint;
minFfdVersion: Longint;
versionKKT: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_FFD_VERSIONS);
fptr.fnQueryData;

deviceFfdVersion    := fptr.getParamInt(fptr.LIBFPTR_PARAM_DEVICE_FFD_VERSION);
fnFfdVersion        := fptr.getParamInt(fptr.LIBFPTR_PARAM_FN_FFD_VERSION);
maxFnFfdVersion     := fptr.getParamInt(fptr.LIBFPTR_PARAM_FN_MAX_FFD_VERSION);
ffdVersion          := fptr.getParamInt(fptr.LIBFPTR_PARAM_FFD_VERSION);
maxFfdVersion       := fptr.getParamInt(fptr.LIBFPTR_PARAM_DEVICE_MAX_FFD_VERSION);
minFfdVersion       := fptr.getParamInt(fptr.LIBFPTR_PARAM_DEVICE_MIN_FFD_VERSION);
versionKKT          := fptr.getParamInt(fptr.LIBFPTR_PARAM_VERSION);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_FFD_VERSIONS)
fptr.FnQueryData()

deviceFfdVersion := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DEVICE_FFD_VERSION)
fnFfdVersion := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_FN_FFD_VERSION)
maxFnFfdVersion := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_FN_MAX_FFD_VERSION)
ffdVersion := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_FFD_VERSION)
maxFfdVersion := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DEVICE_MAX_FFD_VERSION)
minFfdVersion := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DEVICE_MIN_FFD_VERSION)
versionKKT := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_VERSION);
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_FFD_VERSIONS);
Fptr.fnQueryData();

deviceFfdVersion = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DEVICE_FFD_VERSION);
fnFfdVersion = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_FN_FFD_VERSION);
maxFnFfdVersion = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_FN_MAX_FFD_VERSION);
ffdVersion = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_FFD_VERSION);
maxFfdVersion = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DEVICE_MAX_FFD_VERSION);
minFfdVersion = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DEVICE_MIN_FFD_VERSION);
versionKKT = fptr.getParamInt(Fptr.LIBFPTR_PARAM_VERSION);
|

Для запроса информации о версиях ФФД необходимо вызвать метод / fnQueryData()/ с типом запроса LIBFPTR_PARAM_FN_DATA_TYPE равным
LIBFPTR_FNDT_FFD_VERSIONS.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_DEVICE_FFD_VERSION Версия ФФД ККТ int
LIBFPTR_PARAM_FN_FFD_VERSION Версия ФФД ФН int
LIBFPTR_PARAM_FN_MAX_FFD_VERSION Максимальная версия ФФД ФН int
LIBFPTR_PARAM_FFD_VERSION Версия ФФД int
LIBFPTR_PARAM_DEVICE_MAX_FFD_VERSION Максимальная версия ФФД ККТ int
LIBFPTR_PARAM_DEVICE_MIN_FFD_VERSION Минимальная версия ФФД ККТ int
LIBFPTR_PARAM_VERSION Версия модели ККТ int

Указанные выше версии ФФД принимают следующие значения:

  • LIBFPTR_FFD_UNKNOWN — неизвестная;
  • LIBFPTR_FFD_1_0_5 — ФФД 1.05;
  • LIBFPTR_FFD_1_1 — ФФД 1.1;
  • LIBFPTR_FFD_1_2 — ФФД 1.2.

Поддерживается для всех ККТ

Срок действия ФН

Запрос срока действия ФН

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_VALIDITY);
libfptr_fn_query_data(fptr);

int registrationsRemain = libfptr_get_param_int(fptr, LIBFPTR_PARAM_REGISTRATIONS_REMAIN);
int registrationsCount = libfptr_get_param_int(fptr, LIBFPTR_PARAM_REGISTRATIONS_COUNT);
int year, month, day, hour, minute, second;
libfptr_get_param_datetime(fptr, LIBFPTR_PARAM_DATE_TIME, &year, &month, &day, &hour, &minute, &second);
|

|fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_VALIDITY);
fptr.fnQueryData();

uint registrationsRemain = fptr.getParamInt(LIBFPTR_PARAM_REGISTRATIONS_REMAIN);
uint registrationsCount = fptr.getParamInt(LIBFPTR_PARAM_REGISTRATIONS_COUNT);
std::tm dateTime = fptr.getParamDateTime(LIBFPTR_PARAM_DATE_TIME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_VALIDITY)
fptr.fnQueryData()

registrationsRemain = fptr.getParamInt(IFptr.LIBFPTR_PARAM_REGISTRATIONS_REMAIN)
registrationsCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_REGISTRATIONS_COUNT)
dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_VALIDITY);
fptr.fnQueryData();

long registrationsRemain = fptr.getParamInt(IFptr.LIBFPTR_PARAM_REGISTRATIONS_REMAIN);
long registrationsCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_REGISTRATIONS_COUNT);
Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_VALIDITY);
fptr.fnQueryData();

long registrationsRemain = fptr.getParamInt(IFptr.LIBFPTR_PARAM_REGISTRATIONS_REMAIN);
long registrationsCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_REGISTRATIONS_COUNT);
Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_VALIDITY];
[fptr fnQueryData];

uint registrationsRemain = [fptr getParamInt:LIBFPTR_PARAM_REGISTRATIONS_REMAIN];
uint registrationsCount = [fptr getParamInt:LIBFPTR_PARAM_REGISTRATIONS_COUNT];
NSDate *dateTime = [fptr getParamDateTime:LIBFPTR_PARAM_DATE_TIME];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_VALIDITY);
fptr.fnQueryData();

uint registrationsRemain = fptr.getParamInt(Constants.LIBFPTR_PARAM_REGISTRATIONS_REMAIN);
uint registrationsCount = fptr.getParamInt(Constants.LIBFPTR_PARAM_REGISTRATIONS_COUNT);
DateTime dateTime = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);
|

|var
registrationsRemain: Longint;
registrationsCount: Longint;
dateTime: TDateTime;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_VALIDITY);
fptr.fnQueryData;

registrationsRemain := fptr.getParamInt(fptr.LIBFPTR_PARAM_REGISTRATIONS_REMAIN);
registrationsCount  := fptr.getParamInt(fptr.LIBFPTR_PARAM_REGISTRATIONS_COUNT);
dateTime:           := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_VALIDITY)
fptr.FnQueryData()

registrationsRemain := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_REGISTRATIONS_REMAIN)
registrationsCount := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_REGISTRATIONS_COUNT)
dateTime := fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_DATE_TIME)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_VALIDITY);
Fptr.fnQueryData();

registrationsRemain = Fptr.getParamInt(Constants.LIBFPTR_PARAM_REGISTRATIONS_REMAIN);
registrationsCount = Fptr.getParamInt(Constants.LIBFPTR_PARAM_REGISTRATIONS_COUNT);
dateTime = Fptr.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);
|

Для запроса срока действия ФН необходимо вызвать метод /fnQueryData()/
с типом запроса LIBFPTR_PARAM_FN_DATA_TYPE равным LIBFPTR_FNDT_VALIDITY.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_DATE_TIME Срок действия ФН datetime
LIBFPTR_PARAM_REGISTRATIONS_COUNT Сделано перерегистраций int
LIBFPTR_PARAM_REGISTRATIONS_REMAIN Осталось перерегистраций int

Поддерживается для всех ККТ

Оставшиеся дни работы ФН

Запрос оставшихся дней работы ФН

|int year, month, day, hour, minute, second;

libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_DATE_TIME);
libfptr_query_data(fptr);
libfptr_get_param_datetime(fptr, LIBFPTR_PARAM_DATE_TIME, &year, &month, &day, &hour, &minute, &second);

libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_VALIDITY_DAYS);
libfptr_set_param_datetime(fptr, LIBFPTR_PARAM_DATE_TIME, year, month, day, hour, minute, second);
libfptr_fn_query_data(fptr);
int daysRemain = libfptr_get_param_int(fptr, LIBFPTR_PARAM_FN_DAYS_REMAIN);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_DATE_TIME);
fptr.queryData();
std::tm dateTime = fptr.getParamDateTime(LIBFPTR_PARAM_DATE_TIME);

fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_VALIDITY_DAYS);
fptr.setParam(LIBFPTR_PARAM_DATE_TIME, dateTime);
fptr.fnQueryData();
uint daysRemain = fptr.getParamInt(LIBFPTR_PARAM_FN_DAYS_REMAIN);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_DATE_TIME)
fptr.queryData()
dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME)

fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_VALIDITY_DAYS)
fptr.setParam(IFptr.LIBFPTR_PARAM_DATE_TIME, dateTime)
fptr.fnQueryData()
daysRemain = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_DAYS_REMAIN)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_DATE_TIME);
fptr.queryData();
Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);

fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_VALIDITY_DAYS);
fptr.setParam(IFptr.LIBFPTR_PARAM_DATE_TIME, dateTime);
fptr.fnQueryData();
long daysRemain = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_DAYS_REMAIN);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_DATE_TIME);
fptr.queryData();
Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);

fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_VALIDITY_DAYS);
fptr.setParam(IFptr.LIBFPTR_PARAM_DATE_TIME, dateTime);
fptr.fnQueryData();
long daysRemain = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_DAYS_REMAIN);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_DATE_TIME];
[fptr queryData];
NSDate *dateTime = [fptr getParamDateTime:LIBFPTR_PARAM_DATE_TIME];

[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_VALIDITY_DAYS];
[fptr setParam:LIBFPTR_PARAM_DATE_TIME NSDateParam:dateTime];
[fptr fnQueryData];
uint daysRemain = [fptr getParamInt:LIBFPTR_PARAM_FN_DAYS_REMAIN];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_DATE_TIME);
fptr.queryData();
DateTime dateTime = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);

fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_VALIDITY_DAYS);
fptr.setParam(Constants.LIBFPTR_PARAM_DATE_TIME, dateTime);
fptr.fnQueryData();
uint daysRemain = fptr.getParamInt(Constants.LIBFPTR_PARAM_FN_DAYS_REMAIN);
|

|var
registrationsRemain: Longint;
registrationsCount: Longint;
dateTime: TDateTime;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_DATE_TIME);
fptr.queryData;
dateTime := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME);

fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_VALIDITY_DAYS);
fptr.setParam(fptr.LIBFPTR_PARAM_DATE_TIME, dateTime);
fptr.fnQueryData;
daysRemain := fptr.getParamInt(fptr.LIBFPTR_PARAM_FN_DAYS_REMAIN);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_DATE_TIME)
fptr.QueryData()
dateTime := fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_DATE_TIME)

fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_VALIDITY_DAYS)
fptr.SetParam(fptr10.LIBFPTR_PARAM_DATE_TIME, dateTime)
fptr.FnQueryData()
daysRemain := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_FN_DAYS_REMAIN)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_DATE_TIME);
Fptr.queryData();
dateTime = Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_DATE_TIME);

Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_VALIDITY_DAYS);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DATE_TIME, dateTime);
Fptr.fnQueryData();
daysRemain = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_FN_DAYS_REMAIN);
|

Для запроса количества дней, оставшегося до окончания срока действия ФН,
необходимо вызвать метод /fnQueryData()/ с типом запроса
LIBFPTR_PARAM_FN_DATA_TYPE равным LIBFPTR_FNDT_VALIDITY_DAYS и
передать дату, от которой считать дни, в параметре
LIBFPTR_PARAM_DATE_TIME. В параметр LIBFPTR_PARAM_FN_DAYS_REMAIN
запишется оставшееся количество дней.

Значение времени в параметре LIBFPTR_PARAM_DATE_TIME игнорируется.

В случае, если переданная дата больше, чем срок действия ФН, параметр
LIBFPTR_PARAM_FN_DAYS_REMAIN будет иметь значение 0.

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.1

Ошибки обмена с ОФД

Запрос ошибок обмена с ОФД

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_ERRORS);
libfptr_fn_query_data(fptr);

std::vector str(1024);
int size = 0;

int networkError = libfptr_get_param_int(fptr, LIBFPTR_PARAM_NETWORK_ERROR);
size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_NETWORK_ERROR_TEXT, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_NETWORK_ERROR_TEXT, &str[0], str.size());
}
std::wstring networkErrorText = std::wstring(&str[0]);

int ofdError = libfptr_get_param_int(fptr, LIBFPTR_PARAM_OFD_ERROR);
size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_OFD_ERROR_TEXT, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_OFD_ERROR_TEXT, &str[0], str.size());
}
std::wstring ofdErrorText = std::wstring(&str[0]);

int fnError = libfptr_get_param_int(fptr, LIBFPTR_PARAM_FN_ERROR);
size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_FN_ERROR_TEXT, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_FN_ERROR_TEXT, &str[0], str.size());
}
std::wstring fnErrorText = std::wstring(&str[0]);

int documentNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENT_NUMBER);
int commandCode = libfptr_get_param_int(fptr, LIBFPTR_PARAM_COMMAND_CODE);

int year, month, day, hour, minute, second;
libfptr_get_param_datetime(fptr, LIBFPTR_PARAM_DATE_TIME, &year, &month, &day, &hour, &minute, &second);

bool dataForSendIsEmpty = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_DATA_FOR_SEND_IS_EMPTY) != 0);
|

|fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_ERRORS);
fptr.fnQueryData();

uint networkError = fptr.getParamInt(LIBFPTR_PARAM_NETWORK_ERROR);
std::wstring networkErrorText = fptr.getParamString(LIBFPTR_PARAM_NETWORK_ERROR_TEXT);

uint ofdError = fptr.getParamInt(LIBFPTR_PARAM_OFD_ERROR);
std::wstring nofdErrorText = fptr.getParamString(LIBFPTR_PARAM_OFD_ERROR_TEXT);

uint fnError = fptr.getParamInt(LIBFPTR_PARAM_FN_ERROR);
std::wstring nfnErrorText = fptr.getParamString(LIBFPTR_PARAM_FN_ERROR_TEXT);

uint documentNumber = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENT_NUMBER);
uint commandCode = fptr.getParamInt(LIBFPTR_PARAM_COMMAND_CODE);

std::tm dateTime = fptr.getParamDateTime(LIBFPTR_PARAM_DATE_TIME);
bool dataForSendIsEmpty = fptr.getParamBool(LIBFPTR_PARAM_DATA_FOR_SEND_IS_EMPTY);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_ERRORS)
fptr.fnQueryData()

networkError = fptr.getParamInt(IFptr.LIBFPTR_PARAM_NETWORK_ERROR)
networkErrorText = fptr.getParamString(IFptr.LIBFPTR_PARAM_NETWORK_ERROR_TEXT)

ofdError = fptr.getParamInt(IFptr.LIBFPTR_PARAM_OFD_ERROR)
ofdErrorText = fptr.getParamString(IFptr.LIBFPTR_PARAM_OFD_ERROR_TEXT)

fnError = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_ERROR)
fnErrorText = fptr.getParamString(IFptr.LIBFPTR_PARAM_FN_ERROR_TEXT)

documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER)
commandCode = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COMMAND_CODE)

dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME)
dataForSendIsEmpty = fptr.getParamBool(IFptr.LIBFPTR_PARAM_DATA_FOR_SEND_IS_EMPTY)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_ERRORS);
fptr.fnQueryData();

long networkError = fptr.getParamInt(IFptr.LIBFPTR_PARAM_NETWORK_ERROR);
String networkErrorText = fptr.getParamString(IFptr.LIBFPTR_PARAM_NETWORK_ERROR_TEXT);

long ofdError = fptr.getParamInt(IFptr.LIBFPTR_PARAM_OFD_ERROR);
String ofdErrorText = fptr.getParamString(IFptr.LIBFPTR_PARAM_OFD_ERROR_TEXT);

long fnError = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_ERROR);
String fnErrorText = fptr.getParamString(IFptr.LIBFPTR_PARAM_FN_ERROR_TEXT);

long documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
long commandCode = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COMMAND_CODE);

Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
boolean dataForSendIsEmpty = fptr.getParamBool(IFptr.LIBFPTR_PARAM_DATA_FOR_SEND_IS_EMPTY);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_ERRORS);
fptr.fnQueryData();

long networkError = fptr.getParamInt(IFptr.LIBFPTR_PARAM_NETWORK_ERROR);
String networkErrorText = fptr.getParamString(IFptr.LIBFPTR_PARAM_NETWORK_ERROR_TEXT);

long ofdError = fptr.getParamInt(IFptr.LIBFPTR_PARAM_OFD_ERROR);
String ofdErrorText = fptr.getParamString(IFptr.LIBFPTR_PARAM_OFD_ERROR_TEXT);

long fnError = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_ERROR);
String fnErrorText = fptr.getParamString(IFptr.LIBFPTR_PARAM_FN_ERROR_TEXT);

long documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
long commandCode = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COMMAND_CODE);

Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
boolean dataForSendIsEmpty = fptr.getParamBool(IFptr.LIBFPTR_PARAM_DATA_FOR_SEND_IS_EMPTY);
|

|[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_ERRORS];
[fptr fnQueryData];

uint networkError = [fptr getParamInt:LIBFPTR_PARAM_NETWORK_ERROR];
NSString *networkErrorText = [fptr getParamString:LIBFPTR_PARAM_NETWORK_ERROR_TEXT];

uint ofdError = [fptr getParamInt:LIBFPTR_PARAM_OFD_ERROR];
NSString *ofdErrorText = [fptr getParamString:LIBFPTR_PARAM_OFD_ERROR_TEXT];

uint fnError = [fptr getParamInt:LIBFPTR_PARAM_FN_ERROR];
NSString *fnErrorText = [fptr getParamString:LIBFPTR_PARAM_FN_ERROR_TEXT];

uint documentNumber = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENT_NUMBER];
uint commandCode = [fptr getParamInt:LIBFPTR_PARAM_COMMAND_CODE];

NSDate *dateTime = [fptr getParamDateTime:LIBFPTR_PARAM_DATE_TIME];
bool dataForSendIsEmpty = [fptr getParamBool:LIBFPTR_PARAM_DATA_FOR_SEND_IS_EMPTY];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_ERRORS);
fptr.fnQueryData();

uint networkError = fptr.getParamInt(Constants.LIBFPTR_PARAM_NETWORK_ERROR);
String networkErrorText = fptr.getParamString(Constants.LIBFPTR_PARAM_NETWORK_ERROR_TEXT);

uint ofdError = fptr.getParamInt(Constants.LIBFPTR_PARAM_OFD_ERROR);
String ofdErrorText = fptr.getParamString(Constants.LIBFPTR_PARAM_OFD_ERROR_TEXT);

uint fnError = fptr.getParamInt(Constants.LIBFPTR_PARAM_FN_ERROR);
String fnErrorText = fptr.getParamString(Constants.LIBFPTR_PARAM_FN_ERROR_TEXT);

uint documentNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER);
uint commandCode = fptr.getParamInt(Constants.LIBFPTR_PARAM_COMMAND_CODE);

DateTime dateTime = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);
bool dataForSendIsEmpty = fptr.getParamBool(Constants.LIBFPTR_PARAM_DATA_FOR_SEND_IS_EMPTY);
|

|var
networkError: Longint;
networkErrorText: String;
ofdError: Longint;
ofdErrorText: String;
fnError: Longint;
fnErrorText: String;
documentNumber: Longint;
commandCode: Longint;
dataForSendIsEmpty: Boolean;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_ERRORS);
fptr.fnQueryData;

networkError        := fptr.getParamInt(fptr.LIBFPTR_PARAM_NETWORK_ERROR);
networkErrorText:   := fptr.getParamString(fptr.LIBFPTR_PARAM_NETWORK_ERROR_TEXT);

ofdError:           := fptr.getParamInt(fptr.LIBFPTR_PARAM_OFD_ERROR);
ofdErrorText:       := fptr.getParamString(fptr.LIBFPTR_PARAM_OFD_ERROR_TEXT);

fnError:            := fptr.getParamInt(fptr.LIBFPTR_PARAM_FN_ERROR);
fnErrorText:        := fptr.getParamString(fptr.LIBFPTR_PARAM_FN_ERROR_TEXT);

documentNumber:     := fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
commandCode:        := fptr.getParamInt(fptr.LIBFPTR_PARAM_COMMAND_CODE);

dateTime:           := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME);
dataForSendIsEmpty  := fptr.getParamBool(fptr.LIBFPTR_PARAM_DATA_FOR_SEND_IS_EMPTY);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_ERRORS)
fptr.FnQueryData()

networkError := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_NETWORK_ERROR)
networkErrorText := fptr.GetParamString(fptr10.LIBFPTR_PARAM_NETWORK_ERROR_TEXT)

ofdError := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_OFD_ERROR)
ofdErrorText := fptr.GetParamString(fptr10.LIBFPTR_PARAM_OFD_ERROR_TEXT)

fnError := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_FN_ERROR)
fnErrorText := fptr.GetParamString(fptr10.LIBFPTR_PARAM_FN_ERROR_TEXT)

documentNumber := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENT_NUMBER)
commandCode := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_COMMAND_CODE)

dateTime := fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_DATE_TIME)
dataForSendIsEmpty := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_DATA_FOR_SEND_IS_EMPTY)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_ERRORS);
Fptr.fnQueryData();

networkError = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_NETWORK_ERROR);
networkErrorText = Fptr.getParamString(Fptr.LIBFPTR_PARAM_NETWORK_ERROR_TEXT);

ofdError = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_OFD_ERROR);
ofdErrorText = Fptr.getParamString(Fptr.LIBFPTR_PARAM_OFD_ERROR_TEXT);

fnError = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_FN_ERROR);
fnErrorText = Fptr.getParamString(Fptr.LIBFPTR_PARAM_FN_ERROR_TEXT);

documentNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
commandCode = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_COMMAND_CODE);

dateTime = Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_DATE_TIME);
dataForSendIsEmpty = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_DATA_FOR_SEND_IS_EMPTY);
|

Для запроса ошибок обмена с ОФД необходимо вызвать метод / fnQueryData()/ с типом запроса LIBFPTR_PARAM_FN_DATA_TYPE равным
LIBFPTR_FNDT_ERRORS.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_DATE_TIME Дата и время последнего успешного соединения
с ОФД datetime
LIBFPTR_PARAM_NETWORK_ERROR Код ошибки сети int
LIBFPTR_PARAM_NETWORK_ERROR_TEXT Текст ошибки сети string
LIBFPTR_PARAM_OFD_ERROR Код ошибки ОФД int
LIBFPTR_PARAM_OFD_ERROR_TEXT Текст ошибки ОФД string
LIBFPTR_PARAM_FN_ERROR Код ошибки ФН int
LIBFPTR_PARAM_FN_ERROR_TEXT Текст ошибки ФН string
LIBFPTR_PARAM_DOCUMENT_NUMBER Номер ФД, на котором произошла ошибка int
LIBFPTR_PARAM_COMMAND_CODE Команда ФН, на которой произошла ошибка int
LIBFPTR_PARAM_DATA_FOR_SEND_IS_EMPTY Контейнер для отправки пуст bool

Поддерживается для всех ККТ

Квитанция ОФД

Запрос квитанции ОФД

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_TICKET_BY_DOC_NUMBER);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_DOCUMENT_NUMBER, 12);
libfptr_fn_query_data(fptr);

int documentNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENT_NUMBER);

int year, month, day, hour, minute, second;
libfptr_get_param_datetime(fptr, LIBFPTR_PARAM_DATE_TIME, &year, &month, &day, &hour, &minute, &second);

std::vector ofdFiscalSign(128);
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_OFD_FISCAL_SIGN,
&ofdFiscalSign[0], ofdFiscalSign.size());
if (size > ofdFiscalSign.size())
{
ofdFiscalSign.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_OFD_FISCAL_SIGN,
&ofdFiscalSign[0], ofdFiscalSign.size());
}
ofdFiscalSign.resize(size);
|

|fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_TICKET_BY_DOC_NUMBER);
fptr.setParam(LIBFPTR_PARAM_DOCUMENT_NUMBER, 12);
fptr.fnQueryData();

uint documentNumber = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENT_NUMBER);
std::tm dateTime = fptr.getParamDateTime(LIBFPTR_PARAM_DATE_TIME);
std::vector ofdFiscalSign = fptr.getParamByteArray(LIBFPTR_PARAM_OFD_FISCAL_SIGN);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_TICKET_BY_DOC_NUMBER)
fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 12)
fptr.fnQueryData()

documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER)
dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME)
ofdFiscalSign = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_OFD_FISCAL_SIGN)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_TICKET_BY_DOC_NUMBER);
fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 12);
fptr.fnQueryData();

long documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
byte[] ofdFiscalSign = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_OFD_FISCAL_SIGN);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_TICKET_BY_DOC_NUMBER);
fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 12);
fptr.fnQueryData();

long documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
byte[] ofdFiscalSign = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_OFD_FISCAL_SIGN);
|

|[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_TICKET_BY_DOC_NUMBER];
[fptr setParam:LIBFPTR_PARAM_DOCUMENT_NUMBER intParam:12];
[fptr fnQueryData];

uint documentNumber = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENT_NUMBER];
NSDate* dateTime = [fptr getParamDateTime:LIBFPTR_PARAM_DATE_TIME];
NSData* ofdFiscalSign = [fptr getParamByteArray:LIBFPTR_PARAM_OFD_FISCAL_SIGN];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_TICKET_BY_DOC_NUMBER);
fptr.setParam(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER, 12);
fptr.fnQueryData();

uint documentNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER);
DateTime dateTime = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);
byte[] ofdFiscalSign = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_OFD_FISCAL_SIGN);
|

|var
documentNumber: Longint;
dateTime: TDateTime;
ofdFiscalSign: Variant;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_TICKET_BY_DOC_NUMBER);
fptr.setParam(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 12);
fptr.fnQueryData;

documentNumber  := fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
dateTime        := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME);
ofdFiscalSign   := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_OFD_FISCAL_SIGN);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_TICKET_BY_DOC_NUMBER)
fptr.SetParam(fptr10.LIBFPTR_PARAM_DOCUMENT_NUMBER, 12)
fptr.FnQueryData()

documentNumber := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENT_NUMBER)
dateTime := fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_DATE_TIME)
ofdFiscalSign := fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_OFD_FISCAL_SIGN)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_TICKET_BY_DOC_NUMBER);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 12);
Fptr.fnQueryData();

documentNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
dateTime = Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_DATE_TIME);
ofdFiscalSign = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_OFD_FISCAL_SIGN);
|

Для запроса квитанции ОФД необходимо вызвать метод /fnQueryData()/ с
типом запроса LIBFPTR_PARAM_FN_DATA_TYPE равным
LIBFPTR_FNDT_TICKET_BY_DOC_NUMBER и указать номер документа в
параметре LIBFPTR_PARAM_DOCUMENT_NUMBER.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_DATE_TIME Дата и время из квитанции ОФД (UTC) datetime
LIBFPTR_PARAM_DOCUMENT_NUMBER Номер ФД из квитанции int
LIBFPTR_PARAM_OFD_FISCAL_SIGN Фискальный признак ОФД bytearray

Поддерживается для всех ККТ

Информация о документе

Запрос информации о документе

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_DOCUMENT_BY_NUMBER);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_DOCUMENT_NUMBER, 24);
libfptr_fn_query_data(fptr);

int documentType = libfptr_get_param_int(fptr, LIBFPTR_PARAM_FN_DOCUMENT_TYPE);
int documentNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENT_NUMBER);
bool hasOfdTicket = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_HAS_OFD_TICKET) != 0);

int year, month, day, hour, minute, second;
libfptr_get_param_datetime(fptr, LIBFPTR_PARAM_DATE_TIME, &year, &month, &day, &hour, &minute, &second);

std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_FISCAL_SIGN, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_FISCAL_SIGN, &str[0], str.size());
}
std::wstring fiscalSign = std::wstring(&str[0]);
|

|fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_DOCUMENT_BY_NUMBER);
fptr.setParam(LIBFPTR_PARAM_DOCUMENT_NUMBER, 24);
fptr.fnQueryData();

uint documentType = fptr.getParamInt(LIBFPTR_PARAM_FN_DOCUMENT_TYPE);
uint documentNumber = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENT_NUMBER);
bool hasOfdTicket = fptr.getParamBool(LIBFPTR_PARAM_HAS_OFD_TICKET);
std::tm dateTime = fptr.getParamDateTime(LIBFPTR_PARAM_DATE_TIME);
std::wstring fiscalSign = fptr.getParamString(LIBFPTR_PARAM_FISCAL_SIGN);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_DOCUMENT_BY_NUMBER)
fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 24)
fptr.fnQueryData()

documentType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_DOCUMENT_TYPE)
documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER)
hasOfdTicket = fptr.getParamBool(IFptr.LIBFPTR_PARAM_HAS_OFD_TICKET)
dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME)
fiscalSign = fptr.getParamString(IFptr.LIBFPTR_PARAM_FISCAL_SIGN)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_DOCUMENT_BY_NUMBER);
fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 24);
fptr.fnQueryData();

long documentType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_DOCUMENT_TYPE);
long documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
boolean hasOfdTicket = fptr.getParamBool(IFptr.LIBFPTR_PARAM_HAS_OFD_TICKET);
Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
String fiscalSign = fptr.getParamString(IFptr.LIBFPTR_PARAM_FISCAL_SIGN);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_DOCUMENT_BY_NUMBER);
fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 24);
fptr.fnQueryData();

long documentType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_DOCUMENT_TYPE);
long documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
boolean hasOfdTicket = fptr.getParamBool(IFptr.LIBFPTR_PARAM_HAS_OFD_TICKET);
Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
String fiscalSign = fptr.getParamString(IFptr.LIBFPTR_PARAM_FISCAL_SIGN);
|

|[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_DOCUMENT_BY_NUMBER];
[fptr setParam:LIBFPTR_PARAM_DOCUMENT_NUMBER intParam:24];
[fptr fnQueryData];

uint documentType = [fptr getParamInt:LIBFPTR_PARAM_FN_DOCUMENT_TYPE];
uint documentNumber = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENT_NUMBER];
bool hasOfdTicket = [fptr getParamBool:LIBFPTR_PARAM_HAS_OFD_TICKET];
NSDate *dateTime = [fptr getParamDateTime:LIBFPTR_PARAM_DATE_TIME];
NSString *fiscalSign = [fptr getParamString:LIBFPTR_PARAM_FISCAL_SIGN];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_DOCUMENT_BY_NUMBER);
fptr.setParam(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER, 24);
fptr.fnQueryData();

uint documentType = fptr.getParamInt(Constants.LIBFPTR_PARAM_FN_DOCUMENT_TYPE);
uint documentNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER);
bool hasOfdTicket = fptr.getParamBool(Constants.LIBFPTR_PARAM_HAS_OFD_TICKET);
DateTime dateTime = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);
String fiscalSign = fptr.getParamString(Constants.LIBFPTR_PARAM_FISCAL_SIGN);
|

|var
documentNumber: Longint;
hasOfdTicket: LongBool;
dateTime: TDateTime;
fiscalSign: String;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_DOCUMENT_BY_NUMBER);
fptr.setParam(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 24);
fptr.fnQueryData;

documentType    := fptr.getParamInt(fptr.LIBFPTR_PARAM_FN_DOCUMENT_TYPE);
documentNumber  := fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
hasOfdTicket    := fptr.getParamBool(fptr.LIBFPTR_PARAM_HAS_OFD_TICKET);
dateTime        := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME);
fiscalSign      := fptr.getParamString(fptr.LIBFPTR_PARAM_FISCAL_SIGN);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_DOCUMENT_BY_NUMBER)
fptr.SetParam(fptr10.LIBFPTR_PARAM_DOCUMENT_NUMBER, 24)
fptr.FnQueryData()

documentType := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_FN_DOCUMENT_TYPE)
documentNumber := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENT_NUMBER)
hasOfdTicket := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_HAS_OFD_TICKET)
dateTime := fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_DATE_TIME)
fiscalSign := fptr.GetParamString(fptr10.LIBFPTR_PARAM_FISCAL_SIGN)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_DOCUMENT_BY_NUMBER);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 24);
Fptr.fnQueryData();

documentType = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_FN_DOCUMENT_TYPE);
documentNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
hasOfdTicket = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_HAS_OFD_TICKET);
dateTime = Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_DATE_TIME);
fiscalSign = Fptr.getParamString(Fptr.LIBFPTR_PARAM_FISCAL_SIGN);
|

Для запроса информации о фискальном документе необходимо вызвать метод
/fnQueryData()/ с типом запроса LIBFPTR_PARAM_FN_DATA_TYPE равным
LIBFPTR_FNDT_DOCUMENT_BY_NUMBER и указать номер документа в параметре
LIBFPTR_PARAM_DOCUMENT_NUMBER.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_FN_DOCUMENT_TYPE Тип документа int
LIBFPTR_PARAM_DATE_TIME Дата и время документа datetime
LIBFPTR_PARAM_DOCUMENT_NUMBER Номер ФД int
LIBFPTR_PARAM_HAS_OFD_TICKET Флаг наличия подтверждения ОФД bool
LIBFPTR_PARAM_FISCAL_SIGN Фискальный признак string

Параметр LIBFPTR_PARAM_FN_DOCUMENT_TYPE может принимать следующие
значения:

  • LIBFPTR_FN_DOC_REGISTRATION — Отчет о регистрации;
  • LIBFPTR_FN_DOC_OPEN_SHIFT — Отчет об открытии смены;
  • LIBFPTR_FN_DOC_RECEIPT — Кассовый чек;
  • LIBFPTR_FN_DOC_BSO — Бланк строгой отчетности;
  • LIBFPTR_FN_DOC_CLOSE_SHIFT — Отчет о закрытии смены;
  • LIBFPTR_FN_DOC_CLOSE_FN — Отчет о закрытии фискального накопителя;
  • LIBFPTR_FN_DOC_OPERATOR_CONFIRMATION — Подтверждение оператора;
  • LIBFPTR_FN_DOC_REREGISTRATION — Отчет об изменении параметров
    регистрации;
  • LIBFPTR_FN_DOC_EXCHANGE_STATUS — Отчет о текущем состоянии расчетов;
  • LIBFPTR_FN_DOC_CORRECTION — Кассовый чек коррекции;
  • LIBFPTR_FN_DOC_BSO_CORRECTION — Бланк строгой отчетности коррекции.

Дополнительные выходные параметры зависят от значения
LIBFPTR_PARAM_FN_DOCUMENT_TYPE.

Выходные параметры для отчета регистрации:

Параметр Описание Тип Комментарий
1018 ИНН пользователя string
1037 Регистрационный номер ККТ string
1062 Системы налогообложения int
1001 Признак автоматического режима bool
1002 Признак автономного режима bool
1056 Признак шифрования bool
1108 Признак ККТ для расчетов в сети Интернет bool
1109 Признак расчетов за услуги bool
1110 Признак АС БСО bool
1126 Признак проведения лотерей bool Только ФФД 1.1
1193 Признак проведения азартных игр bool Только ФФД 1.1
1207 Признак подакцизного товара bool Только ФФД 1.1
1221 Признак установки принтера в автомате bool Только ФФД 1.1
1290 Признаки условий применения ККТ int Только ФФД 1.2
1017 ИНН ОФД string ФФД ≥ 1.1

Выходные параметры для отчета перерегистрации:

Параметр Описание Тип Комментарий
1018 ИНН пользователя string
1037 Регистрационный номер ККТ string
1062 Системы налогообложения int
1001 Признак автоматического режима bool
1002 Признак автономного режима bool
1056 Признак шифрования bool
1108 Признак ККТ для расчетов в сети Интернет bool
1109 Признак расчетов за услуги bool
1110 Признак АС БСО bool
1101 Причина перерегистрации int Только ФФД 1.05
1126 Признак проведения лотерей bool Только ФФД 1.1
1193 Признак проведения азартных игр bool Только ФФД 1.1
1207 Признак подакцизного товара bool Только ФФД 1.1
1221 Признак установки принтера в автомате bool Только ФФД 1.1
1290 Признаки условий применения ККТ int Только ФФД 1.2
1017 ИНН ОФД string ФФД ≥ 1.1
1205 Коды причин перерегистрации int ФФД ≥ 1.1

Выходные параметры для отчета о закрытии ФН:

Параметр Описание Тип
1018 ИНН пользователя string
1037 Регистрационный номер ККТ string

Выходные параметры для отчетов об открытии / закрытии смены:

Параметр Описание Тип
1038 или LIBFPTR_PARAM_SHIFT_NUMBER Номер смены int

Выходные параметры для чеков и БСО:

Параметр Описание Тип
1054 Признак расчета int
1020 Сумма расчета double
LIBFPTR_PARAM_HAS_ADDITIONAL_DATA Есть дополнительные данные по чеку.
Все реквизиты ниже доступны только в случае, если этот параметр равен
true bool
1031 Сумма по чеку (БСО) наличными double
1081 Сумма по чеку (БСО) безналичными double
1215 Сумма по чеку (БСО) предоплатой double
1216 Сумма по чеку (БСО) постоплатой double
1217 Сумма по чеку (БСО) встречным предоставлением double
1102 Сумма НДС чека по ставке 20% double
1103 Сумма НДС чека по ставке 10% double
1104 Сумма расчёта по чеку с НДС по ставке 0% double
1105 Сумма расчёта по чеку без НДС double
1106 Сумма НДС чека по расч. ставке 20/120 double
1107 Сумма НДС чека по расч. ставке 10/110 double
1192 Дополнительный реквизит чека (БСО) string
LIBFPTR_PARAM_FISCAL_SIGN_ARCHIVE Фискальный признак сообщения для
архива (ФПА) bytearray

Выходные параметры для отчета о состоянии расчетов:

Параметр Описание Тип
1097 Количество непереданных ФД int
1098 Дата первого из непереданных ФД datetime

Значение реквизита 1062 (системы налогообложения) — битовое поле,
значениями которого являются одно или несколько из следующих значений:

  • LIBFPTR_TT_OSN — общая;
  • LIBFPTR_TT_USN_INCOME — упрощенная доход;
  • LIBFPTR_TT_USN_INCOME_OUTCOME — упрощенная доход минус расход;
  • LIBFPTR_TT_ESN — единый сельскохозяйственный доход;
  • LIBFPTR_TT_PATENT — патентная система налогообложения.

Возможные значения реквизитов 1101 и 1205 приведены в разделе
Перерегистрация ККТ <#fn_change_params>.

Возможные значения для реквизита 1054 (признак расчета):

  • 1 — приход;
  • 2 — возврат прихода;
  • 3 — расход;
  • 4 — возврат расхода.

Поддерживается для всех ККТ

Детализация ошибки ФН

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_ERROR_DETAIL);
libfptr_fn_query_data(fptr);

std::vector details(128);
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_FN_ERROR_DATA,
&details[0], details.size());
if (size > details.size())
{
details.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_FN_ERROR_DATA,
&details[0], details.size());
}
details.resize(size);
|

|fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_ERROR_DETAIL);
fptr.fnQueryData();

std::vector details = fptr.getParamByteArray(LIBFPTR_PARAM_FN_ERROR_DATA);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_ERROR_DETAIL)
fptr.fnQueryData()

details = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_FN_ERROR_DATA)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_ERROR_DETAIL);
fptr.fnQueryData();

byte[] details = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_FN_ERROR_DATA);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_ERROR_DETAIL);
fptr.fnQueryData();

byte[] details = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_FN_ERROR_DATA);
|

|[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_ERROR_DETAIL];
[fptr fnQueryData];

NSData *details = [fptr getParamDateTime:LIBFPTR_PARAM_FN_ERROR_DATA];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_ERROR_DETAIL);
fptr.fnQueryData();

byte[] details = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_FN_ERROR_DATA);
|

|var
details: Variant;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_ERROR_DETAIL);
fptr.fnQueryData;

details := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_FN_ERROR_DATA);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_ERROR_DETAIL)
fptr.FnQueryData()

details := fptr.getParamByteArray(Constants.LIBFPTR_PARAM_FN_ERROR_DATA)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_ERROR_DETAIL);
Fptr.fnQueryData();

details = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_FN_DOCUMENT_TYPE);
|

Для запроса детализации ошибки ФН необходимо вызвать метод / fnQueryData()/ с типом запроса LIBFPTR_PARAM_FN_DATA_TYPE равным
LIBFPTR_FNDT_ERROR_DETAIL.

Детализация ошибки будет доступна в выходном параметре
LIBFPTR_PARAM_FN_ERROR_DATA.

Поддерживается для всех ККТ

Ресурс памяти ФН

Запрос ресурса памяти ФН

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_FREE_MEMORY);
libfptr_fn_query_data(fptr);

uint documentsCount = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENTS_COUNT);
uint freeMemory = libfptr_get_param_int(fptr, LIBFPTR_PARAM_FREE_MEMORY);
|

|fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_FREE_MEMORY);
fptr.fnQueryData();

uint documentsCount = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENTS_COUNT);
uint freeMemory = fptr.getParamInt(LIBFPTR_PARAM_FREE_MEMORY);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_FREE_MEMORY)
fptr.fnQueryData()

documentsCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT)
freeMemory = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FREE_MEMORY)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_FREE_MEMORY);
fptr.fnQueryData();

long documentsCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
long freeMemory = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FREE_MEMORY);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_FREE_MEMORY);
fptr.fnQueryData();

long documentsCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
long freeMemory = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FREE_MEMORY);
|

|[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_FREE_MEMORY];
[fptr fnQueryData];

uint documentsCount = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENTS_COUNT];
uint freeMemory = [fptr getParamInt:LIBFPTR_PARAM_FREE_MEMORY];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_FREE_MEMORY);
fptr.fnQueryData();

uint documentsCount = fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENTS_COUNT);
uint freeMemory = fptr.getParamInt(Constants.LIBFPTR_PARAM_FREE_MEMORY);
|

|var
documentNumber, documentType: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_FREE_MEMORY);
fptr.fnQueryData;

documentsCount := fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
freeMemory     := fptr.getParamInt(fptr.LIBFPTR_PARAM_FREE_MEMORY);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_FREE_MEMORY)
fptr.FnQueryData()

documentsCount := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENTS_COUNT)
freeMemory := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_FREE_MEMORY)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_FREE_MEMORY);
Fptr.fnQueryData();

documentsCount = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
freeMemory = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_FREE_MEMORY);
|

Для запроса ресурса свободной памяти ФН необходимо вызвать метод / fnQueryData()/ с типом запроса LIBFPTR_PARAM_FN_DATA_TYPE равным
LIBFPTR_FNDT_FREE_MEMORY.

Детализация ошибки будет доступна в выходном параметре
LIBFPTR_PARAM_FN_ERROR_DATA.

Выходные параметры:

Параметр Описание Тип
LIBFPTR_PARAM_DOCUMENTS_COUNT Ресурс данных 5-летнего хранения.
Приблизительное количество документов, которое можно создать в ФН int
LIBFPTR_PARAM_FREE_MEMORY Ресурс данных 30-дневного хранения. Размер
свободной области (в килобайтах) для записи документов. После 30 дней
работы значение может колебаться возле постоянного уровня int

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.1

Ошибки обмена с ИСМ

Запрос ошибок обмена с ИСМ

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_ISM_ERRORS);
libfptr_fn_query_data(fptr);

std::vector str(1024);
int size = 0;

int networkError = libfptr_get_param_int(fptr, LIBFPTR_PARAM_NETWORK_ERROR);
size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_NETWORK_ERROR_TEXT, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_NETWORK_ERROR_TEXT, &str[0], str.size());
}
std::wstring networkErrorText = std::wstring(&str[0]);

int ismError = libfptr_get_param_int(fptr, LIBFPTR_PARAM_ISM_ERROR);
size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_ISM_ERROR_TEXT, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_ISM_ERROR_TEXT, &str[0], str.size());
}
std::wstring ismErrorText = std::wstring(&str[0]);

int fnError = libfptr_get_param_int(fptr, LIBFPTR_PARAM_FN_ERROR);
size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_FN_ERROR_TEXT, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_FN_ERROR_TEXT, &str[0], str.size());
}
std::wstring fnErrorText = std::wstring(&str[0]);

int documentNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENT_NUMBER);
int commandCode = libfptr_get_param_int(fptr, LIBFPTR_PARAM_COMMAND_CODE);

int year, month, day, hour, minute, second;
libfptr_get_param_datetime(fptr, LIBFPTR_PARAM_DATE_TIME, &year, &month, &day, &hour, &minute, &second);

bool dataForSendIsEmpty = (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_DATA_FOR_SEND_IS_EMPTY) != 0);
|

|fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_ISM_ERRORS);
fptr.fnQueryData();

uint networkError = fptr.getParamInt(LIBFPTR_PARAM_NETWORK_ERROR);
std::wstring networkErrorText = fptr.getParamString(LIBFPTR_PARAM_NETWORK_ERROR_TEXT);

uint ismError = fptr.getParamInt(LIBFPTR_PARAM_ISM_ERROR);
std::wstring nismErrorText = fptr.getParamString(LIBFPTR_PARAM_ISM_ERROR_TEXT);

uint fnError = fptr.getParamInt(LIBFPTR_PARAM_FN_ERROR);
std::wstring nfnErrorText = fptr.getParamString(LIBFPTR_PARAM_FN_ERROR_TEXT);

uint documentNumber = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENT_NUMBER);
uint commandCode = fptr.getParamInt(LIBFPTR_PARAM_COMMAND_CODE);

std::tm dateTime = fptr.getParamDateTime(LIBFPTR_PARAM_DATE_TIME);
bool dataForSendIsEmpty = fptr.getParamBool(LIBFPTR_PARAM_DATA_FOR_SEND_IS_EMPTY);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_ISM_ERRORS)
fptr.fnQueryData()

networkError = fptr.getParamInt(IFptr.LIBFPTR_PARAM_NETWORK_ERROR)
networkErrorText = fptr.getParamString(IFptr.LIBFPTR_PARAM_NETWORK_ERROR_TEXT)

ismError = fptr.getParamInt(IFptr.LIBFPTR_PARAM_ISM_ERROR)
ismErrorText = fptr.getParamString(IFptr.LIBFPTR_PARAM_ISM_ERROR_TEXT)

fnError = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_ERROR)
fnErrorText = fptr.getParamString(IFptr.LIBFPTR_PARAM_FN_ERROR_TEXT)

documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER)
commandCode = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COMMAND_CODE)

dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME)
dataForSendIsEmpty = fptr.getParamBool(IFptr.LIBFPTR_PARAM_DATA_FOR_SEND_IS_EMPTY)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_ISM_ERRORS);
fptr.fnQueryData();

long networkError = fptr.getParamInt(IFptr.LIBFPTR_PARAM_NETWORK_ERROR);
String networkErrorText = fptr.getParamString(IFptr.LIBFPTR_PARAM_NETWORK_ERROR_TEXT);

long ismError = fptr.getParamInt(IFptr.LIBFPTR_PARAM_ISM_ERROR);
String ismErrorText = fptr.getParamString(IFptr.LIBFPTR_PARAM_ISM_ERROR_TEXT);

long fnError = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_ERROR);
String fnErrorText = fptr.getParamString(IFptr.LIBFPTR_PARAM_FN_ERROR_TEXT);

long documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
long commandCode = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COMMAND_CODE);

Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
boolean dataForSendIsEmpty = fptr.getParamBool(IFptr.LIBFPTR_PARAM_DATA_FOR_SEND_IS_EMPTY);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_ISM_ERRORS);
fptr.fnQueryData();

long networkError = fptr.getParamInt(IFptr.LIBFPTR_PARAM_NETWORK_ERROR);
String networkErrorText = fptr.getParamString(IFptr.LIBFPTR_PARAM_NETWORK_ERROR_TEXT);

long ismError = fptr.getParamInt(IFptr.LIBFPTR_PARAM_ISM_ERROR);
String ismErrorText = fptr.getParamString(IFptr.LIBFPTR_PARAM_ISM_ERROR_TEXT);

long fnError = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_ERROR);
String fnErrorText = fptr.getParamString(IFptr.LIBFPTR_PARAM_FN_ERROR_TEXT);

long documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
long commandCode = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COMMAND_CODE);

Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
boolean dataForSendIsEmpty = fptr.getParamBool(IFptr.LIBFPTR_PARAM_DATA_FOR_SEND_IS_EMPTY);
|

|[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_ISM_ERRORS];
[fptr fnQueryData];

uint networkError = [fptr getParamInt:LIBFPTR_PARAM_NETWORK_ERROR];
NSString *networkErrorText = [fptr getParamString:LIBFPTR_PARAM_NETWORK_ERROR_TEXT];

uint ismError = [fptr getParamInt:LIBFPTR_PARAM_ISM_ERROR];
NSString *ismErrorText = [fptr getParamString:LIBFPTR_PARAM_ISM_ERROR_TEXT];

uint fnError = [fptr getParamInt:LIBFPTR_PARAM_FN_ERROR];
NSString *fnErrorText = [fptr getParamString:LIBFPTR_PARAM_FN_ERROR_TEXT];

uint documentNumber = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENT_NUMBER];
uint commandCode = [fptr getParamInt:LIBFPTR_PARAM_COMMAND_CODE];

NSDate *dateTime = [fptr getParamDateTime:LIBFPTR_PARAM_DATE_TIME];
bool dataForSendIsEmpty = [fptr getParamBool:LIBFPTR_PARAM_DATA_FOR_SEND_IS_EMPTY];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_ISM_ERRORS);
fptr.fnQueryData();

uint networkError = fptr.getParamInt(Constants.LIBFPTR_PARAM_NETWORK_ERROR);
String networkErrorText = fptr.getParamString(Constants.LIBFPTR_PARAM_NETWORK_ERROR_TEXT);

uint ismError = fptr.getParamInt(Constants.LIBFPTR_PARAM_ISM_ERROR);
String ismErrorText = fptr.getParamString(Constants.LIBFPTR_PARAM_ISM_ERROR_TEXT);

uint fnError = fptr.getParamInt(Constants.LIBFPTR_PARAM_FN_ERROR);
String fnErrorText = fptr.getParamString(Constants.LIBFPTR_PARAM_FN_ERROR_TEXT);

uint documentNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER);
uint commandCode = fptr.getParamInt(Constants.LIBFPTR_PARAM_COMMAND_CODE);

DateTime dateTime = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);
bool dataForSendIsEmpty = fptr.getParamBool(Constants.LIBFPTR_PARAM_DATA_FOR_SEND_IS_EMPTY);
|

|var
networkError: Longint;
networkErrorText: String;
ismError: Longint;
ismErrorText: String;
fnError: Longint;
fnErrorText: String;
documentNumber: Longint;
commandCode: Longint;
dataForSendIsEmpty: Boolean;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_ISM_ERRORS);
fptr.fnQueryData;

networkError        := fptr.getParamInt(fptr.LIBFPTR_PARAM_NETWORK_ERROR);
networkErrorText:   := fptr.getParamString(fptr.LIBFPTR_PARAM_NETWORK_ERROR_TEXT);

ismError:           := fptr.getParamInt(fptr.LIBFPTR_PARAM_ISM_ERROR);
ismErrorText:       := fptr.getParamString(fptr.LIBFPTR_PARAM_ISM_ERROR_TEXT);

fnError:            := fptr.getParamInt(fptr.LIBFPTR_PARAM_FN_ERROR);
fnErrorText:        := fptr.getParamString(fptr.LIBFPTR_PARAM_FN_ERROR_TEXT);

documentNumber:     := fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
commandCode:        := fptr.getParamInt(fptr.LIBFPTR_PARAM_COMMAND_CODE);

dateTime:           := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME);
dataForSendIsEmpty  := fptr.getParamBool(fptr.LIBFPTR_PARAM_DATA_FOR_SEND_IS_EMPTY);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_ISM_ERRORS)
fptr.FnQueryData()

networkError := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_NETWORK_ERROR)
networkErrorText := fptr.GetParamString(fptr10.LIBFPTR_PARAM_NETWORK_ERROR_TEXT)

ismError := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_ISM_ERROR)
ismErrorText := fptr.GetParamString(fptr10.LIBFPTR_PARAM_ISM_ERROR_TEXT)

fnError := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_FN_ERROR)
fnErrorText := fptr.GetParamString(fptr10.LIBFPTR_PARAM_FN_ERROR_TEXT)

documentNumber := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENT_NUMBER)
commandCode := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_COMMAND_CODE)

dateTime := fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_DATE_TIME)
dataForSendIsEmpty := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_DATA_FOR_SEND_IS_EMPTY)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_ISM_ERRORS);
Fptr.fnQueryData();

networkError = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_NETWORK_ERROR);
networkErrorText = Fptr.getParamString(Fptr.LIBFPTR_PARAM_NETWORK_ERROR_TEXT);

ismError = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_ISM_ERROR);
ismErrorText = Fptr.getParamString(Fptr.LIBFPTR_PARAM_ISM_ERROR_TEXT);

fnError = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_FN_ERROR);
fnErrorText = Fptr.getParamString(Fptr.LIBFPTR_PARAM_FN_ERROR_TEXT);

documentNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
commandCode = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_COMMAND_CODE);

dateTime = Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_DATE_TIME);
dataForSendIsEmpty = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_DATA_FOR_SEND_IS_EMPTY);
|

Для запроса ошибок обмена с ИСМ необходимо вызвать метод / fnQueryData()/ с типом запроса LIBFPTR_PARAM_FN_DATA_TYPE равным
LIBFPTR_FNDT_ISM_ERRORS.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_DATE_TIME Дата и время последнего успешного соединения
с ИСМ datetime
LIBFPTR_PARAM_NETWORK_ERROR Код ошибки сети int
LIBFPTR_PARAM_NETWORK_ERROR_TEXT Текст ошибки сети string
LIBFPTR_PARAM_ISM_ERROR Код ошибки ИСМ int
LIBFPTR_PARAM_ISM_ERROR_TEXT Текст ошибки ИСМ string
LIBFPTR_PARAM_FN_ERROR Код ошибки ФН int
LIBFPTR_PARAM_FN_ERROR_TEXT Текст ошибки ФН string
LIBFPTR_PARAM_DOCUMENT_NUMBER Номер ФД, на котором произошла ошибка int
LIBFPTR_PARAM_COMMAND_CODE Команда ФН, на которой произошла ошибка int
LIBFPTR_PARAM_DATA_FOR_SEND_IS_EMPTY Контейнер для отправки пуст bool

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.2

Статус информационного обмена с ИСМ

Запрос статуса информационного обмена с ИСМ

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_ISM_EXCHANGE_STATUS);
libfptr_fn_query_data(fptr);

int unsentCount = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENTS_COUNT);
int firstUnsentNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENT_NUMBER);
int year, month, day, hour, minute, second;
libfptr_get_param_datetime(fptr, LIBFPTR_PARAM_DATE_TIME, &year, &month, &day, &hour, &minute, &second);
|

|fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_ISM_EXCHANGE_STATUS);
fptr.fnQueryData();

uint unsentCount = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENTS_COUNT);
uint firstUnsentNumber = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENT_NUMBER);
std::tm dateTime = fptr.getParamDateTime(LIBFPTR_PARAM_DATE_TIME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_ISM_EXCHANGE_STATUS)
fptr.fnQueryData()

unsentCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT)
firstUnsentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER)
dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_ISM_EXCHANGE_STATUS);
fptr.fnQueryData();

long unsentCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
long firstUnsentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_ISM_EXCHANGE_STATUS);
fptr.fnQueryData();

long unsentCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
long firstUnsentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_ISM_EXCHANGE_STATUS];
[fptr fnQueryData];

uint unsentCount = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENTS_COUNT];
uint firstUnsentNumber = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENT_NUMBER];
NSDate *dateTime = [fptr getParamDateTime:LIBFPTR_PARAM_DATE_TIME];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_ISM_EXCHANGE_STATUS);
fptr.fnQueryData();

uint unsentCount = fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENTS_COUNT);
uint firstUnsentNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER);
DateTime dateTime = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);
|

|var
unsentCount: Longint;
firstUnsentNumber: Longint;
dateTime: TDateTime;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_ISM_EXCHANGE_STATUS);
fptr.fnQueryData;

unsentCount         := fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
firstUnsentNumber   := fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
dateTime            := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_ISM_EXCHANGE_STATUS)
fptr.FnQueryData()

unsentCount := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENTS_COUNT)
firstUnsentNumber := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENT_NUMBER)
dateTime := fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_DATE_TIME)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_ISM_EXCHANGE_STATUS);
Fptr.fnQueryData();

unsentCount = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
firstUnsentNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
dateTime = Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_DATE_TIME);
|

Для запроса cтатуса информационного обмена с ИСМ необходимо вызвать
метод /fnQueryData()/ с типом запроса LIBFPTR_PARAM_FN_DATA_TYPE
равным LIBFPTR_FNDT_ISM_EXCHANGE_STATUS.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_DOCUMENTS_COUNT Количество непереданных уведомлений int
LIBFPTR_PARAM_DOCUMENT_NUMBER Номер первого непереданного уведомления
int
LIBFPTR_PARAM_DATE_TIME Дата и время первого непереданного
уведомления datetime

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.2

Запрос занятого места для хранения данных документа для ОФД

Чтение занятого места для хранения данных документа для ОФД

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_RECEIPT_SIZE);
libfptr_fn_query_data(fptr);

int receipt = libfptr_get_param_int(fptr, LIBFPTR_PARAM_RECEIPT_SIZE);
int mark = libfptr_get_param_int(fptr, LIBFPTR_PARAM_MARK_SIZE);
|

|fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_RECEIPT_SIZE);
fptr.fnQueryData();

uint receipt = fptr.getParamInt(LIBFPTR_PARAM_RECEIPT_SIZE);
uint mark = fptr.getParamInt(LIBFPTR_PARAM_MARK_SIZE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_RECEIPT_SIZE)
fptr.fnQueryData()

receipt = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_SIZE)
mark = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARK_SIZE)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_RECEIPT_SIZE);
fptr.fnQueryData();

long receipt = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_SIZE);
long mark = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARK_SIZE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_RECEIPT_SIZE);
fptr.fnQueryData();

long receipt = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_SIZE);
long mark = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARK_SIZE);
|

|[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_RECEIPT_SIZE];
[fptr fnQueryData];

uint receipt = [fptr getParamInt:LIBFPTR_PARAM_RECEIPT_SIZE];
uint mark = [fptr getParamInt:LIBFPTR_PARAM_MARK_SIZE];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_RECEIPT_SIZE);
fptr.fnQueryData();

uint receipt = fptr.getParamInt(Constants.LIBFPTR_PARAM_RECEIPT_SIZE);
uint mark = fptr.getParamInt(Constants.LIBFPTR_PARAM_MARK_SIZE);
|

|var
receipt: Longint;
mark: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_RECEIPT_SIZE);
fptr.fnQueryData;

receipt   := fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_SIZE);
mark      := fptr.getParamInt(fptr.LIBFPTR_PARAM_MARK_SIZE);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_RECEIPT_SIZE)
fptr.FnQueryData()

receipt := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_RECEIPT_SIZE)
mark := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_MARK_SIZE)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_RECEIPT_SIZE);
Fptr.fnQueryData();

receipt = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_RECEIPT_SIZE);
mark = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_MARK_SIZE);
|

Для запроса занятого места для хранения данных документа для ОФД
необходимо вызвать метод /fnQueryData()/ с типом запроса
LIBFPTR_PARAM_FN_DATA_TYPE равным LIBFPTR_FNDT_RECEIPT_SIZE.

Выходные параметры:

Параметр Описание Тип
LIBFPTR_PARAM_RECEIPT_SIZE Занятое место для документа для ОФД int
LIBFPTR_PARAM_MARK_SIZE Занятое место для документов для
маркированных товаров для ОИСМ int

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.2

Состояние работы с КМ

Запрос состояния работы с КМ

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_MARKING_MODE_STATUS);
libfptr_fn_query_data(fptr);

int markingModeCheckingStatus = libfptr_get_param_int(fptr, LIBFPTR_PARAM_MARKING_MODE_CHECKING_STATUS);
int markCheckingCount = libfptr_get_param_int(fptr, LIBFPTR_PARAM_MARK_CHECKING_COUNT);
int markSoldCount = libfptr_get_param_int(fptr, LIBFPTR_PARAM_MARK_SOLD_COUNT);
bool noticeIsBegin = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_NOTICE_IS_BEGIN);
int noticeFreeMemory = libfptr_get_param_int(fptr, LIBFPTR_PARAM_NOTICE_FREE_MEMORY);
int noticeCount = libfptr_get_param_int(fptr, LIBFPTR_PARAM_NOTICE_COUNT);
|

|fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_MARKING_MODE_STATUS);
fptr.fnQueryData();

uint markingModeCheckingStatus = fptr.getParamInt(LIBFPTR_PARAM_MARKING_MODE_CHECKING_STATUS);
uint markCheckingCount = fptr.getParamInt(LIBFPTR_PARAM_MARK_CHECKING_COUNT);
uint markSoldCount = fptr.getParamInt(LIBFPTR_PARAM_MARK_SOLD_COUNT);
bool noticeIsBegin = fptr.getParamBool(LIBFPTR_PARAM_NOTICE_IS_BEGIN);
uint noticeFreeMemory = fptr.getParamInt(LIBFPTR_PARAM_NOTICE_FREE_MEMORY);
uint noticeCount = fptr.getParamInt(LIBFPTR_PARAM_NOTICE_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_MARKING_MODE_STATUS)
fptr.fnQueryData()

markingModeCheckingStatus = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_MODE_CHECKING_STATUS)
markCheckingCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARK_CHECKING_COUNT)
markSoldCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARK_SOLD_COUNT)
noticeIsBegin = fptr.getParamBool(IFptr.LIBFPTR_PARAM_NOTICE_IS_BEGIN)
noticeFreeMemory = fptr.getParamInt(IFptr.LIBFPTR_PARAM_NOTICE_FREE_MEMORY)
noticeCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_NOTICE_COUNT)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_MARKING_MODE_STATUS);
fptr.fnQueryData();

long markingModeCheckingStatus = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_MODE_CHECKING_STATUS);
long markCheckingCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARK_CHECKING_COUNT);
long markSoldCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARK_SOLD_COUNT);
boolean noticeIsBegin = fptr.getParamBool(IFptr.LIBFPTR_PARAM_NOTICE_IS_BEGIN);
long noticeFreeMemory = fptr.getParamInt(IFptr.LIBFPTR_PARAM_NOTICE_FREE_MEMORY);
long noticeCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_NOTICE_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_MARKING_MODE_STATUS);
fptr.fnQueryData();

long markingModeCheckingStatus = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_MODE_CHECKING_STATUS);
long markCheckingCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARK_CHECKING_COUNT);
long markSoldCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARK_SOLD_COUNT);
boolean noticeIsBegin = fptr.getParamBool(IFptr.LIBFPTR_PARAM_NOTICE_IS_BEGIN);
long noticeFreeMemory = fptr.getParamInt(IFptr.LIBFPTR_PARAM_NOTICE_FREE_MEMORY);
long noticeCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_NOTICE_COUNT);
|

|[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_MARKING_MODE_STATUS];
[fptr fnQueryData];

uint markingModeCheckingStatus = [fptr getParamInt:LIBFPTR_PARAM_MARKING_MODE_CHECKING_STATUS];
uint markCheckingCount = [fptr getParamInt:LIBFPTR_PARAM_MARK_CHECKING_COUNT];
uint markSoldCount = [fptr getParamInt:LIBFPTR_PARAM_MARK_SOLD_COUNT];
bool noticeIsBegin = [fptr getParamBool:LIBFPTR_PARAM_NOTICE_IS_BEGIN];
uint noticeFreeMemory = [fptr getParamInt:LIBFPTR_PARAM_NOTICE_FREE_MEMORY];
uint noticeCount = [fptr getParamInt:LIBFPTR_PARAM_NOTICE_COUNT];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_MARKING_MODE_STATUS);
fptr.fnQueryData();

uint markingModeCheckingStatus = fptr.getParamInt(Constants.LIBFPTR_PARAM_MARKING_MODE_CHECKING_STATUS);
uint markCheckingCount = fptr.getParamInt(Constants.LIBFPTR_PARAM_MARK_CHECKING_COUNT);
uint markSoldCount = fptr.getParamInt(Constants.LIBFPTR_PARAM_MARK_SOLD_COUNT);
bool noticeIsBegin = fptr.getParamBool(Constants.LIBFPTR_PARAM_NOTICE_IS_BEGIN);
uint noticeFreeMemory = fptr.getParamInt(Constants.LIBFPTR_PARAM_NOTICE_FREE_MEMORY);
uint noticeCount = fptr.getParamInt(Constants.LIBFPTR_PARAM_NOTICE_COUNT);
|

|var
markingModeCheckingStatus: Longint;
markCheckingCount: Longint;
markSoldCount: Longint;
noticeIsBegin: LongBool;
noticeFreeMemory: Longint;
noticeCount: Longint;

begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_MARKING_MODE_STATUS);
fptr.fnQueryData;

markingModeCheckingStatus := fptr.getParamInt(fptr.LIBFPTR_PARAM_MARKING_MODE_CHECKING_STATUS);
markCheckingCount := fptr.getParamInt(fptr.LIBFPTR_PARAM_MARK_CHECKING_COUNT);
markSoldCount := fptr.getParamInt(fptr.LIBFPTR_PARAM_MARK_SOLD_COUNT);
noticeIsBegin := fptr.getParamBool(fptr.LIBFPTR_PARAM_NOTICE_IS_BEGIN);
noticeFreeMemory := fptr.getParamInt(fptr.LIBFPTR_PARAM_NOTICE_FREE_MEMORY);
noticeCount := fptr.getParamInt(fptr.LIBFPTR_PARAM_NOTICE_COUNT);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_MARKING_MODE_STATUS)
fptr.FnQueryData()

markingModeCheckingStatus := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_MARKING_MODE_CHECKING_STATUS)
markCheckingCount := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_MARK_CHECKING_COUNT)
markSoldCount := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_MARK_SOLD_COUNT)
noticeIsBegin := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_NOTICE_IS_BEGIN)
noticeFreeMemory := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_NOTICE_FREE_MEMORY)
noticeCount := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_NOTICE_COUNT)
|

|Fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_MARKING_MODE_STATUS);
Fptr.fnQueryData();

markingModeCheckingStatus = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_MARKING_MODE_CHECKING_STATUS);
markCheckingCount = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_MARK_CHECKING_COUNT);
markSoldCount = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_MARK_SOLD_COUNT);
noticeIsBegin = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_NOTICE_IS_BEGIN);
noticeFreeMemory = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_NOTICE_FREE_MEMORY);
noticeCount = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_NOTICE_COUNT);
|

Для запроса состояния работы с КМ необходимо вызвать метод / fnQueryData()/ с типом запроса LIBFPTR_PARAM_FN_DATA_TYPE равным
LIBFPTR_FNDT_MARKING_MODE_STATUS.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_MARKING_MODE_CHECKING_STATUS Состояние проверки КМ в ФН
int
LIBFPTR_PARAM_MARK_CHECKING_COUNT Количество проверенных КМ в таблице
проверенных КМ int
LIBFPTR_PARAM_MARK_SOLD_COUNT Количество реализованных КМ int
LIBFPTR_PARAM_NOTICE_IS_BEGIN Формирование уведомления bool
LIBFPTR_PARAM_NOTICE_FREE_MEMORY Ресурс области уведомлений int
LIBFPTR_PARAM_NOTICE_COUNT Количество неотправленных уведомлений int
LIBFPTR_PARAM_MARK_CHECKING_STATUS_IN_CASH Статус проверки КМ в ККТ int
LIBFPTR_PARAM_MARK_CHECKING_TYPE_IN_CASH Тип проверки КМ в ККТ int
LIBFPTR_PARAM_MARK_CHECKING_STAGE_IN_CASH Этап проверки КМ в ККТ int

Состояние проверки КМ в ФН
(LIBFPTR_PARAM_MARKING_MODE_CHECKING_STATUS) может принимать следующие
значения:

  • LIBFPTR_MCS_BLOCK — работа с КМ временно заблокирована
    (переполнение области уведомлений);
  • LIBFPTR_MCS_NO_MARK_FOR_CHECK — нет КМ на проверке;
  • LIBFPTR_MCS_MARK_RECEIVE_B1 — передан КМ в команде B1h;
  • LIBFPTR_MCS_MARK_STATE_QUERY_B5 — сформирован запрос о статусе КМ
    в команде B5h;
  • LIBFPTR_MCS_MARK_STATE_ANSWER_B6 — получен ответ на запрос о
    статусе КМ в команде B6h.

Количество проверок КМ (LIBFPTR_PARAM_MARK_CHECKING_COUNT) показывает
количество сохраненных результатов проверки КМ.

Количество реализованных КМ (LIBFPTR_PARAM_MARK_SOLD_COUNT) показывает
количество КМ включенных в уведомление о реализации

Формирование уведомления (LIBFPTR_PARAM_NOTICE_IS_BEGIN) в случае
значения /true/ означает, что формирование уведомления начато, иначе —
уведомление не формируется.

Ресурс области уведомлений (LIBFPTR_PARAM_NOTICE_FREE_MEMORY) может
принимать следующие значения:

  • LIBFPTR_NFM_LESS_50_PERCENT — область заполнена менее чем на 50%;
  • LIBFPTR_NFM_FROM_50_TO_80_PERCENT — область заполнена от 50 до 80%;
  • LIBFPTR_NFM_FROM_80_TO_90_PERCENT — область заполнена от 80 до 90%;
  • LIBFPTR_NFM_MORE_90_PERCENT — область заполнена более чем на 90%;
  • LIBFPTR_NFM_OUT_OF_MEMORY — область полностью заполнена.

Количество неотправленных уведомлений (LIBFPTR_PARAM_NOTICE_COUNT)
показывает количество неподтверждённых или невыгруженных уведомлений о
реализации маркированного товара.

Статус проверки КМ в ККТ (LIBFPTR_PARAM_MARK_CHECKING_STATUS_IN_CASH)
может принимать следующие значения:

  • LIBFPTR_MCS_NOT_EXECUTED — не выполняется;
  • LIBFPTR_MCS_EXECUTED — выполняется;
  • LIBFPTR_MCS_IS_OVER — проверка завершена;
  • LIBFPTR_MCS_RESULT_IS_RECIEVED — результат получен.

Тип проверки КМ в ККТ (LIBFPTR_PARAM_MARK_CHECKING_TYPE_IN_CASH) может
принимать следующие значения:

  • LIBFPTR_MCT_AUTONOMOUS — автономный режим;
  • LIBFPTR_MCT_WAIT_FOR_RESULT — ожидать ответ;
  • LIBFPTR_MCT_RESULT_NOT_WAIT — ответ не ожидается;
  • LIBFPTR_MCT_QUERY_NOT_SEND — запрос не отправлялся.

Этап проверки КМ в ККТ (LIBFPTR_PARAM_MARK_CHECKING_STAGE_IN_CASH)
может принимать следующие значения:

  • LIBFPTR_MCST_WAITING_FOR_TASK — ожидание задания;
  • LIBFPTR_MCST_OPENING_CONNECTION — открытие соединения;
  • LIBFPTR_MCST_SENDING — отправка;
  • LIBFPTR_MCST_WAITING_FOR_RESULT — ожидание ответа;
  • LIBFPTR_MCST_GETTING_RESULT — получение ответа;
  • LIBFPTR_MCST_DECODE_RESULT — декодирование ответа;
  • LIBFPTR_MCST_TASK_IS_OVER — задание завершено;
  • LIBFPTR_MCST_WAITING_FOR_REPEAT — ожидание повтора.

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.2

Время выполнения проверки КМ

Запрос времени выполнения проверки КМ

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_CHECK_MARK_TIME);
libfptr_fn_query_data(fptr);

int fnCheckMarkTime = libfptr_get_param_int(fptr, LIBFPTR_PARAM_FN_CHECK_MARK_TIME);
int sendingMarkTime = libfptr_get_param_int(fptr, LIBFPTR_PARAM_SENDING_MARK_TIME);
int markingServerExchangeTime = libfptr_get_param_int(fptr, LIBFPTR_PARAM_MARKING_SERVER_EXCHANGE_TIME);
int fullSendingMarkTime = libfptr_get_param_int(fptr, LIBFPTR_PARAM_FULL_SENDING_MARK_TIME);
|

|fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_CHECK_MARK_TIME);
fptr.fnQueryData();

uint fnCheckMarkTime = fptr.getParamInt(LIBFPTR_PARAM_FN_CHECK_MARK_TIME);
uint sendingMarkTime = fptr.getParamInt(LIBFPTR_PARAM_SENDING_MARK_TIME);
uint markingServerExchangeTime = fptr.getParamInt(LIBFPTR_PARAM_MARKING_SERVER_EXCHANGE_TIME);
uint fullSendingMarkTime = fptr.getParamInt(LIBFPTR_PARAM_FULL_SENDING_MARK_TIME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_CHECK_MARK_TIME)
fptr.fnQueryData()

fnCheckMarkTime = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_CHECK_MARK_TIME)
sendingMarkTime = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SENDING_MARK_TIME)
markingServerExchangeTime = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_SERVER_EXCHANGE_TIME)
fullSendingMarkTime = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FULL_SENDING_MARK_TIME)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_CHECK_MARK_TIME);
fptr.fnQueryData();

long fnCheckMarkTime = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_CHECK_MARK_TIME);
long sendingMarkTime = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SENDING_MARK_TIME);
long markingServerExchangeTime = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_SERVER_EXCHANGE_TIME);
long fullSendingMarkTime = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FULL_SENDING_MARK_TIME);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_CHECK_MARK_TIME);
fptr.fnQueryData();

long fnCheckMarkTime = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_CHECK_MARK_TIME);
long sendingMarkTime = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SENDING_MARK_TIME);
long markingServerExchangeTime = fptr.getParamInt(IFptr.LIBFPTR_PARAM_MARKING_SERVER_EXCHANGE_TIME);
long fullSendingMarkTime = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FULL_SENDING_MARK_TIME);
|

|[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_CHECK_MARK_TIME];
[fptr fnQueryData];

uint fnCheckMarkTime = [fptr getParamInt:LIBFPTR_PARAM_FN_CHECK_MARK_TIME];
uint sendingMarkTime = [fptr getParamInt:LIBFPTR_PARAM_SENDING_MARK_TIME];
uint markingServerExchangeTime = [fptr getParamInt:LIBFPTR_PARAM_MARKING_SERVER_EXCHANGE_TIME];
uint fullSendingMarkTime = [fptr getParamInt:LIBFPTR_PARAM_FULL_SENDING_MARK_TIME];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_CHECK_MARK_TIME);
fptr.fnQueryData();

uint fnCheckMarkTime = fptr.getParamInt(Constants.LIBFPTR_PARAM_FN_CHECK_MARK_TIME);
uint sendingMarkTime = fptr.getParamInt(Constants.LIBFPTR_PARAM_SENDING_MARK_TIME);
uint markingServerExchangeTime = fptr.getParamInt(Constants.LIBFPTR_PARAM_MARKING_SERVER_EXCHANGE_TIME);
uint fullSendingMarkTime = fptr.getParamInt(Constants.LIBFPTR_PARAM_FULL_SENDING_MARK_TIME);
|

|var
fnCheckMarkTime: Longint;
sendingMarkTime: Longint;
markingServerExchangeTime: Longint;
fullSendingMarkTime: Longint;

begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_CHECK_MARK_TIME);
fptr.fnQueryData;

fnCheckMarkTime := fptr.getParamInt(fptr.LIBFPTR_PARAM_FN_CHECK_MARK_TIME);
sendingMarkTime := fptr.getParamInt(fptr.LIBFPTR_PARAM_SENDING_MARK_TIME);
markingServerExchangeTime := fptr.getParamInt(fptr.LIBFPTR_PARAM_MARKING_SERVER_EXCHANGE_TIME);
fullSendingMarkTime := fptr.getParamInt(fptr.LIBFPTR_PARAM_FULL_SENDING_MARK_TIME);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_CHECK_MARK_TIME)
fptr.FnQueryData()

fnCheckMarkTime := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_FN_CHECK_MARK_TIME)
sendingMarkTime := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_SENDING_MARK_TIME)
markingServerExchangeTime := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_MARKING_SERVER_EXCHANGE_TIME)
fullSendingMarkTime := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_FULL_SENDING_MARK_TIME)
|

|Fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_CHECK_MARK_TIME);
Fptr.fnQueryData();

fnCheckMarkTime = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_FN_CHECK_MARK_TIME);
sendingMarkTime = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_SENDING_MARK_TIME);
markingServerExchangeTime = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_MARKING_SERVER_EXCHANGE_TIME);
fullSendingMarkTime = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_FULL_SENDING_MARK_TIME);
|

Для запроса состояния работы с КМ необходимо вызвать метод / fnQueryData()/ с типом запроса LIBFPTR_PARAM_FN_DATA_TYPE равным
LIBFPTR_FNDT_CHECK_MARK_TIME.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_FN_CHECK_MARK_TIME Время проверки в ФН, мс int
LIBFPTR_PARAM_SENDING_MARK_TIME Время отправки, мс int
LIBFPTR_PARAM_MARKING_SERVER_EXCHANGE_TIME Время обмена с сервером,
мс int
LIBFPTR_PARAM_FULL_SENDING_MARK_TIME Полное время проверки, мс int

Параметр LIBFPTR_PARAM_FN_CHECK_MARK_TIME показывает время проверки ФН
в мс. Если проверка в ФН еще не была проведена, то равно 0. Включает в
себя время на проверку в КМ и получение пакета для обмена с сервером.

Параметр LIBFPTR_PARAM_SENDING_MARK_TIME показывает время открытия
соединения и отправки данных в последней попытке в мс. Если ответ не был
получен, то равно 0. Если ККТ работает в автономном режиме, то всегда
равно 0.

Параметр LIBFPTR_PARAM_MARKING_SERVER_EXCHANGE_TIME показывает время
открытия соединения, отправки данных и получения ответа от сервера в
последней попытке. Если ответ не был получен, то равно 0. Если ККТ
работает в автономном режиме, то всегда равно 0.

Параметр LIBFPTR_PARAM_FULL_SENDING_MARK_TIME показывает полное время
проверки, включая повторы. Также к полному времени проверки добавляется
время команды ФН на повторное получение пакета для обмена.

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.2

Счетчики ФН

В ФН 1.1 доступны следующие счетчики:

  • Счетчики итогов операций (сменные и необнуляемые);
  • Счетчики итогов операций по заданному типу расчетов (сменные и
    необнуляемые);
  • Счетчики количеств операций (сменные и необнуляемые);
  • Счетчики итогов непереданных документов. Счетчики итогов операций Чтение счетчиков итогов операций ФН по типу расчета

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_TOTALS);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_COUNTERS_TYPE, LIBFPTR_FNCT_SHIFT);
libfptr_fn_query_data(fptr);

uint receipts = libfptr_get_param_int(fptr, LIBFPTR_PARAM_RECEIPTS_COUNT);
uint corrections = libfptr_get_param_int(fptr, LIBFPTR_PARAM_CORRECTIONS_COUNT);

double receiptsSum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_RECEIPTS_SUM);
double correctionsSum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_CORRECTIONS_SUM);

double cashSum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_PAYMENTS_SUM_CASH);
double noncashSum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY);
double prepaidSum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID);
double creditSum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT);
double barterSum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_PAYMENTS_SUM_OTHER);

double vat20Sum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_TAXES_SUM_VAT20);
double vat10Sum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_TAXES_SUM_VAT10);
double vat120Sum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_TAXES_SUM_VAT120);
double vat110Sum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_TAXES_SUM_VAT110);
double vat0Sum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_TAXES_SUM_VAT0);
double vatNoSum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_TAXES_SUM_NO);
|

|fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_TOTALS);
fptr.setParam(LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
fptr.setParam(LIBFPTR_PARAM_FN_COUNTERS_TYPE, LIBFPTR_FNCT_SHIFT);
fptr.fnQueryData();

uint receipts = fptr.getParamInt(LIBFPTR_PARAM_RECEIPTS_COUNT);
uint corrections = fptr.getParamInt(LIBFPTR_PARAM_CORRECTIONS_COUNT);

double receiptsSum = fptr.getParamDouble(LIBFPTR_PARAM_RECEIPTS_SUM);
double correctionsSum = fptr.getParamDouble(LIBFPTR_PARAM_CORRECTIONS_SUM);

double cashSum = fptr.getParamDouble(LIBFPTR_PARAM_PAYMENTS_SUM_CASH);
double noncashSum = fptr.getParamDouble(LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY);
double prepaidSum = fptr.getParamDouble(LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID);
double creditSum = fptr.getParamDouble(LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT);
double barterSum = fptr.getParamDouble(LIBFPTR_PARAM_PAYMENTS_SUM_OTHER);

double vat20Sum = fptr.getParamDouble(LIBFPTR_PARAM_TAXES_SUM_VAT20);
double vat10Sum = fptr.getParamDouble(LIBFPTR_PARAM_TAXES_SUM_VAT10);
double vat120Sum = fptr.getParamDouble(LIBFPTR_PARAM_TAXES_SUM_VAT120);
double vat110Sum = fptr.getParamDouble(LIBFPTR_PARAM_TAXES_SUM_VAT110);
double vat0Sum = fptr.getParamDouble(LIBFPTR_PARAM_TAXES_SUM_VAT0);
double vatNoSum = fptr.getParamDouble(LIBFPTR_PARAM_TAXES_SUM_NO);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_TOTALS)
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL)
fptr.setParam(IFptr.LIBFPTR_PARAM_FN_COUNTERS_TYPE, IFptr.LIBFPTR_FNCT_SHIFT)
fptr.fnQueryData()

receipts = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPTS_COUNT)
corrections = fptr.getParamInt(IFptr.LIBFPTR_PARAM_CORRECTIONS_COUNT)

receiptsSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_RECEIPTS_SUM)
correctionsSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_CORRECTIONS_SUM)

cashSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_CASH)
noncashSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY)
prepaidSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID)
creditSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT)
barterSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_OTHER)

vat20Sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT20)
vat10Sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT10)
vat120Sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT120)
vat110Sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT110)
vat0Sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT0)
vatNoSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_NO)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_TOTALS);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.setParam(IFptr.LIBFPTR_PARAM_FN_COUNTERS_TYPE, IFptr.LIBFPTR_FNCT_SHIFT);
fptr.fnQueryData();

long receipts = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPTS_COUNT);
long corrections = fptr.getParamInt(IFptr.LIBFPTR_PARAM_CORRECTIONS_COUNT);

double receiptsSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_RECEIPTS_SUM);
double correctionsSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_CORRECTIONS_SUM);

double cashSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_CASH);
double noncashSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY);
double prepaidSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID);
double creditSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT);
double barterSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_OTHER);

double vat20Sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT20);
double vat10Sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT10);
double vat120Sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT120);
double vat110Sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT110);
double vat0Sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT0);
double vatNoSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_NO);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_TOTALS);
fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
fptr.setParam(IFptr.LIBFPTR_PARAM_FN_COUNTERS_TYPE, IFptr.LIBFPTR_FNCT_SHIFT);
fptr.fnQueryData();

long receipts = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPTS_COUNT);
long corrections = fptr.getParamInt(IFptr.LIBFPTR_PARAM_CORRECTIONS_COUNT);

double receiptsSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_RECEIPTS_SUM);
double correctionsSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_CORRECTIONS_SUM);

double cashSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_CASH);
double noncashSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY);
double prepaidSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID);
double creditSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT);
double barterSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_OTHER);

double vat20Sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT20);
double vat10Sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT10);
double vat120Sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT120);
double vat110Sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT110);
double vat0Sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT0);
double vatNoSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_NO);
|

|[fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_TOTALS];
[fptr setParam:LIBFPTR_PARAM_RECEIPT_TYPE intParam:LIBFPTR_RT_SELL];
[fptr setParam:LIBFPTR_PARAM_FN_COUNTERS_TYPE intParam:LIBFPTR_FNCT_SHIFT];
[fptr fnQueryData];

uint receipts = [fptr getParamInt:LIBFPTR_PARAM_RECEIPTS_COUNT];
uint corrections = [fptr getParamInt:LIBFPTR_PARAM_CORRECTIONS_COUNT];

double receiptsSum = [fptr getParamDouble:LIBFPTR_PARAM_RECEIPTS_SUM];
double correctionsSum = [fptr getParamDouble:LIBFPTR_PARAM_CORRECTIONS_SUM];

double cashSum = [fptr getParamDouble:LIBFPTR_PARAM_PAYMENTS_SUM_CASH];
double noncashSum = [fptr getParamDouble:LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY];
double prepaidSum = [fptr getParamDouble:LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID];
double creditSum = [fptr getParamDouble:LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT];
double barterSum = [fptr getParamDouble:LIBFPTR_PARAM_PAYMENTS_SUM_OTHER];

double vat20Sum = [fptr getParamDouble:LIBFPTR_PARAM_TAXES_SUM_VAT20];
double vat10Sum = [fptr getParamDouble:LIBFPTR_PARAM_TAXES_SUM_VAT10];
double vat120Sum = [fptr getParamDouble:LIBFPTR_PARAM_TAXES_SUM_VAT120];
double vat110Sum = [fptr getParamDouble:LIBFPTR_PARAM_TAXES_SUM_VAT110];
double vat0Sum = [fptr getParamDouble:LIBFPTR_PARAM_TAXES_SUM_VAT0];
double vatNoSum = [fptr getParamDouble:LIBFPTR_PARAM_TAXES_SUM_NO];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_TOTALS);
fptr.setParam(Constants.LIBFPTR_PARAM_RECEIPT_TYPE, Constants.LIBFPTR_RT_SELL);
fptr.setParam(Constants.LIBFPTR_PARAM_FN_COUNTERS_TYPE, Constants.LIBFPTR_FNCT_SHIFT);
fptr.fnQueryData();

uint receipts = fptr.getParamInt(Constants.LIBFPTR_PARAM_RECEIPTS_COUNT);
uint corrections = fptr.getParamInt(Constants.LIBFPTR_PARAM_CORRECTIONS_COUNT);

double receiptsSum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_RECEIPTS_SUM);
double correctionsSum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_CORRECTIONS_SUM);

double cashSum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_PAYMENTS_SUM_CASH);
double noncashSum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY);
double prepaidSum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID);
double creditSum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT);
double barterSum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_PAYMENTS_SUM_OTHER);

double vat20Sum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_TAXES_SUM_VAT20);
double vat10Sum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_TAXES_SUM_VAT10);
double vat120Sum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_TAXES_SUM_VAT120);
double vat110Sum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_TAXES_SUM_VAT110);
double vat0Sum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_TAXES_SUM_VAT0);
double vatNoSum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_TAXES_SUM_NO);
|

|var
type, receipts, corrections: Integer;
cashSum, noncashSum, prepaidSum, creditSum, barterSum: Double;
vat20Sum, vat10Sum, vat120Sum, vat110Sum, vat0Sum, vatNoSum: Double;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_TOTALS);
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL);
fptr.setParam(fptr.LIBFPTR_PARAM_FN_COUNTERS_TYPE, fptr.LIBFPTR_FNCT_SHIFT);
fptr.fnQueryData;

receipts       := fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPTS_COUNT);
corrections    := fptr.getParamInt(fptr.LIBFPTR_PARAM_CORRECTIONS_COUNT);

receiptsSum    := fptr.getParamDouble(fptr.LIBFPTR_PARAM_RECEIPTS_SUM);
correctionsSum := fptr.getParamDouble(fptr.LIBFPTR_PARAM_CORRECTIONS_SUM);

cashSum        := fptr.getParamDouble(fptr.LIBFPTR_PARAM_PAYMENTS_SUM_CASH);
noncashSum     := fptr.getParamDouble(fptr.LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY);
prepaidSum     := fptr.getParamDouble(fptr.LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID);
creditSum      := fptr.getParamDouble(fptr.LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT);
barterSum      := fptr.getParamDouble(fptr.LIBFPTR_PARAM_PAYMENTS_SUM_OTHER);

vat20Sum       := fptr.getParamDouble(fptr.LIBFPTR_PARAM_TAXES_SUM_VAT20);
vat10Sum       := fptr.getParamDouble(fptr.LIBFPTR_PARAM_TAXES_SUM_VAT10);
vat120Sum      := fptr.getParamDouble(fptr.LIBFPTR_PARAM_TAXES_SUM_VAT120);
vat110Sum      := fptr.getParamDouble(fptr.LIBFPTR_PARAM_TAXES_SUM_VAT110);
vat0Sum        := fptr.getParamDouble(fptr.LIBFPTR_PARAM_TAXES_SUM_VAT0);
vatNoSum       := fptr.getParamDouble(fptr.LIBFPTR_PARAM_TAXES_SUM_NO);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_TOTALS)
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE, fptr10.LIBFPTR_RT_SELL)
fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_COUNTERS_TYPE, fptr10.LIBFPTR_FNCT_SHIFT)
fptr.FnQueryData()

receipts = fptr.GetParamInt(fptr10.LIBFPTR_PARAM_RECEIPTS_COUNT)
corrections = fptr.GetParamInt(fptr10.LIBFPTR_PARAM_CORRECTIONS_COUNT)

receiptsSum = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_RECEIPTS_SUM)
correctionsSum = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_CORRECTIONS_SUM)

cashSum = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_PAYMENTS_SUM_CASH)
noncashSum = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY)
prepaidSum = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID)
creditSum = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT)
barterSum = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_PAYMENTS_SUM_OTHER)

vat20Sum = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_TAXES_SUM_VAT20)
vat10Sum = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_TAXES_SUM_VAT10)
vat120Sum = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_TAXES_SUM_VAT120)
vat110Sum = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_TAXES_SUM_VAT110)
vat0Sum = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_TAXES_SUM_VAT0)
vatNoSum = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_TAXES_SUM_NO)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_TOTALS);
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE, Fptr.LIBFPTR_RT_SELL);
Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_COUNTERS_TYPE, Fptr.LIBFPTR_FNCT_SHIFT);
Fptr.fnQueryData();

receipts = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_RECEIPTS_COUNT);
corrections = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_CORRECTIONS_COUNT);

receiptsSum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_RECEIPTS_SUM);
correctionsSum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_CORRECTIONS_SUM);

cashSum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_PAYMENTS_SUM_CASH);
noncashSum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY);
prepaidSum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID);
creditSum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT);
barterSum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_PAYMENTS_SUM_OTHER);

vat20Sum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_TAXES_SUM_VAT20);
vat10Sum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_TAXES_SUM_VAT10);
vat120Sum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_TAXES_SUM_VAT120);
vat110Sum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_TAXES_SUM_VAT110);
vat0Sum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_TAXES_SUM_VAT0);
vatNoSum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_TAXES_SUM_NO);
|

Для запроса счетчиков итогов операций ФН по заданному типу расчетов
необходимо вызвать метод /fnQueryData()/ с типом запроса
LIBFPTR_PARAM_FN_DATA_TYPE равным LIBFPTR_FNDT_TOTALS и передать тип
расчета в параметре LIBFPTR_PARAM_RECEIPT_TYPE и тип счетчиков ФН в
параметре LIBFPTR_PARAM_FN_COUNTERS_TYPE.

Выходные параметры:

Параметр Описание Тип
LIBFPTR_PARAM_RECEIPTS_COUNT Общее количество чеков (включая
коррекции) int
LIBFPTR_PARAM_CORRECTIONS_COUNT Количество коррекций int
LIBFPTR_PARAM_RECEIPTS_SUM Итоговая сумма чеков (включая коррекции)
double
LIBFPTR_PARAM_CORRECTIONS_SUM Сумма коррекций double
LIBFPTR_PARAM_PAYMENTS_SUM_CASH Сумма наличных оплат double
LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY Сумма безналичных оплат
double
LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID Сумма оплат авансом double
LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT Сумма оплат кредитом double
LIBFPTR_PARAM_PAYMENTS_SUM_OTHER Сумма оплат встречным
предоставлением double
LIBFPTR_PARAM_TAXES_SUM_VAT20 Сумма НДС 20% double
LIBFPTR_PARAM_TAXES_SUM_VAT10 Сумма НДС 10% double
LIBFPTR_PARAM_TAXES_SUM_VAT120 Сумма НДС 20/120 double
LIBFPTR_PARAM_TAXES_SUM_VAT110 Сумма НДС 10/110 double
LIBFPTR_PARAM_TAXES_SUM_VAT0 Сумма НДС 0% double
LIBFPTR_PARAM_TAXES_SUM_NO Сумма без НДС double

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.1

Чтение счетчиков итогов операций ФН

|// Вспомогательная функция для чтения строковых параметров
std::wstring readStringAttribute(libfptr_handle fptr, int paramNumber) {
std::vector str(32);
int size = libfptr_get_param_str(fptr, paramNumber, &str[0], str.size());
if (size > str.size()) {
str.resize(size);
libfptr_get_param_str(fptr, paramNumber, &str[0], str.size());
}
return std::wstring(&str[0]);
}

// Вспомогательная функция чтения следующей записи
int readNextRecord(libfptr_handle fptr, const std::wstring &recordsID) {
libfptr_set_param_str(fptr, LIBFPTR_PARAM_RECORDS_ID, recordsID.c_str());
return libfptr_read_next_record(fptr);
}

libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_FN_SUM_COUNTERS);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_COUNTERS_TYPE, LIBFPTR_FNCT_SHIFT);
libfptr_begin_read_records(handle);
std::wstring recordsID = readStringAttribute(fptr, LIBFPTR_PARAM_RECORDS_ID);
uint shiftNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_SHIFT_NUMBER);
uint receiptsAll = libfptr_get_param_int(fptr, LIBFPTR_PARAM_RECEIPTS_COUNT);
uint correctionsAll = libfptr_get_param_int(fptr, LIBFPTR_PARAM_CORRECTIONS_COUNT);

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
uint receiptType = libfptr_get_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE);

uint receipts         = libfptr_get_param_int(fptr, LIBFPTR_PARAM_RECEIPTS_COUNT);
uint corrections      = libfptr_get_param_int(fptr, LIBFPTR_PARAM_CORRECTIONS_COUNT);

double receiptsSum    = libfptr_get_param_double(fptr, LIBFPTR_PARAM_RECEIPTS_SUM);
double correctionsSum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_CORRECTIONS_SUM);

double cashSum        = libfptr_get_param_double(fptr, LIBFPTR_PARAM_PAYMENTS_SUM_CASH);
double noncashSum     = libfptr_get_param_double(fptr, LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY);
double prepaidSum     = libfptr_get_param_double(fptr, LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID);
double creditSum      = libfptr_get_param_double(fptr, LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT);
double barterSum      = libfptr_get_param_double(fptr, LIBFPTR_PARAM_PAYMENTS_SUM_OTHER);

double vat20Sum       = libfptr_get_param_double(fptr, LIBFPTR_PARAM_TAXES_SUM_VAT20);
double vat10Sum       = libfptr_get_param_double(fptr, LIBFPTR_PARAM_TAXES_SUM_VAT10);
double vat120Sum      = libfptr_get_param_double(fptr, LIBFPTR_PARAM_TAXES_SUM_VAT120);
double vat110Sum      = libfptr_get_param_double(fptr, LIBFPTR_PARAM_TAXES_SUM_VAT110);
double vat0Sum        = libfptr_get_param_double(fptr, LIBFPTR_PARAM_TAXES_SUM_VAT0);
double vatNoSum       = libfptr_get_param_double(fptr, LIBFPTR_PARAM_TAXES_SUM_NO);

}

libfptr_set_param_str(fptr, LIBFPTR_PARAM_RECORDS_ID, recordsID.c_str());
libfptr_end_read_records(fptr);
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr &fptr, const std::wstring &recordsID)
{
fptr.setParam(LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_FN_SUM_COUNTERS);
fptr.setParam(LIBFPTR_PARAM_FN_COUNTERS_TYPE, LIBFPTR_FNCT_SHIFT);
fptr.beginReadRecords();
std::wstring recordsID = fptr.getParamString(LIBFPTR_PARAM_RECORDS_ID);
uint shiftNumber = fptr.getParamInt(LIBFPTR_PARAM_SHIFT_NUMBER);
uint receiptsAll = fptr.getParamInt(LIBFPTR_PARAM_RECEIPTS_COUNT);
uint correctionsAll = fptr.getParamInt(LIBFPTR_PARAM_CORRECTIONS_COUNT);

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
uint receiptType = fptr.getParamInt(LIBFPTR_PARAM_RECEIPT_TYPE);

uint receipts         = fptr.getParamInt(LIBFPTR_PARAM_RECEIPTS_COUNT);
uint corrections      = fptr.getParamInt(LIBFPTR_PARAM_CORRECTIONS_COUNT);

double receiptsSum    = fptr.getParamDouble(LIBFPTR_PARAM_RECEIPTS_SUM);
double correctionsSum = fptr.getParamDouble(LIBFPTR_PARAM_CORRECTIONS_SUM);

double cashSum        = fptr.getParamDouble(LIBFPTR_PARAM_PAYMENTS_SUM_CASH);
double noncashSum     = fptr.getParamDouble(LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY);
double prepaidSum     = fptr.getParamDouble(LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID);
double creditSum      = fptr.getParamDouble(LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT);
double barterSum      = fptr.getParamDouble(LIBFPTR_PARAM_PAYMENTS_SUM_OTHER);

double vat20Sum       = fptr.getParamDouble(LIBFPTR_PARAM_TAXES_SUM_VAT20);
double vat10Sum       = fptr.getParamDouble(LIBFPTR_PARAM_TAXES_SUM_VAT10);
double vat120Sum      = fptr.getParamDouble(LIBFPTR_PARAM_TAXES_SUM_VAT120);
double vat110Sum      = fptr.getParamDouble(LIBFPTR_PARAM_TAXES_SUM_VAT110);
double vat0Sum        = fptr.getParamDouble(LIBFPTR_PARAM_TAXES_SUM_VAT0);
double vatNoSum       = fptr.getParamDouble(LIBFPTR_PARAM_TAXES_SUM_NO);

}

fptr.setParam(LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|# Вспомогательная функция чтения следующей записи
def readNextRecord(fptr, recordsID):
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID)
return fptr.readNextRecord()

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_FN_SUM_COUNTERS)
fptr.setParam(IFptr.LIBFPTR_PARAM_FN_COUNTERS_TYPE, IFptr.LIBFPTR_FNCT_SHIFT)
fptr.beginReadRecords()
recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID)
shiftNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SHIFT_NUMBER)
receiptsAll = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPTS_COUNT)
correctionsAll = fptr.getParamInt(IFptr.LIBFPTR_PARAM_CORRECTIONS_COUNT)

while readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK:
receiptType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE)

receipts       = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPTS_COUNT)
corrections    = fptr.getParamInt(IFptr.LIBFPTR_PARAM_CORRECTIONS_COUNT)

receiptsSum    = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_RECEIPTS_SUM)
correctionsSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_CORRECTIONS_SUM)

cashSum        = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_CASH)
noncashSum     = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY)
prepaidSum     = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID)
creditSum      = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT)
barterSum      = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_OTHER)

vat20Sum       = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT20)
vat10Sum       = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT10)
vat120Sum      = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT120)
vat110Sum      = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT110)
vat0Sum        = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT0)
vatNoSum       = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_NO)

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID)
fptr.endReadRecords()
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_FN_SUM_COUNTERS);
fptr.setParam(IFptr.LIBFPTR_PARAM_FN_COUNTERS_TYPE, IFptr.LIBFPTR_FNCT_SHIFT);
fptr.beginReadRecords();
String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);
long shiftNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SHIFT_NUMBER);
long receiptsAll = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPTS_COUNT);
long correctionsAll = fptr.getParamInt(IFptr.LIBFPTR_PARAM_CORRECTIONS_COUNT);

while (readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK) {
long receiptType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE);

long receipts         = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPTS_COUNT);
long corrections      = fptr.getParamInt(IFptr.LIBFPTR_PARAM_CORRECTIONS_COUNT);

double receiptsSum    = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_RECEIPTS_SUM);
double correctionsSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_CORRECTIONS_SUM);

double cashSum        = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_CASH);
double noncashSum     = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY);
double prepaidSum     = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID);
double creditSum      = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT);
double barterSum      = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_OTHER);

double vat20Sum       = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT20);
double vat10Sum       = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT10);
double vat120Sum      = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT120);
double vat110Sum      = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT110);
double vat0Sum        = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT0);
double vatNoSum       = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_NO);

}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_FN_SUM_COUNTERS);
fptr.setParam(IFptr.LIBFPTR_PARAM_FN_COUNTERS_TYPE, IFptr.LIBFPTR_FNCT_SHIFT);
fptr.beginReadRecords();
String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);
long shiftNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SHIFT_NUMBER);
long receiptsAll = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPTS_COUNT);
long correctionsAll = fptr.getParamInt(IFptr.LIBFPTR_PARAM_CORRECTIONS_COUNT);

while (readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK) {
long receiptType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE);

long receipts         = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPTS_COUNT);
long corrections      = fptr.getParamInt(IFptr.LIBFPTR_PARAM_CORRECTIONS_COUNT);

double receiptsSum    = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_RECEIPTS_SUM);
double correctionsSum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_CORRECTIONS_SUM);

double cashSum        = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_CASH);
double noncashSum     = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY);
double prepaidSum     = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID);
double creditSum      = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT);
double barterSum      = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_PAYMENTS_SUM_OTHER);

double vat20Sum       = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT20);
double vat10Sum       = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT10);
double vat120Sum      = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT120);
double vat110Sum      = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT110);
double vat0Sum        = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_VAT0);
double vatNoSum       = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAXES_SUM_NO);

}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr *fptr, NSString *recordsID) {
[fptr setParam:LIBFPTR_PARAM_RECORDS_ID NSStringParam:recordsID];
return [fptr readNextRecord];
}

[fptr setParam:LIBFPTR_PARAM_RECORDS_TYPE intParam:LIBFPTR_RT_FN_SUM_COUNTERS];
[fptr setParam:LIBFPTR_PARAM_FN_COUNTERS_TYPE intParam:LIBFPTR_FNCT_SHIFT];
[fptr beginReadRecords];
NSString *recordsID = [fptr getParamString:LIBFPTR_PARAM_RECORDS_ID];
uint shiftNumber = [fptr getParamInt:LIBFPTR_PARAM_SHIFT_NUMBER];
uint receiptsAll = [fptr getParamInt:LIBFPTR_PARAM_RECEIPTS_COUNT];
uint correctionsAll = [fptr getParamInt:LIBFPTR_PARAM_CORRECTIONS_COUNT];

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
uint receiptType = [fptr getParamInt:LIBFPTR_PARAM_RECEIPT_TYPE];

uint receipts         = [fptr getParamInt:LIBFPTR_PARAM_RECEIPTS_COUNT];
uint corrections      = [fptr getParamInt:LIBFPTR_PARAM_CORRECTIONS_COUNT];

double receiptsSum    = [fptr getParamDouble:LIBFPTR_PARAM_RECEIPTS_SUM];
double correctionsSum = [fptr getParamDouble:LIBFPTR_PARAM_CORRECTIONS_SUM];

double cashSum        = [fptr getParamDouble:LIBFPTR_PARAM_PAYMENTS_SUM_CASH];
double noncashSum     = [fptr getParamDouble:LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY];
double prepaidSum     = [fptr getParamDouble:LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID];
double creditSum      = [fptr getParamDouble:LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT];
double barterSum      = [fptr getParamDouble:LIBFPTR_PARAM_PAYMENTS_SUM_OTHER];

double vat20Sum       = [fptr getParamDouble:LIBFPTR_PARAM_TAXES_SUM_VAT20];
double vat10Sum       = [fptr getParamDouble:LIBFPTR_PARAM_TAXES_SUM_VAT10];
double vat120Sum      = [fptr getParamDouble:LIBFPTR_PARAM_TAXES_SUM_VAT120];
double vat110Sum      = [fptr getParamDouble:LIBFPTR_PARAM_TAXES_SUM_VAT110];
double vat0Sum        = [fptr getParamDouble:LIBFPTR_PARAM_TAXES_SUM_VAT0];
double vatNoSum       = [fptr getParamDouble:LIBFPTR_PARAM_TAXES_SUM_NO];

}

[fptr setParam:LIBFPTR_PARAM_RECORDS_ID NSStringParam:recordsID];
[fptr endReadRecords];
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_TYPE, Constants.LIBFPTR_RT_FN_SUM_COUNTERS);
fptr.setParam(Constants.LIBFPTR_PARAM_FN_COUNTERS_TYPE, Constants.LIBFPTR_FNCT_SHIFT);
fptr.beginReadRecords();
String recordsID = fptr.getParamString(Constants.LIBFPTR_PARAM_RECORDS_ID);
uint shiftNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_SHIFT_NUMBER);
uint receiptsAll = fptr.getParamInt(Constants.LIBFPTR_PARAM_RECEIPTS_COUNT);
uint correctionsAll = fptr.getParamInt(Constants.LIBFPTR_PARAM_CORRECTIONS_COUNT);

while (readNextRecord(fptr, recordsID) == Constants.LIBFPTR_OK) {
uint receiptType = fptr.getParamInt(Constants.LIBFPTR_PARAM_RECEIPT_TYPE);

uint receipts         = fptr.getParamInt(Constants.LIBFPTR_PARAM_RECEIPTS_COUNT);
uint corrections      = fptr.getParamInt(Constants.LIBFPTR_PARAM_CORRECTIONS_COUNT);

double receiptsSum    = fptr.getParamDouble(Constants.LIBFPTR_PARAM_RECEIPTS_SUM);
double correctionsSum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_CORRECTIONS_SUM);

double cashSum        = fptr.getParamDouble(Constants.LIBFPTR_PARAM_PAYMENTS_SUM_CASH);
double noncashSum     = fptr.getParamDouble(Constants.LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY);
double prepaidSum     = fptr.getParamDouble(Constants.LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID);
double creditSum      = fptr.getParamDouble(Constants.LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT);
double barterSum      = fptr.getParamDouble(Constants.LIBFPTR_PARAM_PAYMENTS_SUM_OTHER);

double vat20Sum       = fptr.getParamDouble(Constants.LIBFPTR_PARAM_TAXES_SUM_VAT20);
double vat10Sum       = fptr.getParamDouble(Constants.LIBFPTR_PARAM_TAXES_SUM_VAT10);
double vat120Sum      = fptr.getParamDouble(Constants.LIBFPTR_PARAM_TAXES_SUM_VAT120);
double vat110Sum      = fptr.getParamDouble(Constants.LIBFPTR_PARAM_TAXES_SUM_VAT110);
double vat0Sum        = fptr.getParamDouble(Constants.LIBFPTR_PARAM_TAXES_SUM_VAT0);
double vatNoSum       = fptr.getParamDouble(Constants.LIBFPTR_PARAM_TAXES_SUM_NO);

}

fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
function readNextRecord(fptr: OleVariant; recordsID: String): integer;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
Result := fptr.readNextRecord;
end;

var
receiptsAll, correctionsAll, shiftNumber, receiptType, receipts, corrections: Integer;
receiptsSum, correctionsSum: Double;
cashSum, noncashSum, prepaidSum, creditSum, barterSum: Double;
vat20Sum, vat10Sum, vat120Sum, vat110Sum, vat0Sum, vatNoSum: Double;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_TYPE, fptr.LIBFPTR_RT_FN_SUM_COUNTERS);
fptr.setParam(fptr.LIBFPTR_PARAM_FN_COUNTERS_TYPE, fptr.LIBFPTR_FNCT_SHIFT);
fptr.beginReadRecords;
recordsID := fptr.getParamString(fptr.LIBFPTR_PARAM_RECORDS_ID);
shiftNumber := fptr.getParamInt(fptr.LIBFPTR_PARAM_SHIFT_NUMBER);
receiptsAll := fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPTS_COUNT);
correctionsAll := fptr.getParamInt(fptr.LIBFPTR_PARAM_CORRECTIONS_COUNT);

While readNextRecord(fptr, recordsID) = fptr.LIBFPTR_OK do
begin
    receiptType    := fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_TYPE);

    receipts       := fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPTS_COUNT);
    corrections    := fptr.getParamInt(fptr.LIBFPTR_PARAM_CORRECTIONS_COUNT);

    receiptsSum    := fptr.getParamDouble(fptr.LIBFPTR_PARAM_RECEIPTS_SUM);
    correctionsSum := fptr.getParamDouble(fptr.LIBFPTR_PARAM_CORRECTIONS_SUM);

    cashSum        := fptr.getParamDouble(fptr.LIBFPTR_PARAM_PAYMENTS_SUM_CASH);
    noncashSum     := fptr.getParamDouble(fptr.LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY);
    prepaidSum     := fptr.getParamDouble(fptr.LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID);
    creditSum      := fptr.getParamDouble(fptr.LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT);
    barterSum      := fptr.getParamDouble(fptr.LIBFPTR_PARAM_PAYMENTS_SUM_OTHER);

    vat20Sum       := fptr.getParamDouble(fptr.LIBFPTR_PARAM_TAXES_SUM_VAT20);
    vat10Sum       := fptr.getParamDouble(fptr.LIBFPTR_PARAM_TAXES_SUM_VAT10);
    vat120Sum      := fptr.getParamDouble(fptr.LIBFPTR_PARAM_TAXES_SUM_VAT120);
    vat110Sum      := fptr.getParamDouble(fptr.LIBFPTR_PARAM_TAXES_SUM_VAT110);
    vat0Sum        := fptr.getParamDouble(fptr.LIBFPTR_PARAM_TAXES_SUM_VAT0);
    vatNoSum       := fptr.getParamDouble(fptr.LIBFPTR_PARAM_TAXES_SUM_NO);
end;

fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords;

end;
|

|// Вспомогательная функция чтения следующей записи
func readNextRecord(fptr *fptr10.IFptr, recordsID string) error {
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_ID, recordsID)
return fptr.ReadNextRecord()
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_TYPE, fptr10.LIBFPTR_RT_FN_SUM_COUNTERS)
fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_COUNTERS_TYPE, fptr10.LIBFPTR_FNCT_SHIFT);
fptr.BeginReadRecords()
recordsID := fptr.GetParamString(fptr10.LIBFPTR_PARAM_RECORDS_ID)
shiftNumber := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_SHIFT_NUMBER)
receiptsAll := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_RECEIPTS_COUNT)
correctionsAll := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_CORRECTIONS_COUNT)

for readNextRecord(fptr, recordsID) == nil {
receiptType = fptr.GetParamInt(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE)

receipts       = fptr.GetParamInt(fptr10.LIBFPTR_PARAM_RECEIPTS_COUNT)
corrections    = fptr.GetParamInt(fptr10.LIBFPTR_PARAM_CORRECTIONS_COUNT)

receiptsSum    = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_RECEIPTS_SUM)
correctionsSum = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_CORRECTIONS_SUM)

cashSum        = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_PAYMENTS_SUM_CASH)
noncashSum     = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY)
prepaidSum     = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID)
creditSum      = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT)
barterSum      = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_PAYMENTS_SUM_OTHER)

vat20Sum       = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_TAXES_SUM_VAT20)
vat10Sum       = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_TAXES_SUM_VAT10)
vat120Sum      = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_TAXES_SUM_VAT120)
vat110Sum      = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_TAXES_SUM_VAT110)
vat0Sum        = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_TAXES_SUM_VAT0)
vatNoSum       = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_TAXES_SUM_NO)

}

fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_ID, recordsID)
fptr.EndReadRecords()
|

|// Вспомогательная функция чтения следующей записи
function readNextRecord(recordsID) {
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return Fptr.readNextRecord();
}

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_TYPE, Fptr.LIBFPTR_RT_FN_SUM_COUNTERS);
Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_COUNTERS_TYPE, Fptr.LIBFPTR_FNCT_SHIFT);
Fptr.beginReadRecords();
recordsID = Fptr.getParamString(Fptr.LIBFPTR_PARAM_RECORDS_ID);
shiftNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_SHIFT_NUMBER);
receiptsAll = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_RECEIPTS_COUNT);
correctionsAll = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_CORRECTIONS_COUNT);

while (readNextRecord(recordsID) == Fptr.LIBFPTR_OK) {
receiptType = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE);

receipts       = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_RECEIPTS_COUNT);
corrections    = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_CORRECTIONS_COUNT);

receiptsSum    = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_RECEIPTS_SUM);
correctionsSum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_CORRECTIONS_SUM);

cashSum        = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_PAYMENTS_SUM_CASH);
noncashSum     = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY);
prepaidSum     = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID);
creditSum      = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT);
barterSum      = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_PAYMENTS_SUM_OTHER);

vat20Sum       = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_TAXES_SUM_VAT20);
vat10Sum       = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_TAXES_SUM_VAT10);
vat120Sum      = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_TAXES_SUM_VAT120);
vat110Sum      = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_TAXES_SUM_VAT110);
vat0Sum        = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_TAXES_SUM_VAT0);
vatNoSum       = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_TAXES_SUM_NO);

}

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
Fptr.endReadRecords();
|

Также можно запросить счетчики итогов сразу по всем типам расчетов. Для
этого нужно вызвать метод /beginReadRecords()/ с типом данных
LIBFPTR_PARAM_RECORDS_TYPE равным LIBFPTR_RT_FN_SUM_COUNTERS. В
параметре LIBFPTR_PARAM_FN_COUNTERS_TYPE нужно указать тип счетчиков.

Выходным параметрами будут следующие значения:

Параметр Описание Тип
LIBFPTR_PARAM_SHIFT_NUMBER Номер смены int
LIBFPTR_PARAM_RECEIPTS_COUNT Общее количество чеков (включая
коррекции) int
LIBFPTR_PARAM_CORRECTIONS_COUNT Количество коррекций int

Каждый успешный вызов метода /readNextRecord()/ заполняет следующие
параметры:

Параметр Описание Тип
LIBFPTR_PARAM_RECEIPT_TYPE Тип расчета int
LIBFPTR_PARAM_RECEIPTS_COUNT Общее количество чеков (включая
коррекции) int
LIBFPTR_PARAM_CORRECTIONS_COUNT Количество коррекций int
LIBFPTR_PARAM_RECEIPTS_SUM Итоговая сумма чеков (включая коррекции)
double
LIBFPTR_PARAM_CORRECTIONS_SUM Сумма коррекций double
LIBFPTR_PARAM_PAYMENTS_SUM_CASH Сумма наличных оплат double
LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY Сумма безналичных оплат
double
LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID Сумма оплат авансом double
LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT Сумма оплат кредитом double
LIBFPTR_PARAM_PAYMENTS_SUM_OTHER Сумма оплат встречным
предоставлением double
LIBFPTR_PARAM_TAXES_SUM_VAT20 Сумма НДС 20% double
LIBFPTR_PARAM_TAXES_SUM_VAT10 Сумма НДС 10% double
LIBFPTR_PARAM_TAXES_SUM_VAT120 Сумма НДС 20/120 double
LIBFPTR_PARAM_TAXES_SUM_VAT110 Сумма НДС 10/110 double
LIBFPTR_PARAM_TAXES_SUM_VAT0 Сумма НДС 0% double
LIBFPTR_PARAM_TAXES_SUM_NO Сумма без НДС double

Тип расчета (LIBFPTR_PARAM_RECEIPT_TYPE) может принимать следующие
значения:

  • LIBFPTR_RT_SELL — чек прихода (продажи);
  • LIBFPTR_RT_SELL_RETURN — чек возврата прихода (продажи);
  • LIBFPTR_RT_BUY — чек расхода (покупки);
  • LIBFPTR_RT_BUY_RETURN — чек возврата расхода (покупки).

Тип счетчиков ФН (LIBFPTR_PARAM_FN_COUNTERS_TYPE) может принимать
следующие значения:

  • LIBFPTR_FNCT_SHIFT — сменные счетчики;
  • LIBFPTR_FNCT_NON_NULLABLE — необнуляемые счетчики.

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.1

Счетчики количеств операций

Чтение счетчиков количеств операций ФН

|// Вспомогательная функция для чтения строковых параметров
std::wstring readStringAttribute(libfptr_handle fptr, int paramNumber) {
std::vector str(32);
int size = libfptr_get_param_str(fptr, paramNumber, &str[0], str.size());
if (size > str.size()) {
str.resize(size);
libfptr_get_param_str(fptr, paramNumber, &str[0], str.size());
}
return std::wstring(&str[0]);
}

// Вспомогательная функция чтения следующей записи
int readNextRecord(libfptr_handle fptr, const std::wstring &recordsID) {
libfptr_set_param_str(fptr, LIBFPTR_PARAM_RECORDS_ID, recordsID.c_str());
return libfptr_read_next_record(fptr);
}

libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_FN_QUANTITY_COUNTERS);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_COUNTERS_TYPE, LIBFPTR_FNCT_SHIFT);
libfptr_begin_read_records(handle);
std::wstring recordsID = readStringAttribute(fptr, LIBFPTR_PARAM_RECORDS_ID);
uint shiftNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_SHIFT_NUMBER);
uint countAll = libfptr_get_param_int(fptr, LIBFPTR_PARAM_RECEIPTS_COUNT);

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
uint receiptType = libfptr_get_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE);
uint count = libfptr_get_param_int(fptr, LIBFPTR_PARAM_RECEIPTS_COUNT);
uint corrections = libfptr_get_param_int(fptr, LIBFPTR_PARAM_CORRECTIONS_COUNT);
}

libfptr_set_param_str(fptr, LIBFPTR_PARAM_RECORDS_ID, recordsID.c_str());
libfptr_end_read_records(fptr);
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr &fptr, const std::wstring &recordsID)
{
fptr.setParam(LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_FN_QUANTITY_COUNTERS);
fptr.setParam(LIBFPTR_PARAM_FN_COUNTERS_TYPE, LIBFPTR_FNCT_SHIFT);
fptr.beginReadRecords();
std::wstring recordsID = fptr.getParamString(LIBFPTR_PARAM_RECORDS_ID);
uint shiftNumber = fptr.getParamInt(LIBFPTR_PARAM_SHIFT_NUMBER);
uint countAll = fptr.getParamInt(LIBFPTR_PARAM_RECEIPTS_COUNT);

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
uint receiptType = fptr.getParamInt(LIBFPTR_PARAM_RECEIPT_TYPE);
uint count = fptr.getParamInt(LIBFPTR_PARAM_RECEIPTS_COUNT);
uint corrections = fptr.getParamInt(LIBFPTR_PARAM_CORRECTIONS_COUNT);
}

fptr.setParam(LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|# Вспомогательная функция чтения следующей записи
def readNextRecord(fptr, recordsID):
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID)
return fptr.readNextRecord()

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_FN_QUANTITY_COUNTERS)
fptr.setParam(IFptr.LIBFPTR_PARAM_FN_COUNTERS_TYPE, IFptr.LIBFPTR_FNCT_SHIFT)
fptr.beginReadRecords()
recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID)
shiftNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SHIFT_NUMBER)
countAll = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPTS_COUNT)

while readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK:
receiptType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE)
count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPTS_COUNT)
corrections = fptr.getParamInt(IFptr.LIBFPTR_PARAM_CORRECTIONS_COUNT)

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID)
fptr.endReadRecords()
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_FN_QUANTITY_COUNTERS);
fptr.setParam(IFptr.LIBFPTR_PARAM_FN_COUNTERS_TYPE, IFptr.LIBFPTR_FNCT_SHIFT);
fptr.beginReadRecords();
String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);
long shiftNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SHIFT_NUMBER);
long countAll = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPTS_COUNT);

while (readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK) {
long receiptType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE);
long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPTS_COUNT);
long corrections = fptr.getParamInt(IFptr.LIBFPTR_PARAM_CORRECTIONS_COUNT);
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_FN_QUANTITY_COUNTERS);
fptr.setParam(IFptr.LIBFPTR_PARAM_FN_COUNTERS_TYPE, IFptr.LIBFPTR_FNCT_SHIFT);
fptr.beginReadRecords();
String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);
long shiftNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SHIFT_NUMBER);
long countAll = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPTS_COUNT);

while (readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK) {
long receiptType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE);
long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPTS_COUNT);
long corrections = fptr.getParamInt(IFptr.LIBFPTR_PARAM_CORRECTIONS_COUNT);
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr *fptr, NSString *recordsID) {
[fptr setParam:LIBFPTR_PARAM_RECORDS_ID NSStringParam:recordsID];
return [fptr readNextRecord];
}

[fptr setParam:LIBFPTR_PARAM_RECORDS_TYPE intParam:LIBFPTR_RT_FN_QUANTITY_COUNTERS];
[fptr setParam:LIBFPTR_PARAM_FN_COUNTERS_TYPE intParam:LIBFPTR_FNCT_SHIFT];
[fptr beginReadRecords];
NSString *recordsID = [fptr getParamString:LIBFPTR_PARAM_RECORDS_ID];
uint shiftNumber = [fptr getParamInt:LIBFPTR_PARAM_SHIFT_NUMBER];
uint countAll = [fptr getParamInt:LIBFPTR_PARAM_RECEIPTS_COUNT];

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
uint receiptType = [fptr getParamInt:LIBFPTR_PARAM_RECEIPT_TYPE];
uint count = [fptr getParamInt:LIBFPTR_PARAM_RECEIPTS_COUNT];
uint corrections = [fptr getParamInt:LIBFPTR_PARAM_CORRECTIONS_COUNT];
}

[fptr setParam:LIBFPTR_PARAM_RECORDS_ID NSStringParam:recordsID];
[fptr endReadRecords];
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_TYPE, Constants.LIBFPTR_RT_FN_QUANTITY_COUNTERS);
fptr.setParam(Constants.LIBFPTR_PARAM_FN_COUNTERS_TYPE, Constants.LIBFPTR_FNCT_SHIFT);
fptr.beginReadRecords();
String recordsID = fptr.getParamString(Constants.LIBFPTR_PARAM_RECORDS_ID);
uint shiftNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_SHIFT_NUMBER);
uint countAll = fptr.getParamInt(Constants.LIBFPTR_PARAM_RECEIPTS_COUNT);

while (readNextRecord(fptr, recordsID) == Constants.LIBFPTR_OK) {
uint receiptType = fptr.getParamInt(Constants.LIBFPTR_PARAM_RECEIPT_TYPE);
uint count = fptr.getParamInt(Constants.LIBFPTR_PARAM_RECEIPTS_COUNT);
uint corrections = fptr.getParamInt(Constants.LIBFPTR_PARAM_CORRECTIONS_COUNT);
}

fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
function readNextRecord(fptr: OleVariant; recordsID: String): integer;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
Result := fptr.readNextRecord;
end;

var
receiptType, count, countAll, shiftNumber: Integer;
sum: Double;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_TYPE, fptr.LIBFPTR_RT_FN_QUANTITY_COUNTERS);
fptr.setParam(fptr.LIBFPTR_PARAM_FN_COUNTERS_TYPE, fptr.LIBFPTR_FNCT_SHIFT);
fptr.beginReadRecords;
recordsID := fptr.getParamString(fptr.LIBFPTR_PARAM_RECORDS_ID);
shiftNumber := fptr.getParamInt(fptr.LIBFPTR_PARAM_SHIFT_NUMBER);
countAll := fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPTS_COUNT);

While readNextRecord(fptr, recordsID) = fptr.LIBFPTR_OK do
begin
    receiptType := fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_TYPE);
    count       := fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPTS_COUNT);
    corrections := fptr.getParamInt(fptr.LIBFPTR_PARAM_CORRECTIONS_COUNT);
end;

fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords;

end;
|

|// Вспомогательная функция чтения следующей записи
func readNextRecord(fptr *fptr10.IFptr, recordsID string) error {
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_ID, recordsID)
return fptr.ReadNextRecord()
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_TYPE, fptr10.LIBFPTR_RT_FN_QUANTITY_COUNTERS)
fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_COUNTERS_TYPE, fptr10.LIBFPTR_FNCT_SHIFT)
fptr.BeginReadRecords()
recordsID := fptr.GetParamString(fptr10.LIBFPTR_PARAM_RECORDS_ID)
shiftNumber := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_SHIFT_NUMBER)
countAll := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_RECEIPTS_SUM)

for readNextRecord(fptr, recordsID) == nil {
receiptType = fptr.GetParamInt(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE)
count = fptr.GetParamInt(fptr10.LIBFPTR_PARAM_RECEIPTS_COUNT)
corrections = fptr.GetParamInt(fptr10.LIBFPTR_PARAM_CORRECTIONS_COUNT)
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_ID, recordsID)
fptr.EndReadRecords()
|

|// Вспомогательная функция чтения следующей записи
function readNextRecord(recordsID) {
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return Fptr.readNextRecord();
}

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_TYPE, Fptr.LIBFPTR_RT_FN_QUANTITY_COUNTERS);
Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_COUNTERS_TYPE, Fptr.LIBFPTR_FNCT_SHIFT);
Fptr.beginReadRecords();
recordsID = Fptr.getParamString(Fptr.LIBFPTR_PARAM_RECORDS_ID);
shiftNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_SHIFT_NUMBER);
countAll = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_RECEIPTS_COUNT);

while (readNextRecord(recordsID) == Fptr.LIBFPTR_OK) {
receiptType = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE);
count = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_RECEIPTS_COUNT);
corrections = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_CORRECTIONS_COUNT);
}

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
Fptr.endReadRecords();
|

Для чтения счетчиков количеств операций ФН необходимо вызвать метод / beginReadRecords()/ с типом данных LIBFPTR_PARAM_RECORDS_TYPE равным
LIBFPTR_RT_FN_QUANTITY_COUNTERS. В параметре
LIBFPTR_PARAM_FN_COUNTERS_TYPE нужно указать тип счетчиков.

Выходным параметрами будут следующие значения:

Параметр Описание Тип
LIBFPTR_PARAM_SHIFT_NUMBER Номер смены int
LIBFPTR_PARAM_RECEIPTS_COUNT Общее количество чеков (включая
коррекции) int

Каждый успешный вызов метода /readNextRecord()/ заполняет следующие
параметры:

Параметр Описание Тип
LIBFPTR_PARAM_RECEIPT_TYPE Тип расчета int
LIBFPTR_PARAM_RECEIPTS_COUNT Общее количество чеков (включая
коррекции) int
LIBFPTR_PARAM_CORRECTIONS_COUNT Количество коррекций int

Тип расчета (LIBFPTR_PARAM_RECEIPT_TYPE) может принимать следующие
значения:

  • LIBFPTR_RT_SELL — чек прихода (продажи);
  • LIBFPTR_RT_SELL_RETURN — чек возврата прихода (продажи);
  • LIBFPTR_RT_BUY — чек расхода (покупки);
  • LIBFPTR_RT_BUY_RETURN — чек возврата расхода (покупки).

Тип счетчиков ФН (LIBFPTR_PARAM_FN_COUNTERS_TYPE) может принимать
следующие значения:

  • LIBFPTR_FNCT_SHIFT — сменные счетчики;
  • LIBFPTR_FNCT_NON_NULLABLE — необнуляемые счетчики.

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.1

Счетчики итогов непереданных документов

Чтение счетчиков итогов непереданных документов ФН

|// Вспомогательная функция для чтения строковых параметров
std::wstring readStringAttribute(libfptr_handle fptr, int paramNumber) {
std::vector str(32);
int size = libfptr_get_param_str(fptr, paramNumber, &str[0], str.size());
if (size > str.size()) {
str.resize(size);
libfptr_get_param_str(fptr, paramNumber, &str[0], str.size());
}
return std::wstring(&str[0]);
}

// Вспомогательная функция чтения следующей записи
int readNextRecord(libfptr_handle fptr, const std::wstring &recordsID) {
libfptr_set_param_str(fptr, LIBFPTR_PARAM_RECORDS_ID, recordsID.c_str());
return libfptr_read_next_record(fptr);
}

libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_FN_UNSENT_DOCS_COUNTERS);
libfptr_begin_read_records(handle);
std::wstring recordsID = readStringAttribute(fptr, LIBFPTR_PARAM_RECORDS_ID);
uint countAll = libfptr_get_param_int(fptr, LIBFPTR_PARAM_RECEIPTS_COUNT);

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
uint receiptType = libfptr_get_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE);
uint count = libfptr_get_param_int(fptr, LIBFPTR_PARAM_RECEIPTS_COUNT);
double sum = libfptr_get_param_double(fptr, LIBFPTR_PARAM_RECEIPTS_SUM);
}

libfptr_set_param_str(fptr, LIBFPTR_PARAM_RECORDS_ID, recordsID.c_str());
libfptr_end_read_records(fptr);
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr &fptr, const std::wstring &recordsID)
{
fptr.setParam(LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_FN_UNSENT_DOCS_COUNTERS);
fptr.beginReadRecords();
std::wstring recordsID = fptr.getParamString(LIBFPTR_PARAM_RECORDS_ID);
uint countAll = fptr.getParamInt(LIBFPTR_PARAM_RECEIPTS_COUNT);

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
uint receiptType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE);
uint count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPTS_COUNT);
double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_RECEIPTS_SUM);
}

fptr.setParam(LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|# Вспомогательная функция чтения следующей записи
def readNextRecord(fptr, recordsID):
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID)
return fptr.readNextRecord()

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_FN_UNSENT_DOCS_COUNTERS)
fptr.beginReadRecords()
recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID)
countAll = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPTS_COUNT)

while readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK:
receiptType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE)
count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPTS_COUNT)
sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_RECEIPTS_SUM)

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID)
fptr.endReadRecords()
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_FN_UNSENT_DOCS_COUNTERS);
fptr.beginReadRecords();
String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);
long countAll = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPTS_COUNT);

while (readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK) {
long receiptType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE);
long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPTS_COUNT);
double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_RECEIPTS_SUM);
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_FN_UNSENT_DOCS_COUNTERS);
fptr.beginReadRecords();
String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);
long countAll = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPTS_COUNT);

while (readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK) {
long receiptType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE);
long count = fptr.getParamInt(IFptr.LIBFPTR_PARAM_RECEIPTS_COUNT);
double sum = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_RECEIPTS_SUM);
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr *fptr, NSString *recordsID) {
[fptr setParam:LIBFPTR_PARAM_RECORDS_ID NSStringParam:recordsID];
return [fptr readNextRecord];
}

[fptr setParam:LIBFPTR_PARAM_RECORDS_TYPE intParam:LIBFPTR_RT_FN_UNSENT_DOCS_COUNTERS];
[fptr beginReadRecords];
NSString *recordsID = [fptr getParamString:LIBFPTR_PARAM_RECORDS_ID];
uint countAll = [fptr getParamInt:LIBFPTR_PARAM_RECEIPTS_COUNT];

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
uint receiptType = [fptr getParamInt:LIBFPTR_PARAM_RECEIPT_TYPE];
uint count = [fptr getParamInt:LIBFPTR_PARAM_RECEIPTS_COUNT];
double sum = [fptr getParamDouble:LIBFPTR_PARAM_RECEIPTS_SUM];
}

[fptr setParam:LIBFPTR_PARAM_RECORDS_ID NSStringParam:recordsID];
[fptr endReadRecords];
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_TYPE, Constants.LIBFPTR_RT_FN_UNSENT_DOCS_COUNTERS);
fptr.beginReadRecords();
String recordsID = fptr.getParamString(Constants.LIBFPTR_PARAM_RECORDS_ID);
uint countAll = fptr.getParamInt(Constants.LIBFPTR_PARAM_RECEIPTS_COUNT);

while (readNextRecord(fptr, recordsID) == Constants.LIBFPTR_OK) {
uint receiptType = fptr.getParamInt(Constants.LIBFPTR_PARAM_RECEIPT_TYPE);
uint count = fptr.getParamInt(Constants.LIBFPTR_PARAM_RECEIPTS_COUNT);
double sum = fptr.getParamDouble(Constants.LIBFPTR_PARAM_RECEIPTS_SUM);
}

fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
function readNextRecord(fptr: OleVariant; recordsID: String): integer;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
Result := fptr.readNextRecord;
end;

var
receiptType, count, countAll: Integer;
sum: Double;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_TYPE, fptr.LIBFPTR_RT_FN_UNSENT_DOCS_COUNTERS);
fptr.beginReadRecords;
recordsID := fptr.getParamString(fptr.LIBFPTR_PARAM_RECORDS_ID);
countAll := fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPTS_COUNT);

While readNextRecord(fptr, recordsID) = fptr.LIBFPTR_OK do
begin
    receiptType := fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPT_TYPE);
    count       := fptr.getParamInt(fptr.LIBFPTR_PARAM_RECEIPTS_COUNT);
    sum         := fptr.getParamDouble(fptr.LIBFPTR_PARAM_RECEIPTS_SUM);
end;

fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords;

end;
|

|// Вспомогательная функция чтения следующей записи
func readNextRecord(fptr *fptr10.IFptr, recordsID string) error {
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_ID, recordsID)
return fptr.ReadNextRecord()
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_TYPE, fptr10.LIBFPTR_RT_FN_UNSENT_DOCS_COUNTERS)
fptr.BeginReadRecords()
recordsID := fptr.GetParamString(fptr10.LIBFPTR_PARAM_RECORDS_ID)
countAll := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_RECEIPTS_COUNT)

for readNextRecord(fptr, recordsID) == nil {
receiptType = fptr.GetParamInt(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE)
count = fptr.GetParamInt(fptr10.LIBFPTR_PARAM_RECEIPTS_COUNT)
sum = fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_RECEIPTS_SUM)
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_ID, recordsID)
fptr.EndReadRecords()
|

|// Вспомогательная функция чтения следующей записи
function readNextRecord(recordsID) {
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return Fptr.readNextRecord();
}

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_TYPE, Fptr.LIBFPTR_RT_FN_UNSENT_DOCS_COUNTERS);
Fptr.beginReadRecords();
recordsID = Fptr.getParamString(Fptr.LIBFPTR_PARAM_RECORDS_ID);
countAll = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_RECEIPTS_COUNT);

while (readNextRecord(recordsID) == Fptr.LIBFPTR_OK) {
receiptType = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE);
count = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_RECEIPTS_COUNT);
sum = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_RECEIPTS_SUM);
}

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
Fptr.endReadRecords();
|

Для чтения счетчиков количеств операций ФН необходимо вызвать метод / beginReadRecords()/ с типом данных LIBFPTR_PARAM_RECORDS_TYPE равным
LIBFPTR_RT_FN_UNSENT_DOCS_COUNTERS.

Выходным параметрами будут следующие значения:

Параметр Описание Тип
LIBFPTR_PARAM_RECEIPTS_COUNT Общее количество чеков (включая
коррекции) int

Каждый успешный вызов метода /readNextRecord()/ заполняет следующие
параметры:

Параметр Описание Тип
LIBFPTR_PARAM_RECEIPT_TYPE Тип расчета int
LIBFPTR_PARAM_RECEIPTS_COUNT Общее количество чеков (включая
коррекции) int
LIBFPTR_PARAM_RECEIPTS_SUM Итоговая сумма чеков (включая коррекции)
double

Тип расчета (LIBFPTR_PARAM_RECEIPT_TYPE) может принимать следующие
значения:

  • LIBFPTR_RT_SELL — чек прихода (продажи);
  • LIBFPTR_RT_SELL_RETURN — чек возврата прихода (продажи);
  • LIBFPTR_RT_BUY — чек расхода (покупки);
  • LIBFPTR_RT_BUY_RETURN — чек возврата расхода (покупки).

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.1

Регистрация ККТ

Регистрация ККТ

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_OPERATION_TYPE, LIBFPTR_FNOP_REGISTRATION);

libfptr_set_param_str(fptr, 1060, L»www.nalog.gov.ru»);

libfptr_set_param_str(fptr, 1009, L»Улица свободы, 42″);
libfptr_set_param_str(fptr, 1018, L»135792468001″);
libfptr_set_param_str(fptr, 1048, L»Иванов Иван Иванович»);
libfptr_set_param_int(fptr, 1062, LIBFPTR_TT_OSN | LIBFPTR_TT_PATENT);
libfptr_set_param_str(fptr, 1117, L»my-company@mail.ru»);
libfptr_set_param_int(fptr, 1057, LIBFPTR_AT_BANK_PAYING_AGENT | LIBFPTR_AT_PAYING_AGENT | LIBFPTR_AT_ATTORNEY);

libfptr_set_param_str(fptr, 1187, L»Улица свободы, 45″);
libfptr_set_param_str(fptr, 1037, L»12345678900987654321″);
libfptr_set_param_int(fptr, 1209, LIBFPTR_FFD_1_0_5);
libfptr_set_param_bool(fptr, 1001, false);
libfptr_set_param_str(fptr, 1036, L»513″);
libfptr_set_param_bool(fptr, 1002, false);
libfptr_set_param_bool(fptr, 1056, false);
libfptr_set_param_bool(fptr, 1108, false);
libfptr_set_param_bool(fptr, 1109, false);
libfptr_set_param_bool(fptr, 1110, false);
libfptr_set_param_bool(fptr, 1126, false);
libfptr_set_param_bool(fptr, 1193, true);
libfptr_set_param_bool(fptr, 1207, false);
libfptr_set_param_bool(fptr, 1221, false);

libfptr_set_param_str(fptr, 1017, L»9715260691″);
libfptr_set_param_str(fptr, 1046, L»ООО \»Эвотор ОФД\»»);

libfptr_fn_operation(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_FN_OPERATION_TYPE, LIBFPTR_FNOP_REGISTRATION);

fptr.setParam(1060, L»www.nalog.gov.ru»);

fptr.setParam(1009, L»Улица свободы, 42″);
fptr.setParam(1018, L»135792468001″);
fptr.setParam(1048, L»Иванов Иван Иванович»);
fptr.setParam(1062, LIBFPTR_TT_OSN | LIBFPTR_TT_PATENT);
fptr.setParam(1117, L»my-company@mail.ru»);
fptr.setParam(1057, LIBFPTR_AT_BANK_PAYING_AGENT | LIBFPTR_AT_PAYING_AGENT | LIBFPTR_AT_ATTORNEY);

fptr.setParam(1187, L»Улица свободы, 45″);
fptr.setParam(1037, L»12345678900987654321″);
fptr.setParam(1209, LIBFPTR_FFD_1_0_5);
fptr.setParam(1001, false);
fptr.setParam(1036, L»513″);
fptr.setParam(1002, false);
fptr.setParam(1056, false);
fptr.setParam(1108, false);
fptr.setParam(1109, false);
fptr.setParam(1110, false);
fptr.setParam(1126, false);
fptr.setParam(1193, true);
fptr.setParam(1207, false);
fptr.setParam(1221, false);

fptr.setParam(1017, L»9715260691″);
fptr.setParam(1046, L»ООО \»Эвотор ОФД\»»);

fptr.fnOperation();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_OPERATION_TYPE, IFptr.LIBFPTR_FNOP_REGISTRATION)

fptr.setParam(1060, «www.nalog.gov.ru»)

fptr.setParam(1009, «Улица свободы, 42»)
fptr.setParam(1018, «135792468001»)
fptr.setParam(1048, «Иванов Иван Иванович»)
fptr.setParam(1062, IFptr.LIBFPTR_TT_OSN | IFptr.LIBFPTR_TT_PATENT)
fptr.setParam(1117, «my-company@mail.ru»)
fptr.setParam(1057, IFptr.LIBFPTR_AT_BANK_PAYING_AGENT | IFptr.LIBFPTR_AT_PAYING_AGENT | IFptr.LIBFPTR_AT_ATTORNEY)

fptr.setParam(1187, «Улица свободы, 45»)
fptr.setParam(1037, «12345678900987654321»)
fptr.setParam(1209, IFptr.LIBFPTR_FFD_1_0_5)
fptr.setParam(1001, False)
fptr.setParam(1036, «513»)
fptr.setParam(1002, False)
fptr.setParam(1056, False)
fptr.setParam(1108, False)
fptr.setParam(1109, False)
fptr.setParam(1110, False)
fptr.setParam(1126, False)
fptr.setParam(1193, True)
fptr.setParam(1207, False)
fptr.setParam(1221, False)

fptr.setParam(1017, «9715260691»)
fptr.setParam(1046, «ООО \»Эвотор ОФД\»»)

fptr.fnOperation()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_OPERATION_TYPE, IFptr.LIBFPTR_FNOP_REGISTRATION);

fptr.setParam(1060, «www.nalog.gov.ru»);

fptr.setParam(1009, «Улица свободы, 42»);
fptr.setParam(1018, «135792468001»);
fptr.setParam(1048, «Иванов Иван Иванович»);
fptr.setParam(1062, IFptr.LIBFPTR_TT_OSN | IFptr.LIBFPTR_TT_PATENT);
fptr.setParam(1117, «my-company@mail.ru»);
fptr.setParam(1057, IFptr.LIBFPTR_AT_BANK_PAYING_AGENT | IFptr.LIBFPTR_AT_PAYING_AGENT | IFptr.LIBFPTR_AT_ATTORNEY);

fptr.setParam(1187, «Улица свободы, 45»);
fptr.setParam(1037, «12345678900987654321»);
fptr.setParam(1209, IFptr.LIBFPTR_FFD_1_0_5);
fptr.setParam(1001, false);
fptr.setParam(1036, «513»);
fptr.setParam(1002, false);
fptr.setParam(1056, false);
fptr.setParam(1108, false);
fptr.setParam(1109, false);
fptr.setParam(1110, false);
fptr.setParam(1126, false);
fptr.setParam(1193, true);
fptr.setParam(1207, false);
fptr.setParam(1221, false);

fptr.setParam(1017, «9715260691»);
fptr.setParam(1046, «ООО \»Эвотор ОФД\»»);

fptr.fnOperation()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_OPERATION_TYPE, IFptr.LIBFPTR_FNOP_REGISTRATION);

fptr.setParam(1060, «www.nalog.gov.ru»);

fptr.setParam(1009, «Улица свободы, 42»);
fptr.setParam(1018, «135792468001»);
fptr.setParam(1048, «Иванов Иван Иванович»);
fptr.setParam(1062, IFptr.LIBFPTR_TT_OSN | IFptr.LIBFPTR_TT_PATENT);
fptr.setParam(1117, «my-company@mail.ru»);
fptr.setParam(1057, IFptr.LIBFPTR_AT_BANK_PAYING_AGENT | IFptr.LIBFPTR_AT_PAYING_AGENT | IFptr.LIBFPTR_AT_ATTORNEY);

fptr.setParam(1187, «Улица свободы, 45»);
fptr.setParam(1037, «12345678900987654321»);
fptr.setParam(1209, IFptr.LIBFPTR_FFD_1_0_5);
fptr.setParam(1001, false);
fptr.setParam(1036, «513»);
fptr.setParam(1002, false);
fptr.setParam(1056, false);
fptr.setParam(1108, false);
fptr.setParam(1109, false);
fptr.setParam(1110, false);
fptr.setParam(1126, false);
fptr.setParam(1193, true);
fptr.setParam(1207, false);
fptr.setParam(1221, false);

fptr.setParam(1017, «9715260691»);
fptr.setParam(1046, «ООО \»Эвотор ОФД\»»);

fptr.fnOperation();
|

|[fptr setParam:LIBFPTR_PARAM_FN_OPERATION_TYPE intParam:LIBFPTR_FNOP_REGISTRATION];

[fptr setParam:1060 NSStringParam:@»www.nalog.gov.ru»];

[fptr setParam:1009 NSStringParam:@»Улица свободы, 42″];
[fptr setParam:1018 NSStringParam:@»135792468001″];
[fptr setParam:1048 NSStringParam:@»Иванов Иван Иванович»];
[fptr setParam:1062 intParam:LIBFPTR_TT_OSN | LIBFPTR_TT_PATENT];
[fptr setParam:1117 NSStringParam:@»my-company@mail.ru»];
[fptr setParam:1057 intParam:LIBFPTR_AT_BANK_PAYING_AGENT | LIBFPTR_AT_PAYING_AGENT | LIBFPTR_AT_ATTORNEY];

[fptr setParam:1187 NSStringParam:@»Улица свободы, 45″];
[fptr setParam:1037 NSStringParam:@»12345678900987654321″];
[fptr setParam:1209 intParam:LIBFPTR_FFD_1_0_5];
[fptr setParam:1001 boolParam:false];
[fptr setParam:1036 NSStringParam:@»513″];
[fptr setParam:1002 boolParam:false];
[fptr setParam:1056 boolParam:false];
[fptr setParam:1108 boolParam:false];
[fptr setParam:1109 boolParam:false];
[fptr setParam:1110 boolParam:false];
[fptr setParam:1126 boolParam:false];
[fptr setParam:1193 boolParam:true];
[fptr setParam:1207 boolParam:false];
[fptr setParam:1221 boolParam:false];

[fptr setParam:1017 NSStringParam:@»9715260691″];
[fptr setParam:1046 NSStringParam:@»ООО \»Эвотор ОФД\»»];

[fptr fnOperation];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_OPERATION_TYPE, Constants.LIBFPTR_FNOP_REGISTRATION);

fptr.setParam(1060, «www.nalog.gov.ru»);

fptr.setParam(1009, «Улица свободы, 42»);
fptr.setParam(1018, «135792468001»);
fptr.setParam(1048, «Иванов Иван Иванович»);
fptr.setParam(1062, Constants.LIBFPTR_TT_OSN | Constants.LIBFPTR_TT_PATENT);
fptr.setParam(1117, «my-company@mail.ru»);
fptr.setParam(1057, Constants.LIBFPTR_AT_BANK_PAYING_AGENT | Constants.LIBFPTR_AT_PAYING_AGENT | Constants.LIBFPTR_AT_ATTORNEY);

fptr.setParam(1187, «Улица свободы, 45»);
fptr.setParam(1037, «12345678900987654321»);
fptr.setParam(1209, Constants.LIBFPTR_FFD_1_0_5);
fptr.setParam(1001, false);
fptr.setParam(1036, «513»);
fptr.setParam(1002, false);
fptr.setParam(1056, false);
fptr.setParam(1108, false);
fptr.setParam(1109, false);
fptr.setParam(1110, false);
fptr.setParam(1126, false);
fptr.setParam(1193, true);
fptr.setParam(1207, false);
fptr.setParam(1221, false);

fptr.setParam(1017, «9715260691»);
fptr.setParam(1046, «ООО \»Эвотор ОФД\»»);

fptr.fnOperation();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_OPERATION_TYPE, fptr.LIBFPTR_FNOP_REGISTRATION);

fptr.setParam(1060, 'www.nalog.gov.ru');

fptr.setParam(1009, 'Улица свободы, 42');
fptr.setParam(1018, '135792468001');
fptr.setParam(1048, 'Иванов Иван Иванович');
fptr.setParam(1062, fptr.LIBFPTR_TT_OSN or fptr.LIBFPTR_TT_PATENT);
fptr.setParam(1117, 'my-company@mail.ru');
fptr.setParam(1057, fptr.LIBFPTR_AT_BANK_PAYING_AGENT or fptr.LIBFPTR_AT_PAYING_AGENT or fptr.LIBFPTR_AT_ATTORNEY);

fptr.setParam(1187, 'Улица свободы, 45');
fptr.setParam(1037, '12345678900987654321');
fptr.setParam(1209, fptr.LIBFPTR_FFD_1_0_5);
fptr.setParam(1001, False);
fptr.setParam(1036, '513');
fptr.setParam(1002, False);
fptr.setParam(1056, False);
fptr.setParam(1108, False);
fptr.setParam(1109, False);
fptr.setParam(1110, False);
fptr.setParam(1126, False);
fptr.setParam(1193, True);
fptr.setParam(1207, False);
fptr.setParam(1221, False);

fptr.setParam(1017, '9715260691');
fptr.setParam(1046, 'ООО "Эвотор ОФД"');

fptr.fnOperation;

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_OPERATION_TYPE, fptr10.LIBFPTR_FNOP_REGISTRATION)

fptr.SetParam(1060, «www.nalog.gov.ru»)

fptr.SetParam(1009, «Улица свободы, 42»)
fptr.SetParam(1018, «135792468001»)
fptr.SetParam(1048, «Иванов Иван Иванович»)
fptr.SetParam(1062, fptr10.LIBFPTR_TT_OSN | fptr10.LIBFPTR_TT_PATENT)
fptr.SetParam(1117, «my-company@mail.ru»)
fptr.SetParam(1057, fptr10.LIBFPTR_AT_BANK_PAYING_AGENT | fptr10.LIBFPTR_AT_PAYING_AGENT | fptr10.LIBFPTR_AT_ATTORNEY)

fptr.SetParam(1187, «Улица свободы, 45»)
fptr.SetParam(1037, «12345678900987654321»)
fptr.SetParam(1209, fptr10.LIBFPTR_FFD_1_0_5)
fptr.SetParam(1001, false)
fptr.SetParam(1036, «513»)
fptr.SetParam(1002, false)
fptr.SetParam(1056, false)
fptr.SetParam(1108, false)
fptr.SetParam(1109, false)
fptr.SetParam(1110, false)
fptr.SetParam(1126, false)
fptr.SetParam(1193, true)
fptr.SetParam(1207, false)
fptr.SetParam(1221, false)

fptr.SetParam(1017, «9715260691»)
fptr.SetParam(1046, «ООО \»Эвотор ОФД\»»)

fptr.FnOperation()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_OPERATION_TYPE, Fptr.LIBFPTR_FNOP_REGISTRATION);

Fptr.setParam(1060, «www.nalog.gov.ru»);

Fptr.setParam(1009, «Улица свободы, 42»);
Fptr.setParam(1018, «135792468001»);
Fptr.setParam(1048, «Иванов Иван Иванович»);
Fptr.setParam(1062, Fptr.LIBFPTR_TT_OSN | Fptr.LIBFPTR_TT_PATENT);
Fptr.setParam(1117, «my-company@mail.ru»);
Fptr.setParam(1057, Fptr.LIBFPTR_AT_BANK_PAYING_AGENT | Fptr.LIBFPTR_AT_PAYING_AGENT | Fptr.LIBFPTR_AT_ATTORNEY);

Fptr.setParam(1187, «Улица свободы, 45»);
Fptr.setParam(1037, «12345678900987654321»);
Fptr.setParam(1209, Fptr.LIBFPTR_FFD_1_0_5);
Fptr.setParam(1001, false);
Fptr.setParam(1036, «513»);
Fptr.setParam(1002, false);
Fptr.setParam(1056, false);
Fptr.setParam(1108, false);
Fptr.setParam(1109, false);
Fptr.setParam(1110, false);
Fptr.setParam(1126, false);
Fptr.setParam(1193, true);
Fptr.setParam(1207, false);
Fptr.setParam(1221, false);

Fptr.setParam(1017, «9715260691»);
Fptr.setParam(1046, «ООО \»Эвотор ОФД\»»);

Fptr.fnOperation();
|

Для регистрации ККТ необходимо вызвать метод /fnOperation()/ с типом
операции LIBFPTR_PARAM_FN_OPERATION_TYPE равным
LIBFPTR_FNOP_REGISTRATION. Также необходимо указать параметры регистрации:

Параметр Описание Тип Версии ФФД
1060 Адрес сайта ФНС string Все
1009 Адрес расчетов string Все
1018 ИНН пользователя string Все
1048 Наименование пользователя string Все
1062 Системы налогообложения int Все
1117 Адрес электронной почты отправителя чека string Все
1057 Признак агента int Все
1187 Место расчетов string Все
1037 Регистрационный номер ККТ string Все
1209 Номер версии ФФД int ≤ 1.1
1001 Признак автоматического режима bool Все
1036 Номер автомата string Все
1002 Признак автономного режима bool Все
1056 Признак шифрования bool Все
1108 Признак ККТ для расчетов в сети Интернет bool Все
1109 Признак расчетов за услуги bool Все
1110 Признак АС БСО bool Все
1126 Признак проведения лотерей bool Все
1193 Признак проведения азартных игр bool Все
1207 Признак подакцизного товара bool Все
1221 Признак установки в автомате bool Все
LIBFPTR_PARAM_PAWN_SHOP_ACTIVITY Признак осуществления ломбардной
деятельности bool ≥ 1.2
LIBFPTR_PARAM_INSURANCE_ACTIVITY Признак осуществления страховой
деятельности bool ≥ 1.2
LIBFPTR_PARAM_TRADE_MARKED_PRODUCTS Признак торговли маркированными
товарами bool ≥ 1.2
LIBFPTR_PARAM_VENDING Признак применения в торговом автомате bool ≥
1.2
LIBFPTR_PARAM_CATERING Признак осуществления услуг общ. питания bool
≥ 1.2
LIBFPTR_PARAM_WHOLESALE Признак оптовой торговли bool ≥ 1.2
1017 ИНН ОФД string Все
1046 Название ОФД string Все

Значение реквизита 1062 (системы налогообложения) — битовое поле,
значениями которого являются одно или несколько из следующих значений:

  • LIBFPTR_TT_OSN — общая;
  • LIBFPTR_TT_USN_INCOME — упрощенная доход;
  • LIBFPTR_TT_USN_INCOME_OUTCOME — упрощенная доход минус расход;
  • LIBFPTR_TT_ESN — единый сельскохозяйственный доход;
  • LIBFPTR_TT_PATENT — патентная система налогообложения.

Значение реквизита 1057 (признак агента) — битовое поле, значениями
которого являются одно или несколько из следующих значений:

  • LIBFPTR_AT_NONE — признак агента отсутствует;
  • LIBFPTR_AT_BANK_PAYING_AGENT — банковский платежный агент;
  • LIBFPTR_AT_BANK_PAYING_SUBAGENT — банковский платежный субагент;
  • LIBFPTR_AT_PAYING_AGENT — платежный агент;
  • LIBFPTR_AT_PAYING_SUBAGENT — платежный субагент;
  • LIBFPTR_AT_ATTORNEY — поверенный;
  • LIBFPTR_AT_COMMISSION_AGENT — комиссионер;
  • LIBFPTR_AT_ANOTHER — другой тип агента, «иной» агент.

Реквизит 1209 (номер версии ФФД) может принимать следующие значения:

  • LIBFPTR_FFD_UNKNOWN — неизвестная;
  • LIBFPTR_FFD_1_0_5 — ФФД 1.05;
  • LIBFPTR_FFD_1_1 — ФФД 1.1;
  • LIBFPTR_FFD_1_2 — ФФД 1.2.

На некоторых ККТ возможно отключить печать отчета о регистрации ККТ с
помощью установки параметра LIBFPTR_PARAM_REPORT_ELECTRONICALLY в
true. Если ККТ не поддерживает такой функционал, параметр будет
проигнорирован и отчет будет напечатан.

После завершения регистрации следует проверить, что операция успешно
завершена. Подробнее см. описание метода /checkDocumentClosed()/.

Поддерживается для всех ККТ

Перерегистрация ККТ

Для перерегистрации ККТ необходимо вызвать метод /fnOperation()/ с
типом операции LIBFPTR_PARAM_FN_OPERATION_TYPE равным
LIBFPTR_FNOP_CHANGE_PARAMETERS. Список параметров перерегистрации
приведен в разделе Регистрация ККТ <#fn_registration>.

В случае работы по ФФД 1.05 требуется указать причину перерегистрации в
реквизите 1101, который может принимать следующие значения:

  • 2 — изменение ОФД
  • 3 — изменение параметров регистрации ККТ
  • 4 — изменение настроек ККТ

В случае работы по ФФД ≥ 1.1 требуется указать причины перерегистрации в
реквизите 1205 (битовое поле), который может принимать следующие значения:

  • 0x00000001 — замена фискального накопителя;
  • 0x00000002 — замена оператора фискальных данных;
  • 0x00000004 — изменение наименования пользователя ККТ;
  • 0x00000008 — изменение адреса и (или) места установки (применения)
    ККТ;
  • 0x00000010 — перевод ККТ из автономного режима в режим передачи
    данных;
  • 0x00000020 — перевод ККТ из режима передачи данных в автономный режим;
  • 0x00000040 — изменение версии модели ККТ;
  • 0x00000080 — изменение перечня систем налогообложения, применяемых
    при осуществлении расчетов;
  • 0x00000100 — изменение номера автоматического устройства для
    расчетов, в составе которого применяется ККТ;
  • 0x00000200 — перевод ККТ из автоматического режима в
    неавтоматический режим (осуществление расчетов кассиром);
  • 0x00000400 — перевод ККТ из неавтоматического режима
    (осуществление расчетов кассиром) в автоматический режим;
  • 0x00000800 — перевод ККТ из режима, не позволяющего формировать
    БСО, в режим, позволяющий формировать БСО;
  • 0x00001000 — перевод ККТ из режима, позволяющего формировать БСО,
    в режим, не позволяющий формировать БСО;
  • 0x00002000 — перевод ККТ из режима расчетов в сети Интернет
    (позволяющего не печатать кассовый чек и БСО) в режим, позволяющий
    печатать кассовый чек и БСО;
  • 0x00004000 — перевод ККТ из режима, позволяющего печатать кассовый
    чек и БСО, в режим расчетов в сети Интернет (позволяющего не
    печатать кассовый чек и БСО);
  • 0x00008000 — перевод ККТ из режима, позволяющего оказывать услуги
    платежного агента (субагента) или банковского платежного агента, в
    режим, не позволяющий оказывать услуги платежного агента (субагента)
    или банковского платежного агента;
  • 0x00010000 — перевод ККТ из режима, не позволяющего оказывать
    услуги платежного агента (субагента) или банковского платежного
    агента в режим, позволяющий оказывать услуги платежного агента
    (субагента) или банковского платежного агента;
  • 0x00020000 — перевод ККТ из режима, позволяющего применять ККТ при
    приеме ставок и выплате денежных средств виде выигрыша при
    осуществлении деятельности по проведению азартных игр, в режим, не
    позволяющий применять ККТ при приеме ставок и выплате денежных
    средств в виде выигрыша при осуществлении деятельности по проведению
    азартных игр;
  • 0x00040000 — перевод ККТ из режима, не позволяющего применять ККТ
    при приеме ставок и выплате денежных средств в виде выигрыша при
    осуществлении деятельности по проведению азартных игр, в режим,
    позволяющий применять ККТ при приеме ставок и выплате денежных
    средств в виде выигрыша при осуществлении деятельности по проведению
    азартных игр;
  • 0x00080000 — перевод ККТ из режима, позволяющего применять ККТ при
    приеме денежных средств при реализации лотерейных билетов,
    электронных лотерейных билетов, приеме лотерейных ставок и выплате
    денежных средств в виде выигрыша при осуществлении деятельности по
    проведению лотерей, в режим, не позволяющий применять ККТ при приеме
    денежных средств при реализации лотерейных билетов, электронных
    лотерейных билетов, приеме лотерейных ставок и выплате денежных
    средств в виде выигрыша при осуществлении деятельности по проведению
    лотерей;
  • 0x00100000 — перевод ККТ из режима, не позволяющего применять ККТ
    при приеме денежных средств при реализации лотерейных билетов,
    электронных лотерейных билетов, приеме лотерейных ставок и выплате
    денежных средств в виде выигрыша при осуществлении деятельности по
    проведению лотерей, в режим, позволяющий применять ККТ при приеме
    денежных средств при реализации лотерейных билетов, электронных
    лотерейных билетов, приеме лотерейных ставок и выплате денежных
    средств в виде выигрыша при осуществлении деятельности по проведению
    лотерей;
  • 0x00200000 — изменение версии ФФД;
  • 0x80000000 — иные причины.

На некоторых ККТ возможно отключить печать отчета о перерегистрации ККТ
с помощью установки параметра LIBFPTR_PARAM_REPORT_ELECTRONICALLY в
true. Если ККТ не поддерживает такой функционал, параметр будет
проигнорирован и отчет будет напечатан.

После завершения перерегистрации следует проверить, что операция успешно
завершена. Подробнее см. описание метода /checkDocumentClosed()/.

Поддерживается для всех ККТ

Замена ФН

Для регистрации замены ФН необходимо вызвать метод /fnOperation()/ с
типом операции LIBFPTR_PARAM_FN_OPERATION_TYPE равным
LIBFPTR_FNOP_CHANGE_FN. Список параметров перерегистрации приведен в
разделе Регистрация ККТ <#fn_registration>.

В случае работы по ФФД ≥ 1.1 требуется указать причины перерегистрации в
реквизите 1205 (битовое поле). Список возможных значений приведен в
разделе Перерегистрация ККТ <#fn_change_params>.

На некоторых ККТ возможно отключить печать отчета о регистрации замены
ФН с помощью установки параметра LIBFPTR_PARAM_REPORT_ELECTRONICALLY в
true. Если ККТ не поддерживает такой функционал, параметр будет
проигнорирован и отчет будет напечатан.

После завершения регистрации замены ФН следует проверить, что операция
успешно завершена. Подробнее см. описание метода /checkDocumentClosed()/.

Поддерживается для всех ККТ

Закрытие ФН

Закрытие ФН

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_OPERATION_TYPE, LIBFPTR_FNOP_CLOSE_ARCHIVE);
libfptr_fn_operation(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_FN_OPERATION_TYPE, LIBFPTR_FNOP_CLOSE_ARCHIVE);
fptr.fnOperation();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_OPERATION_TYPE, IFptr.LIBFPTR_FNOP_CLOSE_ARCHIVE)
fptr.fnOperation()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_OPERATION_TYPE, IFptr.LIBFPTR_FNOP_CLOSE_ARCHIVE);
fptr.fnOperation();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FN_OPERATION_TYPE, IFptr.LIBFPTR_FNOP_CLOSE_ARCHIVE);
fptr.fnOperation();
|

|[fptr setParam:LIBFPTR_PARAM_FN_OPERATION_TYPE intParam:LIBFPTR_FNOP_CLOSE_ARCHIVE];
[fptr fnOperation];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FN_OPERATION_TYPE, Constants.LIBFPTR_FNOP_CLOSE_ARCHIVE);
fptr.fnOperation();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_FN_OPERATION_TYPE, fptr.LIBFPTR_FNOP_CLOSE_ARCHIVE);
fptr.fnOperation;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_OPERATION_TYPE, fptr10.LIBFPTR_FNOP_CLOSE_ARCHIVE)
fptr.FnOperation()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_OPERATION_TYPE, Fptr.LIBFPTR_FNOP_CLOSE_ARCHIVE);
Fptr.fnOperation();
|

Для закрытия ФН необходимо вызвать метод /fnOperation()/ с типом
операции LIBFPTR_PARAM_FN_OPERATION_TYPE равным
LIBFPTR_FNOP_CLOSE_ARCHIVE.

На некоторых ККТ возможно отключить печать отчета о закрытии ФН с
помощью установки параметра LIBFPTR_PARAM_REPORT_ELECTRONICALLY в
true. Если ККТ не поддерживает такой функционал, параметр будет
проигнорирован и отчет будет напечатан.

После завершения закрытия ФН следует проверить, что операция успешно
завершена. Подробнее см. описание метода /checkDocumentClosed()/.

Поддерживается для всех ККТ

Нефискальная печать

Печать клише

Печать клише

|libfptr_print_cliche(fptr);
|

|fptr.printCliche();
|

|fptr.printCliche()
|

|fptr.printCliche();
|

|fptr.printCliche();
|

|[fptr printCliche];
|

|fptr.printCliche();
|

|begin
fptr.printCliche;
end;
|

|fptr.PrintCliche()
|

|Fptr.printCliche();
|

Для печати запрограммированного в ККТ клише необходимо вызвать метод / printCliche()/.

Клише автоматически печатается при закрытии всех документов (и
фискальных, и нефискальных).

Поддерживается для всех ККТ

Открытие нефискального документа

Открытие нефискального документа

|libfptr_begin_nonfiscal_document(fptr);
|

|fptr.beginNonfiscalDocument();
|

|fptr.beginNonfiscalDocument()
|

|fptr.beginNonfiscalDocument();
|

|fptr.beginNonfiscalDocument();
|

|[fptr beginNonfiscalDocument];
|

|fptr.beginNonfiscalDocument();
|

|begin
fptr.beginNonfiscalDocument;
end;
|

|fptr.BeginNonfiscalDocument()
|

|Fptr.beginNonfiscalDocument();
|

Для открытия нефискального документа необходимо вызвать метод / beginNonfiscalDocument()/.

Не рекомендуется печатать информацию на чековой ленте вне открытых
документов (чека или нефискального документа).

Поддерживается для всех ККТ

Закрытие нефискального документа

Закрытие нефискального документа

|libfptr_end_nonfiscal_document(fptr);
|

|fptr.endNonfiscalDocument();
|

|fptr.endNonfiscalDocument()
|

|fptr.endNonfiscalDocument();
|

|fptr.endNonfiscalDocument();
|

|[fptr endNonfiscalDocument];
|

|fptr.endNonfiscalDocument();
|

|begin
fptr.endNonfiscalDocument;
end;
|

|fptr.EndNonfiscalDocument()
|

|Fptr.endNonfiscalDocument();
|

Закрытие нефискального документа без печати подвала

|libfptr_set_param_bool(fptr, LIBFPTR_PARAM_PRINT_FOOTER, false);
libfptr_end_nonfiscal_document(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_PRINT_FOOTER, false);
fptr.endNonfiscalDocument();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PRINT_FOOTER, False)
fptr.endNonfiscalDocument()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PRINT_FOOTER, false);
fptr.endNonfiscalDocument();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PRINT_FOOTER, false);
fptr.endNonfiscalDocument();
|

|[fptr setParam:LIBFPTR_PARAM_PRINT_FOOTER boolParam:false];
[fptr endNonfiscalDocument];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_PRINT_FOOTER, false);
fptr.endNonfiscalDocument();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_PRINT_FOOTER, False);
fptr.endNonfiscalDocument;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_PRINT_FOOTER, false)
fptr.EndNonfiscalDocument()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_PRINT_FOOTER, false);
Fptr.endNonfiscalDocument();
|

Для закрытия нефискального документа необходимо вызвать метод / endNonfiscalDocument()/.

Параметр Описание Тип Значение по умолчанию
LIBFPTR_PARAM_PRINT_FOOTER Печатать подвал документа bool true

Если ККТ не поддерживает управление подвалом нефискального документа,
ошибка возвращена не будет и будет использоваться поведение по умолчанию
для данной ККТ.

Не рекомендуется печатать информацию на чековой ленте вне открытых
документов (чека или нефискального документа).

Поддерживается для всех ККТ

Печать текста

Печать строки

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_TEXT, L»Строка»);
libfptr_print_text(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_TEXT, L»Строка»);
fptr.printText();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка»)
fptr.printText()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка»);
fptr.printText();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка»);
fptr.printText();
|

|[fptr setParam:LIBFPTR_PARAM_TEXT NSStringParam:@»Строка»];
[fptr printText];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_TEXT, «Строка»);
fptr.printText();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, ‘Строка’);
fptr.printText;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_TEXT, «Строка»)
fptr.PrintText()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_TEXT, «Строка»);
Fptr.printText();
|

Печать строки с выравниванием по центру

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_TEXT, L»Строка»);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_CENTER);
libfptr_print_text(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_TEXT, L»Строка»);
fptr.setParam(LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_CENTER);
fptr.printText();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка»)
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER)
fptr.printText()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка»);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.printText();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка»);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.printText();
|

|[fptr setParam:LIBFPTR_PARAM_TEXT NSStringParam:@»Строка»];
[fptr setParam:LIBFPTR_PARAM_ALIGNMENT intParam:LIBFPTR_ALIGNMENT_CENTER];
[fptr printText];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_TEXT, «Строка»);
fptr.setParam(Constants.LIBFPTR_PARAM_ALIGNMENT, Constants.LIBFPTR_ALIGNMENT_CENTER);
fptr.printText();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, ‘Строка’);
fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.printText;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_TEXT, «Строка»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_ALIGNMENT, fptr10.LIBFPTR_ALIGNMENT_CENTER)
fptr.PrintText()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_TEXT, «Строка»);
fptr.setParam(Fptr.LIBFPTR_PARAM_ALIGNMENT, Fptr.LIBFPTR_ALIGNMENT_CENTER);
Fptr.printText();
|

Печать строки с форматированием

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_TEXT, L»Строка»);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_RIGHT);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_FONT, 2);
libfptr_set_param_bool(fptr, LIBFPTR_PARAM_FONT_DOUBLE_WIDTH, true);
libfptr_set_param_bool(fptr, LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT, true);
libfptr_print_text(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_TEXT, L»Строка»);
fptr.setParam(LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(LIBFPTR_PARAM_FONT, 2);
fptr.setParam(LIBFPTR_PARAM_FONT_DOUBLE_WIDTH, true);
fptr.setParam(LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT, true);
fptr.printText();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка»)
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_RIGHT)
fptr.setParam(IFptr.LIBFPTR_PARAM_FONT, 2)
fptr.setParam(IFptr.LIBFPTR_PARAM_FONT_DOUBLE_WIDTH, True)
fptr.setParam(IFptr.LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT, True)
fptr.printText()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка»);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(IFptr.LIBFPTR_PARAM_FONT, 2);
fptr.setParam(IFptr.LIBFPTR_PARAM_FONT_DOUBLE_WIDTH, true);
fptr.setParam(IFptr.LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT, true);
fptr.printText();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка»);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(IFptr.LIBFPTR_PARAM_FONT, 2);
fptr.setParam(IFptr.LIBFPTR_PARAM_FONT_DOUBLE_WIDTH, true);
fptr.setParam(IFptr.LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT, true);
fptr.printText();
|

|[fptr setParam:LIBFPTR_PARAM_TEXT NSStringParam:@»Строка»];
[fptr setParam:LIBFPTR_PARAM_ALIGNMENT intParam:LIBFPTR_ALIGNMENT_RIGHT];
[fptr setParam:LIBFPTR_PARAM_FONT intParam:2];
[fptr setParam:LIBFPTR_PARAM_FONT_DOUBLE_WIDTH boolParam:true];
[fptr setParam:LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT boolParam:true];
[fptr printText];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_TEXT, «Строка»);
fptr.setParam(Constants.LIBFPTR_PARAM_ALIGNMENT, Constants.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(Constants.LIBFPTR_PARAM_FONT, 2);
fptr.setParam(Constants.LIBFPTR_PARAM_FONT_DOUBLE_WIDTH, true);
fptr.setParam(Constants.LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT, true);
fptr.printText();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, ‘Строка’);
fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(fptr.LIBFPTR_PARAM_FONT, 2);
fptr.setParam(fptr.LIBFPTR_PARAM_FONT_DOUBLE_WIDTH, True);
fptr.setParam(fptr.LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT, True);
fptr.printText;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_TEXT, «Строка»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_ALIGNMENT, fptr10.LIBFPTR_ALIGNMENT_RIGHT)
fptr.SetParam(fptr10.LIBFPTR_PARAM_FONT, 2)
fptr.SetParam(fptr10.LIBFPTR_PARAM_FONT_DOUBLE_WIDTH, true)
fptr.SetParam(fptr10.LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT, true)
fptr.PrintText()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_TEXT, «Строка»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_ALIGNMENT, Fptr.LIBFPTR_ALIGNMENT_RIGHT);
Fptr.setParam(Fptr.LIBFPTR_PARAM_FONT, 2);
Fptr.setParam(Fptr.LIBFPTR_PARAM_FONT_DOUBLE_WIDTH, true);
Fptr.setParam(Fptr.LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT, true);
Fptr.printText();
|

Печать строки перед/после чека

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_TEXT, L»Строка открытия»);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_PRE);
libfptr_print_text(fptr);
libfptr_open_receipt(fptr);

libfptr_set_param_str(fptr, LIBFPTR_PARAM_TEXT, L»Строка закрытия»);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_POST);
libfptr_print_text(fptr);
libfptr_close_receipt(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_TEXT, L»Строка открытия»);
fptr.setParam(LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_PRE);
fptr.printText();
fptr.openReceipt();

fptr.setParam(LIBFPTR_PARAM_TEXT, L»Строка закрытия»);
fptr.setParam(LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_POST);
fptr.printText();
fptr.closeReceipt();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка открытия»)
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_PRE)
fptr.printText()
fptr.openReceipt()

fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка закрытия»)
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_POST)
fptr.printText()
fptr.closeReceipt()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка открытия»);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_PRE);
fptr.printText();
fptr.openReceipt();

fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка закрытия»);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_POST);
fptr.printText();
fptr.closeReceipt();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка открытия»);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_PRE);
fptr.printText();
fptr.openReceipt();

fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка закрытия»);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_POST);
fptr.printText();
fptr.closeReceipt();
|

|[fptr setParam:LIBFPTR_PARAM_TEXT NSStringParam:@»Строка открытия»];
[fptr setParam:LIBFPTR_PARAM_DEFER intParam:LIBFPTR_DEFER_PRE];
[fptr printText];
[fptr openReceipt];

[fptr setParam:LIBFPTR_PARAM_TEXT NSStringParam:@»Строка закрытия»];
[fptr setParam:LIBFPTR_PARAM_DEFER intParam:LIBFPTR_DEFER_POST];
[fptr printText];
[fptr closeReceipt];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_TEXT, «Строка открытия»);
fptr.setParam(Constants.LIBFPTR_PARAM_DEFER, Constants.LIBFPTR_DEFER_PRE);
fptr.printText();
fptr.openReceipt();

fptr.setParam(Constants.LIBFPTR_PARAM_TEXT, «Строка закрытия»);
fptr.setParam(Constants.LIBFPTR_PARAM_DEFER, Constants.LIBFPTR_DEFER_POST);
fptr.printText();
fptr.closeReceipt();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, ‘Строка открытия’);
fptr.setParam(fptr.LIBFPTR_PARAM_DEFER, fptr.LIBFPTR_DEFER_PRE);
fptr.printText;
fptr.openReceipt;

fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, 'Строка закрытия');
fptr.setParam(fptr.LIBFPTR_PARAM_DEFER, fptr.LIBFPTR_DEFER_POST);
fptr.printText;
fptr.closeReceipt;

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_TEXT, «Строка открытия»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_DEFER, fptr10.LIBFPTR_DEFER_PRE)
fptr.PrintText()
fptr.OpenReceipt()

fptr.SetParam(fptr10.LIBFPTR_PARAM_TEXT, «Строка закрытия»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_DEFER, fptr10.LIBFPTR_DEFER_POST)
fptr.PrintText()
fptr.CloseReceipt()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_TEXT, «Строка открытия»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DEFER, Fptr.LIBFPTR_DEFER_PRE);
Fptr.printText();
Fptr.openReceipt();

Fptr.setParam(Fptr.LIBFPTR_PARAM_TEXT, «Строка закрытия»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DEFER, Fptr.LIBFPTR_DEFER_POST);
Fptr.printText();
Fptr.closeReceipt();
|

Промотка чековой ленты на одну строку (пустую)

|libfptr_print_text(fptr);
|

|fptr.printText();
|

|fptr.printText()
|

|fptr.printText();
|

|fptr.printText();
|

|[fptr printText];
|

|fptr.printText();
|

|begin
fptr.printText;
end;
|

|fptr.PrintText()
|

|Fptr.printText();
|

Для печати строки необходимо вызвать метод /printText()/ и задать
следующие параметры:

Параметр Описание Тип Значение по умолчанию
LIBFPTR_PARAM_TEXT Строка для печати string Пустая строка
LIBFPTR_PARAM_ALIGNMENT Выравнивание int LIBFPTR_ALIGNMENT_LEFT
LIBFPTR_PARAM_TEXT_WRAP Перенос строки int LIBFPTR_TW_NONE
LIBFPTR_PARAM_FONT Номер шрифта int Стандартный для ККТ шрифт
LIBFPTR_PARAM_FONT_DOUBLE_WIDTH Двойная ширина bool false
LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT Двойная высота bool false
LIBFPTR_PARAM_LINESPACING Межстрочный интервал int Стандартный для
ККТ интервал
LIBFPTR_PARAM_BRIGHTNESS Яркость int Стандартная для ККТ яркость
LIBFPTR_PARAM_STORE_IN_JOURNAL Сохранять в электронном журнале bool
Если печать происходит в открытом чеке, true. Иначе false
LIBFPTR_PARAM_DEFER Отложенная печать int LIBFPTR_DEFER_NONE
LIBFPTR_PARAM_FORMAT_TEXT Печать форматированной строки bool false

Выравнивание LIBFPTR_PARAM_ALIGNMENT может принимать следующие значения:

  • LIBFPTR_ALIGNMENT_LEFT — по левому краю;
  • LIBFPTR_ALIGNMENT_CENTER — по центру;
  • LIBFPTR_ALIGNMENT_RIGHT — по правому краю.

Перенос LIBFPTR_PARAM_TEXT_WRAP может принимать следующие значения:

  • LIBFPTR_TW_NONE — не переносить. Текст будет обрезаться по ширине
    ленты
  • LIBFPTR_TW_WORDS — переносить по словам. Разделителями считаются
    символы:
    o пробел;
    o точка;
    o запятая;
    o точка с запятой;
    o тире;
    o знак вопроса;
    o восклицательный знак;
    o закрывающая скобка;
    o закрывающая фигурная скобка;
    o закрывающая квадратная скобка;
  • LIBFPTR_TW_CHARS — переносить по символам.

Флаг отложенной печати LIBFPTR_PARAM_DEFER может принимать следующие
значения:

  • LIBFPTR_DEFER_NONE — по умолчанию
  • LIBFPTR_DEFER_PRE — перед документом
  • LIBFPTR_DEFER_POST — после документа
  • LIBFPTR_DEFER_OVERLAY — рядом с ШК

Порядок переноса строк:

  • Строка разбивается на подстроки в соответствии с переносами в строке
    (\n, \r\n, \r)
  • Каждая подстрока разбивается на более мелкие подстроки в
    соответствии с LIBFPTR_PARAM_TEXT_WRAP

Флаг печати форматированной строки LIBFPTR_PARAM_FORMAT_TEXT позволяет
печатать строки с использованием управляющих символьных последовательностей:

  • \n – перевод строки;
  • \sXNN – вставить символ X NN раз. Пример: \s=05, результат: “=====”;
  • \lNN – промотать NN пиксельных линий;
  • \fNN – выбрать шрифт NN;
  • \aX – установить выравнивание текста/картинки:
    o X = l – влево;
    o X = с – по центру;
    o X = r – вправо;
    o X = o – по запрограммированному смещению (только для картинок
    клише);
  • \hN – умножение шрифта по высоте. N может принимать значения 1 или 2;
  • \wN – умножение шрифта по ширине. N может принимать значения 1 или 2;
  • \z – сброс шрифта и умножения в состояние “по умолчанию”;
  • \pNN – печать картинки. NN — номер картинки (отсчёт от 0);
  • \qVVCLMSSSd..d — печать QR-кода (из шаблонов игнорируется):
    o VV – номер версии QR-кода(1..40). Можно задавать минимальный
    номер, в этом случае номер версии будет подобран автоматически;
    o C – режим кодирования: 0-Цифровой режим кодирования, 1-
    Алфавитно-цифровой режим кодирования, 2-Бинарный режим кодирования;
    o L – уровень коррекции ошибок: 0-Восстановление ≈7% данных, 1-
    Восстановление ≈15% данных, 2-Восстановление ≈25% данных, 3-
    Восстановление ≈30% данных;
    o M – множитель(1..10) размера минимального элемента;
    o SSS – размер данных в байтах d..d — данные QR-кода, размером SSS
    байт. Для печати QR-кода используется текущая установка
    выравнивания \aX.
  • */*/ – печать символа ‘\’;
  • иные символы следующие за символом ‘\’ будут игнорироваться.

При использовании параметра LIBFPTR_PARAM_FORMAT_TEXT, остальные
параметры метода /printText()/ игнорируются.

Возможные значения остальных параметров зависят от модели ККТ. Если
какие-то из параметров не удается применить к строке на используемой
ККТ, ошибки выдано не будет и параметр не применится.

Не рекомендуется печатать информацию на чековой ленте вне открытых
документов (чека или нефискального документа).

Параметры LIBFPTR_PARAM_LINESPACING и LIBFPTR_PARAM_BRIGHTNESS
поддерживаются только для ККТ версий 3.X

Поддерживается для всех ККТ

Печать штрихкода

Печать штрихкода

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_BARCODE, L»123456789012″);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_BARCODE_TYPE, LIBFPTR_BT_EAN_13);
libfptr_print_barcode(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_BARCODE, L`»123456789012″);
fptr.setParam(LIBFPTR_PARAM_BARCODE_TYPE, LIBFPTR_BT_EAN_13);
fptr.printBarcode();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE, «123456789012»)
fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE_TYPE, IFptr.LIBFPTR_BT_EAN_13)
fptr.printBarcode()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE, «123456789012»);
fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE_TYPE, IFptr.LIBFPTR_BT_EAN_13);
fptr.printBarcode();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE, «123456789012»);
fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE_TYPE, IFptr.LIBFPTR_BT_EAN_13);
fptr.printBarcode();
|

|[fptr setParam:LIBFPTR_PARAM_BARCODE NSStringParam:@»123456789012″];
[fptr setParam:LIBFPTR_PARAM_BARCODE_TYPE intParam:LIBFPTR_BT_EAN_13];
[fptr printBarcode];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_BARCODE, «123456789012»);
fptr.setParam(Constants.LIBFPTR_PARAM_BARCODE_TYPE, Constants.LIBFPTR_BT_EAN_13);
fptr.printBarcode();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_BARCODE, ‘123456789012’);
fptr.setParam(fptr.LIBFPTR_PARAM_BARCODE_TYPE, fptr.LIBFPTR_BT_EAN_13);
fptr.printBarcode;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_BARCODE, «123456789012»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_BARCODE_TYPE, fptr10.LIBFPTR_BT_EAN_13)
fptr.PrintBarcode()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_BARCODE, «123456789012»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_BARCODE_TYPE, Fptr.LIBFPTR_BT_EAN_13);
Fptr.printBarcode();
|

Печать штрихкода перед/после чека

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_BARCODE, L»123456789012″);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_BARCODE_TYPE, LIBFPTR_BT_EAN_13);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_PRE);
libfptr_print_barcode(fptr);
libfptr_open_receipt(fptr);

libfptr_set_param_str(fptr, LIBFPTR_PARAM_BARCODE, L»123456789012″);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_BARCODE_TYPE, LIBFPTR_BT_EAN_13);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_POST);
libfptr_print_barcode(fptr);
libfptr_close_receipt(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_BARCODE, L`»123456789012″);
fptr.setParam(LIBFPTR_PARAM_BARCODE_TYPE, LIBFPTR_BT_EAN_13);
fptr.setParam(LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_PRE);
fptr.printBarcode();
fptr.openReceipt();

fptr.setParam(LIBFPTR_PARAM_BARCODE, L`»123456789012″);
fptr.setParam(LIBFPTR_PARAM_BARCODE_TYPE, LIBFPTR_BT_EAN_13);
fptr.setParam(LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_POST);
fptr.printBarcode();
fptr.closeReceipt();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE, «123456789012»)
fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE_TYPE, IFptr.LIBFPTR_BT_EAN_13)
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_PRE)
fptr.printBarcode()
fptr.openReceipt()

fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE, «123456789012»)
fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE_TYPE, IFptr.LIBFPTR_BT_EAN_13)
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_POST)
fptr.printBarcode()
fptr.closeReceipt()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE, «123456789012»);
fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE_TYPE, IFptr.LIBFPTR_BT_EAN_13);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_PRE);
fptr.printBarcode();
fptr.openReceipt();

fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE, «123456789012»);
fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE_TYPE, IFptr.LIBFPTR_BT_EAN_13);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_POST);
fptr.printBarcode();
fptr.closeReceipt();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE, «123456789012»);
fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE_TYPE, IFptr.LIBFPTR_BT_EAN_13);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_PRE);
fptr.printBarcode();
fptr.openReceipt();

fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE, «123456789012»);
fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE_TYPE, IFptr.LIBFPTR_BT_EAN_13);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_POST);
fptr.printBarcode();
fptr.closeReceipt();
|

|[fptr setParam:LIBFPTR_PARAM_BARCODE NSStringParam:@»123456789012″];
[fptr setParam:LIBFPTR_PARAM_BARCODE_TYPE intParam:LIBFPTR_BT_EAN_13];
[fptr setParam:LIBFPTR_PARAM_DEFER intParam:LIBFPTR_DEFER_PRE];
[fptr printBarcode];
[fptr openReceipt];

[fptr setParam:LIBFPTR_PARAM_BARCODE NSStringParam:@»123456789012″];
[fptr setParam:LIBFPTR_PARAM_BARCODE_TYPE intParam:LIBFPTR_BT_EAN_13];
[fptr setParam:LIBFPTR_PARAM_DEFER intParam:LIBFPTR_DEFER_POST];
[fptr printBarcode];
[fptr closeReceipt];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_BARCODE, «123456789012»);
fptr.setParam(Constants.LIBFPTR_PARAM_BARCODE_TYPE, Constants.LIBFPTR_BT_EAN_13);
fptr.setParam(Constants.LIBFPTR_PARAM_DEFER, Constants.LIBFPTR_DEFER_PRE);
fptr.printBarcode();
fptr.openReceipt();

fptr.setParam(Constants.LIBFPTR_PARAM_BARCODE, «123456789012»);
fptr.setParam(Constants.LIBFPTR_PARAM_BARCODE_TYPE, Constants.LIBFPTR_BT_EAN_13);
fptr.setParam(Constants.LIBFPTR_PARAM_DEFER, Constants.LIBFPTR_DEFER_POST);
fptr.printBarcode();
fptr.closeReceipt();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_BARCODE, ‘123456789012’);
fptr.setParam(fptr.LIBFPTR_PARAM_BARCODE_TYPE, fptr.LIBFPTR_BT_EAN_13);
fptr.setParam(fptr.LIBFPTR_PARAM_DEFER, fptr.LIBFPTR_DEFER_PRE);
fptr.printBarcode;
fptr.openReceipt;

fptr.setParam(fptr.LIBFPTR_PARAM_BARCODE, '123456789012');
fptr.setParam(fptr.LIBFPTR_PARAM_BARCODE_TYPE, fptr.LIBFPTR_BT_EAN_13);
fptr.setParam(fptr.LIBFPTR_PARAM_DEFER, fptr.LIBFPTR_DEFER_POST);
fptr.printBarcode;
fptr.closeReceipt;

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_BARCODE, «123456789012»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_BARCODE_TYPE, fptr10.LIBFPTR_BT_EAN_13)
fptr.SetParam(fptr10.LIBFPTR_PARAM_DEFER, fptr10.LIBFPTR_DEFER_PRE)
fptr.PrintBarcode()
fptr.OpenReceipt()

fptr.SetParam(fptr10.LIBFPTR_PARAM_BARCODE, «123456789012»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_BARCODE_TYPE, fptr10.LIBFPTR_BT_EAN_13)
fptr.SetParam(fptr10.LIBFPTR_PARAM_DEFER, fptr10.LIBFPTR_DEFER_POST)
fptr.PrintBarcode()
fptr.CloseReceipt()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_BARCODE, «123456789012»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_BARCODE_TYPE, Fptr.LIBFPTR_BT_EAN_13);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DEFER, Fptr.LIBFPTR_DEFER_PRE);
Fptr.printBarcode();
Fptr.openReceipt();

Fptr.setParam(Fptr.LIBFPTR_PARAM_BARCODE, «123456789012»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_BARCODE_TYPE, Fptr.LIBFPTR_BT_EAN_13);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DEFER, Fptr.LIBFPTR_DEFER_POST);
Fptr.printBarcode();
Fptr.closeReceipt();
|

Для печати штрихкода необходимо вызвать метод /printBarcode()/ и
задать следующие обязательные параметры:

Параметр Описание Тип
LIBFPTR_PARAM_BARCODE Данные штрихкода string
LIBFPTR_PARAM_BARCODE_TYPE Тип штрихкода int
LIBFPTR_PARAM_DEFER Отложенная печать int

Тип штрихкода LIBFPTR_PARAM_BARCODE_TYPE может принимать следующие
значения:

  • Одномерные штрихкоды:
    o LIBFPTR_BT_EAN_8 — EAN-8;
    o LIBFPTR_BT_EAN_13 — EAN-13;
    o LIBFPTR_BT_UPC_A — UPC-A;
    o LIBFPTR_BT_UPC_E — UPC-E;
    o LIBFPTR_BT_CODE_39 — Code 39;
    o LIBFPTR_BT_CODE_93 — Code 93;
    o LIBFPTR_BT_CODE_128 — Code 128;
    o LIBFPTR_BT_CODABAR — Codabar;
    o LIBFPTR_BT_ITF — Interleaved 2of5;
    o LIBFPTR_BT_ITF_14 — ITF-14;
    o LIBFPTR_BT_GS1_128 — GS1-128 (EAN-128);
    o LIBFPTR_BT_CODE_39_EXTENDED — Code 39 Extended;
  • Двумерные штрихкоды:
    o LIBFPTR_BT_QR — QR-код;
    o LIBFPTR_BT_PDF417 — PDF417;
    o LIBFPTR_BT_AZTEC — AZTEC.

По умолчанию штрихкод печатается по левому краю, без увеличения.

Флаг отложенной печати LIBFPTR_PARAM_DEFER может принимать следующие
значения:

  • LIBFPTR_DEFER_NONE — по умолчанию
  • LIBFPTR_DEFER_PRE — перед документом
  • LIBFPTR_DEFER_POST — после документа

При применении любых других настроек печати штрихкода, кроме
обязательных, может снижаться скорость печати.

Также можно изменить параметры печати штрихкода с помощью следующих
параметров:

Параметр Описание Тип
LIBFPTR_PARAM_ALIGNMENT Выравнивание штрихкода int
LIBFPTR_PARAM_SCALE Коэффициент увеличения штрихкода int
LIBFPTR_PARAM_LEFT_MARGIN Дополнительный отступ слева int
LIBFPTR_PARAM_BARCODE_INVERT Инверсия цвета bool

Для одномерных штрихкодов дополнительно можно задать следующие параметры:

Параметр Описание Тип
LIBFPTR_PARAM_HEIGHT Высота штрихкода, пикс. int
LIBFPTR_PARAM_BARCODE_PRINT_TEXT Флаг печати данных ШК bool

Для QR-кода дополнительно можно задать следующие параметры:

Параметр Описание Тип
LIBFPTR_PARAM_BARCODE_CORRECTION Коррекция QR-кода int
LIBFPTR_PARAM_BARCODE_VERSION Версия QR-кода int
LIBFPTR_PARAM_STORE_IN_JOURNAL Сохранять в электронном журнале bool

По умолчанию параметр LIBFPTR_PARAM_STORE_IN_JOURNAL принимает
значение true если печать происходит в открытом чеке, иначе false.

При формировании образа QR-кода используется буквенно-цифровое кодирование.

Для PDF-417 дополнительно можно задать следующие параметры:

Параметр Описание Тип
LIBFPTR_PARAM_BARCODE_CORRECTION Коррекция PDF417 int
LIBFPTR_PARAM_BARCODE_COLUMNS Количество столбцов PDF417 int

Для AZTEC дополнительно можно задать следующие параметры:

Параметр Описание Тип
LIBFPTR_PARAM_BARCODE_CORRECTION Коррекция Aztec int
LIBFPTR_PARAM_BARCODE_VERSION Версия Aztec int

Выравнивание LIBFPTR_PARAM_ALIGNMENT может принимать следующие значения:

  • LIBFPTR_ALIGNMENT_LEFT — по левому краю
  • LIBFPTR_ALIGNMENT_CENTER — по центру
  • LIBFPTR_ALIGNMENT_RIGHT — по правому краю

Коррекция штрихкода LIBFPTR_PARAM_BARCODE_CORRECTION может принимать
следующие значения:

  • LIBFPTR_BC_DEFAULT — по умолчанию;
  • LIBFPTR_BC_0 — минимальная;
  • LIBFPTR_BC_1;
  • LIBFPTR_BC_2;
  • LIBFPTR_BC_3 — максимальная для QR / AZTEC;
  • LIBFPTR_BC_4;
  • LIBFPTR_BC_5;
  • LIBFPTR_BC_6;
  • LIBFPTR_BC_7;
  • LIBFPTR_BC_8 — максимальная для PDF-417.

Не рекомендуется печатать информацию на чековой ленте вне открытых
документов (чека или нефискального документа).

Поддерживается для всех ККТ

  Печать GS1-128

Печать GS1-128

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_BARCODE, L»[01]98898765432106[3202]012345[15]991231″);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_BARCODE_TYPE, LIBFPTR_BT_GS1_128);
libfptr_print_barcode(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_BARCODE, L»[01]98898765432106[3202]012345[15]991231″);
fptr.setParam(LIBFPTR_PARAM_BARCODE_TYPE, LIBFPTR_BT_GS1_128);
fptr.printBarcode();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE, «[01]98898765432106[3202]012345[15]991231»)
fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE_TYPE, IFptr.LIBFPTR_BT_GS1_128)
fptr.printBarcode()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE, «[01]98898765432106[3202]012345[15]991231»);
fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE_TYPE, IFptr.LIBFPTR_BT_GS1_128);
fptr.printBarcode();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE, «[01]98898765432106[3202]012345[15]991231»);
fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE_TYPE, IFptr.LIBFPTR_BT_GS1_128);
fptr.printBarcode();
|

|[fptr setParam:LIBFPTR_PARAM_BARCODE NSStringParam:@»[01]98898765432106[3202]012345[15]991231″];
[fptr setParam:LIBFPTR_PARAM_BARCODE_TYPE intParam:LIBFPTR_BT_GS1_128];
[fptr printBarcode];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_BARCODE, «[01]98898765432106[3202]012345[15]991231»);
fptr.setParam(Constants.LIBFPTR_PARAM_BARCODE_TYPE, Constants.LIBFPTR_BT_GS1_128);
fptr.printBarcode();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_BARCODE, ‘[01]98898765432106[3202]012345[15]991231’);
fptr.setParam(fptr.LIBFPTR_PARAM_BARCODE_TYPE, fptr.LIBFPTR_BT_GS1_128);
fptr.printBarcode;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_BARCODE, «[01]98898765432106[3202]012345[15]991231»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_BARCODE_TYPE, fptr10.LIBFPTR_BT_GS1_128)
fptr.PrintBarcode()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_BARCODE, «[01]98898765432106[3202]012345[15]991231»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_BARCODE_TYPE, Fptr.LIBFPTR_BT_GS1_128);
Fptr.printBarcode();
|

Для корректного формирования GS1-128 требуется передача AI (Application
Identifiers), которые объясняют, как интерпретировать данные, идущие
следом. При печати AI заключаются в круглые скобки. Но, т.к. по
стандарту, штрихкод GS1-128 может содержать круглые скобки в данных, в
драйвер требуется передавать AI, заключенные в квадратные скобки.

Например, такой ШК может иметь вид
[01]98898765432106[3202]012345[15]991231. При этом, напечатан будет
текст /(01)98898765432106(3202)012345(15)991231/.

Поддерживается для всех ККТ

Печать картинки

Печать картинки

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_FILENAME, L»C:\picture.png»);
libfptr_print_picture(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_FILENAME, L»C:\picture.png»);
fptr.printPicture();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FILENAME, r»C:\picture.png»)
fptr.printPicture()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FILENAME, «C:\picture.png»);
fptr.printPicture();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FILENAME, «/storage/emulated/0/picture.png»);
fptr.printPicture();
|

|[fptr setParam:LIBFPTR_PARAM_FILENAME NSStringParam:@»/Users/user/picture.png»];
[fptr printPicture];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FILENAME, «C:\picture.png»);
fptr.printPicture();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_FILENAME, ‘C:\picture.png’);
fptr.printPicture;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FILENAME, «C:\picture.png»)
fptr.PrintPicture()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FILENAME, «C:\picture.png»);
Fptr.printPicture();
|

Для печати картинки необходимо вызвать метод /printPicture()/ и задать
путь к файлу картинки в параметре LIBFPTR_PARAM_FILENAME.
Поддерживаются картинки в форматах bmp и png без прозрачности.

Дополнительно можно передать следующие параметры печати:

Параметр Описание Тип
LIBFPTR_PARAM_ALIGNMENT Выравнивание картинки int
LIBFPTR_PARAM_SCALE_PERCENT Масштаб, в процентах int
LIBFPTR_PARAM_LEFT_MARGIN Дополнительный отступ слева int

Выравнивание LIBFPTR_PARAM_ALIGNMENT может принимать следующие значения:

  • LIBFPTR_ALIGNMENT_LEFT — по левому краю;
  • LIBFPTR_ALIGNMENT_CENTER — по центру;
  • LIBFPTR_ALIGNMENT_RIGHT — по правому краю.

Не рекомендуется печатать информацию на чековой ленте вне открытых
документов (чека или нефискального документа).

Поддерживается для всех ККТ

Печать пиксельного буфера

Печать пиксельного буфера

|// pixels — Массив пикселей (unsigned char[])
// width — Ширина одной строки пикселей

libfptr_set_param_bytearray(fptr, LIBFPTR_PARAM_PIXEL_BUFFER, &pixels[0], sizeof(pixels));
libfptr_set_param_int(fptr, LIBFPTR_PARAM_WIDTH, width);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_SCALE_PERCENT, 100);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPEAT_NUMBER, 50);
libfptr_print_pixel_buffer(fptr);
|

|// pixels — Массив пикселей (bytearray)
// width — Ширина одной строки пикселей

fptr.setParam(LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(LIBFPTR_PARAM_SCALE_PERCENT, 100);
fptr.setParam(LIBFPTR_PARAM_REPEAT_NUMBER, 50);
fptr.printPixelBuffer();
|

|# pixels — Массив пикселей (bytearray)

width — Ширина одной строки пикселей

fptr.setParam(IFptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels)
fptr.setParam(IFptr.LIBFPTR_PARAM_WIDTH, width)
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER)
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE_PERCENT, 100)
fptr.setParam(IFptr.LIBFPTR_PARAM_REPEAT_NUMBER, 50)
fptr.printPixelBuffer()
|

|// pixels — Массив пикселей (byte[])
// width — Ширина одной строки пикселей

fptr.setParam(IFptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(IFptr.LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE_PERCENT, 100);
fptr.setParam(IFptr.LIBFPTR_PARAM_REPEAT_NUMBER, 50);
fptr.printPixelBuffer();
|

|// pixels — Массив пикселей (byte[])
// width — Ширина одной строки пикселей

fptr.setParam(IFptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(IFptr.LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE_PERCENT, 100);
fptr.setParam(IFptr.LIBFPTR_PARAM_REPEAT_NUMBER, 50);
fptr.printPixelBuffer();
|

|// pixels — Массив пикселей (NSData*)
// width — Ширина одной строки пикселей

[fptr setParam:LIBFPTR_PARAM_PIXEL_BUFFER NSDataParam:pixels];
[fptr setParam:LIBFPTR_PARAM_WIDTH intParam:width];
[fptr setParam:LIBFPTR_PARAM_ALIGNMENT intParam:LIBFPTR_ALIGNMENT_CENTER];
[fptr setParam:LIBFPTR_PARAM_SCALE_PERCENT intParam:100];
[fptr setParam:LIBFPTR_PARAM_REPEAT_NUMBER intParam:50];
[fptr printPixelBuffer];
|

|// pixels — Массив пикселей (byte[])
// width — Ширина одной строки пикселей

fptr.setParam(Constants.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(Constants.LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(Constants.LIBFPTR_PARAM_ALIGNMENT, Constants.LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(Constants.LIBFPTR_PARAM_SCALE_PERCENT, 100);
fptr.setParam(Constants.LIBFPTR_PARAM_REPEAT_NUMBER, 50);
fptr.printPixelBuffer();
|

|// pixels — Массив пикселей (Array of Byte)
// width — Ширина одной строки пикселей

fptr.setParam(fptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(fptr.LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(fptr.LIBFPTR_PARAM_SCALE_PERCENT, 100);
fptr.setParam(fptr.LIBFPTR_PARAM_REPEAT_NUMBER, 50);
fptr.printPixelBuffer;
|

|// pixels — Массив пикселей ([]byte)
// width — Ширина одной строки пикселей

fptr.SetParam(fptr10.LIBFPTR_PARAM_PIXEL_BUFFER, pixels)
fptr.SetParam(fptr10.LIBFPTR_PARAM_WIDTH, width)
fptr.SetParam(fptr10.LIBFPTR_PARAM_ALIGNMENT, fptr10.LIBFPTR_ALIGNMENT_CENTER)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SCALE_PERCENT, 100)
fptr.SetParam(fptr10.LIBFPTR_PARAM_REPEAT_NUMBER, 50)
fptr.PrintPixelBuffer()
|

|// pixels — Массив пикселей (Uint8Array)
// width — Ширина одной строки пикселей

Fptr.setParam(Fptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
Fptr.setParam(Fptr.LIBFPTR_PARAM_WIDTH, width);
Fptr.setParam(Fptr.LIBFPTR_PARAM_ALIGNMENT, Fptr.LIBFPTR_ALIGNMENT_CENTER);
Fptr.setParam(Fptr.LIBFPTR_PARAM_SCALE_PERCENT, 100);
Fptr.setParam(Fptr.LIBFPTR_PARAM_REPEAT_NUMBER, 50);
Fptr.printPixelBuffer();
|

Печать пиксельного буфера перед/после чека

|libfptr_set_param_bytearray(fptr, LIBFPTR_PARAM_PIXEL_BUFFER, &pixels[0], sizeof(pixels));
libfptr_set_param_int(fptr, LIBFPTR_PARAM_WIDTH, width);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_SCALE_PERCENT, 100);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPEAT_NUMBER, 50);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_PRE);
libfptr_print_pixel_buffer(fptr);
libfptr_open_receipt(fptr);

libfptr_set_param_bytearray(fptr, LIBFPTR_PARAM_PIXEL_BUFFER, &pixels[0], sizeof(pixels));
libfptr_set_param_int(fptr, LIBFPTR_PARAM_WIDTH, width);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_SCALE_PERCENT, 100);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPEAT_NUMBER, 50);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_POST);
libfptr_print_pixel_buffer(fptr);
libfptr_close_receipt(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(LIBFPTR_PARAM_SCALE_PERCENT, 100);
fptr.setParam(LIBFPTR_PARAM_REPEAT_NUMBER, 50);
fptr.setParam(LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_PRE);
fptr.printPixelBuffer();
fptr.openReceipt();

fptr.setParam(LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(LIBFPTR_PARAM_SCALE_PERCENT, 100);
fptr.setParam(LIBFPTR_PARAM_REPEAT_NUMBER, 50);
fptr.setParam(LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_POST);
fptr.printPixelBuffer();
fptr.closeReceipt();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels)
fptr.setParam(IFptr.LIBFPTR_PARAM_WIDTH, width)
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER)
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE_PERCENT, 100)
fptr.setParam(IFptr.LIBFPTR_PARAM_REPEAT_NUMBER, 50)
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_PRE)
fptr.printPixelBuffer()
fptr.openReceipt()

fptr.setParam(IFptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels)
fptr.setParam(IFptr.LIBFPTR_PARAM_WIDTH, width)
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER)
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE_PERCENT, 100)
fptr.setParam(IFptr.LIBFPTR_PARAM_REPEAT_NUMBER, 50)
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_POST)
fptr.printPixelBuffer()
fptr.closeReceipt()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(IFptr.LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE_PERCENT, 100);
fptr.setParam(IFptr.LIBFPTR_PARAM_REPEAT_NUMBER, 50);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_PRE);
fptr.printPixelBuffer();
fptr.openReceipt();

fptr.setParam(IFptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(IFptr.LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE_PERCENT, 100);
fptr.setParam(IFptr.LIBFPTR_PARAM_REPEAT_NUMBER, 50);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_POST);
fptr.printPixelBuffer();
fptr.closeReceipt();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(IFptr.LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE_PERCENT, 100);
fptr.setParam(IFptr.LIBFPTR_PARAM_REPEAT_NUMBER, 50);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_PRE);
fptr.printPixelBuffer();
fptr.openReceipt();

fptr.setParam(IFptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(IFptr.LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE_PERCENT, 100);
fptr.setParam(IFptr.LIBFPTR_PARAM_REPEAT_NUMBER, 50);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_POST);
fptr.printPixelBuffer();
fptr.closeReceipt();
|

|[fptr setParam:LIBFPTR_PARAM_PIXEL_BUFFER NSDataParam:pixels];
[fptr setParam:LIBFPTR_PARAM_WIDTH intParam:width];
[fptr setParam:LIBFPTR_PARAM_ALIGNMENT intParam:LIBFPTR_ALIGNMENT_CENTER];
[fptr setParam:LIBFPTR_PARAM_SCALE_PERCENT intParam:100];
[fptr setParam:LIBFPTR_PARAM_REPEAT_NUMBER intParam:50];
[fptr setParam:LIBFPTR_PARAM_DEFER intParam:LIBFPTR_DEFER_PRE];
[fptr printPixelBuffer];
[fptr openReceipt];

[fptr setParam:LIBFPTR_PARAM_PIXEL_BUFFER NSDataParam:pixels];
[fptr setParam:LIBFPTR_PARAM_WIDTH intParam:width];
[fptr setParam:LIBFPTR_PARAM_ALIGNMENT intParam:LIBFPTR_ALIGNMENT_CENTER];
[fptr setParam:LIBFPTR_PARAM_SCALE_PERCENT intParam:100];
[fptr setParam:LIBFPTR_PARAM_REPEAT_NUMBER intParam:50];
[fptr setParam:LIBFPTR_PARAM_DEFER intParam:LIBFPTR_DEFER_POST];
[fptr printPixelBuffer];
[fptr closeReceipt];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(Constants.LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(Constants.LIBFPTR_PARAM_ALIGNMENT, Constants.LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(Constants.LIBFPTR_PARAM_SCALE_PERCENT, 100);
fptr.setParam(Constants.LIBFPTR_PARAM_REPEAT_NUMBER, 50);
fptr.setParam(Constants.LIBFPTR_PARAM_DEFER, Constants.LIBFPTR_DEFER_PRE);
fptr.printPixelBuffer();
fptr.openReceipt();

fptr.setParam(Constants.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(Constants.LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(Constants.LIBFPTR_PARAM_ALIGNMENT, Constants.LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(Constants.LIBFPTR_PARAM_SCALE_PERCENT, 100);
fptr.setParam(Constants.LIBFPTR_PARAM_REPEAT_NUMBER, 50);
fptr.setParam(Constants.LIBFPTR_PARAM_DEFER, Constants.LIBFPTR_DEFER_POST);
fptr.printPixelBuffer();
fptr.closeReceipt();
|

|fptr.setParam(fptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(fptr.LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(fptr.LIBFPTR_PARAM_SCALE_PERCENT, 100);
fptr.setParam(fptr.LIBFPTR_PARAM_REPEAT_NUMBER, 50);
fptr.setParam(fptr.LIBFPTR_PARAM_DEFER, fptr.LIBFPTR_DEFER_PRE);
fptr.printPixelBuffer;
fptr.openReceipt;

fptr.setParam(fptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(fptr.LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(fptr.LIBFPTR_PARAM_SCALE_PERCENT, 100);
fptr.setParam(fptr.LIBFPTR_PARAM_REPEAT_NUMBER, 50);
fptr.setParam(fptr.LIBFPTR_PARAM_DEFER, fptr.LIBFPTR_DEFER_POST);
fptr.printPixelBuffer;
fptr.closeReceipt;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_PIXEL_BUFFER, pixels)
fptr.SetParam(fptr10.LIBFPTR_PARAM_WIDTH, width)
fptr.SetParam(fptr10.LIBFPTR_PARAM_ALIGNMENT, fptr10.LIBFPTR_ALIGNMENT_CENTER)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SCALE_PERCENT, 100)
fptr.SetParam(fptr10.LIBFPTR_PARAM_REPEAT_NUMBER, 50)
fptr.SetParam(fptr10.LIBFPTR_PARAM_DEFER, fptr10.LIBFPTR_DEFER_PRE)
fptr.PrintPixelBuffer()
fptr.OpenReceipt()

fptr.SetParam(fptr10.LIBFPTR_PARAM_PIXEL_BUFFER, pixels)
fptr.SetParam(fptr10.LIBFPTR_PARAM_WIDTH, width)
fptr.SetParam(fptr10.LIBFPTR_PARAM_ALIGNMENT, fptr10.LIBFPTR_ALIGNMENT_CENTER)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SCALE_PERCENT, 100)
fptr.SetParam(fptr10.LIBFPTR_PARAM_REPEAT_NUMBER, 50)
fptr.SetParam(fptr10.LIBFPTR_PARAM_DEFER, fptr10.LIBFPTR_DEFER_POST)
fptr.PrintPixelBuffer()
fptr.CloseReceipt()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
Fptr.setParam(Fptr.LIBFPTR_PARAM_WIDTH, width);
Fptr.setParam(Fptr.LIBFPTR_PARAM_ALIGNMENT, Fptr.LIBFPTR_ALIGNMENT_CENTER);
Fptr.setParam(Fptr.LIBFPTR_PARAM_SCALE_PERCENT, 100);
Fptr.setParam(Fptr.LIBFPTR_PARAM_REPEAT_NUMBER, 50);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DEFER, Fptr.LIBFPTR_DEFER_PRE);
Fptr.printPixelBuffer();
Fptr.openReceipt();

Fptr.setParam(Fptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
Fptr.setParam(Fptr.LIBFPTR_PARAM_WIDTH, width);
Fptr.setParam(Fptr.LIBFPTR_PARAM_ALIGNMENT, Fptr.LIBFPTR_ALIGNMENT_CENTER);
Fptr.setParam(Fptr.LIBFPTR_PARAM_SCALE_PERCENT, 100);
Fptr.setParam(Fptr.LIBFPTR_PARAM_REPEAT_NUMBER, 50);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DEFER, Fptr.LIBFPTR_DEFER_POST);
Fptr.printPixelBuffer();
Fptr.closeReceipt();
|

Для печати пиксельного буфера необходимо вызвать метод / printPixelBuffer()/. Можно печатать как одиночные пиксельные строки,
так и полноценные монохромные изображения. Обязательные входные параметры:

  • LIBFPTR_PARAM_PIXEL_BUFFER — массив пикселей;
  • LIBFPTR_PARAM_WIDTH — количество пикселей в одной строке.

Дополнительно можно передать следующие параметры:

Параметр Описание Тип
LIBFPTR_PARAM_ALIGNMENT Выравнивание буфера пикселей int
LIBFPTR_PARAM_SCALE_PERCENT Масштаб, в процентах int
LIBFPTR_PARAM_LEFT_MARGIN Дополнительный отступ слева int
LIBFPTR_PARAM_REPEAT_NUMBER Количество повторов печати буфера int
LIBFPTR_PARAM_DEFER Отложенная печать int

Выравнивание LIBFPTR_PARAM_ALIGNMENT может принимать следующие значения:

  • LIBFPTR_ALIGNMENT_LEFT — по левому краю;
  • LIBFPTR_ALIGNMENT_CENTER — по центру;
  • LIBFPTR_ALIGNMENT_RIGHT — по правому краю.

LIBFPTR_PARAM_REPEAT_NUMBER можно применять для печати одномерных ШК,
формирование которых драйвер не поддерживает.

Флаг отложенной печати LIBFPTR_PARAM_DEFER может принимать следующие
значения:

  • LIBFPTR_DEFER_NONE — по умолчанию
  • LIBFPTR_DEFER_PRE — перед документом
  • LIBFPTR_DEFER_POST — после документа

Подробнее о формате массива пикселей в приложении <#pixel_buffer_format>.

Не рекомендуется печатать информацию на чековой ленте вне открытых
документов (чека или нефискального документа).

Поддерживается для всех ККТ

Печать картинки из памяти

Печать картинки из памяти

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_PICTURE_NUMBER, 1);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_CENTER);
libfptr_print_picture_by_number(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.setParam(LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_CENTER);
fptr.printPictureByNumber();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1)
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER)
fptr.printPictureByNumber()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.printPictureByNumber();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.printPictureByNumber();
|

|[fptr setParam:LIBFPTR_PARAM_PICTURE_NUMBER intParam:1];
[fptr setParam:LIBFPTR_PARAM_ALIGNMENT intParam:LIBFPTR_ALIGNMENT_CENTER];
[fptr printPictureByNumber];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.setParam(Constants.LIBFPTR_PARAM_ALIGNMENT, Constants.LIBFPTR_ALIGNMENT_CENTER);
fptr.printPictureByNumber();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.printPictureByNumber;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_PICTURE_NUMBER, 1)
fptr.SetParam(fptr10.LIBFPTR_PARAM_ALIGNMENT, fptr10.LIBFPTR_ALIGNMENT_CENTER)
fptr.PrintPictureByNumber()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
Fptr.setParam(Fptr.LIBFPTR_PARAM_ALIGNMENT, Fptr.LIBFPTR_ALIGNMENT_CENTER);
Fptr.printPictureByNumber();
|

Печать картинки из памяти перед/после чека

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_PICTURE_NUMBER, 1);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_CENTER);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_PRE);
libfptr_print_picture_by_number(fptr);
libfptr_open_receipt(fptr);

libfptr_set_param_int(fptr, LIBFPTR_PARAM_PICTURE_NUMBER, 1);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_CENTER);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_POST);
libfptr_print_picture_by_number(fptr);
libfptr_close_receipt(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.setParam(LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_PRE);
fptr.printPictureByNumber();
fptr.openReceipt();

fptr.setParam(LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.setParam(LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_POST);
fptr.printPictureByNumber();
fptr.closeReceipt();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1)
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER)
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_PRE)
fptr.printPictureByNumber()
fptr.openReceipt()

fptr.setParam(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1)
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER)
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_POST)
fptr.printPictureByNumber()
fptr.closeReceipt()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_PRE);
fptr.printPictureByNumber();
fptr.openReceipt();

fptr.setParam(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_POST);
fptr.printPictureByNumber();
fptr.closeReceipt();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_PRE);
fptr.printPictureByNumber();
fptr.openReceipt();

fptr.setParam(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_POST);
fptr.printPictureByNumber();
fptr.closeReceipt();
|

|[fptr setParam:LIBFPTR_PARAM_PICTURE_NUMBER intParam:1];
[fptr setParam:LIBFPTR_PARAM_ALIGNMENT intParam:LIBFPTR_ALIGNMENT_CENTER];
[fptr setParam:LIBFPTR_PARAM_DEFER intParam:LIBFPTR_DEFER_PRE];
[fptr printPictureByNumber];
[fptr openReceipt];

[fptr setParam:LIBFPTR_PARAM_PICTURE_NUMBER intParam:1];
[fptr setParam:LIBFPTR_PARAM_ALIGNMENT intParam:LIBFPTR_ALIGNMENT_CENTER];
[fptr setParam:LIBFPTR_PARAM_DEFER intParam:LIBFPTR_DEFER_POST];
[fptr printPictureByNumber];
[fptr closeReceipt];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.setParam(Constants.LIBFPTR_PARAM_ALIGNMENT, Constants.LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(Constants.LIBFPTR_PARAM_DEFER, Constants.LIBFPTR_DEFER_PRE);
fptr.printPictureByNumber();
fptr.openReceipt();

fptr.setParam(Constants.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.setParam(Constants.LIBFPTR_PARAM_ALIGNMENT, Constants.LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(Constants.LIBFPTR_PARAM_DEFER, Constants.LIBFPTR_DEFER_POST);
fptr.printPictureByNumber();
fptr.closeReceipt();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(fptr.LIBFPTR_PARAM_DEFER, fptr.LIBFPTR_DEFER_PRE);
fptr.printPictureByNumber;
fptr.openReceipt;

fptr.setParam(fptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(fptr.LIBFPTR_PARAM_DEFER, fptr.LIBFPTR_DEFER_POST);
fptr.printPictureByNumber;
fptr.closeReceipt;

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_PICTURE_NUMBER, 1)
fptr.SetParam(fptr10.LIBFPTR_PARAM_ALIGNMENT, fptr10.LIBFPTR_ALIGNMENT_CENTER)
fptr.SetParam(fptr10.LIBFPTR_PARAM_DEFER, fptr10.LIBFPTR_DEFER_PRE)
fptr.PrintPictureByNumber()
fptr.OpenReceipt()

fptr.SetParam(fptr10.LIBFPTR_PARAM_PICTURE_NUMBER, 1)
fptr.SetParam(fptr10.LIBFPTR_PARAM_ALIGNMENT, fptr10.LIBFPTR_ALIGNMENT_CENTER)
fptr.SetParam(fptr10.LIBFPTR_PARAM_DEFER, fptr10.LIBFPTR_DEFER_POST)
fptr.PrintPictureByNumber()
fptr.CloseReceipt()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
Fptr.setParam(Fptr.LIBFPTR_PARAM_ALIGNMENT, Fptr.LIBFPTR_ALIGNMENT_CENTER);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DEFER, Fptr.LIBFPTR_DEFER_PRE);
Fptr.printPictureByNumber();
Fptr.openReceipt();

Fptr.setParam(Fptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
Fptr.setParam(Fptr.LIBFPTR_PARAM_ALIGNMENT, Fptr.LIBFPTR_ALIGNMENT_CENTER);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DEFER, Fptr.LIBFPTR_DEFER_POST);
Fptr.printPictureByNumber();
Fptr.closeReceipt();
|

Для печати картинки из памяти ККТ необходимо вызвать метод / printPictureByNumber()/ и задать номер картинки в параметре
LIBFPTR_PARAM_PICTURE_NUMBER.

Дополнительно можно передать следующие параметры печати:

Параметр Описание Тип
LIBFPTR_PARAM_ALIGNMENT Выравнивание картинки int
LIBFPTR_PARAM_LEFT_MARGIN Дополнительный отступ слева int
LIBFPTR_PARAM_DEFER Отложенная печать int

Выравнивание LIBFPTR_PARAM_ALIGNMENT может принимать следующие значения:

  • LIBFPTR_ALIGNMENT_LEFT — по левому краю;
  • LIBFPTR_ALIGNMENT_CENTER — по центру;
  • LIBFPTR_ALIGNMENT_RIGHT — по правому краю.

Флаг отложенной печати LIBFPTR_PARAM_DEFER может принимать следующие
значения:

  • LIBFPTR_DEFER_NONE — по умолчанию
  • LIBFPTR_DEFER_PRE — перед документом
  • LIBFPTR_DEFER_POST — после документа

Не рекомендуется печатать информацию на чековой ленте вне открытых
документов (чека или нефискального документа).

Поддерживается для всех ККТ

Печать текста рядом с ШК

Ожидаемый результат

|| ████████ Строка 1 |
| ██ ██ Строка 2 |
| █ (QR) █ Строка 3 |
| ██ █ Строка 4 |
| ████████ Строка 5 |
|

Печать текста рядом с ШК

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_TEXT, L»Строка 1″);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_RIGHT);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_OVERLAY);
libfptr_print_text(fptr);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_TEXT, L»Строка 2″);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_RIGHT);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_OVERLAY);
libfptr_print_text(fptr);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_TEXT, L»Строка 3″);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_RIGHT);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_OVERLAY);
libfptr_print_text(fptr);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_TEXT, L»Строка 4″);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_RIGHT);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_OVERLAY);
libfptr_print_text(fptr);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_TEXT, L»Строка 5″);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_RIGHT);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_OVERLAY);
libfptr_print_text(fptr);

libfptr_set_param_str(fptr, LIBFPTR_PARAM_BARCODE, L»https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7″);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_BARCODE_TYPE, LIBFPTR_BT_QR);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_LEFT);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_SCALE, 4);
libfptr_print_barcode(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_TEXT, L»Строка 1″)
fptr.setParam(LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_OVERLAY);
fptr.printText();
fptr.setParam(LIBFPTR_PARAM_TEXT, L»Строка 2″);
fptr.setParam(LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_OVERLAY);
fptr.printText();
fptr.setParam(LIBFPTR_PARAM_TEXT, L»Строка 3″);
fptr.setParam(LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_OVERLAY);
fptr.printText();
fptr.setParam(LIBFPTR_PARAM_TEXT, L»Строка 4″);
fptr.setParam(LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_OVERLAY);
fptr.printText();
fptr.setParam(LIBFPTR_PARAM_TEXT, L»Строка 5″);
fptr.setParam(LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(LIBFPTR_PARAM_DEFER, LIBFPTR_DEFER_OVERLAY);
fptr.printText();

fptr.setParam(LIBFPTR_PARAM_BARCODE, L»https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7″);
fptr.setParam(LIBFPTR_PARAM_BARCODE_TYPE, LIBFPTR_BT_QR);
fptr.setParam(LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_LEFT);
fptr.setParam(LIBFPTR_PARAM_SCALE, 4);
fptr.printBarcode();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка 1»)
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_RIGHT)
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_OVERLAY)
fptr.printText()
fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка 2»)
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_RIGHT)
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_OVERLAY)
fptr.printText()
fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка 3»)
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_RIGHT)
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_OVERLAY)
fptr.printText()
fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка 4»)
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_RIGHT)
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_OVERLAY)
fptr.printText()
fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка 5»)
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_RIGHT)
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_OVERLAY)
fptr.printText()

fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE, «https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7»)
fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE_TYPE, IFptr.LIBFPTR_BT_QR)
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_LEFT)
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE, 4)
fptr.printBarcode()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка 1»);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_OVERLAY);
fptr.printText();
fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка 2»);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_OVERLAY);
fptr.printText();
fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка 3»);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_OVERLAY);
fptr.printText();
fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка 4»);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_OVERLAY);
fptr.printText();
fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка 5»);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_OVERLAY);
fptr.printText();

fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE, «https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7»);
fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE_TYPE, IFptr.LIBFPTR_BT_QR);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_LEFT);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE, 4);
fptr.printBarcode();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка 1»);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_OVERLAY);
fptr.printText();
fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка 2»);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_OVERLAY);
fptr.printText();
fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка 3»);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_OVERLAY);
fptr.printText();
fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка 4»);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_OVERLAY);
fptr.printText();
fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «Строка 5»);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(IFptr.LIBFPTR_PARAM_DEFER, IFptr.LIBFPTR_DEFER_OVERLAY);
fptr.printText();

fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE, «https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7»);
fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE_TYPE, IFptr.LIBFPTR_BT_QR);
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_LEFT);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE, 4);
fptr.printBarcode();
|

|[fptr setParam(LIBFPTR_PARAM_TEXT NSStringParam:@»Строка 1″];
[fptr setParam(LIBFPTR_PARAM_ALIGNMENT intParam:LIBFPTR_ALIGNMENT_RIGHT];
[fptr setParam(LIBFPTR_PARAM_DEFER intParam:LIBFPTR_DEFER_OVERLAY];
[fptr printText];
[fptr setParam(LIBFPTR_PARAM_TEXT NSStringParam:@»Строка 2″];
[fptr setParam(LIBFPTR_PARAM_ALIGNMENT intParam:LIBFPTR_ALIGNMENT_RIGHT];
[fptr setParam(LIBFPTR_PARAM_DEFER intParam:LIBFPTR_DEFER_OVERLAY];
[fptr printText];
[fptr setParam(LIBFPTR_PARAM_TEXT NSStringParam:@»Строка 3″];
[fptr setParam(LIBFPTR_PARAM_ALIGNMENT intParam:LIBFPTR_ALIGNMENT_RIGHT];
[fptr setParam(LIBFPTR_PARAM_DEFER intParam:LIBFPTR_DEFER_OVERLAY];
[fptr printText];
[fptr setParam(LIBFPTR_PARAM_TEXT NSStringParam:@»Строка 4″];
[fptr setParam(LIBFPTR_PARAM_ALIGNMENT intParam:LIBFPTR_ALIGNMENT_RIGHT];
[fptr setParam(LIBFPTR_PARAM_DEFER intParam:LIBFPTR_DEFER_OVERLAY];
[fptr printText];
[fptr setParam(LIBFPTR_PARAM_TEXT NSStringParam:@»Строка 5″];
[fptr setParam(LIBFPTR_PARAM_ALIGNMENT intParam:LIBFPTR_ALIGNMENT_RIGHT];
[fptr setParam(LIBFPTR_PARAM_DEFER intParam:LIBFPTR_DEFER_OVERLAY];
[fptr printText];

[fptr setParam(LIBFPTR_PARAM_BARCODE NSStringParam:@»https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7″];
[fptr setParam(LIBFPTR_PARAM_BARCODE_TYPE intParam:LIBFPTR_BT_QR];
[fptr setParam(LIBFPTR_PARAM_ALIGNMENT intParam:LIBFPTR_ALIGNMENT_LEFT];
[fptr setParam:LIBFPTR_PARAM_SCALE intParam:4];
[fptr printBarcode];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_TEXT, «Строка 1»);
fptr.setParam(Constants.LIBFPTR_PARAM_ALIGNMENT, Constants.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(Constants.LIBFPTR_PARAM_DEFER, Constants.LIBFPTR_DEFER_OVERLAY);
fptr.printText();
fptr.setParam(Constants.LIBFPTR_PARAM_TEXT, «Строка 2»);
fptr.setParam(Constants.LIBFPTR_PARAM_ALIGNMENT, Constants.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(Constants.LIBFPTR_PARAM_DEFER, Constants.LIBFPTR_DEFER_OVERLAY);
fptr.printText();
fptr.setParam(Constants.LIBFPTR_PARAM_TEXT, «Строка 3»);
fptr.setParam(Constants.LIBFPTR_PARAM_ALIGNMENT, Constants.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(Constants.LIBFPTR_PARAM_DEFER, Constants.LIBFPTR_DEFER_OVERLAY);
fptr.printText();
fptr.setParam(Constants.LIBFPTR_PARAM_TEXT, «Строка 4»);
fptr.setParam(Constants.LIBFPTR_PARAM_ALIGNMENT, Constants.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(Constants.LIBFPTR_PARAM_DEFER, Constants.LIBFPTR_DEFER_OVERLAY);
fptr.printText();
fptr.setParam(Constants.LIBFPTR_PARAM_TEXT, «Строка 5»);
fptr.setParam(Constants.LIBFPTR_PARAM_ALIGNMENT, Constants.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(Constants.LIBFPTR_PARAM_DEFER, Constants.LIBFPTR_DEFER_OVERLAY);
fptr.printText();

fptr.setParam(Constants.LIBFPTR_PARAM_BARCODE, «https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7»);
fptr.setParam(Constants.LIBFPTR_PARAM_BARCODE_TYPE, Constants.LIBFPTR_BT_QR);
fptr.setParam(Constants.LIBFPTR_PARAM_ALIGNMENT, Constants.LIBFPTR_ALIGNMENT_LEFT);
fptr.setParam(Constants.LIBFPTR_PARAM_SCALE, 4);
fptr.printBarcode();
|

|fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, ‘Строка 1’);
fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(fptr.LIBFPTR_PARAM_DEFER, fptr.LIBFPTR_DEFER_OVERLAY);
fptr.printText;
fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, ‘Строка 2’);
fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(fptr.LIBFPTR_PARAM_DEFER, fptr.LIBFPTR_DEFER_OVERLAY);
fptr.printText;
fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, ‘Строка 3’);
fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(fptr.LIBFPTR_PARAM_DEFER, fptr.LIBFPTR_DEFER_OVERLAY);
fptr.printText;
fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, ‘Строка 4’);
fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(fptr.LIBFPTR_PARAM_DEFER, fptr.LIBFPTR_DEFER_OVERLAY);
fptr.printText;
fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, ‘Строка 5’);
fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_RIGHT);
fptr.setParam(fptr.LIBFPTR_PARAM_DEFER, fptr.LIBFPTR_DEFER_OVERLAY);
fptr.printText;

fptr.setParam(fptr.LIBFPTR_PARAM_BARCODE, ‘https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7’);
fptr.setParam(fptr.LIBFPTR_PARAM_BARCODE_TYPE, fptr.LIBFPTR_BT_QR);
fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_LEFT);
fptr.setParam(fptr.LIBFPTR_PARAM_SCALE, 4);
fptr.printBarcode;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_TEXT, «Строка 1»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_ALIGNMENT, fptr10.LIBFPTR_ALIGNMENT_RIGHT)
fptr.SetParam(fptr10.LIBFPTR_PARAM_DEFER, fptr10.LIBFPTR_DEFER_OVERLAY)
fptr.PrintText()
fptr.SetParam(fptr10.LIBFPTR_PARAM_TEXT, «Строка 2»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_ALIGNMENT, fptr10.LIBFPTR_ALIGNMENT_RIGHT)
fptr.SetParam(fptr10.LIBFPTR_PARAM_DEFER, fptr10.LIBFPTR_DEFER_OVERLAY)
fptr.PrintText()
fptr.SetParam(fptr10.LIBFPTR_PARAM_TEXT, «Строка 3»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_ALIGNMENT, fptr10.LIBFPTR_ALIGNMENT_RIGHT)
fptr.SetParam(fptr10.LIBFPTR_PARAM_DEFER, fptr10.LIBFPTR_DEFER_OVERLAY)
fptr.PrintText()
fptr.SetParam(fptr10.LIBFPTR_PARAM_TEXT, «Строка 4»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_ALIGNMENT, fptr10.LIBFPTR_ALIGNMENT_RIGHT)
fptr.SetParam(fptr10.LIBFPTR_PARAM_DEFER, fptr10.LIBFPTR_DEFER_OVERLAY)
fptr.PrintText()
fptr.SetParam(fptr10.LIBFPTR_PARAM_TEXT, «Строка 5»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_ALIGNMENT, fptr10.LIBFPTR_ALIGNMENT_RIGHT)
fptr.SetParam(fptr10.LIBFPTR_PARAM_DEFER, fptr10.LIBFPTR_DEFER_OVERLAY)
fptr.PrintText()

fptr.SetParam(fptr10.LIBFPTR_PARAM_BARCODE, «https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_BARCODE_TYPE, fptr10.LIBFPTR_BT_QR)
fptr.SetParam(fptr10.LIBFPTR_PARAM_ALIGNMENT, fptr10.LIBFPTR_ALIGNMENT_LEFT)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SCALE, 4)
fptr.PrintBarcode()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_TEXT, «Строка 1»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_ALIGNMENT, Fptr.LIBFPTR_ALIGNMENT_RIGHT);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DEFER, Fptr.LIBFPTR_DEFER_OVERLAY);
Fptr.printText();
Fptr.setParam(Fptr.LIBFPTR_PARAM_TEXT, «Строка 2»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_ALIGNMENT, Fptr.LIBFPTR_ALIGNMENT_RIGHT);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DEFER, Fptr.LIBFPTR_DEFER_OVERLAY);
Fptr.printText();
Fptr.setParam(Fptr.LIBFPTR_PARAM_TEXT, «Строка 3»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_ALIGNMENT, Fptr.LIBFPTR_ALIGNMENT_RIGHT);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DEFER, Fptr.LIBFPTR_DEFER_OVERLAY);
Fptr.printText();
Fptr.setParam(Fptr.LIBFPTR_PARAM_TEXT, «Строка 4»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_ALIGNMENT, Fptr.LIBFPTR_ALIGNMENT_RIGHT);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DEFER, Fptr.LIBFPTR_DEFER_OVERLAY);
Fptr.printText();
Fptr.setParam(Fptr.LIBFPTR_PARAM_TEXT, «Строка 5»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_ALIGNMENT, Fptr.LIBFPTR_ALIGNMENT_RIGHT);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DEFER, Fptr.LIBFPTR_DEFER_OVERLAY);
Fptr.printText();

Fptr.setParam(Fptr.LIBFPTR_PARAM_BARCODE, «https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_BARCODE_TYPE, Fptr.LIBFPTR_BT_QR);
Fptr.setParam(Fptr.LIBFPTR_PARAM_ALIGNMENT, Fptr.LIBFPTR_ALIGNMENT_LEFT);
Fptr.setParam(Fptr.LIBFPTR_PARAM_SCALE, 4);
Fptr.printBarcode();
|

Если ККТ позволяет, то можно напечатать текст рядом со штрихкодом. Для
этого нужно передать в драйвер текст (/printText()/), указав флаг
отложенной печати c наложением ШК поверх текста (LIBFPTR_PARAM_DEFER =
LIBFPTR_DEFER_OVERLAY), после чего вызвать метод /printBarcode()/.
На данный момент работает только с QR-кодами.

Ни драйвер, ни ККТ, не следят за тем, наложится текст на ШК или нет.
Распределение ШК и текста в пространстве лежит на разработчике.

Для ККТ 5.0 следующие параметры шрифта применяются к данной и всем
последующим строкам, если параметр необходимо применить строго к одной
строке, то в следующей строке надо явно присвоить данному параметру
прежнее значение:

  • LIBFPTR_PARAM_FONT — шрифт;
  • LIBFPTR_PARAM_ALIGNMENT — выравнивание;
  • LIBFPTR_PARAM_FONT_DOUBLE_WIDTH — двойная ширина;
  • LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT — двойная высота.

Не рекомендуется печатать информацию на чековой ленте вне открытых
документов (чека или нефискального документа).

Поддерживается для всех ККТ

Чтение данных

Для чтения данных из ККТ или ФН нужно использовать методы / beginReadRecords()/, /readNextRecord()/ и /endReadRecords()/. Для
того, чтобы позволить использовать цикл /beginReadRecords()// readNextRecord()//endReadRecords()/ внутри другого такого же цикла
вызовов, можно передавать в методы /readNextRecord()/ и / endReadRecords()/ параметр LIBFPTR_PARAM_RECORDS_ID, получаемый из
метода /beginReadRecords()/. В таком случае вложенные вызовы не будут
конфликтовать.

Если параметр не передать, методы /readNextRecord()/ и / endReadRecords()/ будут использовать последнюю активную сессию чтения
данных, начатую вызовом /beginReadRecords()/.

Последний напечатанный чек

Построчное чтение последнего напечатанного чека из ККТ

|// Вспомогательная функция для чтения строковых параметров
std::wstring readStringAttribute(libfptr_handle fptr, int paramNumber) {
std::vector str(32);
int size = libfptr_get_param_str(fptr, paramNumber, &str[0], str.size());
if (size > str.size()) {
str.resize(size);
libfptr_get_param_str(fptr, paramNumber, &str[0], str.size());
}
return std::wstring(&str[0]);
}

// Вспомогательная функция чтения следующей записи
int readNextRecord(libfptr_handle fptr, const std::wstring &recordsID) {
libfptr_set_param_str(fptr, LIBFPTR_PARAM_RECORDS_ID, recordsID.c_str());
return libfptr_read_next_record(fptr);
}

libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_LAST_DOCUMENT_LINES);
libfptr_begin_read_records(handle);
std::wstring recordsID = readStringAttribute(fptr, LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
std::wstring textLine = readStringAttribute(fptr, LIBFPTR_PARAM_TEXT);

uint font = libfptr_get_param_int(fptr, LIBFPTR_PARAM_FONT);
uint linespacing = libfptr_get_param_int(fptr, LIBFPTR_PARAM_LINESPACING);
uint brightness = libfptr_get_param_int(fptr, LIBFPTR_PARAM_BRIGHTNESS);
bool doubleWidth = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_FONT_DOUBLE_WIDTH) != 0;
bool doubleHeight = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT) != 0;

}

libfptr_set_param_str(fptr, LIBFPTR_PARAM_RECORDS_ID, recordsID.c_str());
libfptr_end_read_records(fptr);
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(Fptr &fptr, const std::wstring &recordsID)
{
fptr.setParam(LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_LAST_DOCUMENT_LINES);
fptr.beginReadRecords();
std::wstring recordsID = getParamString(LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
std::wstring textLine = fptr.getParamString(LIBFPTR_PARAM_TEXT);
uint font = fptr.getParamInt(LIBFPTR_PARAM_FONT);
uint linespacing = fptr.getParamInt(LIBFPTR_PARAM_LINESPACING);
uint brightness = fptr.getParamInt(LIBFPTR_PARAM_BRIGHTNESS);
bool doubleWidth = fptr.getParamBool(LIBFPTR_PARAM_FONT_DOUBLE_WIDTH);
bool doubleHeight = fptr.getParamBool(LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT);
}

fptr.setParam(LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|# Вспомогательная функция окончания чтения записей
def readNextRecord(fptr, recordsID):
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID)
return fptr.readNextRecord()

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_LAST_DOCUMENT_LINES)
fptr.beginReadRecords()
recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID)

while readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK:
textLine = fptr.getParamString(IFptr.LIBFPTR_PARAM_TEXT)
font = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FONT)
linespacing = fptr.getParamInt(IFptr.LIBFPTR_PARAM_LINESPACING)
brightness = fptr.getParamInt(IFptr.LIBFPTR_PARAM_BRIGHTNESS)
doubleWidth = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FONT_DOUBLE_WIDTH)
doubleHeight = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT)

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID)
fptr.endReadRecords()
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_LAST_DOCUMENT_LINES);
fptr.beginReadRecords();
String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK) {
String textLine = fptr.getParamString(IFptr.LIBFPTR_PARAM_TEXT);
long font = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FONT);
long linespacing = fptr.getParamInt(IFptr.LIBFPTR_PARAM_LINESPACING);
long brightness = fptr.getParamInt(IFptr.LIBFPTR_PARAM_BRIGHTNESS);
boolean doubleWidth = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FONT_DOUBLE_WIDTH);
boolean doubleHeight = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT);
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_LAST_DOCUMENT_LINES);
fptr.beginReadRecords();
String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK) {
String textLine = fptr.getParamString(IFptr.LIBFPTR_PARAM_TEXT);
long font = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FONT);
long linespacing = fptr.getParamInt(IFptr.LIBFPTR_PARAM_LINESPACING);
long brightness = fptr.getParamInt(IFptr.LIBFPTR_PARAM_BRIGHTNESS);
boolean doubleWidth = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FONT_DOUBLE_WIDTH);
boolean doubleHeight = fptr.getParamBool(IFptr.LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT);
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr *fptr, NSString *recordsID) {
[fptr setParam:LIBFPTR_PARAM_RECORDS_ID NSStringParam:recordsID];
return [fptr readNextRecord];
}

[fptr setParam:LIBFPTR_PARAM_RECORDS_TYPE intParam:LIBFPTR_RT_LAST_DOCUMENT_LINES];
[fptr beginReadRecords];
NSString *recordsID = [fptr getParamString:LIBFPTR_PARAM_RECORDS_ID];

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
NSString *textLine = [fptr getParamString:LIBFPTR_PARAM_TEXT];
uint font = [fptr getParamInt:LIBFPTR_PARAM_FONT];
uint linespacing = [fptr getParamInt:LIBFPTR_PARAM_LINESPACING];
uint brightness = [fptr getParamInt:LIBFPTR_PARAM_BRIGHTNESS];
bool doubleWidth = [fptr getParamBool:LIBFPTR_PARAM_FONT_DOUBLE_WIDTH];
bool doubleHeight = [fptr getParamBool:LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT];
}

[fptr setParam:LIBFPTR_PARAM_RECORDS_ID NSStringParam:recordsID];
[fptr endReadRecords]
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_TYPE, Constants.LIBFPTR_RT_LAST_DOCUMENT_LINES);
fptr.beginReadRecords();
String recordsID = fptr.getParamString(Constants.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == Constants.LIBFPTR_OK) {
String textLine = fptr.getParamString(Constants.LIBFPTR_PARAM_TEXT);
long font = fptr.getParamInt(Constants.LIBFPTR_PARAM_FONT);
long linespacing = fptr.getParamInt(Constants.LIBFPTR_PARAM_LINESPACING);
long brightness = fptr.getParamInt(Constants.LIBFPTR_PARAM_BRIGHTNESS);
boolean doubleWidth = fptr.getParamBool(Constants.LIBFPTR_PARAM_FONT_DOUBLE_WIDTH);
boolean doubleHeight = fptr.getParamBool(Constants.LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT);
}

fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
function readNextRecord(fptr: OleVariant; recordsID: String): integer;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
Result := fptr.readNextRecord;
end;

var
recordsID: String;
documentType: Longint;
documentSize: Longint;
textLine: String;
font: Longint;
linespacing: Longint;
brightness: Longint;
doubleWidth: LongBool;
doubleHeight: LongBool;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_TYPE, fptr.LIBFPTR_RT_LAST_DOCUMENT_LINES);
fptr.beginReadRecords;
recordsID := fptr.getParamString(fptr.LIBFPTR_PARAM_RECORDS_ID);

While readNextRecord(fptr, recordsID) = fptr.LIBFPTR_OK do
begin
    textLine        := fptr.getParamString(fptr.LIBFPTR_PARAM_TEXT);
    font            := fptr.getParamInt(fptr.LIBFPTR_PARAM_FONT);
    linespacing     := fptr.getParamInt(fptr.LIBFPTR_PARAM_LINESPACING);
    brightness      := fptr.getParamInt(fptr.LIBFPTR_PARAM_BRIGHTNESS);
    doubleWidth     := fptr.getParamBool(fptr.LIBFPTR_PARAM_FONT_DOUBLE_WIDTH);
    doubleHeight    := fptr.getParamBool(fptr.LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT);
end;

fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords;

end;
|

|// Вспомогательная функция чтения следующей записи
func readNextRecord(fptr *fptr10.IFptr, recordsID string) error {
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_ID, recordsID)
return fptr.ReadNextRecord()
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_TYPE, fptr10.LIBFPTR_RT_LAST_DOCUMENT_LINES)
fptr.BeginReadRecords()
recordsID := fptr.GetParamString(fptr10.LIBFPTR_PARAM_RECORDS_ID)

for readNextRecord(fptr, recordsID) == nil {
textLine := fptr.GetParamString(fptr10.LIBFPTR_PARAM_TEXT)
font := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_FONT)
linespacing := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_LINESPACING)
brightness := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_BRIGHTNESS)
doubleWidth := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_FONT_DOUBLE_WIDTH)
doubleHeight := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT)
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_ID, recordsID)
fptr.EndReadRecords()
|

|// Вспомогательная функция чтения следующей записи
function readNextRecord(recordsID) {
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return Fptr.readNextRecord();
}

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_TYPE, Fptr.LIBFPTR_RT_LAST_DOCUMENT_LINES);
Fptr.beginReadRecords();
var recordsID = Fptr.getParamString(Fptr.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(recordsID) == Fptr.LIBFPTR_OK) {
textLine = fptr.getParamString(Fptr.LIBFPTR_PARAM_TEXT);
font = fptr.getParamInt(Fptr.LIBFPTR_PARAM_FONT);
linespacing = fptr.getParamInt(Fptr.LIBFPTR_PARAM_LINESPACING);
brightness = fptr.getParamInt(Fptr.LIBFPTR_PARAM_BRIGHTNESS);
doubleWidth = fptr.getParamBool(Fptr.LIBFPTR_PARAM_FONT_DOUBLE_WIDTH);
doubleHeight = fptr.getParamBool(Fptr.LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT);
}

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
Fptr.endReadRecords();
|

Для чтения последнего напечатанного чека в строковом виде необходимо
вызвать метод /beginReadRecords()/ с типом данных
LIBFPTR_PARAM_RECORDS_TYPE равным LIBFPTR_RT_LAST_DOCUMENT_LINES.
Выходные параметры отсутствуют.

Каждый успешный вызов метода /readNextRecord()/ заполняет следующие
параметры:

Параметр Описание Тип
LIBFPTR_PARAM_TEXT Строка текста string
LIBFPTR_PARAM_FONT Шрифт int
LIBFPTR_PARAM_LINESPACING Межстрочный интервал int
LIBFPTR_PARAM_BRIGHTNESS Яркость int
LIBFPTR_PARAM_FONT_DOUBLE_WIDTH Двойная ширина bool
LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT Двойная высота bool

Если чек формировался без печати на чековой ленте, его печатное
представление получить невозможно.

Поддерживается только для ККТ версий 3.X

Документ из ФН

Чтение документа из ФН в виде TLV-структур

|// Вспомогательная функция для чтения строковых параметров
std::wstring readStringAttribute(libfptr_handle fptr, int paramNumber) {
std::vector str(32);
int size = libfptr_get_param_str(fptr, paramNumber, &str[0], str.size());
if (size > str.size()) {
str.resize(size);
libfptr_get_param_str(fptr, paramNumber, &str[0], str.size());
}
return std::wstring(&str[0]);
}

// Вспомогательная функция чтения следующей записи
int readNextRecord(libfptr_handle fptr, const std::wstring &recordsID) {
libfptr_set_param_str(fptr, LIBFPTR_PARAM_RECORDS_ID, recordsID.c_str());
return libfptr_read_next_record(fptr);
}

libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_FN_DOCUMENT_TLVS);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_DOCUMENT_NUMBER, 12);
libfptr_begin_read_records(handle);
libfptr_fn_document_type documentType = libfptr_get_param_int(fptr, LIBFPTR_PARAM_FN_DOCUMENT_TYPE);
int documentSize = libfptr_get_param_int(fptr, LIBFPTR_PARAM_COUNT);
std::wstring recordsID = readStringAttribute(fptr, LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
std::vector tagValue(32);
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE, &tagValue[0], tagValue.size());
if (size > tagValue.size())
{
tagValue.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE, &tagValue[0], tagValue.size());
}
tagValue.resize(size);

std::vector<char> str(32);
size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_TAG_NAME, &str[0], str.size());
if (size > str.size())
{
    str.resize(size);
    libfptr_get_param_str(fptr, LIBFPTR_PARAM_TEXT, &str[0], str.size());
}
std::wstring tagName = std::wstring(&str[0]);

uint tagType = libfptr_get_param_int(fptr, LIBFPTR_PARAM_TAG_TYPE);
uint tagNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_TAG_NUMBER);

}

libfptr_set_param_str(fptr, LIBFPTR_PARAM_RECORDS_ID, recordsID.c_str());
libfptr_end_read_records(fptr);
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(Fptr fptr, const std::wstring &recordsID)
{
fptr.setParam(LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_FN_DOCUMENT_TLVS);
fptr.setParam(LIBFPTR_PARAM_DOCUMENT_NUMBER, 12);
fptr.beginReadRecords();
uint documentType = fptr.getParamInt(LIBFPTR_PARAM_FN_DOCUMENT_TYPE);
uint documentSize = fptr.getParamInt(LIBFPTR_PARAM_COUNT);
std::wstring recordsID = fptr.getParamString(LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
std::vector tagValue = fptr.getParamByteArray(LIBFPTR_PARAM_TAG_VALUE);
uint tagNumber = fptr.getParamInt(LIBFPTR_PARAM_TAG_NUMBER);
std::wstring tagName = fptr.getParamString(LIBFPTR_PARAM_TAG_NAME);
uint tagType = fptr.getParamInt(LIBFPTR_PARAM_TAG_TYPE);
}

fptr.setParam(LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|# Вспомогательная функция чтения следующей записи
def readNextRecord(fptr, recordsID):
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID)
return fptr.readNextRecord()

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_FN_DOCUMENT_TLVS)
fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 12)
fptr.beginReadRecords()
documentType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_DOCUMENT_TYPE)
documentSize = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT)
recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID)

while readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK:
tagValue = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE)
tagNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_NUMBER)
tagName = fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_NAME)
tagType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_TYPE)

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID)
fptr.endReadRecords()
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_FN_DOCUMENT_TLVS);
fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 12);
fptr.beginReadRecords();
long documentType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_DOCUMENT_TYPE);
long documentSize = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK) {
byte[] tagValue = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);
long tagNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_NUMBER);
String tagName = fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_NAME);
long tagType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_TYPE);
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_FN_DOCUMENT_TLVS);
fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 12);
fptr.beginReadRecords();
long documentType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_FN_DOCUMENT_TYPE);
long documentSize = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK) {
byte[] tagValue = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);
long tagNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_NUMBER);
String tagName = fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_NAME);
long tagType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_TYPE);
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr *fptr, NSString *recordsID) {
[fptr setParam:LIBFPTR_PARAM_RECORDS_ID NSStringParam:recordsID];
return [fptr readNextRecord];
}

[fptr setParam:LIBFPTR_PARAM_RECORDS_TYPE intParam:LIBFPTR_RT_FN_DOCUMENT_TLVS];
[fptr setParam:LIBFPTR_PARAM_DOCUMENT_NUMBER intParam:12];
[fptr beginReadRecords];
uint documentType = [fptr getParamInt:LIBFPTR_PARAM_FN_DOCUMENT_TYPE];
uint documentSize = [fptr getParamInt:LIBFPTR_PARAM_COUNT];
NSString *recordsID = [fptr getParamString:LIBFPTR_PARAM_RECORDS_ID];

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
NSData *tagValue = [fptr getParamByteArray:LIBFPTR_PARAM_TAG_VALUE];
uint tagNumber = [fptr getParamInt:LIBFPTR_PARAM_TAG_NUMBER];
NSString *tagName = [fptr getParamString:LIBFPTR_PARAM_TAG_NAME];
uint tagType = [fptr getParamInt:LIBFPTR_PARAM_TAG_TYPE];
}

[fptr setParam:LIBFPTR_PARAM_RECORDS_ID NSStringParam:recordsID];
[fptr endReadRecords];
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_TYPE, Constants.LIBFPTR_RT_FN_DOCUMENT_TLVS);
fptr.setParam(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER, 12);
fptr.beginReadRecords();
uint documentType = fptr.getParamInt(Constants.LIBFPTR_PARAM_FN_DOCUMENT_TYPE);
uint documentSize = fptr.getParamInt(Constants.LIBFPTR_PARAM_COUNT);
String recordsID = fptr.getParamString(Constants.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == Constants.LIBFPTR_OK) {
byte[] tagValue = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_TAG_VALUE);
uint tagNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_TAG_NUMBER);
String tagName = fptr.getParamString(Constants.LIBFPTR_PARAM_TAG_NAME);
uint tagType = fptr.getParamInt(Constants.LIBFPTR_PARAM_TAG_TYPE);
}

fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
function readNextRecord(fptr: OleVariant; recordsID: String): integer;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
Result := fptr.readNextRecord;
end;

var
recordsID: String;
documentType: Integer;
documentSize: Integer;
tagValue: Variant;
tagNumber: Integer;
tagName: String;
tagType: Integer;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_TYPE, fptr.LIBFPTR_RT_FN_DOCUMENT_TLVS);
fptr.setParam(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 12);
fptr.beginReadRecords;
documentType := fptr.getParamInt(fptr.LIBFPTR_PARAM_FN_DOCUMENT_TYPE);
documentSize := fptr.getParamInt(fptr.LIBFPTR_PARAM_COUNT);
recordsID := fptr.getParamString(fptr.LIBFPTR_PARAM_RECORDS_ID);

While readNextRecord(fptr, recordsID) = fptr.LIBFPTR_OK do
begin
    tagValue    := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_TAG_VALUE);
    tagNumber   := fptr.getParamInt(fptr.LIBFPTR_PARAM_TAG_NUMBER);
    tagName     := fptr.getParamString(fptr.LIBFPTR_PARAM_TAG_NAME);
    tagType     := fptr.getParamInt(fptr.LIBFPTR_PARAM_TAG_TYPE);
end;

fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords;

end;
|

|// Вспомогательная функция чтения следующей записи
func readNextRecord(fptr *fptr10.IFptr, recordsID string) error {
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_ID, recordsID)
return fptr.ReadNextRecord()
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_TYPE, fptr10.LIBFPTR_RT_FN_DOCUMENT_TLVS)
fptr.SetParam(fptr10.LIBFPTR_PARAM_DOCUMENT_NUMBER, 12)
fptr.BeginReadRecords()
documentType := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_FN_DOCUMENT_TYPE)
documentSize := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_COUNT)
recordsID := fptr.GetParamString(fptr10.LIBFPTR_PARAM_RECORDS_ID)

for readNextRecord(fptr, recordsID) == nil {
tagValue := fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_TAG_VALUE)
tagNumber := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_TAG_NUMBER)
tagName := fptr.GetParamString(fptr10.LIBFPTR_PARAM_TAG_NAME)
tagType := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_TAG_TYPE)
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_ID, recordsID)
fptr.EndReadRecords()
|

|// Вспомогательная функция чтения следующей записи
function readNextRecord(recordsID) {
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return Fptr.readNextRecord();
}

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_TYPE, Fptr.LIBFPTR_RT_FN_DOCUMENT_TLVS);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 12);
Fptr.beginReadRecords();
documentType = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_FN_DOCUMENT_TYPE);
documentSize = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_COUNT);
recordsID = Fptr.getParamString(Fptr.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(recordsID) == Fptr.LIBFPTR_OK) {
tagValue = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_TAG_VALUE);
tagNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_TAG_NUMBER);
tagName = Fptr.getParamString(Fptr.LIBFPTR_PARAM_TAG_NAME);
tagType = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_TAG_TYPE);
}

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
Fptr.endReadRecords();
|

Для чтения документа из ФН по номеру необходимо вызвать метод / beginReadRecords()/ с типом данных LIBFPTR_PARAM_RECORDS_TYPE равным
LIBFPTR_RT_FN_DOCUMENT_TLVS и указать номер ФД для чтения в параметре
LIBFPTR_PARAM_DOCUMENT_NUMBER.

Выходные параметры метода следущие:

Параметр Описание Тип
LIBFPTR_PARAM_FN_DOCUMENT_TYPE Тип документа int
LIBFPTR_PARAM_COUNT Размер документа, б. int

Параметр LIBFPTR_PARAM_FN_DOCUMENT_TYPE может принимать следующие
значения:

  • LIBFPTR_FN_DOC_REGISTRATION — Отчет о регистрации;
  • LIBFPTR_FN_DOC_OPEN_SHIFT — Отчет об открытии смены;
  • LIBFPTR_FN_DOC_RECEIPT — Кассовый чек;
  • LIBFPTR_FN_DOC_BSO — Бланк строгой отчетности;
  • LIBFPTR_FN_DOC_CLOSE_SHIFT — Отчет о закрытии смены;
  • LIBFPTR_FN_DOC_CLOSE_FN — Отчет о закрытии фискального накопителя;
  • LIBFPTR_FN_DOC_OPERATOR_CONFIRMATION — Подтверждение оператора;
  • LIBFPTR_FN_DOC_REREGISTRATION — Отчет об изменении параметров
    регистрации;
  • LIBFPTR_FN_DOC_EXCHANGE_STATUS — Отчет о текущем состоянии расчетов;
  • LIBFPTR_FN_DOC_CORRECTION — Кассовый чек коррекции;
  • LIBFPTR_FN_DOC_BSO_CORRECTION — Бланк строгой отчетности коррекции.

Каждый успешный вызов метода /readNextRecord()/ возвращает данные TLV-
структуры верхнего уровня и заполняет следующие параметры:

Параметр Описание Тип
LIBFPTR_PARAM_TAG_NUMBER Номер реквизита int
LIBFPTR_PARAM_TAG_VALUE Значение реквизита Зависит от номера реквизита
LIBFPTR_PARAM_TAG_TYPE Тип реквизита int
LIBFPTR_PARAM_TAG_NAME Название реквизита string
LIBFPTR_PARAM_TAG_IS_COMPLEX true, если реквизит составной bool
LIBFPTR_PARAM_TAG_IS_REPEATABLE true, если реквизит может
повторяться bool

Реквизит можно сразу считать в удобном для обработки виде. Для этого
нужно ориентироваться на значение параметра LIBFPTR_PARAM_TAG_TYPE, и,
в зависимости от него, использовать методы для чтения разных типов
параметров — /getParamInt()/, /getParamBool()/, /getParamDouble()/
и т.п.

Поддерживается для всех ККТ

Список лицензий / кодов защиты

Чтение введенных лицензий / кодов защиты

|// Вспомогательная функция для чтения строковых параметров
std::wstring readStringAttribute(libfptr_handle fptr, int paramNumber) {
std::vector str(32);
int size = libfptr_get_param_str(fptr, paramNumber, &str[0], str.size());
if (size > str.size()) {
str.resize(size);
libfptr_get_param_str(fptr, paramNumber, &str[0], str.size());
}
return std::wstring(&str[0]);
}

// Вспомогательная функция чтения следующей записи
int readNextRecord(libfptr_handle fptr, const std::wstring &recordsID) {
libfptr_set_param_str(fptr, LIBFPTR_PARAM_RECORDS_ID, recordsID.c_str());
return libfptr_read_next_record(fptr);
}

libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_LICENSES);
libfptr_begin_read_records(handle);
std::wstring recordsID = readStringAttribute(fptr, LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
uint id = libfptr_get_param_int(fptr, LIBFPTR_PARAM_LICENSE_NUMBER);
std::wstring name = readStringAttribute(fptr, LIBFPTR_PARAM_LICENSE_NAME);
int yearFrom, monthFrom, dayFrom;
libfptr_get_param_datetime(fptr, LIBFPTR_PARAM_LICENSE_VALID_FROM, &yearFrom, &monthFrom, &dayFrom);
int yearUntil, monthUntil, dayUntil;
libfptr_get_param_datetime(fptr, LIBFPTR_PARAM_LICENSE_VALID_UNTIL, &yearUntil, &monthUntil, &dayUntil);
}

libfptr_set_param_str(fptr, LIBFPTR_PARAM_RECORDS_ID, recordsID.c_str());
libfptr_end_read_records(fptr);
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(Fptr &fptr, String recordsID)
{
fptr.setParam(LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_LICENSES);
fptr.beginReadRecords();
std::wstring recordsID = fptr.getParamString(LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
uint id = fptr.getParamInt(LIBFPTR_PARAM_LICENSE_NUMBER);
std::wstring name = fptr.getParamString(LIBFPTR_PARAM_LICENSE_NAME);
std::tm dateFrom = fptr.getParamDateTime(LIBFPTR_PARAM_LICENSE_VALID_FROM);
std::tm dateUntil = fptr.getParamDateTime(LIBFPTR_PARAM_LICENSE_VALID_UNTIL);
}

fptr.setParam(LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|# Вспомогательная функция чтения следующей записи
def readNextRecord(fptr, recordsID):
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID)
return fptr.readNextRecord()

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_LICENSES)
fptr.beginReadRecords()
recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID)

while readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK:
id = fptr.getParamInt(IFptr.LIBFPTR_PARAM_LICENSE_NUMBER)
name = fptr.getParamString(IFptr.LIBFPTR_PARAM_LICENSE_NAME)
dateFrom = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_LICENSE_VALID_FROM)
dateUntil= fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_LICENSE_VALID_UNTIL)

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID)
fptr.endReadRecords()
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_LICENSES);
fptr.beginReadRecords();
String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK) {
long id = fptr.getParamInt(IFptr.LIBFPTR_PARAM_LICENSE_NUMBER);
String name = fptr.getParamString(IFptr.LIBFPTR_PARAM_LICENSE_NAME);
Date dateFrom = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_LICENSE_VALID_FROM);
Date dateUntil= fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_LICENSE_VALID_UNTIL);
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_LICENSES);
fptr.beginReadRecords();
String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK) {
long id = fptr.getParamInt(IFptr.LIBFPTR_PARAM_LICENSE_NUMBER);
String name = fptr.getParamString(IFptr.LIBFPTR_PARAM_LICENSE_NAME);
Date dateFrom = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_LICENSE_VALID_FROM);
Date dateUntil= fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_LICENSE_VALID_UNTIL);
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr *fptr, NSString *recordsID) {
[fptr setParam:LIBFPTR_PARAM_RECORDS_ID NSStringParam:recordsID];
return [fptr readNextRecord];
}

[fptr setParam:LIBFPTR_PARAM_RECORDS_TYPE intParam:LIBFPTR_RT_LICENSES];
[fptr beginReadRecords];
NSString *recordsID = [fptr getParamString:LIBFPTR_PARAM_RECORDS_ID];

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
uint id = [fptr getParamInt:LIBFPTR_PARAM_LICENSE_NUMBER];
NSString *name = [fptr getParamString:LIBFPTR_PARAM_LICENSE_NAME];
NSDate *dateFrom = [fptr getParamDateTime:LIBFPTR_PARAM_LICENSE_VALID_FROM];
NSDate *dateUntil = [fptr getParamDateTime:LIBFPTR_PARAM_LICENSE_VALID_UNTIL];
}

[fptr setParam:LIBFPTR_PARAM_RECORDS_ID NSStringParam:recordsID];
[fptr endReadRecords];
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_TYPE, Constants.LIBFPTR_RT_LICENSES);
fptr.beginReadRecords();
String recordsID = fptr.getParamString(Constants.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == Constants.LIBFPTR_OK) {
long id = fptr.getParamInt(Constants.LIBFPTR_PARAM_LICENSE_NUMBER);
String name = fptr.getParamString(Constants.LIBFPTR_PARAM_LICENSE_NAME);
DateTime dateFrom = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_LICENSE_VALID_FROM);
DateTime dateUntil = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_LICENSE_VALID_UNTIL);
}

fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
function readNextRecord(fptr: OleVariant; recordsID: String): integer;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
Result := fptr.readNextRecord;
end;

var
recordsID, name: String;
id: Longint;
dateFrom, dateUntil: TDateTime;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_TYPE, fptr.LIBFPTR_RT_LICENSES);
fptr.beginReadRecords;
recordsID := fptr.getParamString(fptr.LIBFPTR_PARAM_RECORDS_ID);

While readNextRecord(fptr, recordsID) = fptr.LIBFPTR_OK do
begin
    id := fptr.getParamInt(fptr.LIBFPTR_PARAM_LICENSE_NUMBER);
    name := fptr.getParamString(fptr.LIBFPTR_PARAM_LICENSE_NAME);
    dateFrom := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_LICENSE_VALID_FROM);
    dateUntil := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_LICENSE_VALID_UNTIL);
end;

fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords;

end;
|

|// Вспомогательная функция чтения следующей записи
func readNextRecord(fptr *fptr10.IFptr, recordsID string) error {
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_ID, recordsID)
return fptr.ReadNextRecord()
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_TYPE, fptr10.LIBFPTR_RT_LICENSES)
fptr.BeginReadRecords()
recordsID := fptr.GetParamString(fptr10.LIBFPTR_PARAM_RECORDS_ID)

for readNextRecord(fptr, recordsID) == nil {
id := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_LICENSE_NUMBER)
name := fptr.GetParamString(fptr10.LIBFPTR_PARAM_LICENSE_NAME)
dateFrom := fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_LICENSE_VALID_FROM)
dateUntil := fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_LICENSE_VALID_UNTIL)
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_ID, recordsID)
fptr.EndReadRecords()
|

|// Вспомогательная функция чтения следующей записи
function readNextRecord(recordsID) {
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return Fptr.readNextRecord();
}

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_TYPE, Fptr.LIBFPTR_RT_LICENSES);
Fptr.beginReadRecords();
var recordsID = Fptr.getParamString(Fptr.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(recordsID) == Fptr.LIBFPTR_OK) {
id = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_LICENSE_NUMBER);
name = Fptr.getParamString(Fptr.LIBFPTR_PARAM_LICENSE_NAME);
dateFrom = Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_LICENSE_VALID_FROM);
dateUntil = Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_LICENSE_VALID_UNTIL);
}

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
Fptr.endReadRecords();
|

Для чтения списка введенных лицензий / кодов защиты необходимо вызвать
метод /beginReadRecords()/ с типом данных LIBFPTR_PARAM_RECORDS_TYPE
равным LIBFPTR_RT_LICENSES. Выходные параметры отсутствуют.

Каждый успешный вызов метода /readNextRecord()/ заполняет следующие
параметры:

Параметр Описание Тип
LIBFPTR_PARAM_LICENSE_NUMBER Номер кода защиты / лицензии int
LIBFPTR_PARAM_LICENSE_NAME Наименование кода защиты / лицензии string
LIBFPTR_PARAM_LICENSE_VALID_FROM Дата начала действия лицензии datetime
LIBFPTR_PARAM_LICENSE_VALID_UNTIL Дата окончания действия лицензии
datetime

Если одну из дат получить не удалось, её значение будет равно 1970.01.01
00:00:00 (unixtime(0)).

Поддерживается для всех ККТ

Чтение документов регистрации

Чтение документов регистрации из ФН в виде TLV-структур

|// Вспомогательная функция для чтения строковых параметров
std::wstring readStringAttribute(libfptr_handle fptr, int paramNumber) {
std::vector str(32);
int size = libfptr_get_param_str(fptr, paramNumber, &str[0], str.size());
if (size > str.size()) {
str.resize(size);
libfptr_get_param_str(fptr, paramNumber, &str[0], str.size());
}
return std::wstring(&str[0]);
}

// Вспомогательная функция чтения следующей записи
int readNextRecord(libfptr_handle fptr, const std::wstring &recordsID) {
libfptr_set_param_str(fptr, LIBFPTR_PARAM_RECORDS_ID, recordsID.c_str());
return libfptr_read_next_record(fptr);
}

libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_FN_REGISTRATION_TLVS);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_REGISTRATION_NUMBER, 1);
libfptr_begin_read_records(handle);
std::wstring recordsID = readStringAttribute(fptr, LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
std::vector tagValue(32);
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE, &tagValue[0], tagValue.size());
if (size > tagValue.size())
{
tagValue.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE, &tagValue[0], tagValue.size());
}
tagValue.resize(size);

std::vector<char> str(32);
size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_TAG_NAME, &str[0], str.size());
if (size > str.size())
{
    str.resize(size);
    libfptr_get_param_str(fptr, LIBFPTR_PARAM_TEXT, &str[0], str.size());
}
std::wstring tagName = std::wstring(&str[0]);

uint tagNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_TAG_NUMBER);
uint tagType = libfptr_get_param_int(fptr, LIBFPTR_PARAM_TAG_TYPE);

}

libfptr_set_param_str(fptr, LIBFPTR_PARAM_RECORDS_ID, recordsID.c_str());
libfptr_end_read_records(fptr);
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(Fptr &fptr, const std::wstring &recordsID)
{
fptr.setParam(LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_FN_REGISTRATION_TLVS);
fptr.setParam(LIBFPTR_PARAM_REGISTRATION_NUMBER, 1);
fptr.beginReadRecords();
std::wstring recordsID = fptr.getParamString(LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
std::vector tagValue = fptr.getParamByteArray(LIBFPTR_PARAM_TAG_VALUE);
uint tagNumber = fptr.getParamInt(LIBFPTR_PARAM_TAG_NUMBER);
std::wstring tagName = fptr.getParamString(LIBFPTR_PARAM_TAG_NAME);
uint tagType = fptr.getParamInt(LIBFPTR_PARAM_TAG_TYPE);
}

fptr.setParam(LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|# Вспомогательная функция чтения следующей записи
def readNextRecord(fptr, recordsID):
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID)
return fptr.readNextRecord()

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_FN_REGISTRATION_TLVS)
fptr.setParam(IFptr.LIBFPTR_PARAM_REGISTRATION_NUMBER, 1)
fptr.beginReadRecords()
recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID)

while readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK:
tagValue = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE)
tagNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_NUMBER)
tagName = fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_NAME)
tagType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_TYPE)

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID)
fptr.endReadRecords()
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_FN_REGISTRATION_TLVS);
fptr.setParam(IFptr.LIBFPTR_PARAM_REGISTRATION_NUMBER, 1);
fptr.beginReadRecords();
String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK) {
byte[] tagValue = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);
long tagNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_NUMBER);
String tagName = fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_NAME);
long tagType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_TYPE);
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_FN_REGISTRATION_TLVS);
fptr.setParam(IFptr.LIBFPTR_PARAM_REGISTRATION_NUMBER, 1);
fptr.beginReadRecords();
String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK) {
byte[] tagValue = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);
long tagNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_NUMBER);
String tagName = fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_NAME);
long tagType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_TYPE);
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr *fptr, NSString *recordsID) {
[fptr setParam:LIBFPTR_PARAM_RECORDS_ID NSStringParam:recordsID];
return [fptr readNextRecord];
}

[fptr setParam:LIBFPTR_PARAM_RECORDS_TYPE intParam:LIBFPTR_RT_FN_REGISTRATION_TLVS];
[fptr setParam:LIBFPTR_PARAM_REGISTRATION_NUMBER intParam:1];
[fptr beginReadRecords];
NSString *recordsID = [fptr getParamString:LIBFPTR_PARAM_RECORDS_ID];

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
NSData *tagValue = [fptr getParamByteArray:LIBFPTR_PARAM_TAG_VALUE];
uint tagNumber = [fptr getParamInt:LIBFPTR_PARAM_TAG_NUMBER];
NSString *tagName = [fptr getParamString:LIBFPTR_PARAM_TAG_NAME];
uint tagType = [fptr getParamInt:LIBFPTR_PARAM_TAG_TYPE];
}

[fptr setParam:LIBFPTR_PARAM_RECORDS_ID NSStringParam:recordsID];
[fptr endReadRecords];
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_TYPE, Constants.LIBFPTR_RT_FN_REGISTRATION_TLVS);
fptr.setParam(Constants.LIBFPTR_PARAM_REGISTRATION_NUMBER, 1);
fptr.beginReadRecords();
String recordsID = fptr.getParamString(Constants.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == Constants.LIBFPTR_OK) {
byte[] tagValue = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_TAG_VALUE);
uint tagNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_TAG_NUMBER);
String tagName = fptr.getParamString(Constants.LIBFPTR_PARAM_TAG_NAME);
uint tagType = fptr.getParamInt(Constants.LIBFPTR_PARAM_TAG_TYPE);
}

fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
function readNextRecord(fptr: OleVariant; recordsID: String): integer;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
Result := fptr.readNextRecord;
end;

var
recordsID: String;
tagValue: Variant;
tagNumber: Integer;
tagName: String;
tagType: Integer;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_TYPE, fptr.LIBFPTR_RT_FN_REGISTRATION_TLVS);
fptr.setParam(fptr.LIBFPTR_PARAM_REGISTRATION_NUMBER, 1);
fptr.beginReadRecords;
recordsID := fptr.getParamString(fptr.LIBFPTR_PARAM_RECORDS_ID);

While readNextRecord(fptr, recordsID) = fptr.LIBFPTR_OK do
begin
    tagValue    := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_TAG_VALUE);
    tagNumber   := fptr.getParamInt(fptr.LIBFPTR_PARAM_TAG_NUMBER);
    tagName     := fptr.getParamString(fptr.LIBFPTR_PARAM_TAG_NAME);
    tagType     := fptr.getParamInt(fptr.LIBFPTR_PARAM_TAG_TYPE);
end;

fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords;

end;
|

|// Вспомогательная функция чтения следующей записи
func readNextRecord(fptr *fptr10.IFptr, recordsID string) error {
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_ID, recordsID)
return fptr.ReadNextRecord()
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_TYPE, fptr10.LIBFPTR_RT_FN_REGISTRATION_TLVS)
fptr.SetParam(fptr10.LIBFPTR_PARAM_REGISTRATION_NUMBER, 1)
fptr.BeginReadRecords()
recordsID := fptr.GetParamString(fptr10.LIBFPTR_PARAM_RECORDS_ID)

for readNextRecord(fptr, recordsID) == nil {
tagValue = fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_TAG_VALUE)
tagNumber = fptr.GetParamInt(fptr10.LIBFPTR_PARAM_TAG_NUMBER)
tagName = fptr.GetParamString(fptr10.LIBFPTR_PARAM_TAG_NAME)
tagType = fptr.GetParamInt(fptr10.LIBFPTR_PARAM_TAG_TYPE)
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_ID, recordsID)
fptr.EndReadRecords()
|

|// Вспомогательная функция чтения следующей записи
function readNextRecord(recordsID) {
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return Fptr.readNextRecord();
}

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_TYPE, Fptr.LIBFPTR_RT_FN_REGISTRATION_TLVS);
Fptr.setParam(Fptr.LIBFPTR_PARAM_REGISTRATION_NUMBER, 1);
Fptr.beginReadRecords();
recordsID = Fptr.getParamString(Fptr.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(recordsID) == Fptr.LIBFPTR_OK) {
tagValue = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_TAG_VALUE);
tagNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_TAG_NUMBER);
tagName = Fptr.getParamString(Fptr.LIBFPTR_PARAM_TAG_NAME);
tagType = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_TAG_TYPE);
}

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
Fptr.endReadRecords();
|

Для чтения документа регистрации из ФН по номеру необходимо вызвать
метод /beginReadRecords()/ с типом данных LIBFPTR_PARAM_RECORDS_TYPE
равным LIBFPTR_RT_FN_REGISTRATION_TLVS и указать порядковый номер
регистрации в параметре LIBFPTR_PARAM_REGISTRATION_NUMBER.

Каждый успешный вызов метода /readNextRecord()/ возвращает данные TLV-
структуры верхнего уровня и заполняет следующие параметры:

Параметр Описание Тип
LIBFPTR_PARAM_TAG_NUMBER Номер реквизита int
LIBFPTR_PARAM_TAG_VALUE Значение реквизита Зависит от номера реквизита
LIBFPTR_PARAM_TAG_TYPE Тип реквизита int
LIBFPTR_PARAM_TAG_NAME Название реквизита string
LIBFPTR_PARAM_TAG_IS_COMPLEX true, если реквизит составной bool
LIBFPTR_PARAM_TAG_IS_REPEATABLE true, если реквизит может
повторяться bool

Тип реквизита (LIBFPTR_PARAM_TAG_TYPE) может принимать следующие значения:

  • LIBFPTR_TAG_TYPE_STLV — составной реквизит;
  • LIBFPTR_TAG_TYPE_ARRAY — массив байтов;
  • LIBFPTR_TAG_TYPE_FVLN — число с точкой без знака;
  • LIBFPTR_TAG_TYPE_BITS — регистр флагов;
  • LIBFPTR_TAG_TYPE_BYTE — целое число без знака, 1 байт;
  • LIBFPTR_TAG_TYPE_UINT_16 — целое число без знака, 2 байта;
  • LIBFPTR_TAG_TYPE_UINT_32 — целое число без знака, 4 байта;
  • LIBFPTR_TAG_TYPE_VLN — целое число без знака, переменная длина;
  • LIBFPTR_TAG_TYPE_STRING — строка;
  • LIBFPTR_TAG_TYPE_UNIX_TIME — время, выраженное в количестве
    секунд, отсчитанных от 1 января 1970 года;
  • LIBFPTR_TAG_TYPE_BOOL — флаг.

Реквизит можно сразу считать в удобном для обработки виде. Для этого
нужно ориентироваться на значение параметра LIBFPTR_PARAM_TAG_TYPE, и,
в зависимости от него, использовать методы для чтения разных типов
параметров — /getParamInt()/, /getParamBool()/, /getParamDouble()/
и т.п.

Поддерживается для всех ККТ

Разбор составного реквизита

Разбор составного реквизита

|// Вспомогательная функция для чтения строковых параметров
std::wstring readStringAttribute(libfptr_handle fptr, int paramNumber) {
std::vector str(32);
int size = libfptr_get_param_str(fptr, paramNumber, &str[0], str.size());
if (size > str.size()) {
str.resize(size);
libfptr_get_param_str(fptr, paramNumber, &str[0], str.size());
}
return std::wstring(&str[0]);
}

// Вспомогательная функция чтения следующей записи
int readNextRecord(libfptr_handle fptr, const std::wstring &recordsID) {
libfptr_set_param_str(fptr, LIBFPTR_PARAM_RECORDS_ID, recordsID.c_str());
return libfptr_read_next_record(fptr);
}

uchar attr[] = { 0x93, 0x04, 0x0C, 0x00, 0x2B, 0x37, 0x39, 0x32,
0x34, 0x31, 0x32, 0x33, 0x31, 0x32, 0x31, 0x33,
0xC9, 0x04, 0x09, 0x00, 0x8F, 0xAE, 0xE1, 0xE2,
0xA0, 0xA2, 0xE9, 0xA8, 0xAA };
libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_PARSE_COMPLEX_ATTR);
libfptr_set_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE, 1);
libfptr_begin_read_records(handle);
std::wstring recordsID = readStringAttribute(fptr, LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
std::vector tagValue(32);
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE, &tagValue[0], tagValue.size());
if (size > tagValue.size())
{
tagValue.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE, &tagValue[0], tagValue.size());
}
tagValue.resize(size);

std::vector<char> str(32);
size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_TAG_NAME, &str[0], str.size());
if (size > str.size())
{
    str.resize(size);
    libfptr_get_param_str(fptr, LIBFPTR_PARAM_TEXT, &str[0], str.size());
}
std::wstring tagName = std::wstring(&str[0]);

uint tagNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_TAG_NUMBER);
uint tagType = libfptr_get_param_int(fptr, LIBFPTR_PARAM_TAG_TYPE);

}

libfptr_set_param_str(fptr, LIBFPTR_PARAM_RECORDS_ID, recordsID.c_str());
libfptr_end_read_records(fptr);
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(Fptr &fptr, const std::wstring &recordsID)
{
fptr.setParam(LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_PARSE_COMPLEX_ATTR);
fptr.setParam(LIBFPTR_PARAM_TAG_VALUE, {0x04, 0x0C, 0x00, 0x2B, 0x37, 0x39, 0x32,
0x34, 0x31, 0x32, 0x33, 0x31, 0x32, 0x31, 0x33,
0xC9, 0x04, 0x09, 0x00, 0x8F, 0xAE, 0xE1, 0xE2,
0xA0, 0xA2, 0xE9, 0xA8, 0xAA });
fptr.beginReadRecords();
String recordsID = fptr.getParamString(LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
std::vector tagValue = fptr.getParamByteArray(LIBFPTR_PARAM_TAG_VALUE);
uint tagNumber = fptr.getParamInt(LIBFPTR_PARAM_TAG_NUMBER);
std::wstring tagName = fptr.getParamString(LIBFPTR_PARAM_TAG_NAME);
uint tagType = fptr.getParamInt(LIBFPTR_PARAM_TAG_TYPE);
}

fptr.setParam(LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|# Вспомогательная функция чтения следующей записи
def readNextRecord(fptr, recordsID):
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID)
return fptr.readNextRecord()

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_PARSE_COMPLEX_ATTR)
fptr.setParam(IFptr.LIBFPTR_PARAM_TAG_VALUE, [0x93, 0x04, 0x0C, 0x00, 0x2B, 0x37, 0x39, 0x32,
0x34, 0x31, 0x32, 0x33, 0x31, 0x32, 0x31, 0x33,
0xC9, 0x04, 0x09, 0x00, 0x8F, 0xAE, 0xE1, 0xE2,
0xA0, 0xA2, 0xE9, 0xA8, 0xAA ])
fptr.beginReadRecords()
recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID)

while readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK:
tagValue = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE)
tagNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_NUMBER)
tagName = fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_NAME)
tagType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_TYPE)

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID)
fptr.endReadRecords()
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_PARSE_COMPLEX_ATTR);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAG_VALUE, new byte[]{0x93, 0x04, 0x0C, 0x00, 0x2B, 0x37, 0x39, 0x32,
0x34, 0x31, 0x32, 0x33, 0x31, 0x32, 0x31, 0x33,
0xC9, 0x04, 0x09, 0x00, 0x8F, 0xAE, 0xE1, 0xE2,
0xA0, 0xA2, 0xE9, 0xA8, 0xAA });
fptr.beginReadRecords();
String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK) {
byte[] tagValue = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);
long tagNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_NUMBER);
String tagName = fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_NAME);
long tagType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_TYPE);
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_PARSE_COMPLEX_ATTR);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAG_VALUE, new byte[]{0x93, 0x04, 0x0C, 0x00, 0x2B, 0x37, 0x39, 0x32,
0x34, 0x31, 0x32, 0x33, 0x31, 0x32, 0x31, 0x33,
0xC9, 0x04, 0x09, 0x00, 0x8F, 0xAE, 0xE1, 0xE2,
0xA0, 0xA2, 0xE9, 0xA8, 0xAA });
fptr.beginReadRecords();
String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK) {
byte[] tagValue = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);
long tagNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_NUMBER);
String tagName = fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_NAME);
long tagType = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_TYPE);
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr *fptr, NSString *recordsID) {
[fptr setParam:LIBFPTR_PARAM_RECORDS_ID NSStringParam:recordsID];
return [fptr readNextRecord];
}

uchar attr[] = { 0x93, 0x04, 0x0C, 0x00, 0x2B, 0x37, 0x39, 0x32,
0x34, 0x31, 0x32, 0x33, 0x31, 0x32, 0x31, 0x33,
0xC9, 0x04, 0x09, 0x00, 0x8F, 0xAE, 0xE1, 0xE2,
0xA0, 0xA2, 0xE9, 0xA8, 0xAA };
[fptr setParam:LIBFPTR_PARAM_RECORDS_TYPE intParam:LIBFPTR_RT_PARSE_COMPLEX_ATTR];
[fptr setParam:LIBFPTR_PARAM_TAG_VALUE NSDataParam:[NSData dataWithBytes:(const void*)attr length:sizeof(attr)]];
[fptr beginReadRecords];
NSString *recordsID = [fptr getParamString:LIBFPTR_PARAM_RECORDS_ID];

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
NSData *tagValue = [fptr getParamByteArray:LIBFPTR_PARAM_TAG_VALUE];
uint tagNumber = [fptr getParamInt:LIBFPTR_PARAM_TAG_NUMBER];
NSString *tagName = [fptr getParamString:LIBFPTR_PARAM_TAG_NAME];
uint tagType = [fptr getParamInt:LIBFPTR_PARAM_TAG_TYPE];
}

[fptr setParam:LIBFPTR_PARAM_RECORDS_ID NSStringParam:recordsID];
[fptr endReadRecords];
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_TYPE, Constants.LIBFPTR_RT_PARSE_COMPLEX_ATTR);
fptr.setParam(Constants.LIBFPTR_PARAM_TAG_VALUE, new byte[]{0x93, 0x04, 0x0C, 0x00, 0x2B, 0x37, 0x39, 0x32,
0x34, 0x31, 0x32, 0x33, 0x31, 0x32, 0x31, 0x33,
0xC9, 0x04, 0x09, 0x00, 0x8F, 0xAE, 0xE1, 0xE2,
0xA0, 0xA2, 0xE9, 0xA8, 0xAA });
fptr.beginReadRecords();
String recordsID = fptr.getParamString(Constants.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == Constants.LIBFPTR_OK) {
byte[] tagValue = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_TAG_VALUE);
uint tagNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_TAG_NUMBER);
String tagName = fptr.getParamString(Constants.LIBFPTR_PARAM_TAG_NAME);
uint tagType = fptr.getParamInt(Constants.LIBFPTR_PARAM_TAG_TYPE);
}

fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
function readNextRecord(fptr: OleVariant; recordsID: String): integer;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
Result := fptr.readNextRecord;
end;

var
recordsID: String;
tagValue: Variant;
tagNumber: Integer;
tagName: String;
tagType: Integer;
array: Array[0 .. 28] of Byte = ($93, $04, $0C, $00, $2B, $37, $39, $32,
$34, $31, $32, $33, $31, $32, $31, $33,
$C9, $04, $09, $00, $8F, $AE, $E1, $E2,
$A0, $A2, $E9, $A8, $AA);
arrayVariant: Variant;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_TYPE, fptr.LIBFPTR_RT_PARSE_COMPLEX_ATTR);

arrayVariant := VarArrayCreate([0, high(array)], varByte);
for i := VarArrayLowBound(arrayVariant, 1) to VarArrayHighBound(arrayVariant, 1) do
begin
    VarArrayPut(arrayVariant, array[i], [i]);
end;
fptr.setParam(fptr.LIBFPTR_PARAM_TAG_VALUE, arrayVariant);
fptr.beginReadRecords;
recordsID := fptr.getParamString(fptr.LIBFPTR_PARAM_RECORDS_ID);

While readNextRecord(fptr, recordsID) = fptr.LIBFPTR_OK do
begin
    tagValue    := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_TAG_VALUE);
    tagNumber   := fptr.getParamInt(fptr.LIBFPTR_PARAM_TAG_NUMBER);
    tagName     := fptr.getParamString(fptr.LIBFPTR_PARAM_TAG_NAME);
    tagType     := fptr.getParamInt(fptr.LIBFPTR_PARAM_TAG_TYPE);
end;

fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords;

end;
|

|// Вспомогательная функция чтения следующей записи
func readNextRecord(fptr *fptr10.IFptr, recordsID string) error {
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_ID, recordsID)
return fptr.ReadNextRecord()
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_TYPE, fptr10.LIBFPTR_RT_PARSE_COMPLEX_ATTR)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TAG_VALUE, []byte{0x93, 0x04, 0x0C, 0x00, 0x2B, 0x37, 0x39, 0x32,
0x34, 0x31, 0x32, 0x33, 0x31, 0x32, 0x31, 0x33,
0xC9, 0x04, 0x09, 0x00, 0x8F, 0xAE, 0xE1, 0xE2,
0xA0, 0xA2, 0xE9, 0xA8, 0xAA })
fptr.BeginReadRecords()
recordsID := fptr.GetParamString(fptr10.LIBFPTR_PARAM_RECORDS_ID)

for readNextRecord(fptr, recordsID) == nil {
tagValue = fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_TAG_VALUE)
tagNumber = fptr.GetParamInt(fptr10.LIBFPTR_PARAM_TAG_NUMBER)
tagName = fptr.GetParamString(fptr10.LIBFPTR_PARAM_TAG_NAME)
tagType = fptr.GetParamInt(fptr10.LIBFPTR_PARAM_TAG_TYPE)
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_ID, recordsID)
fptr.EndReadRecords()
|

|// Вспомогательная функция чтения следующей записи
function readNextRecord(recordsID) {
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return Fptr.readNextRecord();
}

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_TYPE, Fptr.LIBFPTR_RT_PARSE_COMPLEX_ATTR);
Fptr.setParam(Fptr.LIBFPTR_PARAM_TAG_VALUE, new Uint8Array([0x93, 0x04, 0x0C, 0x00, 0x2B, 0x37, 0x39, 0x32,
0x34, 0x31, 0x32, 0x33, 0x31, 0x32, 0x31, 0x33,
0xC9, 0x04, 0x09, 0x00, 0x8F, 0xAE, 0xE1, 0xE2,
0xA0, 0xA2, 0xE9, 0xA8, 0xAA]));
Fptr.beginReadRecords();
recordsID = Fptr.getParamString(Fptr.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(recordsID) == Fptr.LIBFPTR_OK) {
tagValue = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_TAG_VALUE);
tagNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_TAG_NUMBER);
tagName = Fptr.getParamString(Fptr.LIBFPTR_PARAM_TAG_NAME);
tagType = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_TAG_TYPE);
}

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
Fptr.endReadRecords();
|

Для разбора массива байтов со значением составного реквизита необходимо
вызвать метод /beginReadRecords()/ с типом данных
LIBFPTR_PARAM_RECORDS_TYPE равным LIBFPTR_RT_PARSE_COMPLEX_ATTR и
указать значение реквизита в LIBFPTR_PARAM_TAG_VALUE.

Каждый успешный вызов метода /readNextRecord()/ возвращает значение
одного реквизита:

Параметр Описание Тип
LIBFPTR_PARAM_TAG_NUMBER Номер реквизита int
LIBFPTR_PARAM_TAG_VALUE Значение реквизита Зависит от номера реквизита
LIBFPTR_PARAM_TAG_TYPE Тип реквизита int
LIBFPTR_PARAM_TAG_NAME Название реквизита string
LIBFPTR_PARAM_TAG_IS_COMPLEX true, если реквизит составной bool
LIBFPTR_PARAM_TAG_IS_REPEATABLE true, если реквизит может
повторяться bool

Тип реквизита (LIBFPTR_PARAM_TAG_TYPE) может принимать следующие значения:

  • LIBFPTR_TAG_TYPE_STLV — составной реквизит;
  • LIBFPTR_TAG_TYPE_ARRAY — массив байтов;
  • LIBFPTR_TAG_TYPE_FVLN — число с точкой без знака;
  • LIBFPTR_TAG_TYPE_BITS — регистр флагов;
  • LIBFPTR_TAG_TYPE_BYTE — целое число без знака, 1 байт;
  • LIBFPTR_TAG_TYPE_UINT_16 — целое число без знака, 2 байта;
  • LIBFPTR_TAG_TYPE_UINT_32 — целое число без знака, 4 байта;
  • LIBFPTR_TAG_TYPE_VLN — целое число без знака, переменная длина;
  • LIBFPTR_TAG_TYPE_STRING — строка;
  • LIBFPTR_TAG_TYPE_UNIX_TIME — время, выраженное в количестве
    секунд, отсчитанных от 1 января 1970 года;
  • LIBFPTR_TAG_TYPE_BOOL — флаг.

Реквизит можно сразу считать в удобном для обработки виде. Для этого
нужно ориентироваться на значение параметра LIBFPTR_PARAM_TAG_TYPE, и,
в зависимости от него, использовать методы для чтения разных типов
параметров — /getParamInt()/, /getParamBool()/, /getParamDouble()/
и т.п.

Поддерживается для всех ККТ

Чтение настроек ККТ

Чтение настроек ККТ

|// Вспомогательная функция для чтения строковых параметров
std::wstring readStringParam(libfptr_handle fptr, int paramNumber) {
std::vector str(32);
int size = libfptr_get_param_str(fptr, paramNumber, &str[0], str.size());
if (size > str.size()) {
str.resize(size);
libfptr_get_param_str(fptr, paramNumber, &str[0], str.size());
}
return std::wstring(&str[0]);
}

// Вспомогательная функция чтения следующей записи
int readNextRecord(libfptr_handle fptr, const std::wstring &recordsID) {
libfptr_set_param_str(fptr, LIBFPTR_PARAM_RECORDS_ID, recordsID.c_str());
return libfptr_read_next_record(fptr);
}

libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_SETTINGS);
libfptr_begin_read_records(handle);
std::wstring recordsID = readStringAttribute(fptr, LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
uint id = libfptr_get_param_int(fptr, LIBFPTR_PARAM_SETTING_ID);
uint type = libfptr_get_param_int(fptr, LIBFPTR_PARAM_SETTING_TYPE);
std::wstring name = readStringParam(fptr, LIBFPTR_PARAM_SETTING_NAME);

switch (type)
{
case LIBFPTR_ST_NUMBER:
{
    uint value = libfptr_get_param_int(fptr, LIBFPTR_PARAM_SETTING_VALUE);
    break;
}
case LIBFPTR_ST_BOOL:
{
    bool value = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_SETTING_VALUE) != 0;
    break;
}
case LIBFPTR_ST_STRING:
{
    std::wstring value = readStringParam(fptr, LIBFPTR_PARAM_SETTING_VALUE);
    break;
}
}

}

libfptr_set_param_str(fptr, LIBFPTR_PARAM_RECORDS_ID, recordsID.c_str());
libfptr_end_read_records(fptr);
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(Fptr &fptr, const std::wstring &recordsID)
{
fptr.setParam(LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_SETTINGS);
fptr.beginReadRecords();
std::wstring recordsID = fptr.getParamString(LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
uint sId = fptr.getParamInt(LIBFPTR_PARAM_SETTING_ID);
uint type = fptr.getParamInt(LIBFPTR_PARAM_SETTING_TYPE);
std::wstring name = fptr.getParamString(LIBFPTR_PARAM_SETTING_NAME);
switch (type)
{
case LIBFPTR_ST_NUMBER:
{
uint value = fptr.getParamInt(LIBFPTR_PARAM_SETTING_VALUE);
break;
}
case LIBFPTR_ST_BOOL:
{
bool value = fptr.getParamBool(LIBFPTR_PARAM_SETTING_VALUE);
break;
}
case LIBFPTR_ST_STRING:
{
std::wstring value = fptr.getParamString(LIBFPTR_PARAM_SETTING_VALUE);
break;
}
}
}

fptr.setParam(LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|# Вспомогательная функция чтения следующей записи
def readNextRecord(fptr, recordsID):
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID)
return fptr.readNextRecord()

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_SETTINGS)
fptr.beginReadRecords()
recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID)

while readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK:
id = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SETTING_ID)
type = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SETTING_TYPE)
name = fptr.getParamString(IFptr.LIBFPTR_PARAM_SETTING_NAME)
if type == IFptr.LIBFPTR_ST_NUMBER:
value = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SETTING_VALUE)
elif type == IFptr.LIBFPTR_ST_BOOL:
value = fptr.getParamBool(IFptr.LIBFPTR_PARAM_SETTING_VALUE)
elif type == IFptr.LIBFPTR_ST_STRING:
value = fptr.getParamString(IFptr.LIBFPTR_PARAM_SETTING_VALUE)

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID)
fptr.endReadRecords()
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_SETTINGS);
fptr.beginReadRecords();
String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK) {
long sId = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SETTING_ID);
long type = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SETTING_TYPE);
String name = fptr.getParamString(IFptr.LIBFPTR_PARAM_SETTING_NAME);
switch ((int) type)
{
case IFptr.LIBFPTR_ST_NUMBER:
{
long value = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SETTING_VALUE);
break;
}
case IFptr.LIBFPTR_ST_BOOL:
{
boolean value = fptr.getParamBool(IFptr.LIBFPTR_PARAM_SETTING_VALUE);
break;
}
case IFptr.LIBFPTR_ST_STRING:
{
String value = fptr.getParamString(IFptr.LIBFPTR_PARAM_SETTING_VALUE);
break;
}
}
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_SETTINGS);
fptr.beginReadRecords();
String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK) {
long id = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SETTING_ID);
long type = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SETTING_TYPE);
String name = fptr.getParamString(IFptr.LIBFPTR_PARAM_SETTING_NAME);

switch ((int) type) 
{
case IFptr.LIBFPTR_ST_NUMBER:
{
    long value = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SETTING_VALUE);
    break;
}
case IFptr.LIBFPTR_ST_BOOL:
{
    boolean value = fptr.getParamBool(IFptr.LIBFPTR_PARAM_SETTING_VALUE);
    break;
}
case IFptr.LIBFPTR_ST_STRING:
{
    String value = fptr.getParamString(IFptr.LIBFPTR_PARAM_SETTING_VALUE);
    break;
}  
}

}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr *fptr, NSString *recordsID) {
[fptr setParam:LIBFPTR_PARAM_RECORDS_ID NSStringParam:recordsID];
return [fptr readNextRecord];
}

[fptr setParam:LIBFPTR_PARAM_RECORDS_TYPE intParam:LIBFPTR_RT_SETTINGS];
[fptr beginReadRecords];
NSString *recordsID = [fptr getParamString:LIBFPTR_PARAM_RECORDS_ID];

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
uint id = [fptr getParamInt:LIBFPTR_PARAM_SETTING_ID];
uint type = [fptr getParamInt:LIBFPTR_PARAM_SETTING_TYPE];
NSString *name = [fptr getParamString:LIBFPTR_PARAM_SETTING_NAME];

switch (type)
{
case LIBFPTR_ST_NUMBER:
{
    uint value = [fptr getParamInt:LIBFPTR_PARAM_SETTING_VALUE];
    break;
}
case LIBFPTR_ST_BOOL:
{
    bool value = [fptr getParamBool:LIBFPTR_PARAM_SETTING_VALUE];
    break;
}
case LIBFPTR_ST_STRING:
{
    NSString *value = [fptr getParamString:LIBFPTR_PARAM_SETTING_VALUE];
    break;
}
}

}

[fptr setParam:LIBFPTR_PARAM_RECORDS_ID NSStringParam:recordsID];
[fptr endReadRecords];
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_TYPE, Constants.LIBFPTR_RT_SETTINGS);
fptr.beginReadRecords();
String recordsID = fptr.getParamString(Constants.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == Constants.LIBFPTR_OK) {
uint id = fptr.getParamInt(Constants.LIBFPTR_PARAM_SETTING_ID);
uint type = fptr.getParamInt(Constants.LIBFPTR_PARAM_SETTING_TYPE);
String name = fptr.getParamString(Constants.LIBFPTR_PARAM_SETTING_NAME);

switch (type) 
{
case Constants.LIBFPTR_ST_NUMBER:
{
    uint value = fptr.getParamInt(Constants.LIBFPTR_PARAM_SETTING_VALUE);
    break;
}
case Constants.LIBFPTR_ST_BOOL:
{
    bool value = fptr.getParamBool(Constants.LIBFPTR_PARAM_SETTING_VALUE);
    break;
}
case Constants.LIBFPTR_ST_STRING:
{
    String value = fptr.getParamString(Constants.LIBFPTR_PARAM_SETTING_VALUE);
    break;
}  
}

}

fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
function readNextRecord(fptr: OleVariant; recordsID: String): integer;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
Result := fptr.readNextRecord;
end;

var
recordsID: String;
id: Integer;
type: Integer;
name: String;
valueNumber: Integer;
valueString: String;
valueBool: Boolean;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_TYPE, fptr.LIBFPTR_RT_SETTINGS);
fptr.beginReadRecords;
recordsID := fptr.getParamString(fptr.LIBFPTR_PARAM_RECORDS_ID);

While readNextRecord(fptr, recordsID) = fptr.LIBFPTR_OK do
begin
    id   := fptr.getParamInt(fptr.LIBFPTR_PARAM_SETTING_ID);
    type := fptr.getParamInt(fptr.LIBFPTR_PARAM_SETTING_TYPE);
    name := fptr.getParamString(fptr.LIBFPTR_PARAM_SETTING_NAME);

    case type of
        fptr.LIBFPTR_ST_NUMBER: valueNumber := fptr.getParamInt(fptr.LIBFPTR_PARAM_SETTING_VALUE);
        fptr.LIBFPTR_ST_BOOL: valueBool := fptr.getParamBool(fptr.LIBFPTR_PARAM_SETTING_VALUE);
        fptr.LIBFPTR_ST_STRING: valueString := fptr.getParamString(fptr.LIBFPTR_PARAM_SETTING_VALUE);
end;

fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords;

end;
|

|// Вспомогательная функция чтения следующей записи
func readNextRecord(fptr *fptr10.IFptr, recordsID string) error {
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_ID, recordsID)
return fptr.ReadNextRecord()
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_TYPE, fptr10.LIBFPTR_RT_SETTINGS)
fptr.BeginReadRecords()
recordsID := fptr.GetParamString(fptr10.LIBFPTR_PARAM_RECORDS_ID)

for readNextRecord(fptr, recordsID) == nil {
id = fptr.GetParamInt(fptr10.LIBFPTR_PARAM_SETTING_ID)
type = fptr.GetParamInt(fptr10.LIBFPTR_PARAM_SETTING_TYPE)
name = fptr.GetParamString(fptr10.LIBFPTR_PARAM_SETTING_NAME)

var value interface{}
switch type {
case fptr10.LIBFPTR_ST_NUMBER:
    value = fptr.GetParamInt(fptr10.LIBFPTR_PARAM_SETTING_VALUE)
case fptr10.LIBFPTR_ST_BOOL:
    value = fptr.GetParamBool(fptr10.LIBFPTR_PARAM_SETTING_VALUE)
case fptr10.LIBFPTR_ST_STRING:
    value = fptr.GetParamString(fptr10.LIBFPTR_PARAM_SETTING_VALUE)
} 

}

fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_ID, recordsID)
fptr.EndReadRecords()
|

|// Вспомогательная функция чтения следующей записи
function readNextRecord(recordsID) {
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return Fptr.readNextRecord();
}

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_TYPE, Fptr.LIBFPTR_RT_SETTINGS);
Fptr.beginReadRecords();
recordsID = Fptr.getParamString(Fptr.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(recordsID) == Fptr.LIBFPTR_OK) {
id = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_SETTING_ID);
type = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_SETTING_TYPE);
name = Fptr.getParamString(Fptr.LIBFPTR_PARAM_SETTING_NAME);

var value;
switch (type) {
case Fptr.LIBFPTR_ST_NUMBER:
    value = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_SETTING_VALUE);
    break;
case Fptr.LIBFPTR_ST_BOOL:
    value = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_SETTING_VALUE);
    break;
case Fptr.LIBFPTR_ST_STRING:
    value = Fptr.getParamString(Fptr.LIBFPTR_PARAM_SETTING_VALUE);
    break;
}

}

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
Fptr.endReadRecords();
|

Для чтения всех настроек ККТ необходимо вызвать метод / beginReadRecords()/ с типом данных LIBFPTR_PARAM_RECORDS_TYPE равным
LIBFPTR_RT_SETTINGS.

Каждый успешный вызов метода /readNextRecord()/ возвращает значение
одной настройки:

Параметр Описание Тип
LIBFPTR_PARAM_SETTING_ID Номер настройки int
LIBFPTR_PARAM_SETTING_TYPE Тип настройки int
LIBFPTR_PARAM_SETTING_NAME Название настройки string
LIBFPTR_PARAM_SETTING_VALUE Значение настройки Зависит от настройки

Тип настройки (LIBFPTR_PARAM_SETTING_TYPE) может принимать следующие
значения:

  • LIBFPTR_ST_NUMBER — числовая настройка;
  • LIBFPTR_ST_BOOL — логическая настройка;
  • LIBFPTR_ST_STRING — строковая настройка.

Настройку можно сразу считать в удобном для обработки виде. Для этого
нужно ориентироваться на значение параметра
LIBFPTR_PARAM_SETTING_TYPE, и, в зависимости от него, использовать
методы для чтения разных типов параметров — /getParamInt()/, / getParamBool()/, /getParamString()/ и т.п.

Поддерживается для всех ККТ

Последний закрытый документ из электронного журнала

|// Чтение последнего закрытого документа из электронного журнала
libfptr_get_last_document_journal();
std::vector document;
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TLV_LIST, &document[0], document.size());
if (size > document.size())
{
data.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TLV_LIST, &document[0], document.size());
}

uint pos = 0;
while (pos < size) { int tag = document[pos] | (document[pos + 1] << 8); int length = document[pos + 2] | (document[pos + 3] << 8); pos += 4; std::vector value(&document[pos], &document[pos + length]);
pos += length;
// выполняем операции с прочитанным TLV — данные tag, length, value
}
|

|// Чтение последнего закрытого документа из электронного журнала
fptr.getLastDocumentJournal();
std::vector document = fptr.getParamByteArray(LIBFPTR_PARAM_TLV_LIST);

uint pos = 0;
while (pos < document.size()) { int tag = document[pos] | (document[pos + 1] << 8); int length = document[pos + 2] | (document[pos + 3] << 8); pos += 4; std::vector value(&document[pos], &document[pos + length]);
pos += length;
// выполняем операции с прочитанным TLV — данные tag, length, value
}
|

|# Чтение последнего закрытого документа из электронного журнала
fptr.getLastDocumentJournal()
document = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TLV_LIST)

pos = 0
while pos < len(document):
tag = document[pos] | (document[pos + 1] << 8)
length = document[pos + 2] | (document[pos + 3] << 8)
pos += 4
value = document[pos:pos + length]
pos += length
# выполняем операции с прочитанным TLV — данные tag, length, value

|

|import java.util.Arrays;

// Чтение последнего закрытого документа из электронного журнала
fptr.getLastDocumentJournal();
byte[] document = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TLV_LIST);

long pos = 0;
while (pos < document.length) {
long tag = document[pos] | (document[pos + 1] << 8);
long len = document[pos + 2] | (document[pos + 3] << 8);
pos += 4;
byte[] value = Arrays.copyOfRange(document, pos, pos + len + 1);
pos += len;
// выполняем операции с прочитанным TLV — данные tag, len, value
}
|

|import java.util.Arrays;

// Чтение последнего закрытого документа из электронного журнала
fptr.getLastDocumentJournal();
byte[] document = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TLV_LIST);

long pos = 0;
while (pos < document.length) {
long tag = document[pos] | (document[pos + 1] << 8);
long len = document[pos + 2] | (document[pos + 3] << 8);
pos += 4;
byte[] value = Arrays.copyOfRange(document, pos, pos + len + 1);
pos += len;
// выполняем операции с прочитанным TLV — данные tag, len, value
}
|

|// Чтение последнего закрытого документа из электронного журнала
[fptr getLastDocumentJournal];
NSData *document = [fptr getParamByteArray:LIBFPTR_PARAM_TLV_LIST];

int pos = 0;
while (pos < [document length])
{
int tag = document[pos] | (document[pos + 1] << 8);
int length = document[pos + 2] | (document[pos + 3] << 8);
pos += 4;
byte[] value = new byte[length];
NSData *value = [document subarrayWithRange:NSMakeRange(pos, length)];
pos += length;
// выполняем операции с прочитанным TLV — данные tag, length, value
}
|

|// Чтение последнего закрытого документа из электронного журнала
fptr.getLastDocumentJournal();
byte[] document = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_TLV_LIST);

uint pos = 0;
while (pos < document.Length)
{
int tag = document[pos] | (document[pos + 1] << 8);
int length = document[pos + 2] | (document[pos + 3] << 8);
pos += 4;
byte[] value = new byte[length];
Array.Copy(document, pos, value, 0, length);
pos += length;
// выполняем операции с прочитанным TLV — данные tag, length, value
}
|

|// Чтение последнего закрытого документа из электронного журнала
var
document: Variant;
docArray: Array of byte;
tag: Integer;
len: Integer;
value: Array of byte;
i: Integer;
pos: Integer;
begin
fptr.getLastDocumentJournal();

document := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_TLV_LIST);
i := Length(document);
SetLength(docArray, VarArrayHighBound(document, 1));
for i := VarArrayLowBound(document, 1) to VarArrayHighBound(document, 1) do
begin
  docArray[i] := VarArrayGet(document, i);
end;

while pos < Length(docArray) do
begin
    tag := docArray[pos] or (docArray[pos + 1] shl 8);
    len := docArray[pos + 2] or (docArray[pos + 3] shl 8);
    pos := pos + 4;
    SetLength(value, len);
    for i := 0 to len - 1 do
      value[i] := docArray[pos + i];
    pos := pos + len;
    // выполняем операции с прочитанным TLV - данные tag, len, value
end

end;
|

|fptr.getLastDocumentJournal()
document := fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_TLV_LIST)

pos := 0
for pos < len(document) {
tag := document[pos] | (document[pos + 1] << 8)
length := document[pos + 2] | (document[pos + 3] << 8)
pos += 4;
value := document[pos: pos + length]
pos += length
// выполняем операции с прочитанным TLV — данные tag, length, value
}
|

|// Чтение последнего закрытого документа из электронного журнала
Fptr.getLastDocumentJournal();
document = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_TLV_LIST);

pos = 0;
while (pos < document.length) {
tag = document[pos] | (document[pos + 1] << 8);
len = document[pos + 2] | (document[pos + 3] << 8);
pos += 4;
value = [];
for (i = 0; i < len; i++)
value[i] = document[pos + i];
pos += len;
// выполняем операции с прочитанным TLV — данные tag, len, value
}
|

Для чтения последнего закрытого документа из электронного журнала в
формате TLV необходимо вызвать метод /getLastDocumentJournal()/. После
выполнения метода значение можно прочитать из параметра
LIBFPTR_PARAM_TLV_LIST. Массив байт содержит реквизиты ФД в виде TLV
согласно ФФД и зависят от вида документа, а также от его содержимого.
Массив документов TLV представляет собой массив байт, в который уложен
структуры TLV одна за другой.

Структура TLV содержит следующие поля:

  • Tag — тег, номер реквизита, число 2 байта, LE;
  • Length — длина реквизита, число 2 байта, LE;
  • Value — значение реквизита, массив байт (длина массива указана в
    предыдущем поле структуры);

Значения реквизитов интерпретируются согласно ФФД в зависимости от
номера тега.

Универсальные счетчики

ККТ версий 5.Х имеют встроенные настраиваемые счетчики, которые
позволяют аккумулировать в них суммы и количества по различным
операциям. Эти счетчики не обнуляются автоматически, для их обнуления
требуется вызвать метод сброса счетчиков <#uc_reset>.

Настройка счетчиков

Чтение настроек

|libfptr_read_universal_counters_settings(fptr);

uint layer1 = libfptr_get_param_int(fptr, LIBFPTR_PARAM_UC_LAYER_1);
uint flags1 = libfptr_get_param_int(fptr, LIBFPTR_PARAM_UC_FLAGS_1);
uint mask1 = libfptr_get_param_int(fptr, LIBFPTR_PARAM_UC_MASK_1);

uint layer2 = libfptr_get_param_int(fptr, LIBFPTR_PARAM_UC_LAYER_2);
uint flags2 = libfptr_get_param_int(fptr, LIBFPTR_PARAM_UC_FLAGS_2);
uint mask2 = libfptr_get_param_int(fptr, LIBFPTR_PARAM_UC_MASK_2);

uint layer3 = libfptr_get_param_int(fptr, LIBFPTR_PARAM_UC_LAYER_3);
uint flags3 = libfptr_get_param_int(fptr, LIBFPTR_PARAM_UC_FLAGS_3);
uint mask3 = libfptr_get_param_int(fptr, LIBFPTR_PARAM_UC_MASK_3);

uint layer4 = libfptr_get_param_int(fptr, LIBFPTR_PARAM_UC_LAYER_4);
uint flags4 = libfptr_get_param_int(fptr, LIBFPTR_PARAM_UC_FLAGS_4);
uint mask4 = libfptr_get_param_int(fptr, LIBFPTR_PARAM_UC_MASK_4);
|

|fptr.readUniversalCountersSettings();

uint layer1 = fptr.getParamInt(LIBFPTR_PARAM_UC_LAYER_1);
uint flags1 = fptr.getParamInt(LIBFPTR_PARAM_UC_FLAGS_1);
uint mask1 = fptr.getParamInt(LIBFPTR_PARAM_UC_MASK_1);

uint layer2 = fptr.getParamInt(LIBFPTR_PARAM_UC_LAYER_2);
uint flags2 = fptr.getParamInt(LIBFPTR_PARAM_UC_FLAGS_2);
uint mask2 = fptr.getParamInt(LIBFPTR_PARAM_UC_MASK_2);

uint layer3 = fptr.getParamInt(LIBFPTR_PARAM_UC_LAYER_3);
uint flags3 = fptr.getParamInt(LIBFPTR_PARAM_UC_FLAGS_3);
uint mask3 = fptr.getParamInt(LIBFPTR_PARAM_UC_MASK_3);

uint layer4 = fptr.getParamInt(LIBFPTR_PARAM_UC_LAYER_4);
uint flags4 = fptr.getParamInt(LIBFPTR_PARAM_UC_FLAGS_4);
uint mask4 = fptr.getParamInt(LIBFPTR_PARAM_UC_MASK_4);
|

|fptr.readUniversalCountersSettings()

layer1 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_LAYER_1)
flags1 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_FLAGS_1)
mask1 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_MASK_1)

layer2 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_LAYER_2)
flags2 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_FLAGS_2)
mask2 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_MASK_2)

layer3 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_LAYER_3)
flags3 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_FLAGS_3)
mask3 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_MASK_3)

layer4 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_LAYER_4)
flags4 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_FLAGS_4)
mask4 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_MASK_4)
|

|fptr.readUniversalCountersSettings();

long layer1 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_LAYER_1);
long flags1 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_FLAGS_1);
long mask1 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_MASK_1);

long layer2 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_LAYER_2);
long flags2 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_FLAGS_2);
long mask2 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_MASK_2);

long layer3 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_LAYER_3);
long flags3 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_FLAGS_3);
long mask3 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_MASK_3);

long layer4 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_LAYER_4);
long flags4 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_FLAGS_4);
long mask4 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_MASK_4);
|

|fptr.readUniversalCountersSettings();

long layer1 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_LAYER_1);
long flags1 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_FLAGS_1);
long mask1 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_MASK_1);

long layer2 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_LAYER_2);
long flags2 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_FLAGS_2);
long mask2 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_MASK_2);

long layer3 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_LAYER_3);
long flags3 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_FLAGS_3);
long mask3 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_MASK_3);

long layer4 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_LAYER_4);
long flags4 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_FLAGS_4);
long mask4 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_MASK_4);
|

|[fptr readUniversalCountersSettings];

uint layer1 = [fptr getParamInt:LIBFPTR_PARAM_UC_LAYER_1];
uint flags1 = [fptr getParamInt:LIBFPTR_PARAM_UC_FLAGS_1];
uint mask1 = [fptr getParamInt:LIBFPTR_PARAM_UC_MASK_1];

uint layer2 = [fptr getParamInt:LIBFPTR_PARAM_UC_LAYER_2];
uint flags2 = [fptr getParamInt:LIBFPTR_PARAM_UC_FLAGS_2];
uint mask2 = [fptr getParamInt:LIBFPTR_PARAM_UC_MASK_2];

uint layer3 = [fptr getParamInt:LIBFPTR_PARAM_UC_LAYER_3];
uint flags3 = [fptr getParamInt:LIBFPTR_PARAM_UC_FLAGS_3];
uint mask3 = [fptr getParamInt:LIBFPTR_PARAM_UC_MASK_3];

uint layer4 = [fptr getParamInt:LIBFPTR_PARAM_UC_LAYER_4];
uint flags4 = [fptr getParamInt:LIBFPTR_PARAM_UC_FLAGS_4];
uint mask4 = [fptr getParamInt:LIBFPTR_PARAM_UC_MASK_4];
|

|fptr.readUniversalCountersSettings();

uint layer1 = fptr.getParamInt(Constants.LIBFPTR_PARAM_UC_LAYER_1);
uint flags1 = fptr.getParamInt(Constants.LIBFPTR_PARAM_UC_FLAGS_1);
uint mask1 = fptr.getParamInt(Constants.LIBFPTR_PARAM_UC_MASK_1);

uint layer2 = fptr.getParamInt(Constants.LIBFPTR_PARAM_UC_LAYER_2);
uint flags2 = fptr.getParamInt(Constants.LIBFPTR_PARAM_UC_FLAGS_2);
uint mask2 = fptr.getParamInt(Constants.LIBFPTR_PARAM_UC_MASK_2);

uint layer3 = fptr.getParamInt(Constants.LIBFPTR_PARAM_UC_LAYER_3);
uint flags3 = fptr.getParamInt(Constants.LIBFPTR_PARAM_UC_FLAGS_3);
uint mask3 = fptr.getParamInt(Constants.LIBFPTR_PARAM_UC_MASK_3);

uint layer4 = fptr.getParamInt(Constants.LIBFPTR_PARAM_UC_LAYER_4);
uint flags4 = fptr.getParamInt(Constants.LIBFPTR_PARAM_UC_FLAGS_4);
uint mask4 = fptr.getParamInt(Constants.LIBFPTR_PARAM_UC_MASK_4);
|

|var
layer1, flags1, mask1: Longint;
layer2, flags2, mask2: Longint;
layer3, flags3, mask3: Longint;
layer4, flags4, mask4: Longint;
begin
fptr.readUniversalCountersSettings;

layer1 := fptr.getParamInt(fptr.LIBFPTR_PARAM_UC_LAYER_1);
flags1 := fptr.getParamInt(fptr.LIBFPTR_PARAM_UC_FLAGS_1);
mask1 := fptr.getParamInt(fptr.LIBFPTR_PARAM_UC_MASK_1);

layer2 := fptr.getParamInt(fptr.LIBFPTR_PARAM_UC_LAYER_2);
flags2 := fptr.getParamInt(fptr.LIBFPTR_PARAM_UC_FLAGS_2);
mask2 := fptr.getParamInt(fptr.LIBFPTR_PARAM_UC_MASK_2);

layer3 := fptr.getParamInt(fptr.LIBFPTR_PARAM_UC_LAYER_3);
flags3 := fptr.getParamInt(fptr.LIBFPTR_PARAM_UC_FLAGS_3);
mask3 := fptr.getParamInt(fptr.LIBFPTR_PARAM_UC_MASK_3);

layer4 := fptr.getParamInt(fptr.LIBFPTR_PARAM_UC_LAYER_4);
flags4 := fptr.getParamInt(fptr.LIBFPTR_PARAM_UC_FLAGS_4);
mask4 := fptr.getParamInt(fptr.LIBFPTR_PARAM_UC_MASK_4);

end;
|

|fptr.readUniversalCountersSettings()

layer1 := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_UC_LAYER_1);
flags1 := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_UC_FLAGS_1);
mask1 := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_UC_MASK_1);

layer2 := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_UC_LAYER_2);
flags2 := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_UC_FLAGS_2);
mask2 := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_UC_MASK_2);

layer3 := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_UC_LAYER_3);
flags3 := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_UC_FLAGS_3);
mask3 := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_UC_MASK_3);

layer4 := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_UC_LAYER_4);
flags4 := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_UC_FLAGS_4);
mask4 := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_UC_MASK_4);
|

|Fptr.readUniversalCountersSettings();

layer1 = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_UC_LAYER_1);
flags1 = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_UC_FLAGS_1);
mask1 = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_UC_MASK_1);

layer2 = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_UC_LAYER_2);
flags2 = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_UC_FLAGS_2);
mask2 = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_UC_MASK_2);

layer3 = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_UC_LAYER_3);
flags3 = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_UC_FLAGS_3);
mask3 = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_UC_MASK_3);

layer4 = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_UC_LAYER_4);
flags4 = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_UC_FLAGS_4);
mask4 = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_UC_MASK_4);
|

Запись настроек

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_UC_LAYER_1, LIBFPTR_UCL_RECEIPT_TYPE);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_UC_FLAGS_1, LIBFPTR_UCF_CALC_SUMS | LIBFPTR_UCF_CALC_QUANTITIES);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_UC_MASK_1, 0x0000000F);

libfptr_set_param_int(fptr, LIBFPTR_PARAM_UC_LAYER_2, LIBFPTR_UCL_TAXATION_TYPE);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_UC_FLAGS_2, LIBFPTR_UCF_CALC_SUMS | LIBFPTR_UCF_CALC_SUMS_OTHERS);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_UC_MASK_2, 0x00000001);

libfptr_set_param_int(fptr, LIBFPTR_PARAM_UC_LAYER_3, LIBFPTR_UCL_UNUSED);

libfptr_set_param_int(fptr, LIBFPTR_PARAM_UC_LAYER_4, LIBFPTR_UCL_UNUSED);

libfptr_write_universal_counters_settings(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_UC_LAYER_1, LIBFPTR_UCL_RECEIPT_TYPE);
fptr.setParam(LIBFPTR_PARAM_UC_FLAGS_1, LIBFPTR_UCF_CALC_SUMS | LIBFPTR_UCF_CALC_QUANTITIES);
fptr.setParam(LIBFPTR_PARAM_UC_MASK_1, 0x0000000F);

fptr.setParam(LIBFPTR_PARAM_UC_LAYER_2, LIBFPTR_UCL_TAXATION_TYPE);
fptr.setParam(LIBFPTR_PARAM_UC_FLAGS_2, LIBFPTR_UCF_CALC_SUMS | LIBFPTR_UCF_CALC_SUMS_OTHERS);
fptr.setParam(LIBFPTR_PARAM_UC_MASK_2, 0x0000000F);

fptr.setParam(LIBFPTR_PARAM_UC_LAYER_3, LIBFPTR_UCL_UNUSED);

fptr.setParam(LIBFPTR_PARAM_UC_LAYER_4, LIBFPTR_UCL_UNUSED);

fptr.writeUniversalCountersSettings();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_1, IFptr.LIBFPTR_UCL_RECEIPT_TYPE)
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_FLAGS_1, IFptr.LIBFPTR_UCF_CALC_SUMS | IFptr.LIBFPTR_UCF_CALC_QUANTITIES)
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_MASK_1, 0x0000000F)

fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_2, IFptr.LIBFPTR_UCL_TAXATION_TYPE)
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_FLAGS_2, IFptr.LIBFPTR_UCF_CALC_SUMS | IFptr.LIBFPTR_UCF_CALC_SUMS_OTHERS)
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_MASK_2, 0x0000000F)

fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_3, IFptr.LIBFPTR_UCL_UNUSED)

fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_4, IFptr.LIBFPTR_UCL_UNUSED)

fptr.writeUniversalCountersSettings()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_1, IFptr.LIBFPTR_UCL_RECEIPT_TYPE);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_FLAGS_1, IFptr.LIBFPTR_UCF_CALC_SUMS | IFptr.LIBFPTR_UCF_CALC_QUANTITIES);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_MASK_1, 0x0000000F);

fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_2, IFptr.LIBFPTR_UCL_TAXATION_TYPE);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_FLAGS_2, IFptr.LIBFPTR_UCF_CALC_SUMS | IFptr.LIBFPTR_UCF_CALC_SUMS_OTHERS);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_MASK_2, 0x0000000F);

fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_3, IFptr.LIBFPTR_UCL_UNUSED);

fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_4, IFptr.LIBFPTR_UCL_UNUSED);

fptr.writeUniversalCountersSettings();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_1, IFptr.LIBFPTR_UCL_RECEIPT_TYPE);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_FLAGS_1, IFptr.LIBFPTR_UCF_CALC_SUMS | IFptr.LIBFPTR_UCF_CALC_QUANTITIES);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_MASK_1, 0x0000000F);

fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_2, IFptr.LIBFPTR_UCL_TAXATION_TYPE);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_FLAGS_2, IFptr.LIBFPTR_UCF_CALC_SUMS | IFptr.LIBFPTR_UCF_CALC_SUMS_OTHERS);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_MASK_2, 0x0000000F);

fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_3, IFptr.LIBFPTR_UCL_UNUSED);

fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_4, IFptr.LIBFPTR_UCL_UNUSED);

fptr.writeUniversalCountersSettings();
|

|[fptr setParam:LIBFPTR_PARAM_UC_LAYER_1 intParam:LIBFPTR_UCL_RECEIPT_TYPE];
[fptr setParam:LIBFPTR_PARAM_UC_FLAGS_1 intParam:LIBFPTR_UCF_CALC_SUMS | LIBFPTR_UCF_CALC_QUANTITIES];
[fptr setParam:LIBFPTR_PARAM_UC_MASK_1 intParam:0x0000000F];

[fptr setParam:LIBFPTR_PARAM_UC_LAYER_2 intParam:LIBFPTR_UCL_TAXATION_TYPE];
[fptr setParam:LIBFPTR_PARAM_UC_FLAGS_2 intParam:LIBFPTR_UCF_CALC_SUMS | LIBFPTR_UCF_CALC_SUMS_OTHERS];
[fptr setParam:LIBFPTR_PARAM_UC_MASK_2 intParam:0x0000000F];

[fptr setParam:LIBFPTR_PARAM_UC_LAYER_3 intParam:LIBFPTR_UCL_TAXATION_TYPE];

[fptr setParam:LIBFPTR_PARAM_UC_LAYER_4 intParam:LIBFPTR_UCL_TAXATION_TYPE];

[fptr writeUniversalCountersSettings]
|

|fptr.setParam(Constants.LIBFPTR_PARAM_UC_LAYER_1, Constants.LIBFPTR_UCL_RECEIPT_TYPE);
fptr.setParam(Constants.LIBFPTR_PARAM_UC_FLAGS_1, Constants.LIBFPTR_UCF_CALC_SUMS | Constants.LIBFPTR_UCF_CALC_QUANTITIES);
fptr.setParam(Constants.LIBFPTR_PARAM_UC_MASK_1, 0x0000000F);

fptr.setParam(Constants.LIBFPTR_PARAM_UC_LAYER_2, Constants.LIBFPTR_UCL_TAXATION_TYPE);
fptr.setParam(Constants.LIBFPTR_PARAM_UC_FLAGS_2, Constants.LIBFPTR_UCF_CALC_SUMS | Constants.LIBFPTR_UCF_CALC_SUMS_OTHERS);
fptr.setParam(Constants.LIBFPTR_PARAM_UC_MASK_2, 0x0000000F);

fptr.setParam(Constants.LIBFPTR_PARAM_UC_LAYER_3, Constants.LIBFPTR_UCL_UNUSED);

fptr.setParam(Constants.LIBFPTR_PARAM_UC_LAYER_4, Constants.LIBFPTR_UCL_UNUSED);

fptr.writeUniversalCountersSettings();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_UC_LAYER_1, fptr.LIBFPTR_UCL_RECEIPT_TYPE);
fptr.setParam(fptr.LIBFPTR_PARAM_UC_FLAGS_1, fptr.LIBFPTR_UCF_CALC_SUMS | fptr.LIBFPTR_UCF_CALC_QUANTITIES);
fptr.setParam(fptr.LIBFPTR_PARAM_UC_MASK_1, $0000000F);

fptr.setParam(fptr.LIBFPTR_PARAM_UC_LAYER_2, fptr.LIBFPTR_UCL_TAXATION_TYPE);
fptr.setParam(fptr.LIBFPTR_PARAM_UC_FLAGS_2, fptr.LIBFPTR_UCF_CALC_SUMS | fptr.LIBFPTR_UCF_CALC_SUMS_OTHERS);
fptr.setParam(fptr.LIBFPTR_PARAM_UC_MASK_2, $0000000F);

fptr.setParam(fptr.LIBFPTR_PARAM_UC_LAYER_3, fptr.LIBFPTR_UCL_UNUSED);

fptr.setParam(fptr.LIBFPTR_PARAM_UC_LAYER_4, fptr.LIBFPTR_UCL_UNUSED);

fptr.writeUniversalCountersSettings;

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_UC_LAYER_1, fptr10.LIBFPTR_UCL_RECEIPT_TYPE);
fptr.SetParam(fptr10.LIBFPTR_PARAM_UC_FLAGS_1, fptr10.LIBFPTR_UCF_CALC_SUMS | fptr10.LIBFPTR_UCF_CALC_QUANTITIES);
fptr.SetParam(fptr10.LIBFPTR_PARAM_UC_MASK_1, 0x0000000F);

fptr.SetParam(fptr10.LIBFPTR_PARAM_UC_LAYER_2, fptr10.LIBFPTR_UCL_TAXATION_TYPE);
fptr.SetParam(fptr10.LIBFPTR_PARAM_UC_FLAGS_2, fptr10.LIBFPTR_UCF_CALC_SUMS | fptr10.LIBFPTR_UCF_CALC_SUMS_OTHERS);
fptr.SetParam(fptr10.LIBFPTR_PARAM_UC_MASK_2, 0x0000000F);

fptr.SetParam(fptr10.LIBFPTR_PARAM_UC_LAYER_3, fptr10.LIBFPTR_UCL_UNUSED);

fptr.SetParam(fptr10.LIBFPTR_PARAM_UC_LAYER_4, fptr10.LIBFPTR_UCL_UNUSED);

fptr.WriteUniversalCountersSettings();
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_UC_LAYER_1, Fptr.LIBFPTR_UCL_RECEIPT_TYPE);
Fptr.setParam(Fptr.LIBFPTR_PARAM_UC_FLAGS_1, Fptr.LIBFPTR_UCF_CALC_SUMS | Fptr.LIBFPTR_UCF_CALC_QUANTITIES);
Fptr.setParam(Fptr.LIBFPTR_PARAM_UC_MASK_1, 0x0000000F);

Fptr.setParam(Fptr.LIBFPTR_PARAM_UC_LAYER_2, Fptr.LIBFPTR_UCL_TAXATION_TYPE);
Fptr.setParam(Fptr.LIBFPTR_PARAM_UC_FLAGS_2, Fptr.LIBFPTR_UCF_CALC_SUMS | Fptr.LIBFPTR_UCF_CALC_SUMS_OTHERS);
Fptr.setParam(Fptr.LIBFPTR_PARAM_UC_MASK_2, 0x0000000F);

Fptr.setParam(Fptr.LIBFPTR_PARAM_UC_LAYER_3, Fptr.LIBFPTR_UCL_UNUSED);

Fptr.setParam(Fptr.LIBFPTR_PARAM_UC_LAYER_4, Fptr.LIBFPTR_UCL_UNUSED);

Fptr.writeUniversalCountersSettings();
|

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

Для записи настроек счетчиков в ККТ нужно вызвать метод / writeUniversalCountersSettings()/ и передать ему следующий набор
параметров ( — число от 1 до 4):

Параметр Описание Тип
LIBFPTR_PARAM_UC_LAYER_ Тип разреза int
LIBFPTR_PARAM_UC_FLAGS_ Флаги int
LIBFPTR_PARAM_UC_MASK_ Маска значений int или bytearray

Аналогичный набор параметров является выходным для метода чтения
настроек /readUniversalCountersSettings()/.

Допустимые значения для типа разреза:

  • LIBFPTR_UCL_UNUSED — не используется. В этом случае остальные
    параметры разреза можно не передавать;
  • LIBFPTR_UCL_RECEIPT_TYPE — тип чека;
  • LIBFPTR_UCL_TAXATION_TYPE — система налогообложения;
  • LIBFPTR_UCL_TAX_TYPE — ставка НДС;
  • LIBFPTR_UCL_PRODUCT_TYPE — признак предмета расчета;
  • LIBFPTR_UCL_PAYMENT_METHOD — признак способа расчета.

Доступные значения в маске для каждого из разрезов:

*

тип чека *LIBFPTR_UCL_RECEIPT_TYPE*:

  o *LIBFPTR_RT_SELL* - чек прихода (продажи) (бит 0 в маске);
  o *LIBFPTR_RT_SELL_RETURN* - чек возврата прихода (продажи) (бит 1
    в маске);
  o *LIBFPTR_RT_BUY* - чек расхода (покупки) (бит 2 в маске);
  o *LIBFPTR_RT_BUY_RETURN* - чек возврата расхода (покупки) (бит 3
    в маске);
  o *LIBFPTR_RT_SELL_CORRECTION* - чек коррекции прихода (бит 4 в
    маске);
  o *LIBFPTR_RT_SELL_RETURN_CORRECTION* - чек коррекции возврата
    прихода (бит 5 в маске);
  o *LIBFPTR_RT_BUY_CORRECTION* - чек коррекции расхода (бит 6 в маске);
  o *LIBFPTR_RT_BUY_RETURN_CORRECTION* - чек коррекции возврата
    расхода (бит 7 в маске).

*

система налогообложения *LIBFPTR_UCL_TAXATION_TYPE*:

  o *LIBFPTR_TT_OSN* - общая (бит 0 в маске);
  o *LIBFPTR_TT_USN_INCOME* - упрощенная доход (бит 1 в маске);
  o *LIBFPTR_TT_USN_INCOME_OUTCOME* - упрощенная доход минус расход
    (бит 2 в маске);
  o *LIBFPTR_TT_ESN* - единый сельскохозяйственный налог (бит 4 в
    маске);
  o *LIBFPTR_TT_PATENT* - патентная система налогообложения (бит 5 в
    маске).

*

ставка НДС *LIBFPTR_UCL_TAX_TYPE*:

  o *LIBFPTR_TAX_VAT20* - НДС 20% (бит 0 в маске);
  o *LIBFPTR_TAX_VAT10* - НДС 10% (бит 1 в маске);
  o *LIBFPTR_TAX_VAT120* - НДС расчитанный 20/120 (бит 2 в маске);
  o *LIBFPTR_TAX_VAT110* - НДС расчитанный 10/110 (бит 3 в маске);
  o *LIBFPTR_TAX_VAT0* - НДС 0% (бит 4 в маске);
  o *LIBFPTR_TAX_NO* - не облагается (бит 5 в маске).

*

признак предмета расчета *LIBFPTR_UCL_PRODUCT_TYPE*:

  o значения от 1 до 32 (максимум возможно задать 32 бита в маске
    значений)

*

признак способа расчета *LIBFPTR_UCL_PAYMENT_METHOD*:

  o значения от 1 до 32 (максимум возможно задать 32 бита в маске
    значений)

*

пользовательский параметр 3 *LIBFPTR_UCL_USER_3*:

  o значения от 1 до 32 (максимум возможно задать 32 бита в маске
    значений)

*

пользовательский параметр 4 *LIBFPTR_UCL_USER_4*:

  o значения от 1 до 32 (максимум возможно задать 32 бита в маске
    значений)

*

пользовательский параметр 5 *LIBFPTR_UCL_USER_5*:

  o значения от 1 до 32 (максимум возможно задать 32 бита в маске
    значений)

*

пользовательский параметр 6 *LIBFPTR_UCL_USER_6*:

  o значения от 1 до 32 (максимум возможно задать 32 бита в маске
    значений)

Во флаги (битовая маска) можно записать комбинацию следующих значений:

  • LIBFPTR_UCF_CALC_SUMS — считать сумму по разрезу;
  • LIBFPTR_UCF_CALC_QUANTITIES — считать количество по разрезу;
  • LIBFPTR_UCF_CALC_SUMS_OTHERS — считать сумму по разрезу в случае,
    если значение в чеке не совпадает ни с одним значением в маске настроек;
  • LIBFPTR_UCF_CALC_QUANTITIES_OTHERS — считать количество по разрезу
    в случае, если значение в чеке не совпадает ни с одним значением в
    маске настроек.

Маска представляет собой 4х байтовое число либо массив из 4х байтов,
каждый бит которого отвечает за то, будет ККТ учитывать определенное
значение при формировании счетчика или нет. Каждый бит — порядковый
номер значения (номера указаны выше)

При записи настроек, отличных от текущих, будет произведен сброс счетчиков.

Поддерживается только для ККТ версий 5.X

Сброс счетчиков

Сброс счетчиков

|libfptr_reset_universal_counters(fptr);
|

|fptr.resetUniversalCounters();
|

|fptr.resetUniversalCounters()
|

|fptr.resetUniversalCounters();
|

|fptr.resetUniversalCounters();
|

|[fptr resetUniversalCounters]
|

|fptr.resetUniversalCounters();
|

|begin
fptr.resetUniversalCounters;
end;
|

|fptr.ResetUniversalCounters();
|

|Fptr.resetUniversalCounters();
|

Для сброса счетчиков необходимо вызвать метод /resetUniversalCounters()/.

Поддерживается только для ККТ версий 5.X

Запрос состояния массива счетчиков

Запрос состояния массива счетчиков

|libfptr_query_universal_counters_state(fptr);

uint version = libfptr_get_param_int(fptr, LIBFPTR_PARAM_UC_VERSION);
uint availableMemorySize = libfptr_get_param_int(fptr, LIBFPTR_PARAM_UC_AVAILABLE_MEMORY);
uint sumsMemorySize = libfptr_get_param_int(fptr, LIBFPTR_PARAM_UC_USED_MEMORY_BY_SUMS);
uint quantitiesMemorySize = libfptr_get_param_int(fptr, LIBFPTR_PARAM_UC_USED_MEMORY_BY_QUANTITIES);
|

|fptr.queryUniversalCountersState();

uint version = fptr.getParamInt(LIBFPTR_PARAM_UC_VERSION);
uint availableMemorySize = fptr.getParamInt(LIBFPTR_PARAM_UC_AVAILABLE_MEMORY);
uint sumsMemorySize = fptr.getParamInt(LIBFPTR_PARAM_UC_USED_MEMORY_BY_SUMS);
uint quantitiesMemorySize = fptr.getParamInt(LIBFPTR_PARAM_UC_USED_MEMORY_BY_QUANTITIES);
|

|fptr.queryUniversalCountersState()

version = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_VERSION)
availableMemorySize = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_AVAILABLE_MEMORY)
sumsMemorySize = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_USED_MEMORY_BY_SUMS)
quantitiesMemorySize = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_USED_MEMORY_BY_QUANTITIES)
|

|fptr.queryUniversalCountersState();

long version = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_VERSION);
long availableMemorySize = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_AVAILABLE_MEMORY);
long sumsMemorySize = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_USED_MEMORY_BY_SUMS);
long quantitiesMemorySize = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_USED_MEMORY_BY_QUANTITIES);
|

|fptr.queryUniversalCountersState();

long version = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_VERSION);
long availableMemorySize = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_AVAILABLE_MEMORY);
long sumsMemorySize = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_USED_MEMORY_BY_SUMS);
long quantitiesMemorySize = fptr.getParamInt(IFptr.LIBFPTR_PARAM_UC_USED_MEMORY_BY_QUANTITIES);
|

|[fptr queryUniversalCountersState];

uint version = [fptr getParamInt:LIBFPTR_PARAM_UC_VERSION];
uint availableMemorySize = [fptr getParamInt:LIBFPTR_PARAM_UC_AVAILABLE_MEMORY];
uint sumsMemorySize = [fptr getParamInt:LIBFPTR_PARAM_UC_USED_MEMORY_BY_SUMS];
uint quantitiesMemorySize = [fptr getParamInt:LIBFPTR_PARAM_UC_USED_MEMORY_BY_QUANTITIES];
|

|fptr.queryUniversalCountersState();

uint version = fptr.getParamInt(Constants.LIBFPTR_PARAM_UC_VERSION);
uint availableMemorySize = fptr.getParamInt(Constants.LIBFPTR_PARAM_UC_AVAILABLE_MEMORY);
uint sumsMemorySize = fptr.getParamInt(Constants.LIBFPTR_PARAM_UC_USED_MEMORY_BY_SUMS);
uint quantitiesMemorySize = fptr.getParamInt(Constants.LIBFPTR_PARAM_UC_USED_MEMORY_BY_QUANTITIES);
|

|var
version, availableMemorySize, sumsMemorySize, quantitiesMemorySize: Longint;
begin
fptr.queryUniversalCountersState;

version := fptr.getParamInt(fptr.LIBFPTR_PARAM_UC_VERSION);
availableMemorySize := fptr.getParamInt(fptr.LIBFPTR_PARAM_UC_AVAILABLE_MEMORY);
sumsMemorySize := fptr.getParamInt(fptr.LIBFPTR_PARAM_UC_USED_MEMORY_BY_SUMS);
quantitiesMemorySize := fptr.getParamInt(fptr.LIBFPTR_PARAM_UC_USED_MEMORY_BY_QUANTITIES);

end;
|

|fptr.QueryUniversalCountersState()

version := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_UC_VERSION);
availableMemorySize := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_UC_AVAILABLE_MEMORY);
sumsMemorySize := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_UC_USED_MEMORY_BY_SUMS);
quantitiesMemorySize := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_UC_USED_MEMORY_BY_QUANTITIES);
|

|Fptr.queryUniversalCountersState();

version = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_UC_VERSION);
availableMemorySize = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_UC_AVAILABLE_MEMORY);
sumsMemorySize = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_UC_USED_MEMORY_BY_SUMS);
quantitiesMemorySize = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_UC_USED_MEMORY_BY_QUANTITIES);
|

Для запроса состояния массива счетчиков необходимо вызвать метод / queryUniversalCountersState()/.

Результатом этого метода будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_UC_VERSION Версия счетчиков int
LIBFPTR_PARAM_UC_AVAILABLE_MEMORY Размер доступной для счетчиков
памяти, в байтах int
LIBFPTR_PARAM_UC_USED_MEMORY_BY_SUMS Размер памяти, использованной
под суммовые счетчики, в байтах int
LIBFPTR_PARAM_UC_USED_MEMORY_BY_QUANTITIES Размер памяти,
использованной под количественные счетчики, в байтах int

Поддерживается только для ККТ версий 5.X

Чтение значения счетчика

Чтение значений счетчиков

|libfptr_cache_universal_counters(fptr);

libfptr_set_param_int(fptr, LIBFPTR_PARAM_UC_LAYER_VALUE_1, LIBFPTR_RT_SELL);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_UC_LAYER_VALUE_2, LIBFPTR_TT_OSN);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
libfptr_read_universal_counter_sum(fptr);
double sum1 = libfptr_get_param_double(fptr, LIBFPTR_PARAM_SUM);

libfptr_set_param_int(fptr, LIBFPTR_PARAM_UC_LAYER_VALUE_1, LIBFPTR_RT_SELL);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_UC_LAYER_VALUE_2, LIBFPTR_UC_OTHERS);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
libfptr_read_universal_counter_sum(fptr);
double sum2 = libfptr_get_param_double(fptr, LIBFPTR_PARAM_SUM);

libfptr_set_param_int(fptr, LIBFPTR_PARAM_UC_LAYER_VALUE_1, LIBFPTR_RT_SELL);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_UC_LAYER_VALUE_2, 0);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
libfptr_read_universal_counter_quantity(fptr);
int quantity1 = libfptr_get_param_int(fptr, LIBFPTR_PARAM_COUNT);

libfptr_clear_universal_counters_cache(fptr);
|

|fptr.cacheUniversalCounters()

fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_1, LIBFPTR_RT_SELL);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_2, LIBFPTR_TT_OSN);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
fptr.readUniversalCounterSum();
double sum1 = fptr.getParamDouble(LIBFPTR_PARAM_SUM);

fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_1, LIBFPTR_RT_SELL);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_2, LIBFPTR_UC_OTHERS);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
fptr.readUniversalCounterSum();
double sum2 = fptr.getParamDouble(LIBFPTR_PARAM_SUM);

fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_1, LIBFPTR_RT_SELL);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_2, 0);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
fptr.readUniversalCounterQuantity();
uint quantity1 = fptr.getParamInt(LIBFPTR_PARAM_COUNT);

fptr.clearUniversalCountersCache();
|

|fptr.cacheUniversalCounters()

fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_1, IFptr.LIBFPTR_RT_SELL)
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_2, IFptr.LIBFPTR_TT_OSN)
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0)
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0)
fptr.readUniversalCounterSum()
sum1 = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM)

fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_1, IFptr.LIBFPTR_RT_SELL)
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_2, IFptr.LIBFPTR_UC_OTHERS)
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0)
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0)
fptr.readUniversalCounterSum()
sum2 = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM)

fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_1, IFptr.LIBFPTR_RT_SELL)
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_2, 0)
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0)
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0)
fptr.readUniversalCounterQuantity()
quantity1 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT)

fptr.clearUniversalCountersCache()
|

|fptr.cacheUniversalCounters();

fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_1, IFptr.LIBFPTR_RT_SELL);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_2, IFptr.LIBFPTR_TT_OSN);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
fptr.readUniversalCounterSum();
double sum1 = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);

fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_1, IFptr.LIBFPTR_RT_SELL);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_2, IFptr.LIBFPTR_UC_OTHERS);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
fptr.readUniversalCounterSum();
double sum2 = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);

fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_1, IFptr.LIBFPTR_RT_SELL);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_2, 0);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
fptr.readUniversalCounterQuantity();
long quantity1 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);

fptr.clearUniversalCountersCache();
|

|fptr.cacheUniversalCounters();

fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_1, IFptr.LIBFPTR_RT_SELL);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_2, IFptr.LIBFPTR_TT_OSN);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
fptr.readUniversalCounterSum();
double sum1 = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);

fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_1, IFptr.LIBFPTR_RT_SELL);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_2, IFptr.LIBFPTR_UC_OTHERS);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
fptr.readUniversalCounterSum();
double sum2 = fptr.getParamDouble(IFptr.LIBFPTR_PARAM_SUM);

fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_1, IFptr.LIBFPTR_RT_SELL);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_2, 0);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
fptr.setParam(IFptr.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
fptr.readUniversalCounterQuantity();
long quantity1 = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);

fptr.clearUniversalCountersCache();
|

|[fptr cacheUniversalCounters];

[fptr setParam:LIBFPTR_PARAM_UC_LAYER_VALUE_1 intParam:LIBFPTR_RT_SELL];
[fptr setParam:LIBFPTR_PARAM_UC_LAYER_VALUE_2 intParam:LIBFPTR_TT_OSN];
[fptr setParam:LIBFPTR_PARAM_UC_LAYER_VALUE_3 intParam:0];
[fptr setParam:LIBFPTR_PARAM_UC_LAYER_VALUE_4 intParam:0];
[fptr readUniversalCounterSum];
double sum1 = [fptr getParamDouble:LIBFPTR_PARAM_SUM];

[fptr setParam:LIBFPTR_PARAM_UC_LAYER_VALUE_1 intParam:LIBFPTR_RT_SELL];
[fptr setParam:LIBFPTR_PARAM_UC_LAYER_VALUE_2 intParam:LIBFPTR_UC_OTHERS];
[fptr setParam:LIBFPTR_PARAM_UC_LAYER_VALUE_3 intParam:0];
[fptr setParam:LIBFPTR_PARAM_UC_LAYER_VALUE_4 intParam:0];
[fptr readUniversalCounterSum];
[fptr readUniversalCounterSum];
double sum2 = [fptr getParamDouble:LIBFPTR_PARAM_SUM];

[fptr setParam:LIBFPTR_PARAM_UC_LAYER_VALUE_1 intParam:LIBFPTR_RT_SELL];
[fptr setParam:LIBFPTR_PARAM_UC_LAYER_VALUE_2 intParam:0];
[fptr setParam:LIBFPTR_PARAM_UC_LAYER_VALUE_3 intParam:0];
[fptr setParam:LIBFPTR_PARAM_UC_LAYER_VALUE_4 intParam:0];
[fptr readUniversalCounterQuantity];
uint quantity1 = [fptr getParamInt:LIBFPTR_PARAM_COUNT];

[fptr clearUniversalCountersCache];
|

|fptr.cacheUniversalCounters();

fptr.setParam(Constants.LIBFPTR_PARAM_UC_LAYER_VALUE_1, Constants.LIBFPTR_RT_SELL);
fptr.setParam(Constants.LIBFPTR_PARAM_UC_LAYER_VALUE_2, Constants.LIBFPTR_TT_OSN);
fptr.setParam(Constants.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
fptr.setParam(Constants.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
fptr.readUniversalCounterSum();
double sum1 = fptr.getParamDouble(Constants.LIBFPTR_PARAM_SUM);

fptr.setParam(Constants.LIBFPTR_PARAM_UC_LAYER_VALUE_1, Constants.LIBFPTR_RT_SELL);
fptr.setParam(Constants.LIBFPTR_PARAM_UC_LAYER_VALUE_2, Constants.LIBFPTR_UC_OTHERS);
fptr.setParam(Constants.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
fptr.setParam(Constants.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
fptr.readUniversalCounterSum();
double sum2 = fptr.getParamDouble(Constants.LIBFPTR_PARAM_SUM);

fptr.setParam(Constants.LIBFPTR_PARAM_UC_LAYER_VALUE_1, Constants.LIBFPTR_RT_SELL);
fptr.setParam(Constants.LIBFPTR_PARAM_UC_LAYER_VALUE_2, 0);
fptr.setParam(Constants.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
fptr.setParam(Constants.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
fptr.readUniversalCounterQuantity();
uint quantity1 = fptr.getParamInt(Constants.LIBFPTR_PARAM_COUNT);

fptr.clearUniversalCountersCache();
|

|var
sum1, sum2: Double;
quantity1: Longint;
begin
fptr.cacheUniversalCounters;

fptr.setParam(fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_1, fptr.LIBFPTR_RT_SELL);
fptr.setParam(fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_2, fptr.LIBFPTR_TT_OSN);
fptr.setParam(fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
fptr.setParam(fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
fptr.readUniversalCounterSum;
sum1 := fptr.getParamDouble(fptr.LIBFPTR_PARAM_SUM);

fptr.setParam(fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_1, fptr.LIBFPTR_RT_SELL);
fptr.setParam(fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_2, fptr.LIBFPTR_UC_OTHERS);
fptr.setParam(fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
fptr.setParam(fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
fptr.readUniversalCounterSum;
sum2 := fptr.getParamDouble(fptr.LIBFPTR_PARAM_SUM);

fptr.setParam(fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_1, fptr.LIBFPTR_RT_SELL);
fptr.setParam(fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_2, 0);
fptr.setParam(fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
fptr.setParam(fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
fptr.readUniversalCounterQuantity;
quantity1 := fptr.getParamInt(fptr.LIBFPTR_PARAM_COUNT);

fptr.clearUniversalCountersCache;

end;
|

|fptr.CacheUniversalCounters();

fptr.SetParam(fptr10.LIBFPTR_PARAM_UC_LAYER_VALUE_1, fptr10.LIBFPTR_RT_SELL);
fptr.SetParam(fptr10.LIBFPTR_PARAM_UC_LAYER_VALUE_2, fptr10.LIBFPTR_TT_OSN);
fptr.SetParam(fptr10.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
fptr.SetParam(fptr10.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
fptr.ReadUniversalCounterSum();
sum1 := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_SUM);

fptr.SetParam(fptr10.LIBFPTR_PARAM_UC_LAYER_VALUE_1, fptr10.LIBFPTR_RT_SELL);
fptr.SetParam(fptr10.LIBFPTR_PARAM_UC_LAYER_VALUE_2, fptr10.LIBFPTR_UC_OTHERS);
fptr.SetParam(fptr10.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
fptr.SetParam(fptr10.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
fptr.ReadUniversalCounterSum();
sum2 := fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_SUM);

fptr.SetParam(fptr10.LIBFPTR_PARAM_UC_LAYER_VALUE_1, fptr10.LIBFPTR_RT_SELL);
fptr.SetParam(fptr10.LIBFPTR_PARAM_UC_LAYER_VALUE_2, 0);
fptr.SetParam(fptr10.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
fptr.SetParam(fptr10.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
fptr.ReadUniversalCounterQuantity();
quantity1 := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_COUNT);

fptr.ClearUniversalCountersCache();
|

|Fptr.cacheUniversalCounters();

Fptr.setParam(Fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_1, Fptr.LIBFPTR_RT_SELL);
Fptr.setParam(Fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_2, Fptr.LIBFPTR_TT_OSN);
Fptr.setParam(Fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
Fptr.setParam(Fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
Fptr.readUniversalCounterSum();
sum1 = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_SUM);

Fptr.setParam(Fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_1, Fptr.LIBFPTR_RT_SELL);
Fptr.setParam(Fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_2, Fptr.LIBFPTR_UC_OTHERS);
Fptr.setParam(Fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
Fptr.setParam(Fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
Fptr.readUniversalCounterSum();
sum2 = Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_SUM);

Fptr.setParam(Fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_1, Fptr.LIBFPTR_RT_SELL);
Fptr.setParam(Fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_2, 0);
Fptr.setParam(Fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_3, 0);
Fptr.setParam(Fptr.LIBFPTR_PARAM_UC_LAYER_VALUE_4, 0);
Fptr.readUniversalCounterQuantity();
quantity1 = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_COUNT);

Fptr.clearUniversalCountersCache();
|

Для чтения значения суммового счетчика необходимо вызвать метод / readUniversalCounterSum()/ и передать ему до четырех значений в
соответствующих разрезах в параметрах LIBFPTR_PARAM_UC_LAYER_VALUE_
(1 <= <= 4). Значение счетчика записывается в параметр
LIBFPTR_PARAM_SUM как число с 6-ю знаками после запятой.

Для чтения значения количественного счетчика необходимо вызвать метод / readUniversalCounterQuantity()/ и передать ему до четырех значений в
соответствующих разрезах в параметрах LIBFPTR_PARAM_UC_LAYER_VALUE_
(1 <= <= 4). Значение счетчика записывается в параметр
LIBFPTR_PARAM_COUNT.

Чтобы прочитать счетчик по значению «прочие» (формируется, если в
настроках установлены флаги LIBFPTR_UCF_CALC_SUMS_OTHERS или
LIBFPTR_UCF_CALC_QUANTITIES_OTHERS), нужно в качестве значения
передать LIBFPTR_UC_OTHERS. Если в рамках разреза не формируются
суммовые или количественные счетчики, нужно вместо его значения передать 0.

Для оптимизации многократного чтения счетчиков рекомендуется перед
вызовами /readUniversalCounterSum()/ и / readUniversalCounterQuantity()/ вызвать метод / cacheUniversalCounters()/, который закеширует значения всех счетчиков в
памяти драйвера, что позволил не обращаться к ККТ каждый раз при чтении
значения счетчика. Кеш хранится до тех пор, пока не будет вызван метод
/clearUniversalCountersCache()/ или объект драйвера не будет разрушен.

Поддерживается только для ККТ версий 5.X

Передача пользовательских разрезов

Передача пользовательских разрезов

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_COMMODITY_NAME, L»Товар»);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_PRICE, 100);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_QUANTITY, 5.15);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT0);
libfptr_set_user_param_int(fptr, 3, 21);
libfptr_registration(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_COMMODITY_NAME, L»Товар»);
fptr.setParam(LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT0);
fptr.setUserParam(3, 21);
fptr.registration();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»)
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 100)
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5.15)
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT0)
fptr.setUserParam(3, 21)
fptr.registration()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT0);
fptr.setUserParam(3, 21);
fptr.registration();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT0);
fptr.setUserParam(3, 21);
fptr.registration();
|

|[fptr setParam:LIBFPTR_PARAM_COMMODITY_NAME NSStringParam:@»Товар»];
[fptr setParam:LIBFPTR_PARAM_PRICE doubleParam:100];
[fptr setParam:LIBFPTR_PARAM_QUANTITY doubleParam:5.15];
[fptr setParam:LIBFPTR_PARAM_TAX_TYPE intParam:LIBFPTR_TAX_VAT0];
[fptr setUserParam:3 intParam:21];
[fptr registration]
|

|fptr.setParam(Constants.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
fptr.setParam(Constants.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(Constants.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(Constants.LIBFPTR_PARAM_TAX_TYPE, Constants.LIBFPTR_TAX_VAT10);
fptr.setUserParam(3, 21);
fptr.registration();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_COMMODITY_NAME, ‘Товар’);
fptr.setParam(fptr.LIBFPTR_PARAM_PRICE, 100);
fptr.setParam(fptr.LIBFPTR_PARAM_QUANTITY, 5.15);
fptr.setParam(fptr.LIBFPTR_PARAM_TAX_TYPE, fptr.LIBFPTR_TAX_VAT0);
fptr.setUserParam(3, 21);
fptr.registration;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_PRICE, 100)
fptr.SetParam(fptr10.LIBFPTR_PARAM_QUANTITY, 5.15)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TAX_TYPE, fptr10.LIBFPTR_TAX_VAT0)
fptr.SetUserParam(3, 21);
fptr.Registration()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_COMMODITY_NAME, «Товар»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_PRICE, 100);
Fptr.setParam(Fptr.LIBFPTR_PARAM_QUANTITY, 5.15);
Fptr.setParam(Fptr.LIBFPTR_PARAM_TAX_TYPE, Fptr.LIBFPTR_TAX_VAT10);
Fptr.setUserParam(3, 21);
Fptr.registration();
|

Чтобы привязать позицию чека к одному из пользовательских разрезов
(LIBFPTR_UCL_USER_3LIBFPTR_UCL_USER_6), необходимо в позиции
передать пользовательский реквизит с соответствующими номером и
значением. Т.е. для пользовательского разреза №3 LIBFPTR_UCL_USER_3
нужно передать пользовательский реквизит №3 с необходимым значением
(например, 21). В случае JSON-заданий можно использовать поля позиции
userParam3userParam6.

Поддерживается только для ККТ версий 5.X

Служебные операции

Выключение ККТ

Выключение ККТ

|libfptr_device_poweroff(fptr);
|

|fptr.devicePoweroff();
|

|fptr.devicePoweroff()
|

|fptr.devicePoweroff();
|

|fptr.devicePoweroff();
|

|[fptr devicePoweroff];
|

|fptr.devicePoweroff();
|

|begin
fptr.devicePoweroff;
end;
|

|fptr.DevicePoweroff()
|

|Fptr.devicePoweroff();
|

Для выключения ККТ необходимо вызвать метод /devicePoweroff()/.

Поддерживается для всех ККТ

Перезагрузка ККТ

Перезагрузка ККТ

|libfptr_set_param_bool(fptr, LIBFPTR_PARAM_PRINT_REPORT, false);
libfptr_device_reboot(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_PRINT_REPORT, false);
fptr.deviceReboot();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PRINT_REPORT, False)
fptr.deviceReboot()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PRINT_REPORT, false);
fptr.deviceReboot();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PRINT_REPORT, false);
fptr.deviceReboot();
|

|[fptr setParam:LIBFPTR_PARAM_PRINT_REPORT boolParam:false];
[fptr deviceReboot];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_PRINT_REPORT, false);
fptr.deviceReboot();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_PRINT_REPORT, False);
fptr.deviceReboot;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_PRINT_REPORT, false)
fptr.DeviceReboot()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_PRINT_REPORT, false);
Fptr.deviceReboot();
|

Для перезагрузки ККТ необходимо вызвать метод /deviceReboot()/. ККТ
версий 5.X позволяют передать признак печати отчета авто-тестирования в
параметре LIBFPTR_PARAM_PRINT_REPORT.

Поддерживается для всех ККТ

Общее гашение

Общее гашение

|libfptr_reset_summary(fptr);
|

|fptr.resetSummary();
|

|fptr.resetSummary()
|

|fptr.resetSummary();
|

|fptr.resetSummary();
|

|[fptr resetSummary];
|

|fptr.resetSummary();
|

|begin
fptr.resetSummary;
end;
|

|fptr.ResetSummary()
|

|Fptr.resetSummary();
|

Для выполнения общего гашения необходимо вызвать метод /resetSummary()/.

Подробности использования общего гашения находятся в руководстве на ККТ.

Поддерживается только для ККТ версий 3.X

Начальная инициализация ККТ

Начальная инициализация ККТ

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_SERIAL_NUMBER, L»0010840000011″);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_MAC_ADDRESS, L»11:22:33:44:55:66″);
libfptr_set_param_datetime(fptr, LIBFPTR_PARAM_DATE_TIME, 2018, 3, 18, 12, 30, 00);
libfptr_init_device(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_SERIAL_NUMBER, L»0010840000011″);
fptr.setParam(LIBFPTR_PARAM_MAC_ADDRESS, L»11:22:33:44:55:66″);
fptr.setParam(LIBFPTR_PARAM_DATE_TIME, std::tm{.tm_sec = 0, .tm_min = 30, .tm_hour = 12,
.tm_mday = 18, .tm_mon = 3 — 1, .tm_year = 2018 — 1900});
fptr.initDevice()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER, «0010840000011»)
fptr.setParam(IFptr.LIBFPTR_PARAM_MAC_ADDRESS, «11:22:33:44:55:66»)
fptr.setParam(IFptr.LIBFPTR_PARAM_DATE_TIME, datetime.datetime(2018, 3, 18, 12, 30, 00))
fptr.initDevice()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER, «0010840000011»);
fptr.setParam(IFptr.LIBFPTR_PARAM_MAC_ADDRESS, «11:22:33:44:55:66»);
Calendar c = Calendar.getInstance();
c.set(2018, 3, 18, 12, 30, 00);
fptr.setParam(IFptr.LIBFPTR_PARAM_DATE_TIME, c.getTime());
fptr.initDevice();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER, «0010840000011»);
fptr.setParam(IFptr.LIBFPTR_PARAM_MAC_ADDRESS, «11:22:33:44:55:66»);
Calendar c = Calendar.getInstance();
c.set(2018, 3, 18, 12, 30, 00);
fptr.setParam(IFptr.LIBFPTR_PARAM_DATE_TIME, c.getTime());
fptr.initDevice();
|

|NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setYear:[2018 intValue]];
[components setMonth:[3 intValue]];
[components setDay:[18 intValue]];
[components setHour:[12 intValue]];
[components setMinute:[30 intValue]];
[components setSecond:[00 intValue]];

[fptr setParam:LIBFPTR_PARAM_SERIAL_NUMBER NSStringParam:@»0010840000011″];
[fptr setParam:LIBFPTR_PARAM_MAC_ADDRESS NSStringParam:@»11:22:33:44:55:66″];
[fptr setParam:LIBFPTR_PARAM_DATE_TIME NSDateParam:[calendar dateFromComponents:components]];
[fptr initDevice];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_SERIAL_NUMBER, «0010840000011»);
fptr.setParam(Constants.LIBFPTR_PARAM_MAC_ADDRESS, «11:22:33:44:55:66»);
fptr.setParam(Constants.LIBFPTR_PARAM_DATE_TIME, new DateTime(2018, 3, 18, 12, 30, 0));
fptr.initDevice();
|

|var
date: TDateTime;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_SERIAL_NUMBER, ‘0010840000011’);
fptr.setParam(fptr.LIBFPTR_PARAM_MAC_ADDRESS, ’11:22:33:44:55:66′);
date := StrToDateTime(‘18.03.2018 12:30:00’);
fptr.setParam(fptr.LIBFPTR_PARAM_DATE_TIME, date);
fptr.initDevice;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_SERIAL_NUMBER, «0010840000011»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MAC_ADDRESS, «11:22:33:44:55:66»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_DATE_TIME, time.Date(2018, 3, 18, 12, 30, 0, 0, time.Now().Location()))
fptr.InitDevice()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_SERIAL_NUMBER, «0010840000011»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_MAC_ADDRESS, «11:22:33:44:55:66»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DATE_TIME, new Date(«2018-03-18T12:30:00»));
Fptr.initDevice();
|

Для выполнения начальной инициализации необходимо вызвать метод / initDevice()/ и передать следующие параметры инициализации:

Параметр Описание Тип
LIBFPTR_PARAM_SERIAL_NUMBER Заводской номер string
LIBFPTR_PARAM_MAC_ADDRESS MAC-адрес string
LIBFPTR_PARAM_DATE_TIME Дата и время datetime
LIBFPTR_PARAM_FULL_RESET Выполнять общую очистку памяти bool

Поддерживается для всех ККТ

Технологическое обнуление

Технологическое обнуление

|libfptr_reset_settings(fptr);
|

|fptr.resetSettings();
|

|fptr.resetSettings()
|

|fptr.resetSettings();
|

|fptr.resetSettings();
|

|[fptr resetSettings];
|

|fptr.resetSettings();
|

|begin
fptr.resetSettings;
end;
|

|fptr.ResetSettings()
|

|Fptr.resetSettings();
|

Для выполнения технологического обнуления необходимо вызвать метод / resetSettings()/.

Технологическое обнуление включает в себя:

  • инициализацию системных таблиц начальными значениями;
  • общее гашение ККТ;
  • обнуление счетчика общих гашений.

Подробности использования технологического обнуления находятся в
руководстве на ККТ.

Поддерживается для всех ККТ

Установка даты и времени

Установка даты и времени

|libfptr_set_param_datetime(fptr, LIBFPTR_PARAM_DATE_TIME, 2018, 3, 18, 12, 30, 00);
libfptr_write_date_time(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_DATE_TIME, std::tm{.tm_sec = 0, .tm_min = 30, .tm_hour = 12,
.tm_mday = 18, .tm_mon = 3 — 1, .tm_year = 2018 — 1900});
fptr.writeDateTime()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATE_TIME, datetime.datetime(2018, 3, 18, 12, 30, 00))
fptr.writeDateTime()
|

|Calendar c = Calendar.getInstance();
c.set(2018, 3, 18, 12, 30, 00);
fptr.setParam(IFptr.LIBFPTR_PARAM_DATE_TIME, c.getTime());
fptr.writeDateTime();
|

|Calendar c = Calendar.getInstance();
c.set(2018, 3, 18, 12, 30, 00);
fptr.setParam(IFptr.LIBFPTR_PARAM_DATE_TIME, c.getTime());
fptr.writeDateTime();
|

|NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setYear:[2018 intValue]];
[components setMonth:[3 intValue]];
[components setDay:[18 intValue]];
[components setHour:[12 intValue]];
[components setMinute:[30 intValue]];
[components setSecond:[00 intValue]];

[fptr setParam:LIBFPTR_PARAM_DATE_TIME NSDateParam:[calendar dateFromComponents:components]];
[fptr writeDateTime];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATE_TIME, new DateTime(2018, 3, 18, 12, 30, 0));
fptr.writeDateTime();
|

|var
date: TDateTime;
begin
date := StrToDateTime(‘18.03.2018 12:30:00’);
fptr.setParam(fptr.LIBFPTR_PARAM_DATE_TIME, date);
fptr.writeDateTime;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATE_TIME, time.Date(2018, 3, 18, 12, 30, 0, 0, time.Now().Location()))
fptr.WriteDateTime()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATE_TIME, new Date(«2018-03-18T12:30:00»));
Fptr.writeDateTime();
|

Для ввода даты и времени необходимо вызвать метод /writeDateTime()/ и
передать дату и время в параметре LIBFPTR_PARAM_DATE_TIME.

Поддерживается для всех ККТ

Запись лицензии

Запись лицензии

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_LICENSE_NUMBER, 4);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_LICENSE, L»1234567890″);
libfptr_write_license(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_LICENSE_NUMBER, 4);
fptr.setParam(LIBFPTR_PARAM_LICENSE, L»1234567890″);
fptr.writeLicense();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_LICENSE_NUMBER, 4)
fptr.setParam(IFptr.LIBFPTR_PARAM_LICENSE, «1234567890»)
fptr.writeLicense()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_LICENSE_NUMBER, 4);
fptr.setParam(IFptr.LIBFPTR_PARAM_LICENSE, «1234567890»);
fptr.writeLicense();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_LICENSE_NUMBER, 4);
fptr.setParam(IFptr.LIBFPTR_PARAM_LICENSE, «1234567890»);
fptr.writeLicense();
|

|[fptr setParam:LIBFPTR_PARAM_LICENSE_NUMBER intParam:4];
[fptr setParam:LIBFPTR_PARAM_LICENSE, NSString:@»1234567890″];
[fptr writeLicense];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_LICENSE_NUMBER, 4);
fptr.setParam(Constants.LIBFPTR_PARAM_LICENSE, «1234567890»);
fptr.writeLicense();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_LICENSE_NUMBER, 4);
fptr.setParam(fptr.LIBFPTR_PARAM_LICENSE, ‘1234567890’);
fptr.writeLicense;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_LICENSE_NUMBER, 4)
fptr.SetParam(fptr10.LIBFPTR_PARAM_LICENSE, «1234567890»)
fptr.WriteLicense()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_LICENSE_NUMBER, 4);
Fptr.setParam(Fptr.LIBFPTR_PARAM_LICENSE, «1234567890»);
Fptr.writeLicense();
|

Для записи кода защиты / лицензии в ККТ необходимо вызвать метод / writeLicense()/ и передать идентификатор лицензии (код защиты) в
параметре LIBFPTR_PARAM_LICENSE и тип лицензии (номер кода защиты) в
параметре LIBFPTR_PARAM_LICENSE_NUMBER.

Поддерживается для всех ККТ

Проверка ключей ККТ

Проверка ключей ККТ

|libfptr_validate_keys(fptr);
|

|fptr.validateKeys();
|

|fptr.validateKeys()
|

|fptr.validateKeys();
|

|fptr.validateKeys();
|

|[fptr validateKeys];
|

|fptr.validateKeys();
|

|begin
fptr.validateKeys;
end;
|

|fptr.ValidateKeys()
|

|Fptr.validateKeys();
|

Для проверки ключей ККТ необходимо вызвать метод /validateKeys()/.
Если драйвер не вернул ошибки, значит ключи корректны.

Поддерживается только для ККТ версий 5.X

Прочие методы

Выполнение команды

Выполнение команды

|uchar command[4] = {0x91, 0x13, 0x00, 0x00};
libfptr_set_param_int(fptr, LIBFPTR_PARAM_TIMEOUT_ENQ, 10000);
libfptr_set_param_bytearray(fptr, LIBFPTR_PARAM_COMMAND_BUFFER, command, sizeof(command) / sizeof(command[0]));
libfptr_run_command(fptr);

std::vector answer(16);
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_ANSWER_BUFFER, &answer[0], answer.size());
if (size > answer.size())
{
answer.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_ANSWER_BUFFER, &answer[0], answer.size());
}
answer.resize(size);
|

|fptr.setParam(LIBFPTR_PARAM_COMMAND_BUFFER, {0x91, 0x13, 0x00, 0x00});
fptr.setParam(LIBFPTR_PARAM_TIMEOUT_ENQ, 10000);
fptr.runCommand();

std::vector answer = fptr.getParamByteArray(LIBFPTR_PARAM_ANSWER_BUFFER);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMAND_BUFFER, [0x91, 0x13, 0x00, 0x00])
fptr.setParam(IFptr.LIBFPTR_PARAM_TIMEOUT_ENQ, 10000)
fptr.runCommand()

answer = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_ANSWER_BUFFER)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMAND_BUFFER, new byte[]{0x91, 0x13, 0x00, 0x00});
fptr.setParam(IFptr.LIBFPTR_PARAM_TIMEOUT_ENQ, 10000);
fptr.runCommand();

byte[] answer = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_ANSWER_BUFFER);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_COMMAND_BUFFER, new byte[]{0x91, 0x13, 0x00, 0x00});
fptr.setParam(IFptr.LIBFPTR_PARAM_TIMEOUT_ENQ, 10000);
fptr.runCommand();

byte[] answer = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_ANSWER_BUFFER);
|

|uchar command[4] = {0x91, 0x13, 0x00, 0x00};
[fptr setParam:LIBFPTR_PARAM_COMMAND_BUFFER NSDataParam:[NSData dataWithBytes:(const void*)command length:sizeof(command)]];
[fptr setParam:LIBFPTR_PARAM_TIMEOUT_ENQ intParam:10000];
[fptr runCommand];

NSData *answer = [fptr getParamByteArray:LIBFPTR_PARAM_ANSWER_BUFFER];
|

|byte[] command = new byte[]{0x91, 0x13, 0x00, 0x00};
fptr.setParam(Constants.LIBFPTR_PARAM_COMMAND_BUFFER, command);
fptr.setParam(Constants.LIBFPTR_PARAM_TIMEOUT_ENQ, 10000);
fptr.runCommand();

byte[] answer = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_ANSWER_BUFFER);
|

|var
command_byte_array: Array[0 .. 3] of Byte = ($91, $13, $00, $00);
command_variant: Variant;
i: Integer;
answer: Variant;
begin
command_variant := VarArrayCreate([0, high(command_byte_array)], varByte);
for i := VarArrayLowBound(command_variant, 1) to VarArrayHighBound(command_variant, 1) do
begin
VarArrayPut(command_variant, command_byte_array[i], [i]);
end;
fptr.setParam(fptr.LIBFPTR_PARAM_COMMAND_BUFFER, command_variant));
fptr.setParam(fptr.LIBFPTR_PARAM_TIMEOUT_ENQ, 10000);
fptr.runCommand;

answer := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_ANSWER_BUFFER);

end;
|

|command := []byte{0x91, 0x13, 0x00, 0x00}
fptr.SetParam(fptr10.LIBFPTR_PARAM_COMMAND_BUFFER, command)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TIMEOUT_ENQ, 10000)
fptr.RunCommand()

answer := fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_ANSWER_BUFFER)
|

|command = new Uint8Array([0x91, 0x13, 0x00, 0x00]);
Fptr.setParam(Fptr.LIBFPTR_PARAM_COMMAND_BUFFER, command);
Fptr.setParam(Fptr.LIBFPTR_PARAM_TIMEOUT_ENQ, 10000);
Fptr.runCommand();

answer = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_ANSWER_BUFFER);
|

Для выполнения произвольной команды ККТ необходимо вызвать метод / runCommand()/ и передать ему команду в параметре
LIBFPTR_PARAM_COMMAND_BUFFER и время ожидания ответа на команду в
параметре LIBFPTR_PARAM_TIMEOUT_ENQ. Также можно не дожидаться ответа,
если передать параметр LIBFPTR_PARAM_NO_NEED_ANSWER, равный true.

Метод не рекомендуется к использованию в повседневной работе.

Поддерживается для всех ККТ

Отрезка ЧЛ

Отрезка чековой ленты

|libfptr_cut(fptr);
|

|fptr.cut();
|

|fptr.cut()
|

|fptr.cut();
|

|fptr.cut();
|

|[fptr cut];
|

|fptr.cut();
|

|begin
fptr.cut;
end;
|

|fptr.Cut()
|

|Fptr.cut();
|

Для отрезки чековой ленты необходимо вызвать метод /cut()/.
Дополнительно можно указать тип отрезки в параметре
LIBFPTR_PARAM_CUT_TYPE. Если параметр не указан, драйвер сам определит
способ отрезки.

Выравнивание LIBFPTR_PARAM_CUT_TYPE может принимать следующие значения:

  • LIBFPTR_CT_FULL — полная отрезка;
  • LIBFPTR_CT_PART — частичная отрезка.

Если требуется отрезать нефискальный документ, то лучше использовать
метод /endNonfiscalDocument()/, а не резать самостоятельно.

Поддерживается только для ККТ АТОЛ версий 3.X

Промотка ЧЛ

Промотка чековой ленты

|libfptr_line_feed(fptr);
|

|fptr.lineFeed();
|

|fptr.lineFeed()
|

|fptr.lineFeed();
|

|fptr.lineFeed();
|

|[fptr lineFeed];
|

|fptr.lineFeed();
|

|begin
fptr.lineFeed;
end;
|

|fptr.LineFeed()
|

|Fptr.lineFeed();
|

Для промотки чековой ленты необходимо вызвать метод /lineFeed()/.

Поддерживается для всех ККТ

Звуковой сигнал

Звуковой сигнал

|libfptr_beep(fptr);
|

|fptr.beep();
|

|fptr.beep()
|

|fptr.beep();
|

|fptr.beep();
|

|[fptr beep];
|

|fptr.beep();
|

|begin
fptr.beep;
end;
|

|fptr.Beep()
|

|Fptr.beep();
|

Для подачи звукового сигнала необходимо вызвать метод /beep()/.

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

Параметр Описание Тип
LIBFPTR_PARAM_FREQUENCY Частота, Гц. int
LIBFPTR_PARAM_DURATION Длительность, мс. int

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

Поддерживается для всех ККТ

Открытие ДЯ

Открытие денежного ящика

|libfptr_open_drawer(fptr);
|

|fptr.openDrawer();
|

|fptr.openDrawer()
|

|fptr.openDrawer();
|

|fptr.openDrawer();
|

|[fptr openDrawer];
|

|fptr.openDrawer();
|

|begin
fptr.openDrawer;
end;
|

|fptr.OpenDrawer()
|

|Fptr.openDrawer();
|

Для открытия денежного ящика, подключенного к ККТ, необходимо вызвать
метод /openDrawer()/.

Дополнительно можно передать следующие параметры для настройки открытия
денежного ящика:

Параметр Описание Тип
LIBFPTR_PARAM_DRAWER_ON_TIMEOUT Длительность включения, мс. int
LIBFPTR_PARAM_DRAWER_OFF_TIMEOUT Длительность задержки, мс. int
LIBFPTR_PARAM_DRAWER_ON_QUANTITY Количество импульсов int

Ошибка выдана не будет, если денежный ящик отсутствует либо открыть его
не удалось.

Поддерживается для всех ККТ

Разбор кода маркировки

Разбор кода маркировки

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_MARKING_CODE_TYPE, LIBFPTR_MCT_OTHER);
uchar mark[] = {<массив байтов от сканера>};
libfptr_set_param_bytearray(fptr, LIBFPTR_PARAM_MARKING_CODE, &mark[0], sizeof(mark));
libfptr_parse_marking_code(fptr);

std::vector tag1162(32);
int size = libfptr_get_param_bytearray(fptr, 1162, &tag1162[0], tag1162.size());
if (size > tag1162.size())
{
tag1162.resize(size);
size = libfptr_get_param_bytearray(fptr, 1162, &tag1162[0], tag1162.size());
}
tag1162.resize(size);
|

|fptr.setParam(LIBFPTR_PARAM_MARKING_CODE_TYPE, LIBFPTR_MCT_OTHER);
fptr.setParam(LIBFPTR_PARAM_MARKING_CODE, {<массив байтов от сканера>});
fptr.parseMarkingCode();
std::vector tag1162 = fptr.getParamByteArray(1162);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, IFptr.LIBFPTR_MCT_OTHER)
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE, [<массив байтов от сканера>])
fptr.parseMarkingCode()
tag1162 = fptr.getParamByteArray(1162)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, IFptr.LIBFPTR_MCT_OTHER);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE, new byte[]{<массив байтов от сканера>});
fptr.parseMarkingCode();
byte[] tag1162 = fptr.getParamByteArray(1162);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, IFptr.LIBFPTR_MCT_OTHER);
fptr.setParam(IFptr.LIBFPTR_PARAM_MARKING_CODE, new byte[]{<массив байтов от сканера>});
fptr.parseMarkingCode();
byte[] tag1162 = fptr.getParamByteArray(1162);
|

|[fptr setParam:LIBFPTR_PARAM_MARKING_CODE_TYPE intParam:LIBFPTR_MCT_OTHER];
uchar mark[] = {<массив байтов от сканера>};
[fptr setParam:LIBFPTR_PARAM_MARKING_CODE NSDataParam:[NSData dataWithBytes:(const void*)mark length:sizeof(mark)]];
[fptr parseMarkingCode];
NSData *tag1162 = [fptr getParamByteArray:1162];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_CODE_TYPE, Constants.LIBFPTR_MCT_OTHER);
fptr.setParam(Constants.LIBFPTR_PARAM_MARKING_CODE, new byte[]{<массив байтов от сканера>});
fptr.parseMarkingCode();
byte[] tag1162 = fptr.getParamByteArray(1162);
|

|var
tag1162: Variant;
mark: Array[0 .. 31] of Byte = (<массив байтов от сканера>);
mark_var: Variant;
i: Integer;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, fptr.LIBFPTR_MCT_OTHER);

mark_var := VarArrayCreate([0, high(mark)], varByte);
for i := VarArrayLowBound(mark_var, 1) to VarArrayHighBound(mark_var, 1) do
begin
    VarArrayPut(mark_var, mark[i], [i]);
end;
fptr.setParam(fptr.LIBFPTR_PARAM_MARKING_CODE, mark_var);

fptr.parseMarkingCode
tag1162 := fptr.getParamByteArray(1162);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_CODE_TYPE, fptr10.LIBFPTR_MCT_OTHER)
fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_CODE, []byte{<массив байтов от сканера>})
fptr.ParseMarkingCode()
tag1162 := fptr.GetParamByteArray(1162)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, Fptr.LIBFPTR_MCT_OTHER);
fptr.setParam(Fptr.LIBFPTR_PARAM_MARKING_CODE, new Uint8Array([<массив байтов от сканера>]));
Fptr.parseMarkingCode();
tag1162 = fptr.getParamByteArray(1162);
|

Для разбора кода маркировки, полученного от сканера, необходимо вызвать
метод /parseMarkingCode()/ и указать в параметре
LIBFPTR_PARAM_MARKING_CODE значение штрихкода. Если передаётся марки
ЕГАИС 2.0 или ЕГАИС 3.0, это нужно указать в параметре
LIBFPTR_PARAM_MARKING_CODE_TYPE. Он принимает следующие значения:

  • LIBFPTR_MCT_EGAIS_20 — ЕГАИС 2.0
  • LIBFPTR_MCT_EGAIS_30 — ЕГАИС 3.0
  • LIBFPTR_MCT_OTHER — другая марка, кроме перечисленных выше

Сформированное значение реквизита 1162 будет записано в параметр 1162.

Этот метод не записывает значение в ФН, а только возвращает пользователю
значение реквизита 1162, расчитанное на базе переданных данных. Для
записи кода маркировки в ФН нужно использовать метод регистрации позиции
и параметр LIBFPTR_PARAM_MARKING_CODE.

Поддерживается для всех ККТ

Формирование составного реквизита

Формирование составной TLV-структуры (на примере данных агента)

|libfptr_set_param_str(fptr, 1005, L»ул. Свободы, 13″);
libfptr_set_param_str(fptr, 1016, L»123456789047″);
libfptr_set_param_str(fptr, 1026, L»Оператор 1″);
libfptr_set_param_str(fptr, 1044, L»Оплата»);
libfptr_set_param_str(fptr, 1073, L»+79121234567″);
libfptr_set_param_str(fptr, 1074, L»+79121234568″);
libfptr_set_param_str(fptr, 1074, L»+79121234574″);
libfptr_set_param_str(fptr, 1075, L»+79121234569″);
libfptr_util_form_tlv(fptr);

std::vector agentInfo(128);
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE, &agentInfo[0], agentInfo.size());
if (size > agentInfo.size())
{
agentInfo.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE, &agentInfo[0], agentInfo.size());
}
agentInfo.resize(size);

// …
libfptr_set_param_bytearray(fptr, 1223, &agentInfo[0], agentInfo.size());
|

|fptr.setParam(1005, L»ул. Свободы, 13″);
fptr.setParam(1016, L»123456789047″);
fptr.setParam(1026, L»Оператор 1″);
fptr.setParam(1044, L»Оплата»);
fptr.setParam(1073, L»+79121234567″);
fptr.setParam(1074, L»+79121234568″);
fptr.setParam(1074, L»+79121234574″);
fptr.setParam(1075, L»+79121234569″);
fptr.utilFormTlv();

std::vector agentInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);

// …
fptr.setParam(1223, agentInfo);
|

|fptr.setParam(1005, «ул. Свободы, 13»)
fptr.setParam(1016, «123456789047»)
fptr.setParam(1026, «Оператор 1»)
fptr.setParam(1044, «Оплата»)
fptr.setParam(1073, «+79121234567»)
fptr.setParam(1074, «+79121234568»)
fptr.setParam(1074, «+79121234574»)
fptr.setParam(1075, «+79121234569»)
fptr.utilFormTlv()

agentInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE)

fptr.setParam(1223, agentInfo)
|

|fptr.setParam(1005, «ул. Свободы, 13»);
fptr.setParam(1016, «123456789047»);
fptr.setParam(1026, «Оператор 1»);
fptr.setParam(1044, «Оплата»);
fptr.setParam(1073, «+79121234567»);
fptr.setParam(1074, «+79121234568»);
fptr.setParam(1074, «+79121234574»);
fptr.setParam(1075, «+79121234569»);
fptr.utilFormTlv();

byte[] agentInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);

// …
fptr.setParam(1223, agentInfo);
|

|fptr.setParam(1005, «ул. Свободы, 13»);
fptr.setParam(1016, «123456789047»);
fptr.setParam(1026, «Оператор 1»);
fptr.setParam(1044, «Оплата»);
fptr.setParam(1073, «+79121234567»);
fptr.setParam(1074, «+79121234568»);
fptr.setParam(1074, «+79121234574»);
fptr.setParam(1075, «+79121234569»);
fptr.utilFormTlv();

byte[] agentInfo = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);

// …
fptr.setParam(1223, agentInfo);
|

|[fptr setParam:1005 NSStringParam:@»ул. Свободы, 13″];
[fptr setParam:1016 NSStringParam:@»123456789047″];
[fptr setParam:1026 NSStringParam:@»Оператор 1″];
[fptr setParam:1044 NSStringParam:@»Оплата»];
[fptr setParam:1073 NSStringParam:@»+79121234567″];
[fptr setParam:1074 NSStringParam:@»+79121234568″];
[fptr setParam:1074 NSStringParam:@»+79121234574″];
[fptr setParam:1075 NSStringParam:@»+79121234569″];
[fptr utilFormTlv];

NSData *agentInfo = [fptr getParamByteArray:LIBFPTR_PARAM_TAG_VALUE];

// …
[fptr setParam:1223 NSDataParam:agentInfo];
|

|fptr.setParam(1005, «ул. Свободы, 13»);
fptr.setParam(1016, «123456789047»);
fptr.setParam(1026, «Оператор 1»);
fptr.setParam(1044, «Оплата»);
fptr.setParam(1073, «+79121234567»);
fptr.setParam(1074, «+79121234568»);
fptr.setParam(1074, «+79121234574»);
fptr.setParam(1075, «+79121234569»);
fptr.utilFormTlv();

byte[] agentInfo = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_TAG_VALUE);

// …
fptr.setParam(1223, agentInfo);
|

|var
agentInfo: Variant;
begin
fptr.setParam(1005, ‘ул. Свободы, 13’);
fptr.setParam(1016, ‘123456789047’);
fptr.setParam(1026, ‘Оператор 1’);
fptr.setParam(1044, ‘Оплата’);
fptr.setParam(1073, ‘+79121234567’);
fptr.setParam(1074, ‘+79121234568’);
fptr.setParam(1074, ‘+79121234574’);
fptr.setParam(1075, ‘+79121234569’);
fptr.utilFormTlv;

agentInfo := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_TAG_VALUE);

// ...
fptr.setParam(1223, agentInfo);

end;
|

|fptr.SetParam(1005, «ул. Свободы, 13»)
fptr.SetParam(1016, «123456789047»)
fptr.SetParam(1026, «Оператор 1»)
fptr.SetParam(1044, «Оплата»)
fptr.SetParam(1073, «+79121234567»)
fptr.SetParam(1074, «+79121234568»)
fptr.SetParam(1074, «+79121234574»)
fptr.SetParam(1075, «+79121234569»)
fptr.UtilFormTlv()

agentInfo := fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_TAG_VALUE)

// …
fptr.SetParam(1223, agentInfo)
|

|Fptr.setParam(1005, «ул. Свободы, 13»);
Fptr.setParam(1016, «123456789047»);
Fptr.setParam(1026, «Оператор 1»);
Fptr.setParam(1044, «Оплата»);
Fptr.setParam(1073, «+79121234567»);
Fptr.setParam(1074, «+79121234568»);
Fptr.setParam(1074, «+79121234574»);
Fptr.setParam(1075, «+79121234569»);
Fptr.utilFormTlv();

agentInfo = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_TAG_VALUE);

// …
Fptr.setParam(1223, agentInfo);
|

Для формирования составного реквизита ФН необходимо вызвать метод / utilFormTlv()/. Входными параметрами для метода является набор
реквизитов, которые нужно объединить в один составной.

Если в качестве значения передается пустота (пустой массив или пустая
строка), то проверяется параметр LIBFPTR_PARAM_IGNORE_EMPTY. Если он
равен true, то значение реквизита игнорируется, если false, то в
результат записывается реквизит с пустым значением. Если параметр не
передан, его значение принимается равным true.

Результатом метода является массив байтов (параметр
LIBFPTR_PARAM_TAG_VALUE), который нужно передать в необходимый метод,
указав номер реквизита.

Поддерживается для всех ККТ

Формирование списка значений настроек

Формирование списка возможных значений для настройки
*LIBFPTR_SETTING_MODEL* (модель ККТ)

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_MAPPING_KEY, LIBFPTR_SETTING_MODEL);
libfptr_util_mapping(fptr);

std::vector models(256);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_MAPPING_VALUE, &models[0], models.size());
if (size > models.size())
{
models.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_MAPPING_VALUE, &models[0], models.size());
}
|

|fptr.setParam(LIBFPTR_PARAM_MAPPING_KEY, LIBFPTR_SETTING_MODEL);
fptr.utilMapping();

std::wstring models = fptr.getParamString(LIBFPTR_PARAM_MAPPING_VALUE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_MAPPING_KEY, IFptr.LIBFPTR_SETTING_MODEL)
fptr.utilMapping()

models = fptr.getParamString(IFptr.LIBFPTR_PARAM_MAPPING_VALUE)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_MAPPING_KEY, IFptr.LIBFPTR_SETTING_MODEL);
fptr.utilMapping();

String models = fptr.getParamString(IFptr.LIBFPTR_PARAM_MAPPING_VALUE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_MAPPING_KEY, IFptr.LIBFPTR_SETTING_MODEL);
fptr.utilMapping();

String models = fptr.getParamString(IFptr.LIBFPTR_PARAM_MAPPING_VALUE);
|

|[fptr setParam:LIBFPTR_PARAM_MAPPING_KEY NSStringParam:LIBFPTR_SETTING_MODEL];
[fptr utilMapping];

NSString *models = [fptr getParamString:LIBFPTR_PARAM_MAPPING_VALUE];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_MAPPING_KEY, Constants.LIBFPTR_SETTING_MODEL);
fptr.utilMapping();

String models = fptr.getParamString(Constants.LIBFPTR_PARAM_MAPPING_VALUE);
|

|var
models: String;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_MAPPING_KEY, fptr.LIBFPTR_SETTING_MODEL);
fptr.utilMapping;

models := fptr.getParamString(fptr.LIBFPTR_PARAM_MAPPING_VALUE);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_MAPPING_KEY, fptr10.LIBFPTR_SETTING_MODEL)
fptr.UtilMapping()

models := fptr.GetParamString(fptr10.LIBFPTR_PARAM_MAPPING_VALUE)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_MAPPING_KEY, Fptr.LIBFPTR_SETTING_MODEL);
Fptr.utilMapping();

models = Fptr.getParamString(Fptr.LIBFPTR_PARAM_MAPPING_VALUE);
|

Значением параметра LIBFPTR_PARAM_MAPPING_VALUE является Json
следующего вида:

|[
{
«key»: <значение 1, строка>,
«description»: <описание значения 1, строка>
},
{
«key»: <значение 2, строка>,
«description»: <описание значения 2, строка>
},
{
«key»: <значение 3, строка>,
«description»: <описание значения 3, строка>
},

]
|

Для формирования списка доступных настроек необходимо вызвать метод / utilMapping()/.

Список доступных для получения списка значений настроек:

  • LIBFPTR_SETTING_MODEL — модель ККТ
  • LIBFPTR_SETTING_PORT — способ связи с ККТ
  • LIBFPTR_SETTING_COM_FILE — идентификатор COM / VCOM
  • LIBFPTR_SETTING_USB_DEVICE_PATH — идентификатор USB
  • LIBFPTR_SETTING_BAUDRATE — скорость канала COM-порта
  • LIBFPTR_SETTING_BITS — битность канала COM-порта
  • LIBFPTR_SETTING_STOPBITS — количество стоп-битов канала COM-порта
  • LIBFPTR_SETTING_PARITY — четность канала COM-порта
  • LIBFPTR_SETTING_EXISTED_COM_FILES — найденные COM-порты

Поддерживается для всех ККТ

Формирование кода товара

Формирование кода изделия их меха

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_NOMENCLATURE_TYPE, LIBFPTR_NT_FURS);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_SERIAL_NUMBER, L»RU-430302-ABC1234567″);
libfptr_util_form_nomenclature(fptr);

std::vector nomenclatureCode;
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE, &nomenclatureCode[0], nomenclatureCode.size());
if (size > nomenclatureCode.size())
{
nomenclatureCode.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE, &nomenclatureCode[0], nomenclatureCode.size());
}
|

|fptr.setParam(LIBFPTR_PARAM_NOMENCLATURE_TYPE, LIBFPTR_NT_FURS);
fptr.setParam(LIBFPTR_PARAM_SERIAL_NUMBER, L»RU-430302-ABC1234567″);
fptr.utilFormNomenclature();

std::vector nomenclatureCode = fptr.getParamByteArray(LIBFPTR_PARAM_TAG_VALUE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_NOMENCLATURE_TYPE, IFptr.LIBFPTR_NT_FURS)
fptr.setParam(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER, «RU-430302-ABC1234567»)
fptr.utilFormNomenclature()

nomenclatureCode = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_NOMENCLATURE_TYPE, IFptr.LIBFPTR_NT_FURS);
fptr.setParam(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER, «RU-430302-ABC1234567»);
fptr.utilFormNomenclature();

byte[] nomenclatureCode = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_NOMENCLATURE_TYPE, IFptr.LIBFPTR_NT_FURS);
fptr.setParam(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER, «RU-430302-ABC1234567»);
fptr.utilFormNomenclature();

byte[] nomenclatureCode = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);
|

|[fptr setParam:LIBFPTR_PARAM_NOMENCLATURE_TYPE intParam:LIBFPTR_NT_FURS];
[fptr setParam:LIBFPTR_PARAM_SERIAL_NUMBER NSStringParam:@»RU-430302-ABC1234567″];
[fptr utilFormNomenclature];

NSData *nomenclatureCode = [fptr getParamByteArray:LIBFPTR_PARAM_TAG_VALUE];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_NOMENCLATURE_TYPE, Constants.LIBFPTR_NT_FURS);
fptr.setParam(Constants.LIBFPTR_PARAM_SERIAL_NUMBER, «RU-430302-ABC1234567»);
fptr.utilFormNomenclature();

byte[] nomenclatureCode = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_TAG_VALUE);
|

|var
nomenclatureCode: Variant;
begin
fptr.setParam(fptr.LLIBFPTR_PARAM_NOMENCLATURE_TYPE, fptr.LIBFPTR_NT_FURS);
fptr.setParam(fptr.LIBFPTR_PARAM_SERIAL_NUMBER, ‘RU-430302-ABC1234567’);
fptr.utilFormNomenclature;

nomenclatureCode := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_TAG_VALUE);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_NOMENCLATURE_TYPE, fptr10.LIBFPTR_NT_FURS)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SERIAL_NUMBER, «RU-430302-ABC1234567»)
fptr.UtilFormNomenclature()

nomenclatureCode := fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_TAG_VALUE)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_NOMENCLATURE_TYPE, Fptr.LIBFPTR_NT_FURS);
Fptr.setParam(Fptr.LIBFPTR_PARAM_SERIAL_NUMBER, «RU-430302-ABC1234567»);
Fptr.utilFormNomenclature();

nomenclatureCode = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_TAG_VALUE);
|

Формирование кода лекарственного препарата

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_NOMENCLATURE_TYPE, LIBFPTR_NT_MEDICINES);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_GTIN, L»98765432101234″);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_SERIAL_NUMBER, L»ABC1234567890″);
libfptr_util_form_nomenclature(fptr);

std::vector nomenclatureCode;
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE, &nomenclatureCode[0], nomenclatureCode.size());
if (size > nomenclatureCode.size())
{
nomenclatureCode.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE, &nomenclatureCode[0], nomenclatureCode.size());
}
|

|fptr.setParam(LIBFPTR_PARAM_NOMENCLATURE_TYPE, LIBFPTR_NT_MEDICINES);
fptr.setParam(LIBFPTR_PARAM_GTIN, L»98765432101234″);
fptr.setParam(LIBFPTR_PARAM_SERIAL_NUMBER, L»ABC1234567890″);
fptr.utilFormNomenclature();

std::vector nomenclatureCode = fptr.getParamByteArray(LIBFPTR_PARAM_TAG_VALUE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_NOMENCLATURE_TYPE, IFptr.LIBFPTR_NT_MEDICINES)
fptr.setParam(IFptr.LIBFPTR_PARAM_GTIN, «98765432101234»)
fptr.setParam(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER, «ABC1234567890»)
fptr.utilFormNomenclature()

nomenclatureCode = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_NOMENCLATURE_TYPE, IFptr.LIBFPTR_NT_MEDICINES);
fptr.setParam(IFptr.LIBFPTR_PARAM_GTIN, «98765432101234»);
fptr.setParam(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER, «ABC1234567890»);
fptr.utilFormNomenclature();

byte[] nomenclatureCode = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_NOMENCLATURE_TYPE, IFptr.LIBFPTR_NT_MEDICINES);
fptr.setParam(IFptr.LIBFPTR_PARAM_GTIN, «98765432101234»);
fptr.setParam(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER, «ABC1234567890»);
fptr.utilFormNomenclature();

byte[] nomenclatureCode = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);
|

|[fptr setParam:LIBFPTR_PARAM_NOMENCLATURE_TYPE intParam:LIBFPTR_NT_MEDICINES];
[fptr setParam:LIBFPTR_PARAM_GTIN NSStringParam:@»98765432101234″];
[fptr setParam:LIBFPTR_PARAM_SERIAL_NUMBER NSStringParam:@»ABC1234567890″];
[fptr utilFormNomenclature];

NSData *nomenclatureCode = [fptr getParamByteArray:LIBFPTR_PARAM_TAG_VALUE];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_NOMENCLATURE_TYPE, Constants.LIBFPTR_NT_MEDICINES);
fptr.setParam(Constants.LIBFPTR_PARAM_GTIN, «98765432101234»);
fptr.setParam(Constants.LIBFPTR_PARAM_SERIAL_NUMBER, «ABC1234567890»);
fptr.utilFormNomenclature();

byte[] nomenclatureCode = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_TAG_VALUE);
|

|var
nomenclatureCode: Variant;
begin
fptr.setParam(fptr.LLIBFPTR_PARAM_NOMENCLATURE_TYPE, fptr.LIBFPTR_NT_MEDICINES);
fptr.setParam(fptr.LIBFPTR_PARAM_GTIN, ‘98765432101234’);
fptr.setParam(fptr.LIBFPTR_PARAM_SERIAL_NUMBER, ‘ABC1234567890’);
fptr.utilFormNomenclature;

nomenclatureCode := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_TAG_VALUE);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_NOMENCLATURE_TYPE, fptr10.LIBFPTR_NT_MEDICINES)
fptr.SetParam(fptr10.LIBFPTR_PARAM_GTIN, «98765432101234»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SERIAL_NUMBER, «ABC1234567890»)
fptr.UtilFormNomenclature()

nomenclatureCode := fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_TAG_VALUE)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_NOMENCLATURE_TYPE, Fptr.LIBFPTR_NT_MEDICINES);
Fptr.setParam(Fptr.LIBFPTR_PARAM_GTIN, «98765432101234»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_SERIAL_NUMBER, «ABC1234567890»);
Fptr.utilFormNomenclature();

nomenclatureCode = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_TAG_VALUE);
|

Формирование кода табачного изделия

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_NOMENCLATURE_TYPE, LIBFPTR_NT_TOBACCO);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_GTIN, L»98765432101234″);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_SERIAL_NUMBER, L»ABC1234″);
libfptr_util_form_nomenclature(fptr);

std::vector nomenclatureCode;
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE, &nomenclatureCode[0], nomenclatureCode.size());
if (size > nomenclatureCode.size())
{
nomenclatureCode.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE, &nomenclatureCode[0], nomenclatureCode.size());
}
|

|fptr.setParam(LIBFPTR_PARAM_NOMENCLATURE_TYPE, LIBFPTR_NT_TOBACCO);
fptr.setParam(LIBFPTR_PARAM_GTIN, L»98765432101234″);
fptr.setParam(LIBFPTR_PARAM_SERIAL_NUMBER, L»ABC1234″);
fptr.utilFormNomenclature();

std::vector nomenclatureCode = fptr.getParamByteArray(LIBFPTR_PARAM_TAG_VALUE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_NOMENCLATURE_TYPE, IFptr.LIBFPTR_NT_TOBACCO)
fptr.setParam(IFptr.LIBFPTR_PARAM_GTIN, «98765432101234»)
fptr.setParam(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER, «ABC1234»)
fptr.utilFormNomenclature()

nomenclatureCode = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_NOMENCLATURE_TYPE, IFptr.LIBFPTR_NT_TOBACCO);
fptr.setParam(IFptr.LIBFPTR_PARAM_GTIN, «98765432101234»);
fptr.setParam(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER, «ABC1234»);
fptr.utilFormNomenclature();

byte[] nomenclatureCode = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_NOMENCLATURE_TYPE, IFptr.LIBFPTR_NT_TOBACCO);
fptr.setParam(IFptr.LIBFPTR_PARAM_GTIN, «98765432101234»);
fptr.setParam(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER, «ABC1234»);
fptr.utilFormNomenclature();

byte[] nomenclatureCode = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);
|

|[fptr setParam:LIBFPTR_PARAM_NOMENCLATURE_TYPE intParam:LIBFPTR_NT_TOBACCO];
[fptr setParam:LIBFPTR_PARAM_GTIN NSStringParam:@»98765432101234″];
[fptr setParam:LIBFPTR_PARAM_SERIAL_NUMBER NSStringParam:@»ABC1234″];
[fptr utilFormNomenclature];

NSData *nomenclatureCode = [fptr getParamByteArray:LIBFPTR_PARAM_TAG_VALUE];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_NOMENCLATURE_TYPE, Constants.LIBFPTR_NT_TOBACCO);
fptr.setParam(Constants.LIBFPTR_PARAM_GTIN, «98765432101234»);
fptr.setParam(Constants.LIBFPTR_PARAM_SERIAL_NUMBER, «ABC1234»);
fptr.utilFormNomenclature();

byte[] nomenclatureCode = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_TAG_VALUE);
|

|var
nomenclatureCode: Variant;
begin
fptr.setParam(fptr.LLIBFPTR_PARAM_NOMENCLATURE_TYPE, fptr.LIBFPTR_NT_TOBACCO);
fptr.setParam(fptr.LIBFPTR_PARAM_GTIN, ‘98765432101234’);
fptr.setParam(fptr.LIBFPTR_PARAM_SERIAL_NUMBER, ‘ABC1234’);
fptr.utilFormNomenclature;

nomenclatureCode := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_TAG_VALUE);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_NOMENCLATURE_TYPE, fptr10.LIBFPTR_NT_TOBACCO)
fptr.SetParam(fptr10.LIBFPTR_PARAM_GTIN, «98765432101234»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SERIAL_NUMBER, «ABC1234»)
fptr.UtilFormNomenclature()

nomenclatureCode := fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_TAG_VALUE)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_NOMENCLATURE_TYPE, Fptr.LIBFPTR_NT_TOBACCO);
Fptr.setParam(Fptr.LIBFPTR_PARAM_GTIN, «98765432101234»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_SERIAL_NUMBER, «ABC1234»);
Fptr.utilFormNomenclature();

nomenclatureCode = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_TAG_VALUE);
|

Формирование кода обуви

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_NOMENCLATURE_TYPE, LIBFPTR_NT_SHOES);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_GTIN, L»98765432101234″);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_SERIAL_NUMBER, L»sgEKKPPcS25y5″);
libfptr_util_form_nomenclature(fptr);

std::vector nomenclatureCode;
int size = libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE, &nomenclatureCode[0], nomenclatureCode.size());
if (size > nomenclatureCode.size())
{
nomenclatureCode.resize(size);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_TAG_VALUE, &nomenclatureCode[0], nomenclatureCode.size());
}
|

|fptr.setParam(LIBFPTR_PARAM_NOMENCLATURE_TYPE, LIBFPTR_NT_SHOES);
fptr.setParam(LIBFPTR_PARAM_GTIN, L»98765432101234″);
fptr.setParam(LIBFPTR_PARAM_SERIAL_NUMBER, L»sgEKKPPcS25y5″);
fptr.utilFormNomenclature();

std::vector nomenclatureCode = fptr.getParamByteArray(LIBFPTR_PARAM_TAG_VALUE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_NOMENCLATURE_TYPE, IFptr.LIBFPTR_NT_SHOES)
fptr.setParam(IFptr.LIBFPTR_PARAM_GTIN, «98765432101234»)
fptr.setParam(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER, «sgEKKPPcS25y5»)
fptr.utilFormNomenclature()

nomenclatureCode = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_NOMENCLATURE_TYPE, IFptr.LIBFPTR_NT_SHOES);
fptr.setParam(IFptr.LIBFPTR_PARAM_GTIN, «98765432101234»);
fptr.setParam(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER, «sgEKKPPcS25y5»);
fptr.utilFormNomenclature();

byte[] nomenclatureCode = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_NOMENCLATURE_TYPE, IFptr.LIBFPTR_NT_SHOES);
fptr.setParam(IFptr.LIBFPTR_PARAM_GTIN, «98765432101234»);
fptr.setParam(IFptr.LIBFPTR_PARAM_SERIAL_NUMBER, «sgEKKPPcS25y5»);
fptr.utilFormNomenclature();

byte[] nomenclatureCode = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE);
|

|[fptr setParam:LIBFPTR_PARAM_NOMENCLATURE_TYPE intParam:LIBFPTR_NT_SHOES];
[fptr setParam:LIBFPTR_PARAM_GTIN NSStringParam:@»98765432101234″];
[fptr setParam:LIBFPTR_PARAM_SERIAL_NUMBER NSStringParam:@»sgEKKPPcS25y5″];
[fptr utilFormNomenclature];

NSData *nomenclatureCode = [fptr getParamByteArray:LIBFPTR_PARAM_TAG_VALUE];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_NOMENCLATURE_TYPE, Constants.LIBFPTR_NT_SHOES);
fptr.setParam(Constants.LIBFPTR_PARAM_GTIN, «98765432101234»);
fptr.setParam(Constants.LIBFPTR_PARAM_SERIAL_NUMBER, «sgEKKPPcS25y5»);
fptr.utilFormNomenclature();

byte[] nomenclatureCode = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_TAG_VALUE);
|

|var
nomenclatureCode: Variant;
begin
fptr.setParam(fptr.LLIBFPTR_PARAM_NOMENCLATURE_TYPE, fptr.LIBFPTR_NT_SHOES);
fptr.setParam(fptr.LIBFPTR_PARAM_GTIN, ‘98765432101234’);
fptr.setParam(fptr.LIBFPTR_PARAM_SERIAL_NUMBER, ‘sgEKKPPcS25y5’);
fptr.utilFormNomenclature;

nomenclatureCode := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_TAG_VALUE);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_NOMENCLATURE_TYPE, Constants.LIBFPTR_NT_SHOES)
fptr.SetParam(fptr10.LIBFPTR_PARAM_GTIN, «98765432101234»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SERIAL_NUMBER, «sgEKKPPcS25y5»)
fptr.UtilFormNomenclature()

nomenclatureCode := fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_TAG_VALUE)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_NOMENCLATURE_TYPE, Fptr.LIBFPTR_NT_SHOES);
Fptr.setParam(Fptr.LIBFPTR_PARAM_GTIN, «98765432101234»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_SERIAL_NUMBER, «sgEKKPPcS25y5»);
Fptr.utilFormNomenclature();

nomenclatureCode = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_TAG_VALUE);
|

Для формирования кода товара (КТ) можно использовать метод / utilFormNomenclature()/. Входные параметры могут отличаться в
зависимости от типа КТ (LIBFPTR_PARAM_NOMENCLATURE_TYPE).

Входные параметры для изделий из меха (LIBFPTR_PARAM_NOMENCLATURE_TYPE
= LIBFPTR_NT_FURS):

Параметр Описание Тип
LIBFPTR_PARAM_SERIAL_NUMBER Контрольный знак string, 20 символов

Входные параметры для лекарственных препаратов
(LIBFPTR_PARAM_NOMENCLATURE_TYPE = LIBFPTR_NT_MEDICINES), табачной
продукции (LIBFPTR_PARAM_NOMENCLATURE_TYPE = LIBFPTR_NT_TOBACCO) и
обуви (LIBFPTR_PARAM_NOMENCLATURE_TYPE = LIBFPTR_NT_SHOES):

Параметр Описание Тип
LIBFPTR_PARAM_GTIN Идентификатор продукта GTIN string, 14 символов
LIBFPTR_PARAM_SERIAL_NUMBER Серийный номер string

Если в GS1-коде исходной марки содержится AI «8005» (дополнительный
идентификатор), то, согласно примечанию №6 к таблице №50 ФФД, его нужно
добавить в конец строки с серийным номером для корректного формирования
кода товара.

Поддерживается для всех ККТ

Получение информации о реквизите ФН

Получение информации о реквизите ФН

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_TAG_NUMBER, 1012);
libfptr_util_tag_info(fptr);

std::vector str(256);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_TAG_NAME, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_TAG_NAME, &str[0], str.size());
}
std::wstring name = std::wstring(&str[0]);

uint type = libfptr_get_param_int(fptr, LIBFPTR_PARAM_TAG_TYPE);
bool isComplex = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_TAG_IS_COMPLEX) ? true : false;
bool isRepeatable = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_TAG_IS_REPEATABLE) ? true : false;
|

|fptr.setParam(LIBFPTR_PARAM_TAG_NUMBER, 1012);
fptr.utilTagInfo();

std::wstring name = fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_NAME);
uint type = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_TYPE);
bool isComplex = fptr.getParamBool(IFptr.LIBFPTR_PARAM_TAG_IS_COMPLEX);
bool isRepeatable = fptr.getParamBool(IFptr.LIBFPTR_PARAM_TAG_IS_REPEATABLE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TAG_NUMBER, 1012)
fptr.utilTagInfo()

name = fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_NAME)
type = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_TYPE)
isComplex = fptr.getParamBool(IFptr.LIBFPTR_PARAM_TAG_IS_COMPLEX)
isRepeatable = fptr.getParamBool(IFptr.LIBFPTR_PARAM_TAG_IS_REPEATABLE)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TAG_NUMBER, 1012);
fptr.utilTagInfo();

String name = fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_NAME);
int type = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_TYPE);
boolean isComplex = fptr.getParamBool(IFptr.LIBFPTR_PARAM_TAG_IS_COMPLEX);
boolean isRepeatable = fptr.getParamBool(IFptr.LIBFPTR_PARAM_TAG_IS_REPEATABLE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TAG_NUMBER, 1012);
fptr.utilTagInfo();

String name = fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_NAME);
int type = fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_TYPE);
boolean isComplex = fptr.getParamBool(IFptr.LIBFPTR_PARAM_TAG_IS_COMPLEX);
boolean isRepeatable = fptr.getParamBool(IFptr.LIBFPTR_PARAM_TAG_IS_REPEATABLE);
|

|[fptr setParam:LIBFPTR_PARAM_TAG_NUMBER intParam:1012];
[fptr utilTagInfo];

NSString *name = [fptr getParamString:LIBFPTR_PARAM_TAG_NAME];
uint type = [fptr getParamInt:LIBFPTR_PARAM_TAG_TYPE];
bool isComplex = [fptr getParamBool:LIBFPTR_PARAM_TAG_IS_COMPLEX];
bool isRepeatable = [fptr getParamBool:LIBFPTR_PARAM_TAG_IS_REPEATABLE];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_TAG_NUMBER, 1012);
fptr.utilTagInfo();

String name = fptr.getParamString(Constants.LIBFPTR_PARAM_TAG_NAME);
int type = fptr.getParamInt(Constants.LIBFPTR_PARAM_TAG_TYPE);
bool isComplex = fptr.getParamBool(Constants.LIBFPTR_PARAM_TAG_IS_COMPLEX);
bool isRepeatable = fptr.getParamBool(Constants.LIBFPTR_PARAM_TAG_IS_REPEATABLE);
|

|var
name: String;
type: LongInt;
isComplex: LongBool;
isRepeatable: LongBool;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_TAG_NUMBER, 1012);
fptr.utilTagInfo;

serialNumber    := fptr.getParamString(fptr.LIBFPTR_PARAM_TAG_NAME);
type            := fptr.getParamInt(fptr.LIBFPTR_PARAM_TAG_TYPE);
isComplex       := fptr.getParamBool(fptr.LIBFPTR_PARAM_TAG_IS_COMPLEX);
isRepeatable    := fptr.getParamBool(fptr.LIBFPTR_PARAM_TAG_IS_REPEATABLE);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_TAG_NUMBER, 1012)
fptr.UtilTagInfo()

name := fptr.GetParamString(fptr10.LIBFPTR_PARAM_TAG_NAME)
type := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_TAG_TYPE)
isComplex := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_TAG_IS_COMPLEX)
isRepeatable := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_TAG_IS_REPEATABLE)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_TAG_NUMBER, 1012);
Fptr.utilTagInfo();

name = Fptr.getParamString(Fptr.LIBFPTR_PARAM_TAG_NAME);
type = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_TAG_TYPE);
isComplex = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_TAG_IS_COMPLEX);
isRepeatable = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_TAG_IS_REPEATABLE);
|

Для получения информации о реквизите ФН требуется вызвать метод / utilTagInfo()/ и указать в параметре LIBFPTR_PARAM_TAG_NUMBER номер
реквизита.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_TAG_NAME Наименование реквизита string
LIBFPTR_PARAM_TAG_TYPE Тип реквизита int
LIBFPTR_PARAM_TAG_IS_COMPLEX true, если реквизит составной bool
LIBFPTR_PARAM_TAG_IS_REPEATABLE true, если реквизит может
повторяться bool

Тип реквизита (LIBFPTR_PARAM_TAG_TYPE) может принимать следующие значения:

  • LIBFPTR_TAG_TYPE_STLV — составной реквизит
  • LIBFPTR_TAG_TYPE_ARRAY — массив байтов
  • LIBFPTR_TAG_TYPE_FVLN — число с точкой без знака
  • LIBFPTR_TAG_TYPE_BITS — регистр флагов
  • LIBFPTR_TAG_TYPE_BYTE — целое число без знака, 1 байт
  • LIBFPTR_TAG_TYPE_UINT_16 — целое число без знака, 2 байта
  • LIBFPTR_TAG_TYPE_UINT_32 — целое число без знака, 4 байта
  • LIBFPTR_TAG_TYPE_VLN — целое число без знака, переменная длина
  • LIBFPTR_TAG_TYPE_STRING — строка
  • LIBFPTR_TAG_TYPE_UNIX_TIME — время, выраженное в количестве
    секунд, отсчитанных от 1 января 1970 года
  • LIBFPTR_TAG_TYPE_BOOL — флаг

Информация о реквизитах хранится внутри драйвера и обновляется по мере
обновления ФФД. Для получения актуальной информации используйте
актуальные версии драйвера.

Поддерживается для всех ККТ

Запись в лог

Запись в лог произвольного сообщения

|libfptr_log_write(L»MyTag», LIBFPTR_LOG_DEBUG, L»Мое отладочное сообщение»);
libfptr_log_write_ex(fptr, L»MyTag», LIBFPTR_LOG_DEBUG, L»Мое отладочное сообщение»);
|

|fptr.logWrite(L»MyTag», LIBFPTR_LOG_DEBUG, L»Мое отладочное сообщение»)
|

|fptr.logWrite(«MyTag», IFptr.LIBFPTR_LOG_DEBUG, «Мое отладочное сообщение»)
|

|fptr.logWrite(«MyTag», IFptr.LIBFPTR_LOG_DEBUG, «Мое отладочное сообщение»);
|

|fptr.logWrite(«MyTag», IFptr.LIBFPTR_LOG_DEBUG, «Мое отладочное сообщение»);
|

|[fptr logWrite:@»MyTag», level:LIBFPTR_LOG_DEBUG, @»Мое отладочное сообщение»];
|

|fptr.logWrite(«MyTag», Constants.LIBFPTR_LOG_DEBUG, «Мое отладочное сообщение»);
|

|begin
fptr.logWrite(‘MyTag’, fptr.LIBFPTR_LOG_DEBUG, ‘Мое отладочное сообщение’);
end;
|

|fptr.LogWrite(«MyTag», fptr10.LIBFPTR_LOG_DEBUG, «Мое отладочное сообщение»)
|

|Fptr.logWrite(«MyTag», Fptr.LIBFPTR_LOG_DEBUG, «Мое отладочное сообщение»);
|

Для записи сообщения в лог драйвера необходимо вызвать метод / logWrite()/ и указать в параметрах:

  • категорию логов (должна быть также указана в конфигурации логирования)
  • уровень сообщения
  • текст сообщения

В случае со скриптами драйвера вместо текста можно передать любой
поддерживаемый в JavaScript объект.

Уровень сообщения может принимать следующие значения:

  • LIBFPTR_LOG_ERROR — ошибка
  • LIBFPTR_LOG_WARN — предупреждение
  • LIBFPTR_LOG_INFO — информация
  • LIBFPTR_LOG_DEBUG — отладка

В случае с C-API существует два метода — /libfptr_log_write()/ и / libfptr_log_write_ex()/. Они отличаются тем, что первый записывает
сообщение в общий лог (в случае разделения логов по идентификаторам
объектов драйвера), а второй привязывает сообщение к заданному объекту
драйвера. В общем случае рекомендуется использовать именно / libfptr_log_write_ex()/ как более универсальный.

При использовании языковых обёрток сообщения всегда привязываются к
соответствующему объекту драйвера.

Получить параметры модели

Получение параметров текущей модели

|libfptr_read_model_flags(fptr);

bool cap54FZ = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_CAP_54FZ) != 0;
bool capManualClicheControl = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_CAP_MANUAL_CLICHE_CONTROL) != 0;
bool capNonPrintReports = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_CAP_DISABLE_PRINT_REPORTS) != 0;
uint capPaymentsCount = libfptr_get_param_int(fptr, LIBFPTR_PARAM_CAP_PAYMENTS_COUNT);
bool newPlatform = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_NEW_PLATFORM) != 0;
bool useLicenses = libfptr_get_param_bool(fptr, LIBFPTR_PARAM_USE_LICENSES) != 0;
uint platform = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DEVICE_PLATFORM_VERSION);
|

|fptr.readModelFlags();

bool cap54FZ = fptr.getParamBool(LIBFPTR_PARAM_CAP_54FZ);
bool capManualClicheControl = fptr.getParamBool(LIBFPTR_PARAM_CAP_MANUAL_CLICHE_CONTROL);
bool capNonPrintReports = fptr.getParamBool(LIBFPTR_PARAM_CAP_DISABLE_PRINT_REPORTS);
uint capPaymentsCount = fptr.getParamInt(LIBFPTR_PARAM_CAP_PAYMENTS_COUNT);
bool newPlatform = fptr.getParamBool(LIBFPTR_PARAM_NEW_PLATFORM);
bool useLicenses = fptr.getParamBool(LIBFPTR_PARAM_USE_LICENSES);
uint platform = fptr.getParamInt(LIBFPTR_PARAM_DEVICE_PLATFORM_VERSION);
|

|fptr.readModelFlags()

cap54FZ = fptr.getParamBool(IFptr.LIBFPTR_PARAM_CAP_54FZ)
capManualClicheControl = fptr.getParamBool(IFptr.LIBFPTR_PARAM_CAP_MANUAL_CLICHE_CONTROL)
capNonPrintReports = fptr.getParamBool(IFptr.LIBFPTR_PARAM_CAP_DISABLE_PRINT_REPORTS)
capPaymentsCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_CAP_PAYMENTS_COUNT)
newPlatform = fptr.getParamBool(IFptr.LIBFPTR_PARAM_NEW_PLATFORM)
useLicenses = fptr.getParamBool(IFptr.LIBFPTR_PARAM_USE_LICENSES)
platform = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DEVICE_PLATFORM_VERSION)
|

|fptr.readModelFlags();

boolean cap54FZ = fptr.getParamBool(IFptr.LIBFPTR_PARAM_CAP_54FZ);
boolean capManualClicheControl = fptr.getParamBool(IFptr.LIBFPTR_PARAM_CAP_MANUAL_CLICHE_CONTROL);
boolean capNonPrintReports = fptr.getParamBool(IFptr.LIBFPTR_PARAM_CAP_DISABLE_PRINT_REPORTS);
long capPaymentsCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_CAP_PAYMENTS_COUNT);
boolean newPlatform = fptr.getParamBool(IFptr.LIBFPTR_PARAM_NEW_PLATFORM);
boolean useLicenses = fptr.getParamBool(IFptr.LIBFPTR_PARAM_USE_LICENSES);
long platform = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DEVICE_PLATFORM_VERSION);
|

|fptr.readModelFlags();

boolean cap54FZ = fptr.getParamBool(IFptr.LIBFPTR_PARAM_CAP_54FZ);
boolean capManualClicheControl = fptr.getParamBool(IFptr.LIBFPTR_PARAM_CAP_MANUAL_CLICHE_CONTROL);
boolean capNonPrintReports = fptr.getParamBool(IFptr.LIBFPTR_PARAM_CAP_DISABLE_PRINT_REPORTS);
long capPaymentsCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_CAP_PAYMENTS_COUNT);
boolean newPlatform = fptr.getParamBool(IFptr.LIBFPTR_PARAM_NEW_PLATFORM);
boolean useLicenses = fptr.getParamBool(IFptr.LIBFPTR_PARAM_USE_LICENSES);
long platform = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DEVICE_PLATFORM_VERSION);
|

|[fptr readModelFlags];

bool cap54FZ = [fptr getParamBool:LIBFPTR_PARAM_CAP_54FZ];
bool capManualClicheControl = [fptr getParamBool:LIBFPTR_PARAM_CAP_MANUAL_CLICHE_CONTROL];
bool capNonPrintReports = [fptr getParamBool:LIBFPTR_PARAM_CAP_DISABLE_PRINT_REPORTS];
uint capPaymentsCount = [fptr getParamInt:LIBFPTR_PARAM_CAP_PAYMENTS_COUNT];
bool newPlatform = [fptr getParamBool:LIBFPTR_PARAM_NEW_PLATFORM];
bool useLicenses = [fptr getParamBool:LIBFPTR_PARAM_USE_LICENSES];
uint platform = [fptr getParamInt:LIBFPTR_PARAM_DEVICE_PLATFORM_VERSION];
|

|fptr.readModelFlags();

bool cap54FZ = fptr.getParamBool(Constants.LIBFPTR_PARAM_CAP_54FZ);
bool capManualClicheControl = fptr.getParamBool(Constants.LIBFPTR_PARAM_CAP_MANUAL_CLICHE_CONTROL);
bool capNonPrintReports = fptr.getParamBool(Constants.LIBFPTR_PARAM_CAP_DISABLE_PRINT_REPORTS);
int capPaymentsCount = fptr.getParamInt(Constants.LIBFPTR_PARAM_CAP_PAYMENTS_COUNT);
bool newPlatform = fptr.getParamBool(Constants.LIBFPTR_PARAM_NEW_PLATFORM);
bool useLicenses = fptr.getParamBool(Constants.LIBFPTR_PARAM_USE_LICENSES);
int platform = fptr.getParamInt(Constants.LIBFPTR_PARAM_DEVICE_PLATFORM_VERSION);
|

|var
cap54FZ: LongBool;
capManualClicheControl: LongBool;
capNonPrintReports: LongBool;
capPaymentsCount: LongInt;
newPlatform: LongBool;
useLicenses: LongBool;
platform: LongInt;
begin
fptr.readModelFlags;

cap54FZ                 := fptr.getParamBool(fptr.LIBFPTR_PARAM_CAP_54FZ);
capManualClicheControl  := fptr.getParamBool(fptr.LIBFPTR_PARAM_CAP_MANUAL_CLICHE_CONTROL);
capNonPrintReports      := fptr.getParamBool(fptr.LIBFPTR_PARAM_CAP_DISABLE_PRINT_REPORTS);
capPaymentsCount        := fptr.getParamInt(fptr.LIBFPTR_PARAM_CAP_PAYMENTS_COUNT);
newPlatform             := fptr.getParamBool(fptr.LIBFPTR_PARAM_NEW_PLATFORM);
useLicenses             := fptr.getParamBool(fptr.LIBFPTR_PARAM_USE_LICENSES);
platform                := fptr.getParamInt(fptr.LIBFPTR_PARAM_DEVICE_PLATFORM_VERSION);

end;
|

|fptr.ReadModelFlags();

cap54FZ := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_CAP_54FZ)
capManualClicheControl := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_CAP_MANUAL_CLICHE_CONTROL)
capNonPrintReports := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_CAP_DISABLE_PRINT_REPORTS)
capPaymentsCount := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_CAP_PAYMENTS_COUNT)
newPlatform := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_NEW_PLATFORM)
useLicenses := fptr.GetParamBool(fptr10.LIBFPTR_PARAM_USE_LICENSES)
platform := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DEVICE_PLATFORM_VERSION)
|

|Fptr.readModelFlags();

cap54FZ = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_CAP_54FZ);
capManualClicheControl = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_CAP_MANUAL_CLICHE_CONTROL);
capNonPrintReports = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_CAP_DISABLE_PRINT_REPORTS);
capPaymentsCount = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_CAP_PAYMENTS_COUNT);
newPlatform = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_NEW_PLATFORM);
useLicenses = Fptr.getParamBool(Fptr.LIBFPTR_PARAM_USE_LICENSES);
platform = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DEVICE_PLATFORM_VERSION);
|

Метод позволяет получить набор значений, описывающих возможности ККТ, с
которой в данный момент установлено соединение:

  • LIBFPTR_PARAM_CAP_54FZ — модель поддерживает 54-ФЗ
  • LIBFPTR_PARAM_CAP_MANUAL_CLICHE_CONTROL — модель поддерживает
    управление печатью клише
  • LIBFPTR_PARAM_CAP_DISABLE_PRINT_REPORTS — модель поддерживает
    отчеты без печати на чековой ленте
  • LIBFPTR_PARAM_CAP_PAYMENTS_COUNT — количество поддерживаемых
    протоколом ККТ типов оплат
  • LIBFPTR_PARAM_NEW_PLATFORM — модель относится к ККТ АТОЛ версий
    5.X (Платформа 5)
  • LIBFPTR_PARAM_USE_LICENSES — модель использует лицензии вместо
    кодов защиты
  • LIBFPTR_PARAM_DEVICE_PLATFORM_VERSION — версия платформы модели ККТ

Параметр LIBFPTR_PARAM_DEVICE_PLATFORM_VERSION может принимать
следующие значения:

  • LIBFPTR_PLATFORM_UNKNOWN — неизвестная платформа
  • LIBFPTR_PLATFORM_25 — платформа 2.5 (ККТ АТОЛ версий 3.X)
  • LIBFPTR_PLATFORM_50 — платформа 5.0 (ККТ АТОЛ версий 5.X)

Вместо параметра LIBFPTR_PARAM_NEW_PLATFORM рекомендуется использовать
параметр LIBFPTR_PARAM_DEVICE_PLATFORM_VERSION, который содержит более
полную информацию о платформе.

Поддерживается для всех ККТ

Получить информацию о контейнере ПО ККТ

Получение информации о контейнере ПО ККТ

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_FILENAME, L»C:\Atol-25F.con»);
libfptr_util_container_versions(fptr);

std::vector str(256);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_CONTAINER_FIRMWARE_VERSION, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_CONTAINER_FIRMWARE_VERSION, &str[0], str.size());
}
std::wstring firmwareVersion = std::wstring(&str[0]);

size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_CONTAINER_BOOTLOADER_VERSION, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_CONTAINER_BOOTLOADER_VERSION, &str[0], str.size());
}
std::wstring bootloaderVersion = std::wstring(&str[0]);

size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_CONTAINER_CONFIGURATION_VERSION, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_CONTAINER_CONFIGURATION_VERSION, &str[0], str.size());
}
std::wstring configurationVersion = std::wstring(&str[0]);

size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_CONTAINER_SCRIPTS_VERSION, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_CONTAINER_SCRIPTS_VERSION, &str[0], str.size());
}
std::wstring scriptsVersion = std::wstring(&str[0]);
|

|fptr.setParam(LIBFPTR_PARAM_FILENAME, L»C:\Atol-25F.con»);
fptr.utilContainerVersions();

std::wstring firmwareVersion = fptr.getParamString(LIBFPTR_PARAM_CONTAINER_FIRMWARE_VERSION);
std::wstring bootloaderVersion = fptr.getParamString(LIBFPTR_PARAM_CONTAINER_BOOTLOADER_VERSION);
std::wstring configurationVersion = fptr.getParamString(LIBFPTR_PARAM_CONTAINER_CONFIGURATION_VERSION);
std::wstring scriptsVersion = fptr.getParamString(LIBFPTR_PARAM_CONTAINER_SCRIPTS_VERSION);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FILENAME, ‘C:\Atol-25F.con’)
fptr.utilContainerVersions()

firmwareVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_CONTAINER_FIRMWARE_VERSION)
bootloaderVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_CONTAINER_BOOTLOADER_VERSION)
configurationVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_CONTAINER_CONFIGURATION_VERSION)
scriptsVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_CONTAINER_SCRIPTS_VERSION)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FILENAME, «C:\Atol-25F.con»);
fptr.utilContainerVersions();

String firmwareVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_CONTAINER_FIRMWARE_VERSION);
String bootloaderVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_CONTAINER_BOOTLOADER_VERSION);
String configurationVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_CONTAINER_CONFIGURATION_VERSION);
String scriptsVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_CONTAINER_SCRIPTS_VERSION);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FILENAME, «/storage/emulated/0/Atol-25F.con»);
fptr.utilContainerVersions();

String firmwareVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_CONTAINER_FIRMWARE_VERSION);
String bootloaderVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_CONTAINER_BOOTLOADER_VERSION);
String configurationVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_CONTAINER_CONFIGURATION_VERSION);
String scriptsVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_CONTAINER_SCRIPTS_VERSION);
|

|[fptr setParam:LIBFPTR_PARAM_FILENAME, @»/Users/user/Atol-25F.con»];
[fptr utilContainerVersions];

NSString *firmwareVersion = [fptr getParamString:LIBFPTR_PARAM_CONTAINER_FIRMWARE_VERSION];
NSString *bootloaderVersion = [fptr getParamString:LIBFPTR_PARAM_CONTAINER_BOOTLOADER_VERSION];
NSString *configurationVersion = [fptr getParamString:LIBFPTR_PARAM_CONTAINER_CONFIGURATION_VERSION];
NSString *scriptsVersion = [fptr getParamString:LIBFPTR_PARAM_CONTAINER_SCRIPTS_VERSION];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FILENAME, «C:\Atol-25F.con»);
fptr.utilContainerVersions();

String firmwareVersion = fptr.getParamString(Constants.LIBFPTR_PARAM_CONTAINER_FIRMWARE_VERSION);
String bootloaderVersion = fptr.getParamString(Constants.LIBFPTR_PARAM_CONTAINER_BOOTLOADER_VERSION);
String configurationVersion = fptr.getParamString(Constants.LIBFPTR_PARAM_CONTAINER_CONFIGURATION_VERSION);
String scriptsVersion = fptr.getParamString(Constants.LIBFPTR_PARAM_CONTAINER_SCRIPTS_VERSION);
|

|var
firmwareVersion: String;
bootloaderVersion: String;
configurationVersion: String;
scriptsVersion: String;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_FILENAME, ‘C:\Atol-25F.con’);
fptr.utilContainerVersions;

firmwareVersion         := fptr.getParamString(fptr.LIBFPTR_PARAM_CONTAINER_FIRMWARE_VERSION);
bootloaderVersion       := fptr.getParamString(fptr.LIBFPTR_PARAM_CONTAINER_BOOTLOADER_VERSION);
configurationVersion    := fptr.getParamString(fptr.LIBFPTR_PARAM_CONTAINER_CONFIGURATION_VERSION);
scriptsVersion          := fptr.getParamString(fptr.LIBFPTR_PARAM_CONTAINER_SCRIPTS_VERSION);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FILENAME, «C:\Atol-25F.con»)
fptr.UtilContainerVersions()

firmwareVersion := fptr.GetParamString(fptr10.LIBFPTR_PARAM_CONTAINER_FIRMWARE_VERSION)
bootloaderVersion := fptr.GetParamString(fptr10.LIBFPTR_PARAM_CONTAINER_BOOTLOADER_VERSION)
configurationVersion := fptr.GetParamString(fptr10.LIBFPTR_PARAM_CONTAINER_CONFIGURATION_VERSION)
scriptsVersion := fptr.GetParamString(fptr10.LIBFPTR_PARAM_CONTAINER_SCRIPTS_VERSION)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FILENAME, «C:\Atol-25F.con»);
Fptr.utilContainerVersions();

firmwareVersion = Fptr.getParamString(Fptr.LIBFPTR_PARAM_CONTAINER_FIRMWARE_VERSION);
bootloaderVersion = Fptr.getParamString(Fptr.LIBFPTR_PARAM_CONTAINER_BOOTLOADER_VERSION);
configurationVersion = Fptr.getParamString(Fptr.LIBFPTR_PARAM_CONTAINER_CONFIGURATION_VERSION);
scriptsVersion = Fptr.getParamString(Fptr.LIBFPTR_PARAM_CONTAINER_SCRIPTS_VERSION);
|

Для получения информации о контейнере ПО ККТ необходимо использовать
метод /utilContainerVersions/ и передать в параметре
LIBFPTR_PARAM_FILENAME путь к файлу контейнера.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_CONTAINER_BOOTLOADER_VERSION Версия загрузчика string
LIBFPTR_PARAM_CONTAINER_FIRMWARE_VERSION Версия ПО ККТ string
LIBFPTR_PARAM_CONTAINER_CONFIGURATION_VERSION Версия конфигурации
string
LIBFPTR_PARAM_CONTAINER_SCRIPTS_VERSION Версия шаблонов string
LIBFPTR_PARAM_CONTAINER_DIRECT_BOOT_VERSION Версия direct boot string

Если одна из версий пустая — соответствующая ей часть в контейнере
отсутствует.

Работает только с контейнерами ПО ККТ АТОЛ.

Задание дополнительных заголовка и подвала

Задание дополнительных заголовка и подвала

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_TEXT, L»ЗАГОЛОВОК 1\nЗАГОЛОВОК 2\n\n»);
libfptr_set_header_lines(fptr);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_TEXT, L»ПОДВАЛ 1\nПОДВАЛ 2\n\n»);
libfptr_set_footer_lines(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_TEXT, L»ЗАГОЛОВОК 1\nЗАГОЛОВОК 2\n\n»);
fptr.setHeaderLines();
fptr.setParam(LIBFPTR_PARAM_TEXT, L»ПОДВАЛ 1\nПОДВАЛ 2\n\n»);
fptr.setFooterLines();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, ‘ЗАГОЛОВОК 1\nЗАГОЛОВОК 2\n\n’)
fptr.setHeaderLines()
fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, ‘ПОДВАЛ 1\nПОДВАЛ 2\n\n’)
fptr.setFooterLines()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «ЗАГОЛОВОК 1\nЗАГОЛОВОК 2\n\n»);
fptr.setHeaderLines();
fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «ПОДВАЛ 1\nПОДВАЛ 2\n\n»);
fptr.setFooterLines();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «ЗАГОЛОВОК 1\nЗАГОЛОВОК 2\n\n»);
fptr.setHeaderLines();
fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «ПОДВАЛ 1\nПОДВАЛ 2\n\n»);
fptr.setFooterLines();
|

|[fptr setParam:LIBFPTR_PARAM_TEXT, @»ЗАГОЛОВОК 1\nЗАГОЛОВОК 2\n\n»];
[fptr setHeaderLines];
[fptr setParam:LIBFPTR_PARAM_TEXT, @»ПОДВАЛ 1\nПОДВАЛ 2\n\n»];
[fptr setFooterLines];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_TEXT, «ЗАГОЛОВОК 1\nЗАГОЛОВОК 2\n\n»);
fptr.setHeaderLines();
fptr.setParam(Constants.LIBFPTR_PARAM_TEXT, «ПОДВАЛ 1\nПОДВАЛ 2\n\n»);
fptr.setFooterLines();
|

|fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, ‘ЗАГОЛОВОК 1\nЗАГОЛОВОК 2\n\n’);
fptr.setHeaderLines;
fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, ‘ПОДВАЛ 1\nПОДВАЛ 2\n\n’);
fptr.setFooterLines;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_TEXT, «ЗАГОЛОВОК 1\nЗАГОЛОВОК 2\n\n»)
fptr.SetHeaderLines()
fptr.SetParam(fptr10.LIBFPTR_PARAM_TEXT, «ПОДВАЛ 1\nПОДВАЛ 2\n\n»)
fptr.SetFooterLines()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_TEXT, «ЗАГОЛОВОК 1\nЗАГОЛОВОК 2\n\n»);
Fptr.setHeaderLines();
Fptr.setParam(Fptr.LIBFPTR_PARAM_TEXT, «ПОДВАЛ 1\nПОДВАЛ 2\n\n»);
Fptr.setFooterLines();
|

С помощью методов setHeaderLines() и setFooterLines() можно задать
допольнительные строки, которые будут печататься между клише и началом
документа и после окончания документа. Если нужно передать несколько
строк, их нужно разделять символом \n. Подробнее про формат клише и
порядок печати в разделе Работа с клише <#cliche>.

Методы доступны только для ККТ версий 5.6 и выше.

Управление соединением с ОФД

Деактивация соединения с ОФД

|libfptr_disable_ofd_channel(fptr);
|

|fptr.disableOfdChannel();
|

|fptr.disableOfdChannel()
|

|fptr.disableOfdChannel();
|

|fptr.disableOfdChannel();
|

|[fptr disableOfdChannel];
|

|fptr.disableOfdChannel();
|

|fptr.disableOfdChannel;
|

|fptr.DisableOfdChannel()
|

|Fptr.disableOfdChannel();
|

Активация соединения с ОФД

|libfptr_enable_ofd_channel(fptr);
|

|fptr.enableOfdChannel();
|

|fptr.enableOfdChannel()
|

|fptr.enableOfdChannel();
|

|fptr.enableOfdChannel();
|

|[fptr enableOfdChannel];
|

|fptr.enableOfdChannel();
|

|fptr.enableOfdChannel;
|

|fptr.EnableOfdChannel()
|

|Fptr.enableOfdChannel();
|

В случае, если настроена связь с ОФД через драйвер, можно выключать её и
включать обратно без перенастройки драйвера. Для выключения используется
метод /disableOfdChannel()/, а для включения — /enableOfdChannel()/.
Повторные вызовы этих методов безопасны.

Поддерживается для всех ККТ

Шаблоны ККТ

ККТ версий 5.X позволяют расширять свою функциональность с помощью
пользовательский шаблонов. Драйвер предоставляет следующие методы для
работы с ними.

Запуск шаблона

Запуск шаблона с менее чем 5 результатами

|// Вспомогательная функция для чтения строковых параметров
std::wstring getStr(libfptr_handle fptr, int paramID) {
std::vector str(32);
int size = libfptr_get_param_str(fptr, paramID, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, paramID, &str[0], str.size());
}
return std::wstring(&str[0]);
}

uchar param[] = {0x01, 0x00, 0x00, 0x00};
libfptr_set_param_str(fptr, LIBFPTR_PARAM_USER_SCRIPT_ID, L»1002″);
libfptr_set_param_bytearray(fptr, LIBFPTR_PARAM_USER_SCRIPT_PARAMETER, &param[0], sizeof(param) / sizeof(param[0]));
libfptr_call_script(fptr);

std::wstring param1 = getStr(fptr, LIBFPTR_PARAM_USER_SCRIPT_RESULT_1);
|

|fptr.setParam(LIBFPTR_PARAM_USER_SCRIPT_ID, L»1002″);
fptr.setParam(LIBFPTR_PARAM_USER_SCRIPT_PARAMETER, {0x01, 0x00, 0x00, 0x00});
fptr.callScript();
std::wstring param1 = fptr.getParamString(LIBFPTR_PARAM_USER_SCRIPT_RESULT_1);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_USER_SCRIPT_ID, «1002»)
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_SCRIPT_PARAMETER, [0x01, 0x00, 0x00, 0x00])
fptr.callScript()
param1 = fptr.getParamString(IFptr.LIBFPTR_PARAM_USER_SCRIPT_RESULT_1)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_USER_SCRIPT_ID, «1002»);
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_SCRIPT_PARAMETER, new byte[]{0x01, 0x00, 0x00, 0x00});
fptr.callScript();
String param1 = fptr.getParamString(IFptr.LIBFPTR_PARAM_USER_SCRIPT_RESULT_1);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_USER_SCRIPT_ID, «1002»);
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_SCRIPT_PARAMETER, new byte[]{0x01, 0x00, 0x00, 0x00});
fptr.callScript();
String param1 = fptr.getParamString(IFptr.LIBFPTR_PARAM_USER_SCRIPT_RESULT_1);
|

|uchar param[] = {0x01, 0x00, 0x00, 0x00};
[fptr setParam:LIBFPTR_PARAM_USER_SCRIPT_ID NSStringParam:@»1002″];
[fptr setParam:LIBFPTR_PARAM_USER_SCRIPT_PARAMETER NSDataParam:[NSData dataWithBytes:(const void*)param length:sizeof(param)]];
[fptr callScript];
NSString *param1 = [fptr getParamString:LIBFPTR_PARAM_USER_SCRIPT_RESULT_1];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_USER_SCRIPT_ID, «1002»);
fptr.setParam(Constants.LIBFPTR_PARAM_USER_SCRIPT_PARAMETER, new byte[]{0x01, 0x00, 0x00, 0x00});
fptr.callScript();
String param1 = fptr.getParamString(Constants.LIBFPTR_PARAM_USER_SCRIPT_RESULT_1);
|

|var
param: Array[0 .. 3] of Byte = ($01, $00, $00, $00);
param_variant: Variant;
i: Integer;
param1: String;
begin
param_variant := VarArrayCreate([0, high(param)], varByte);
for i := VarArrayLowBound(param_variant, 1) to VarArrayHighBound(param_variant, 1) do
begin
VarArrayPut(param_variant, param[i], [i]);
end;
fptr.setParam(fptr.LIBFPTR_PARAM_USER_SCRIPT_ID, ‘1002’);
fptr.setParam(fptr.LIBFPTR_PARAM_USER_SCRIPT_PARAMETER, param_variant);
fptr.callScript;

unitVersion := fptr.getParamString(fptr.LIBFPTR_PARAM_USER_SCRIPT_RESULT_1);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_USER_SCRIPT_ID, «1002»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_USER_SCRIPT_PARAMETER, []byte{0x01, 0x00, 0x00, 0x00})
fptr.CallScript();
String param1 = fptr.GetParamString(fptr10.LIBFPTR_PARAM_USER_SCRIPT_RESULT_1);
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_USER_SCRIPT_ID, «1002»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_USER_SCRIPT_PARAMETER, new Uint8Array([0x01, 0x00, 0x00, 0x00]));
Fptr.callScript();
param1 = Fptr.getParamString(Fptr.LIBFPTR_PARAM_USER_SCRIPT_RESULT_1);
|

Запуск шаблона с любым количеством результатов

|// Вспомогательная функция для чтения строковых параметров
std::wstring getStr(libfptr_handle fptr, int paramID) {
std::vector str(32);
int size = libfptr_get_param_str(fptr, paramID, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, paramID, &str[0], str.size());
}
return std::wstring(&str[0]);
}

// Вспомогательная функция чтения следующей записи
int readNextRecord(libfptr_handle fptr, const std::wstring &recordsID) {
libfptr_set_param_str(fptr, LIBFPTR_PARAM_RECORDS_ID, recordsID.c_str());
return libfptr_read_next_record(fptr);
}

uchar param[] = {0x01, 0x00, 0x00, 0x00};
libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_EXEC_USER_SCRIPT);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_USER_SCRIPT_ID, L»1002″);
libfptr_set_param_bytearray(fptr, LIBFPTR_PARAM_USER_SCRIPT_PARAMETER, &param[0], sizeof(param) / sizeof(param[0]));
libfptr_begin_read_records(handle);
std::wstring recordsID = getStr(fptr, LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
std::wstring result = getStr(fptr, LIBFPTR_PARAM_USER_SCRIPT_PARAMETER);
}

libfptr_set_param_str(fptr, LIBFPTR_PARAM_RECORDS_ID, recordsID.c_str());
libfptr_end_read_records(fptr);
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(Fptr &fptr, const std::wstring &recordsID)
{
fptr.setParam(LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_EXEC_USER_SCRIPT);
fptr.setParam(LIBFPTR_PARAM_USER_SCRIPT_ID, L»1002″);
fptr.setParam(LIBFPTR_PARAM_USER_SCRIPT_PARAMETER, {0x01, 0x00, 0x00, 0x00});
fptr.beginReadRecords();
std::wstring recordsID = fptr.getParamString(LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
std::wstring result = fptr.getParamString(LIBFPTR_PARAM_USER_SCRIPT_PARAMETER);
}

fptr.setParam(LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|# Вспомогательная функция чтения следующей записи
def readNextRecord(fptr, recordsID):
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID)
return fptr.readNextRecord()

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_EXEC_USER_SCRIPT)
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_SCRIPT_ID, «1002»)
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_SCRIPT_PARAMETER, [0x01, 0x00, 0x00, 0x00])
fptr.beginReadRecords()
recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);

while readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK:
param = fptr.getParamString(IFptr.LIBFPTR_PARAM_USER_SCRIPT_PARAMETER)

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID)
fptr.endReadRecords()
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_EXEC_USER_SCRIPT);
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_SCRIPT_ID, «1002»);
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_SCRIPT_PARAMETER, new byte[]{0x01, 0x00, 0x00, 0x00});
fptr.beginReadRecords();
String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK) {
String result = fptr.getParamString(IFptr.LIBFPTR_PARAM_USER_SCRIPT_PARAMETER);
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_EXEC_USER_SCRIPT);
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_SCRIPT_ID, «1002»);
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_SCRIPT_PARAMETER, new byte[]{0x01, 0x00, 0x00, 0x00});
fptr.beginReadRecords();
String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == IFptr.LIBFPTR_OK) {
String result = fptr.getParamString(IFptr.LIBFPTR_PARAM_USER_SCRIPT_PARAMETER);
}

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr *fptr, NSString *recordsID) {
[fptr setParam:LIBFPTR_PARAM_RECORDS_ID NSStringParam:recordsID];
return [fptr readNextRecord];
}

uchar param[] = {0x01, 0x00, 0x00, 0x00};
[fptr setParam:LIBFPTR_PARAM_RECORDS_TYPE intParam:LIBFPTR_RT_EXEC_USER_SCRIPT];
[fptr setParam:LIBFPTR_PARAM_USER_SCRIPT_ID NSStringParam:@»1002″];
[fptr setParam:LIBFPTR_PARAM_USER_SCRIPT_PARAMETER NSDataParam:[NSData dataWithBytes:(const void*)param length:sizeof(param)]];
[fptr beginReadRecords];
NSString *recordsID = [fptr getParamString:LIBFPTR_PARAM_RECORDS_ID];

while (readNextRecord(fptr, recordsID) == LIBFPTR_OK)
{
NSString *result = [fptr getParamString:LIBFPTR_PARAM_USER_SCRIPT_PARAMETER];
}

[fptr setParam:LIBFPTR_PARAM_RECORDS_ID NSStringParam:recordsID];
[fptr endReadRecords];
|

|// Вспомогательная функция чтения следующей записи
int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_TYPE, Constants.LIBFPTR_RT_EXEC_USER_SCRIPT);
fptr.setParam(Constants.LIBFPTR_PARAM_USER_SCRIPT_ID, «1002»);
fptr.setParam(Constants.LIBFPTR_PARAM_USER_SCRIPT_PARAMETER, new byte[]{0x01, 0x00, 0x00, 0x00});
fptr.beginReadRecords();
String recordsID = fptr.getParamString(Constants.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(fptr, recordsID) == Constants.LIBFPTR_OK) {
String param = fptr.getParamString(Constants.LIBFPTR_PARAM_USER_SCRIPT_PARAMETER);
}

fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords();
|

|// Вспомогательная функция чтения следующей записи
function readNextRecord(fptr: OleVariant; recordsID: String): integer;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
Result := fptr.readNextRecord;
end;

var
recordsID: String;
script_result: String;
param: Array[0 .. 3] of Byte = ($01, $00, $00, $00);
param_variant: Variant;
i: Integer;
begin
param_variant := VarArrayCreate([0, high(param)], varByte);
for i := VarArrayLowBound(param_variant, 1) to VarArrayHighBound(param_variant, 1) do
begin
VarArrayPut(param_variant, param[i], [i]);
end;
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_TYPE, fptr.LIBFPTR_RT_EXEC_USER_SCRIPT);
fptr.setParam(fptr.LIBFPTR_PARAM_USER_SCRIPT_ID, ‘1002’);
fptr.setParam(fptr.LIBFPTR_PARAM_USER_SCRIPT_PARAMETER, param_variant);
fptr.beginReadRecords;
recordsID := fptr.getParamString(fptr.LIBFPTR_PARAM_RECORDS_ID);

While readNextRecord(fptr, recordsID) = fptr.LIBFPTR_OK do
begin
    script_result := fptr.getParamString(fptr.LIBFPTR_PARAM_USER_SCRIPT_PARAMETER);
end;

fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
fptr.endReadRecords;

end;
|

|// Вспомогательная функция чтения следующей записи
func readNextRecord(fptr *fptr10.IFptr, recordsID string) error {
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_ID, recordsID)
return fptr.ReadNextRecord()
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_TYPE, fptr10.LIBFPTR_RT_EXEC_USER_SCRIPT)
fptr.SetParam(fptr10.LIBFPTR_PARAM_USER_SCRIPT_ID, «1002»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_USER_SCRIPT_PARAMETER, []byte{0x01, 0x00, 0x00, 0x00})
fptr.BeginReadRecords()
recordsID := fptr.GetParamString(fptr10.LIBFPTR_PARAM_RECORDS_ID)

for readNextRecord(fptr, recordsID) == nil {
result := fptr.GetParamString(fptr10.LIBFPTR_PARAM_USER_SCRIPT_PARAMETER)
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_ID, recordsID)
fptr.EndReadRecords()
|

|// Вспомогательная функция чтения следующей записи
function readNextRecord(recordsID) {
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return Fptr.readNextRecord();
}

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_TYPE, Fptr.LIBFPTR_RT_EXEC_USER_SCRIPT);
Fptr.setParam(Fptr.LIBFPTR_PARAM_USER_SCRIPT_ID, «1002»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_USER_SCRIPT_PARAMETER, new Uint8Array([0x01, 0x00, 0x00, 0x00]));
Fptr.beginReadRecords();
var recordsID = Fptr.getParamString(Fptr.LIBFPTR_PARAM_RECORDS_ID);

while (readNextRecord(recordsID) == Fptr.LIBFPTR_OK) {
param = Fptr.getParamString(Fptr.LIBFPTR_PARAM_USER_SCRIPT_PARAMETER);
}

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
Fptr.endReadRecords();
|

Для запуска шаблона ККТ необходимо вызвать метод /callScript()/ и
передать ему идентификатор шаблона в параметре
LIBFPTR_PARAM_USER_SCRIPT_ID и параметр шаблона в параметре
LIBFPTR_PARAM_USER_SCRIPT_PARAMETER. Параметр
LIBFPTR_PARAM_USER_SCRIPT_PARAMETER интерпретируется как массив
байтов. В ответ будут возвращены до 5 результатов в параметрах
LIBFPTR_PARAM_USER_SCRIPT_RESULT_, где N — число от 1 до 5. Если
результата с заданным порядковым номером нет, он будет пустым. По
умолчанию каждый результат шаблона — байтовый массив. Для интерпретации
результата с другим типом используйте различные методы получения
параметров из раздела Методы и параметры драйвера
<#methods_setters_getters>.

В случае, если количество выходных параметров превышает 5, то можно
воспользоваться последовательным вычитыванием результатов шаблона. Для
этого необходимо вызвать метод /beginReadRecords()/ с типом данных
LIBFPTR_RT_EXEC_USER_SCRIPT и входными параметрами, аналогичными
методу /callScript()/. На каждой итерации /readNextRecord()/ будет
возвращать один результат в параметре LIBFPTR_PARAM_USER_SCRIPT_PARAMETER.

Поддерживается только для ККТ версий 5.X

Получение размера памяти

Получение размера памяти

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_USER_MEMORY_OPERATION, LIBFPTR_UMO_GET_SIZE);
libfptr_user_memory_operation(fptr);
uint cellsCount = libfptr_get_param_int(fptr, LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(LIBFPTR_PARAM_USER_MEMORY_OPERATION, LIBFPTR_UMO_GET_SIZE);
fptr.userMemoryOperation();
uint cellsCount = fptr.getParamInt(LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, IFptr.LIBFPTR_UMO_GET_SIZE)
fptr.userMemoryOperation()
cellsCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, IFptr.LIBFPTR_UMO_GET_SIZE);
fptr.userMemoryOperation();
long cellsCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, IFptr.LIBFPTR_UMO_GET_SIZE);
fptr.userMemoryOperation();
long cellsCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_COUNT);
|

|[fptr setParam:LIBFPTR_PARAM_USER_MEMORY_OPERATION intParam:LIBFPTR_UMO_GET_SIZE];
[fptr userMemoryOperation];
uint cellsCount = [fptr getParamString:LIBFPTR_PARAM_COUNT];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_USER_MEMORY_OPERATION, Constants.LIBFPTR_UMO_GET_SIZE);
fptr.userMemoryOperation();
uint cellsCount = fptr.getParamInt(Constants.LIBFPTR_PARAM_COUNT);
|

|var
cellsCount: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, fptr.LIBFPTR_UMO_GET_SIZE);
fptr.queryData;
cellsCount := fptr.getParamInt(fptr.LIBFPTR_PARAM_COUNT);
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_USER_MEMORY_OPERATION, fptr10.LIBFPTR_UMO_GET_SIZE);
fptr.UserMemoryOperation();
cellsCount := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_COUNT);
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, Fptr.LIBFPTR_UMO_GET_SIZE);
Fptr.userMemoryOperation();
cellsCount = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_COUNT);
|

Для получения размера памяти ККТ необходимо вызвать метод / userMemoryOperation()/ с типом операции
LIBFPTR_PARAM_USER_MEMORY_OPERATION равным LIBFPTR_UMO_GET_SIZE.
Размер памяти в ячейках вернется в параметре LIBFPTR_PARAM_COUNT.

Поддерживается только для ККТ версий 5.X

Чтение данных из ОЗУ

Чтение массива байтов

|std::vector getByteArray(libfptr_handle fptr, int paramID)
{
std::vector bfr(128);
int size = libfptr_get_param_bytearray(fptr, paramID, &bfr[0], bfr.size());
if (size > bfr.size())
{
bfr.resize(size);
libfptr_get_param_bytearray(fptr, paramID, &bfr[0], bfr.size());
}
bfr.resize(size);
return bfr;
}

libfptr_set_param_int(fptr, LIBFPTR_PARAM_USER_MEMORY_OPERATION, LIBFPTR_UMO_READ_DATA);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_COUNT, 1);
libfptr_user_memory_operation(fptr);
std::vector data = getByteArray(fptr, LIBFPTR_PARAM_USER_MEMORY_DATA);
|

|fptr.setParam(LIBFPTR_PARAM_USER_MEMORY_OPERATION, LIBFPTR_UMO_READ_DATA);
fptr.setParam(LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.setParam(LIBFPTR_PARAM_COUNT, 1);
fptr.userMemoryOperation();
std::vector cellsCount = fptr.getParamByteArray(LIBFPTR_PARAM_USER_MEMORY_DATA);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, IFptr.LIBFPTR_UMO_READ_DATA)
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0)
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNT, 1)
fptr.userMemoryOperation()
cellsCount = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_USER_MEMORY_DATA)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, IFptr.LIBFPTR_UMO_READ_DATA);
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNT, 1);
fptr.userMemoryOperation();
byte[] data = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_USER_MEMORY_DATA);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, IFptr.LIBFPTR_UMO_READ_DATA);
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.setParam(IFptr.LIBFPTR_PARAM_COUNT, 1);
fptr.userMemoryOperation();
byte[] data = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_USER_MEMORY_DATA);
|

|[fptr setParam:LIBFPTR_PARAM_USER_MEMORY_OPERATION intParam:LIBFPTR_UMO_READ_DATA];
[fptr setParam:LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0];
[fptr setParam:LIBFPTR_PARAM_COUNT, 1];
[fptr userMemoryOperation];
NSData *data = [fptr getParamByteArray:LIBFPTR_PARAM_USER_MEMORY_DATA];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_USER_MEMORY_OPERATION, Constants.LIBFPTR_UMO_READ_DATA);
fptr.setParam(Constants.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.setParam(Constants.LIBFPTR_PARAM_COUNT, 1);
fptr.userMemoryOperation();
byte[] data = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_USER_MEMORY_DATA);
|

|var
data: Variant;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, fptr.LIBFPTR_UMO_READ_DATA);
fptr.setParam(fptr.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.setParam(fptr.LIBFPTR_PARAM_COUNT, 1);
fptr.userMemoryOperation;
data := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_USER_MEMORY_DATA);
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_USER_MEMORY_OPERATION, fptr10.LIBFPTR_UMO_READ_DATA);
fptr.SetParam(fptr10.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.SetParam(fptr10.LIBFPTR_PARAM_COUNT, 1);
fptr.UserMemoryOperation();
data := fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_USER_MEMORY_DATA);
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, Fptr.LIBFPTR_UMO_READ_DATA);
Fptr.setParam(Fptr.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
Fptr.setParam(Fptr.LIBFPTR_PARAM_COUNT, 1);
Fptr.userMemoryOperation();
data = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_USER_MEMORY_DATA);
|

Чтение строки

|std::wstring getStr(libfptr_handle fptr, int paramID)
{
std::vector str(32);
int size = libfptr_get_param_str(fptr, paramID, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, paramID, &str[0], str.size());
}
return std::wstring(&str[0]);
}

libfptr_set_param_int(fptr, LIBFPTR_PARAM_USER_MEMORY_OPERATION, LIBFPTR_UMO_READ_STRING);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
libfptr_user_memory_operation(fptr);
std::wstring data = getStr(fptr, LIBFPTR_PARAM_USER_MEMORY_STRING);
|

|fptr.setParam(LIBFPTR_PARAM_USER_MEMORY_OPERATION, LIBFPTR_UMO_READ_STRING);
fptr.setParam(LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.userMemoryOperation();
std::wstring cellsCount = fptr.getParamString(LIBFPTR_PARAM_USER_MEMORY_STRING);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, IFptr.LIBFPTR_UMO_READ_STRING)
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0)
fptr.userMemoryOperation()
cellsCount = fptr.getParamString(IFptr.LIBFPTR_PARAM_USER_MEMORY_STRING)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, IFptr.LIBFPTR_UMO_READ_STRING);
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.userMemoryOperation();
byte[] data = fptr.getParamString(IFptr.LIBFPTR_PARAM_USER_MEMORY_STRING);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, IFptr.LIBFPTR_UMO_READ_STRING);
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.userMemoryOperation();
byte[] data = fptr.getParamString(IFptr.LIBFPTR_PARAM_USER_MEMORY_STRING);
|

|[fptr setParam:LIBFPTR_PARAM_USER_MEMORY_OPERATION intParam:LIBFPTR_UMO_READ_STRING];
[fptr setParam:LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0];
[fptr userMemoryOperation];
NSData *data = [fptr getParamString:LIBFPTR_PARAM_USER_MEMORY_STRING];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_USER_MEMORY_OPERATION, Constants.LIBFPTR_UMO_READ_STRING);
fptr.setParam(Constants.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.userMemoryOperation();
byte[] data = fptr.getParamString(Constants.LIBFPTR_PARAM_USER_MEMORY_STRING);
|

|var
data: string;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, fptr.LIBFPTR_UMO_READ_STRING);
fptr.setParam(fptr.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.userMemoryOperation;
data := fptr.getParamString(fptr.LIBFPTR_PARAM_USER_MEMORY_STRING);
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_USER_MEMORY_OPERATION, fptr10.LIBFPTR_UMO_READ_STRING);
fptr.SetParam(fptr10.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.UserMemoryOperation();
data := fptr.GetParamString(fptr10.LIBFPTR_PARAM_USER_MEMORY_STRING);
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, Fptr.LIBFPTR_UMO_READ_STRING);
Fptr.setParam(Fptr.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
Fptr.userMemoryOperation();
data = Fptr.getParamString(Fptr.LIBFPTR_PARAM_USER_MEMORY_DATA);
|

Для чтения массива байтов из памяти ККТ необходимо вызвать метод / userMemoryOperation()/ с типом операции
LIBFPTR_PARAM_USER_MEMORY_OPERATION равным LIBFPTR_UMO_READ_DATA,
указав адрес в LIBFPTR_PARAM_USER_MEMORY_ADDRESS и количество ячеек в
LIBFPTR_PARAM_COUNT. Данные из указанных ячеек вернутся в параметре
LIBFPTR_PARAM_USER_MEMORY_DATA.

Для чтения строки из памяти ККТ необходимо вызвать метод / userMemoryOperation()/ с типом операции
LIBFPTR_PARAM_USER_MEMORY_OPERATION равным LIBFPTR_UMO_READ_STRING,
указав адрес в LIBFPTR_PARAM_USER_MEMORY_ADDRESS. Строка из указанных
ячеек вернутся в параметре LIBFPTR_PARAM_USER_MEMORY_STRING.

Поддерживается только для ККТ версий 5.X

Запись данных в ОЗУ

Запись массива байтов

|uchar data[] = {0x01, 0x00, 0x00, 0x00};
libfptr_set_param_int(fptr, LIBFPTR_PARAM_USER_MEMORY_OPERATION, LIBFPTR_UMO_WRITE_DATA);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
libfptr_set_param_bytearray(fptr, LIBFPTR_PARAM_USER_MEMORY_DATA, &data[0], sizeof(data) / sizeof(data[0]));
libfptr_user_memory_operation(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_USER_MEMORY_OPERATION, LIBFPTR_UMO_WRITE_DATA);
fptr.setParam(LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.setParam(LIBFPTR_PARAM_USER_MEMORY_DATA, {0x01, 0x00, 0x00, 0x00});
fptr.userMemoryOperation();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, IFptr.LIBFPTR_UMO_WRITE_DATA)
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0)
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_DATA, [0x01, 0x00, 0x00, 0x00])
fptr.userMemoryOperation()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, IFptr.LIBFPTR_UMO_WRITE_DATA);
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_DATA, new byte[]{0x01, 0x00, 0x00, 0x00});
fptr.userMemoryOperation();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, IFptr.LIBFPTR_UMO_WRITE_DATA);
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_DATA, new byte[]{0x01, 0x00, 0x00, 0x00});
fptr.userMemoryOperation();
|

|uchar data[] = {0x01, 0x00, 0x00, 0x00};
[fptr setParam:LIBFPTR_PARAM_USER_MEMORY_OPERATION intParam:LIBFPTR_UMO_WRITE_DATA];
[fptr setParam:LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0];
[fptr setParam:LIBFPTR_PARAM_USER_MEMORY_DATA NSDataParam:[NSData dataWithBytes:(const void*)data length:sizeof(data)]];
[fptr userMemoryOperation];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_USER_MEMORY_OPERATION, Constants.LIBFPTR_UMO_WRITE_DATA);
fptr.setParam(Constants.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.setParam(Constants.LIBFPTR_PARAM_USER_MEMORY_DATA, new byte[]{0x01, 0x00, 0x00, 0x00});
fptr.userMemoryOperation();
|

|var
data: Array[0 .. 3] of Byte = ($01, $00, $00, $00);
data_variant: Variant;
i: Integer;
begin
data_variant := VarArrayCreate([0, high(data)], varByte);
for i := VarArrayLowBound(data_variant, 1) to VarArrayHighBound(data_variant, 1) do
begin
VarArrayPut(data_variant, data[i], [i]);
end;
fptr.setParam(fptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, fptr.LIBFPTR_UMO_WRITE_DATA);
fptr.setParam(fptr.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.setParam(fptr.LIBFPTR_PARAM_USER_MEMORY_DATA, data_variant);
fptr.userMemoryOperation;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_USER_MEMORY_OPERATION, fptr10.LIBFPTR_UMO_WRITE_DATA);
fptr.SetParam(fptr10.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.SetParam(fptr10.LIBFPTR_PARAM_USER_MEMORY_DATA, []byte{0x01, 0x00, 0x00, 0x00});
fptr.UserMemoryOperation();
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, Fptr.LIBFPTR_UMO_WRITE_DATA);
Fptr.setParam(Fptr.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
Fptr.setParam(Fptr.LIBFPTR_PARAM_USER_MEMORY_DATA, new Uint8Array([0x01, 0x00, 0x00, 0x00]));
Fptr.userMemoryOperation();
|

Запись строки

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_USER_MEMORY_OPERATION, LIBFPTR_UMO_WRITE_DATA);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_USER_MEMORY_STRING, «12345678»);
libfptr_user_memory_operation(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_USER_MEMORY_OPERATION, LIBFPTR_UMO_WRITE_DATA);
fptr.setParam(LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.setParam(LIBFPTR_PARAM_USER_MEMORY_STRING, L»123456789″);
fptr.userMemoryOperation();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, IFptr.LIBFPTR_UMO_WRITE_DATA)
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0)
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_STRING, «123456789»)
fptr.userMemoryOperation()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, IFptr.LIBFPTR_UMO_WRITE_DATA);
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_STRING, «12345678»);
fptr.userMemoryOperation();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, IFptr.LIBFPTR_UMO_WRITE_DATA);
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_STRING, «12345678»);
fptr.userMemoryOperation();
|

|[fptr setParam:LIBFPTR_PARAM_USER_MEMORY_OPERATION intParam:LIBFPTR_UMO_WRITE_DATA];
[fptr setParam:LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0];
[fptr setParam:LIBFPTR_PARAM_USER_MEMORY_STRING NSStringParam:@»12345678″];
[fptr userMemoryOperation];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_USER_MEMORY_OPERATION, Constants.LIBFPTR_UMO_WRITE_DATA);
fptr.setParam(Constants.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.setParam(Constants.LIBFPTR_PARAM_USER_MEMORY_STRING, «12345678»);
fptr.userMemoryOperation();
|

|fptr.setParam(fptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, fptr.LIBFPTR_UMO_WRITE_DATA);
fptr.setParam(fptr.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.setParam(fptr.LIBFPTR_PARAM_USER_MEMORY_STRING, ‘12345678’);
fptr.userMemoryOperation;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_USER_MEMORY_OPERATION, fptr10.LIBFPTR_UMO_WRITE_DATA);
fptr.SetParam(fptr10.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
fptr.SetParam(fptr10.LIBFPTR_PARAM_USER_MEMORY_STRING, «12345678»);
fptr.UserMemoryOperation();
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, Fptr.LIBFPTR_UMO_WRITE_DATA);
Fptr.setParam(Fptr.LIBFPTR_PARAM_USER_MEMORY_ADDRESS, 0);
Fptr.setParam(Fptr.LIBFPTR_PARAM_USER_MEMORY_STRING, «12345678»);
Fptr.userMemoryOperation();
|

Для записи массива байтов в память ККТ необходимо вызвать метод / userMemoryOperation()/ с типом операции
LIBFPTR_PARAM_USER_MEMORY_OPERATION равным LIBFPTR_UMO_WRITE_DATA,
указав адрес в LIBFPTR_PARAM_USER_MEMORY_ADDRESS и данные в
LIBFPTR_PARAM_USER_MEMORY_DATA

Для записи строки в память ККТ необходимо вызвать метод / userMemoryOperation()/ с типом операции
LIBFPTR_PARAM_USER_MEMORY_OPERATION равным LIBFPTR_UMO_WRITE_STRING,
указав адрес в LIBFPTR_PARAM_USER_MEMORY_ADDRESS и строку в
LIBFPTR_PARAM_USER_MEMORY_STRING.

Поддерживается только для ККТ версий 5.X

Сохранение данных

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_USER_MEMORY_OPERATION, LIBFPTR_UMO_COMMIT);
libfptr_user_memory_operation(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_USER_MEMORY_OPERATION, LIBFPTR_UMO_COMMIT);
fptr.userMemoryOperation();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, IFptr.LIBFPTR_UMO_COMMIT)
fptr.userMemoryOperation()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, IFptr.LIBFPTR_UMO_COMMIT);
fptr.userMemoryOperation();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, IFptr.LIBFPTR_UMO_COMMIT);
fptr.userMemoryOperation();
|

|[fptr setParam:LIBFPTR_PARAM_USER_MEMORY_OPERATION intParam:LIBFPTR_UMO_COMMIT];
[fptr userMemoryOperation];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_USER_MEMORY_OPERATION, Constants.LIBFPTR_UMO_COMMIT);
fptr.userMemoryOperation();
|

|fptr.setParam(fptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, fptr.LIBFPTR_UMO_COMMIT);
fptr.userMemoryOperation;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_USER_MEMORY_OPERATION, fptr10.LIBFPTR_UMO_COMMIT);
fptr.UserMemoryOperation();
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_USER_MEMORY_OPERATION, Fptr.LIBFPTR_UMO_COMMIT);
Fptr.userMemoryOperation();
|

Для сохранения записанных данных в энергонезависимую память ККТ
необходимо вызвать метод /userMemoryOperation()/ с типом операции
LIBFPTR_PARAM_USER_MEMORY_OPERATION равным LIBFPTR_UMO_COMMIT.

Поддерживается только для ККТ версий 5.X

Запись шаблона в ККТ

Запись шаблона в ККТ

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_FWT_SCRIPTS);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_FILENAME, L»C:\PScript.bin»);
libfptr_flash_firmware(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_FWT_SCRIPTS);
fptr.setParam(LIBFPTR_PARAM_FILENAME, «C:\PScript.bin»);
fptr.flashFirmware();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_FWT_SCRIPTS)
fptr.setParam(IFptr.LIBFPTR_PARAM_FILENAME, r»C:\PScript.bin»)
fptr.flashFirmware()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_FWT_SCRIPTS);
fptr.setParam(IFptr.LIBFPTR_PARAM_FILENAME, «C:\PScript.bin»);
fptr.flashFirmware();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_FWT_SCRIPTS);
fptr.setParam(IFptr.LIBFPTR_PARAM_FILENAME, «/storage/emulated/0/PScript.bin»);
fptr.flashFirmware();
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_FWT_SCRIPTS];
[fptr setParam:LIBFPTR_PARAM_FILENAME NSStringParam:@»/Users/user/PScript.bin»];
[fptr flashFirmware];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_FWT_SCRIPTS);
fptr.setParam(Constants.LIBFPTR_PARAM_FILENAME, «C:\PScript.bin»);
fptr.flashFirmware();
|

|fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_FWT_SCRIPTS);
fptr.setParam(fptr.LIBFPTR_PARAM_FILENAME, ‘C:\PScript.bin’);
fptr.flashFirmware;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_FWT_SCRIPTS);
fptr.SetParam(fptr10.LIBFPTR_PARAM_FILENAME, «C:\PScript.bin»);
fptr.FlashFirmware();
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_FWT_SCRIPTS);
Fptr.setParam(Fptr.LIBFPTR_PARAM_FILENAME, «C:\PScript.bin»);
Fptr.flashFirmware();
|

Для загрузки шаблона в ККТ необходимо вызвать метод /flashFirmware()/
и передать ему путь к файлу шаблона в параметре LIBFPTR_PARAM_FILENAME
и тип загружаемых данных LIBFPTR_PARAM_DATA_TYPE равный
LIBFPTR_FWT_SCRIPTS.

Поддерживается только для ККТ версий 5.X

Запрос настроек, регистров и пользовательских тегов из шаблона ККТ

Запрос настроек, регистров и пользовательских тегов из шаблона ККТ

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_PATTERN_PARAMETERS);
libfptr_query_data(fptr);

std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_PATTERN_TAGS, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_PATTERN_TAGS, &str[0], str.size());
}
std::wstring tags = std::wstring(&str[0]);

size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_PATTERN_REGISTERS, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_PATTERN_REGISTERS, &str[0], str.size());
}
std::wstring registers = std::wstring(&str[0]);

size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_PATTERN_SETTINGS, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_PATTERN_SETTINGS, &str[0], str.size());
}
std::wstring settings = std::wstring(&str[0]);
|

|fptr.setParam(LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_DT_PATTERN_PARAMETERS);
fptr.queryData();

std::wstring tags = fptr.getParamString(LIBFPTR_PARAM_PATTERN_TAGS);
std::wstring registers = fptr.getParamString(LIBFPTR_PARAM_PATTERN_REGISTERS);
std::wstring settings = fptr.getParamString(LIBFPTR_PARAM_PATTERN_SETTINGS);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_PATTERN_PARAMETERS)
fptr.queryData()

tags = fptr.getParamString(IFptr.LIBFPTR_PARAM_PATTERN_TAGS)
registers = fptr.getParamString(IFptr.LIBFPTR_PARAM_PATTERN_REGISTERS)
settings = fptr.getParamString(IFptr.LIBFPTR_PARAM_PATTERN_SETTINGS)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_PATTERN_PARAMETERS);
fptr.queryData();

String tags = fptr.getParamString(IFptr.LIBFPTR_PARAM_PATTERN_TAGS);
String registers = fptr.getParamString(IFptr.LIBFPTR_PARAM_PATTERN_REGISTERS);
String settings = fptr.getParamString(IFptr.LIBFPTR_PARAM_PATTERN_SETTINGS);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_DATA_TYPE, IFptr.LIBFPTR_DT_PATTERN_PARAMETERS);
fptr.queryData();

String tags = fptr.getParamString(IFptr.LIBFPTR_PARAM_PATTERN_TAGS);
String registers = fptr.getParamString(IFptr.LIBFPTR_PARAM_PATTERN_REGISTERS);
String settings = fptr.getParamString(IFptr.LIBFPTR_PARAM_PATTERN_SETTINGS);
|

|[fptr setParam:LIBFPTR_PARAM_DATA_TYPE intParam:LIBFPTR_DT_PATTERN_PARAMETERS];
[fptr queryData];

NSString *tags = [fptr getParamString:LIBFPTR_PARAM_PATTERN_TAGS];
NSString *registers = [fptr getParamString:LIBFPTR_PARAM_PATTERN_REGISTERS];
NSString *settings = [fptr getParamString:LIBFPTR_PARAM_PATTERN_SETTINGS];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_PATTERN_PARAMETERS);
fptr.queryData();

String tags = fptr.getParamString(Constants.LIBFPTR_PARAM_PATTERN_TAGS);
String registers = fptr.getParamString(Constants.LIBFPTR_PARAM_PATTERN_REGISTERS);
String settings = fptr.getParamString(Constants.LIBFPTR_PARAM_PATTERN_SETTINGS);
|

|var
tags: String;
registers: String;
settings: String;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_DATA_TYPE, fptr.LIBFPTR_DT_PATTERN_PARAMETERS);
fptr.queryData;

tags := fptr.getParamString(fptr.LIBFPTR_PARAM_PATTERN_TAGS);
registers := fptr.getParamString(fptr.LIBFPTR_PARAM_PATTERN_REGISTERS);
settings := fptr.getParamString(fptr.LIBFPTR_PARAM_PATTERN_SETTINGS);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_DATA_TYPE, fptr10.LIBFPTR_DT_PATTERN_PARAMETERS)
fptr.QueryData()

tags := fptr.GetParamString(fptr10.LIBFPTR_PARAM_PATTERN_TAGS)
registers := fptr.GetParamString(fptr10.LIBFPTR_PARAM_PATTERN_REGISTERS)
settings := fptr.GetParamString(fptr10.LIBFPTR_PARAM_PATTERN_SETTINGS)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_PATTERN_PARAMETERS);
Fptr.queryData();

tags = Fptr.getParamString(Fptr.LIBFPTR_PARAM_PATTERN_TAGS);
registers = Fptr.getParamString(Fptr.LIBFPTR_PARAM_PATTERN_REGISTERS);
settings = Fptr.getParamString(Fptr.LIBFPTR_PARAM_PATTERN_SETTINGS);
|

Для запроса параметров из шаблона ККТ необходимо вызвать метод / queryData()/ с типом запроса LIBFPTR_PARAM_DATA_TYPE равным
LIBFPTR_DT_PATTERN_PARAMETERS.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_PATTERN_TAGS Строка в формате JSON с описанием
пользовательских тэгов шаблона string
LIBFPTR_PARAM_PATTERN_REGISTERS Строка в формате JSON с описанием
регистров из шаблона string
LIBFPTR_PARAM_PATTERN_SETTINGS Строка в формате JSON с описанием
настроек из шаблона string

Поддерживается только для ККТ версий 5.X

Программирование ККТ

Инициализация системных таблиц

Инициализация системных таблиц

|libfptr_init_settings(fptr);
|

|fptr.initSettings();
|

|fptr.initSettings()
|

|fptr.initSettings();
|

|fptr.initSettings();
|

|[fptr initSettings];
|

|fptr.initSettings();
|

|begin
fptr.initSettings;
end;
|

|fptr.InitSettings()
|

|Fptr.initSettings();
|

Для инициализации таблиц ККТ необходимо вызвать метод /initSettings()/.

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

Поддерживается только для ККТ версий 3.X

Запись настройки

Запись строковой настройки (на примере адреса ОФД)

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_SETTING_ID, 273);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_SETTING_VALUE, L»ofdp.platformaofd.ru»);
libfptr_write_device_setting(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_SETTING_ID, 273);
fptr.setParam(LIBFPTR_PARAM_SETTING_VALUE, L»ofdp.platformaofd.ru»);
fptr.writeDeviceSetting();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SETTING_ID, 273)
fptr.setParam(IFptr.LIBFPTR_PARAM_SETTING_VALUE, «ofdp.platformaofd.ru»)
fptr.writeDeviceSetting()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SETTING_ID, 273);
fptr.setParam(IFptr.LIBFPTR_PARAM_SETTING_VALUE, «ofdp.platformaofd.ru»);
fptr.writeDeviceSetting();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SETTING_ID, 273);
fptr.setParam(IFptr.LIBFPTR_PARAM_SETTING_VALUE, «ofdp.platformaofd.ru»);
fptr.writeDeviceSetting();
|

|[fptr setParam:LIBFPTR_PARAM_SETTING_ID intParam:273];
[fptr setParam:LIBFPTR_PARAM_SETTING_VALUE NSStringParam:@»ofdp.platformaofd.ru»];
[fptr writeDeviceSetting];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_SETTING_ID, 273);
fptr.setParam(Constants.LIBFPTR_PARAM_SETTING_VALUE, «ofdp.platformaofd.ru»);
fptr.writeDeviceSetting();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_SETTING_ID, 273);
fptr.setParam(fptr.LIBFPTR_PARAM_SETTING_VALUE, ‘ofdp.platformaofd.ru’);
fptr.writeDeviceSetting;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_SETTING_ID, 273)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SETTING_VALUE, «ofdp.platformaofd.ru»)
fptr.WriteDeviceSetting()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_SETTING_ID, 273);
Fptr.setParam(Fptr.LIBFPTR_PARAM_SETTING_VALUE, «ofdp.platformaofd.ru»);
Fptr.writeDeviceSetting();
|

Запись числовой настройки (на примере порта ОФД)

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_SETTING_ID, 274);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_SETTING_VALUE, 19801);
libfptr_write_device_setting(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_SETTING_ID, 274);
fptr.setParam(LIBFPTR_PARAM_SETTING_VALUE, 19801);
fptr.writeDeviceSetting();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SETTING_ID, 274)
fptr.setParam(IFptr.LIBFPTR_PARAM_SETTING_VALUE, 19801)
fptr.writeDeviceSetting()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SETTING_ID, 274);
fptr.setParam(IFptr.LIBFPTR_PARAM_SETTING_VALUE, 19801);
fptr.writeDeviceSetting();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SETTING_ID, 274);
fptr.setParam(IFptr.LIBFPTR_PARAM_SETTING_VALUE, 19801);
fptr.writeDeviceSetting();
|

|[fptr setParam:LIBFPTR_PARAM_SETTING_ID intParam:274];
[fptr setParam:LIBFPTR_PARAM_SETTING_VALUE intParam:19801];
[fptr writeDeviceSetting];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_SETTING_ID, 274);
fptr.setParam(Constants.LIBFPTR_PARAM_SETTING_VALUE, 19801);
fptr.writeDeviceSetting();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_SETTING_ID, 274);
fptr.setParam(fptr.LIBFPTR_PARAM_SETTING_VALUE, 19801);
fptr.writeDeviceSetting;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_SETTING_ID, 274)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SETTING_VALUE, 19801)
fptr.WriteDeviceSetting()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_SETTING_ID, 274);
Fptr.setParam(Fptr.LIBFPTR_PARAM_SETTING_VALUE, 19801);
Fptr.writeDeviceSetting();
|

Для записи настройки в ККТ необходимо вызвать метод / writeDeviceSetting()/, указав номер настройки в параметре
LIBFPTR_PARAM_SETTING_ID и значение настройки в параметре
LIBFPTR_PARAM_SETTING_VALUE.

Список доступных настроек и их значений зависит от модели ККТ и приведен
в приложении Настройки ККТ <#kkt_params_list>.

После записи всех настроек необходимо вызвать метод /commitSettings()/
для их записи в постоянную память ККТ.

Поддерживается для всех ККТ

Чтение настройки

Чтение строковой настройки (на примере адреса ОФД)

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_SETTING_ID, 273);
libfptr_read_device_setting(fptr);

std::vector settingValue(64);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_SETTING_VALUE, &settingValue[0], settingValue.size());
if (size > settingValue.size())
{
settingValue.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_SETTING_VALUE, &settingValue[0], settingValue.size());
}
|

|fptr.setParam(LIBFPTR_PARAM_SETTING_ID, 273);
fptr.readDeviceSetting();

std::wstring settingValue = fptr.getParamString(LIBFPTR_PARAM_SETTING_VALUE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SETTING_ID, 273)
fptr.readDeviceSetting()

settingValue = fptr.getParamString(IFptr.LIBFPTR_PARAM_SETTING_VALUE)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SETTING_ID, 273);
fptr.readDeviceSetting();

String settingValue = fptr.getParamString(IFptr.LIBFPTR_PARAM_SETTING_VALUE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SETTING_ID, 273);
fptr.readDeviceSetting();

String settingValue = fptr.getParamString(IFptr.LIBFPTR_PARAM_SETTING_VALUE);
|

|[fptr setParam:LIBFPTR_PARAM_SETTING_ID intParam:273];
[fptr readDeviceSetting];

NSString *settingValue = [fptr getParamString:LIBFPTR_PARAM_SETTING_VALUE];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_SETTING_ID, 273);
fptr.readDeviceSetting();

String settingValue = fptr.getParamString(Constants.LIBFPTR_PARAM_SETTING_VALUE);
|

|var
settingValue: String;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_SETTING_ID, 273);
fptr.readDeviceSetting;

settingValue := fptr.getParamString(fptr.LIBFPTR_PARAM_SETTING_VALUE);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_SETTING_ID, 273)
fptr.ReadDeviceSetting()

settingValue := fptr.GetParamString(fptr10.LIBFPTR_PARAM_SETTING_VALUE)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_SETTING_ID, 273);
Fptr.readDeviceSetting();

settingValue = Fptr.getParamString(Fptr.LIBFPTR_PARAM_SETTING_VALUE);
|

Чтение числовой настройки (на примере порта ОФД)

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_SETTING_ID, 274);
libfptr_read_device_setting(fptr);

uint settingValue = libfptr_get_param_int(fptr, LIBFPTR_PARAM_SETTING_VALUE);
|

|fptr.setParam(LIBFPTR_PARAM_SETTING_ID, 274);
fptr.readDeviceSetting();

uint settingValue = fptr.getParamInt(LIBFPTR_PARAM_SETTING_VALUE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SETTING_ID, 274)
fptr.readDeviceSetting()

settingValue = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SETTING_VALUE)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SETTING_ID, 274);
fptr.readDeviceSetting();

long settingValue = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SETTING_VALUE);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_SETTING_ID, 274);
fptr.readDeviceSetting();

long settingValue = fptr.getParamInt(IFptr.LIBFPTR_PARAM_SETTING_VALUE);
|

|[fptr setParam:LIBFPTR_PARAM_SETTING_ID intParam:274];
[fptr readDeviceSetting];

uint settingValue = [fptr getParamInt:LIBFPTR_PARAM_SETTING_VALUE];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_SETTING_ID, 274);
fptr.readDeviceSetting();

uint settingValue = fptr.getParamInt(Constants.LIBFPTR_PARAM_SETTING_VALUE);
|

|var
settingValue: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_SETTING_ID, 274);
fptr.readDeviceSetting;

settingValue := fptr.getParamInt(fptr.LIBFPTR_PARAM_SETTING_VALUE);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_SETTING_ID, 274)
fptr.ReadDeviceSetting()

settingValue := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_SETTING_VALUE)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_SETTING_ID, 274);
Fptr.readDeviceSetting();

settingValue = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_SETTING_VALUE);
|

Для чтения настройки из ККТ необходимо вызвать метод / readDeviceSetting()/, указав номер настройки в параметре
LIBFPTR_PARAM_SETTING_ID.

Список доступных настроек и их значений зависит от модели ККТ и приведен
в приложении Настройки ККТ <#kkt_params_list>.

Поддерживается для всех ККТ

Сохранение настроек

Сохранение настроек в память ККТ

|libfptr_commit_settings(fptr);
|

|fptr.commitSettings();
|

|fptr.commitSettings()
|

|fptr.commitSettings();
|

|fptr.commitSettings();
|

|[fptr commitSettings];
|

|fptr.commitSettings();
|

|begin
fptr.commitSettings;
end;
|

|fptr.CommitSettings()
|

|fptr.commitSettings();
|

Для сохранения параметров в постоянную память ККТ необходимо вызвать
метод /commitSettings()/.

Поддерживается для всех ККТ

Загрузка картинки в ККТ

Загрузка картинки из файла в память ККТ

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_FILENAME, L»C:\picture.png»);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
libfptr_upload_picture_memory(fptr);

int pictureNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_PICTURE_NUMBER);
|

|fptr.setParam(LIBFPTR_PARAM_FILENAME, «C:\picture.png»);
fptr.setParam(LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
fptr.uploadPictureMemory();

uint pictureNumber = fptr.getParamInt(LIBFPTR_PARAM_PICTURE_NUMBER);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FILENAME, «C:\picture.png»)
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE_PERCENT, 50.0)
fptr.uploadPictureMemory()

pictureNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FILENAME, «C:\picture.png»);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
fptr.uploadPictureMemory();

long pictureNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FILENAME, «/storage/emulated/0/picture.png»);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
fptr.uploadPictureMemory();

long pictureNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER);
|

|[fptr setParam:LIBFPTR_PARAM_FILENAME NSStringParam:@»/Users/user/picture.png»];
[fptr setParam:LIBFPTR_PARAM_SCALE_PERCENT doubleParam:50.0];
[fptr uploadPictureMemory];

uint pictureNumber = [fptr getParamInt:LIBFPTR_PARAM_PICTURE_NUMBER];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FILENAME, «C:\picture.png»);
fptr.setParam(Constants.LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
fptr.uploadPictureMemory();

uint pictureNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_PICTURE_NUMBER);
|

|var
pictureNumber: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_FILENAME, ‘C:\picture.png’);
fptr.setParam(fptr.LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
fptr.uploadPictureMemory;

pictureNumber := fptr.getParamInt(fptr.LIBFPTR_PARAM_PICTURE_NUMBER);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FILENAME, «C:\picture.png»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SCALE_PERCENT, 50.0)
fptr.UploadPictureMemory()

pictureNumber := fptr.GetParamInt(fptr.LIBFPTR_PARAM_PICTURE_NUMBER)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FILENAME, «C:\picture.png»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
Fptr.uploadPictureMemory();

pictureNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_PICTURE_NUMBER);
|

Загрузка картинки из буфера в память ККТ

|// pixels — Массив пикселей (unsigned char[])
// width — Ширина одной строки пикселей

libfptr_set_param_bytearray(fptr, LIBFPTR_PARAM_PIXEL_BUFFER, &pixels[0], sizeof(pixels));
libfptr_set_param_int(fptr, LIBFPTR_PARAM_WIDTH, width);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
libfptr_upload_pixel_buffer_memory(fptr);

int pictureNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_PICTURE_NUMBER);
|

|// pixels — Массив пикселей (bytearray)
// width — Ширина одной строки пикселей

fptr.setParam(LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
fptr.uploadPixelBufferMemory();

uint pictureNumber = fptr.getParamInt(LIBFPTR_PARAM_PICTURE_NUMBER);
|

|# pixels — Массив пикселей (bytearray)

width — Ширина одной строки пикселей

fptr.setParam(IFptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels)
fptr.setParam(IFptr.LIBFPTR_PARAM_WIDTH, width)
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE_PERCENT, 50.0)
fptr.uploadPixelBufferMemory()

pictureNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER)
|

|// pixels — Массив пикселей (byte[])
// width — Ширина одной строки пикселей

fptr.setParam(IFptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(IFptr.LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
fptr.uploadPixelBufferMemory();

long pictureNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER);
|

|// pixels — Массив пикселей (byte[])
// width — Ширина одной строки пикселей

fptr.setParam(IFptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(IFptr.LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
fptr.uploadPixelBufferMemory();

long pictureNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER);
|

|// pixels — Массив пикселей (NSData*)
// width — Ширина одной строки пикселей

[fptr setParam:LIBFPTR_PARAM_PIXEL_BUFFER NSDataParam:pixels];
[fptr setParam:LIBFPTR_PARAM_WIDTH intParam:width];
[fptr setParam:LIBFPTR_PARAM_SCALE_PERCENT doubleParam:50.0];
[fptr uploadPixelBufferMemory];

uint pictureNumber = [fptr getParamInt:LIBFPTR_PARAM_PICTURE_NUMBER];
|

|// pixels — Массив пикселей (byte[])
// width — Ширина одной строки пикселей

fptr.setParam(Constants.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(Constants.LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(Constants.LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
fptr.uploadPixelBufferMemory();

uint pictureNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_PICTURE_NUMBER);
|

|var
pictureNumber: Longint;
begin
// pixels — Массив пикселей (Array of Byte)
// width — Ширина одной строки пикселей

fptr.setParam(fptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(fptr.LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(fptr.LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
fptr.uploadPixelBufferMemory;

pictureNumber := fptr.getParamInt(fptr.LIBFPTR_PARAM_PICTURE_NUMBER);

end;
|

|// pixels — Массив пикселей ([]byte)
// width — Ширина одной строки пикселей

fptr.SetParam(fptr10.LIBFPTR_PARAM_PIXEL_BUFFER, pixels)
fptr.SetParam(fptr10.LIBFPTR_PARAM_WIDTH, width)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SCALE_PERCENT, 50.0)
fptr.UploadPixelBufferMemory()

pictureNumber := fptr.GetParamInt(fptr.LIBFPTR_PARAM_PICTURE_NUMBER)
|

|// pixels — Массив пикселей (Uint8Array)
// width — Ширина одной строки пикселей

Fptr.setParam(Fptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
Fptr.setParam(Fptr.LIBFPTR_PARAM_WIDTH, width);
Fptr.setParam(Fptr.LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
Fptr.uploadPixelBufferMemory();

pictureNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_PICTURE_NUMBER);
|

Картинку в ККТ можно загрузить:

  • из файла, вызвав метод /uploadPictureMemory()/ и указав путь к
    файлу картинки в параметре LIBFPTR_PARAM_FILENAME
  • из буфера, вызвав метод /uploadPixelBufferMemory()/ и передав
    массив пикселей в параметре LIBFPTR_PARAM_PIXEL_BUFFER и ширину
    одной строки в параметре LIBFPTR_PARAM_WIDTH

Дополнительно можно указать масштаб в параметре
LIBFPTR_PARAM_SCALE_PERCENT. После выполнения метода номер картинки в
памяти ККТ будет записан в параметр LIBFPTR_PARAM_PICTURE_NUMBER.

Подробнее о формате массива пикселей в приложении <#pixel_buffer_format>.

Метод подходит для загрузки статичных, часто используемых изображений,
для ускорения их печати. Номер картинки, полученный в результате вызова
метода, в дальнейшем может быть использован для печати картинки из
памяти ККТ (/printPictureByNumber()/). Некоторые ККТ позволяют
печатать картинку, загруженную таким образом, в клише.

Поддерживается для всех ККТ. При работе с ККТ версий 5.X картинки
загружаются не в память ККТ, а в хранилище драйвера.

Методы uploadPixelBuffer() и uploadPictureFromFile() более не
рекомендуются к использованию.

Загрузка картинки клише

Загрузка картинки из файла в клише ККТ

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_FILENAME, L»C:\picture.png»);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
libfptr_upload_picture_cliche(fptr);

int pictureNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_PICTURE_NUMBER);
|

|fptr.setParam(LIBFPTR_PARAM_FILENAME, L»C:\picture.png»);
fptr.setParam(LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
fptr.uploadPictureCliche();

uint pictureNumber = fptr.getParamInt(LIBFPTR_PARAM_PICTURE_NUMBER);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FILENAME, «C:\picture.png»)
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE_PERCENT, 50.0)
fptr.uploadPictureCliche()

pictureNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FILENAME, «C:\picture.png»);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
fptr.uploadPictureCliche();

long pictureNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_FILENAME, «/storage/emulated/0/picture.png»);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
fptr.uploadPictureCliche();

long pictureNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER);
|

|[fptr setParam:LIBFPTR_PARAM_FILENAME NSStringParam:@»/Users/user/picture.png»];
[fptr setParam:LIBFPTR_PARAM_SCALE_PERCENT doubleParam:50.0];
[fptr uploadPictureCliche];

uint pictureNumber = [fptr getParamInt:LIBFPTR_PARAM_PICTURE_NUMBER];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_FILENAME, «C:\picture.png»);
fptr.setParam(Constants.LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
fptr.uploadPictureCliche();

uint pictureNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_PICTURE_NUMBER);
|

|var
pictureNumber: Longint;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_FILENAME, ‘C:\picture.png’);
fptr.setParam(fptr.LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
fptr.uploadPictureCliche;

pictureNumber := fptr.getParamInt(fptr.LIBFPTR_PARAM_PICTURE_NUMBER);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_FILENAME, «C:\picture.png»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SCALE_PERCENT, 50.0)
fptr.uploadPictureCliche()

pictureNumber := fptr.GetParamInt(fptr.LIBFPTR_PARAM_PICTURE_NUMBER)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_FILENAME, «C:\picture.png»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
Fptr.uploadPictureCliche();

pictureNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_PICTURE_NUMBER);
|

Загрузка картинки из буфера в клише ККТ

|// pixels — Массив пикселей (unsigned char[])
// width — Ширина одной строки пикселей

libfptr_set_param_bytearray(fptr, LIBFPTR_PARAM_PIXEL_BUFFER, &pixels[0], sizeof(pixels));
libfptr_set_param_int(fptr, LIBFPTR_PARAM_WIDTH, width);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
libfptr_upload_pixel_buffer_cliche(fptr);

int pictureNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_PICTURE_NUMBER);
|

|// pixels — Массив пикселей (bytearray)
// width — Ширина одной строки пикселей

fptr.setParam(LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
fptr.uploadPixelBufferCliche();

uint pictureNumber = fptr.getParamInt(LIBFPTR_PARAM_PICTURE_NUMBER);
|

|# pixels — Массив пикселей (bytearray)

width — Ширина одной строки пикселей

fptr.setParam(IFptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels)
fptr.setParam(IFptr.LIBFPTR_PARAM_WIDTH, width)
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE_PERCENT, 50.0)
fptr.uploadPixelBufferCliche()

pictureNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER)
|

|// pixels — Массив пикселей (byte[])
// width — Ширина одной строки пикселей

fptr.setParam(IFptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(IFptr.LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
fptr.uploadPixelBufferCliche();

long pictureNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER);
|

|// pixels — Массив пикселей (byte[])
// width — Ширина одной строки пикселей

fptr.setParam(IFptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(IFptr.LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
fptr.uploadPixelBufferCliche();

long pictureNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER);
|

|// pixels — Массив пикселей (NSData*)
// width — Ширина одной строки пикселей

[fptr setParam:LIBFPTR_PARAM_PIXEL_BUFFER NSDataParam:pixels];
[fptr setParam:LIBFPTR_PARAM_WIDTH intParam:width];
[fptr setParam:LIBFPTR_PARAM_SCALE_PERCENT doubleParam:50.0];
[fptr uploadPixelBufferCliche];

uint pictureNumber = [fptr getParamInt:LIBFPTR_PARAM_PICTURE_NUMBER];
|

|// pixels — Массив пикселей (byte[])
// width — Ширина одной строки пикселей

fptr.setParam(Constants.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(Constants.LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(Constants.LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
fptr.uploadPixelBufferCliche();

uint pictureNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_PICTURE_NUMBER);
|

|var
pictureNumber: Longint;
begin
// pixels — Массив пикселей (Array of Byte)
// width — Ширина одной строки пикселей

fptr.setParam(fptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
fptr.setParam(fptr.LIBFPTR_PARAM_WIDTH, width);
fptr.setParam(fptr.LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
fptr.uploadPixelBufferCliche;

pictureNumber := fptr.getParamInt(fptr.LIBFPTR_PARAM_PICTURE_NUMBER);

end;
|

|// pixels — Массив пикселей ([]byte)
// width — Ширина одной строки пикселей

fptr.SetParam(fptr10.LIBFPTR_PARAM_PIXEL_BUFFER, pixels)
fptr.SetParam(fptr10.LIBFPTR_PARAM_WIDTH, width)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SCALE_PERCENT, 50.0)
fptr.UploadPixelBufferCliche()

pictureNumber := fptr.GetParamInt(fptr.LIBFPTR_PARAM_PICTURE_NUMBER)
|

|// pixels — Массив пикселей (Uint8Arrya)
// width — Ширина одной строки пикселей

Fptr.setParam(Fptr.LIBFPTR_PARAM_PIXEL_BUFFER, pixels);
Fptr.setParam(Fptr.LIBFPTR_PARAM_WIDTH, width);
Fptr.setParam(Fptr.LIBFPTR_PARAM_SCALE_PERCENT, 50.0);
Fptr.uploadPixelBufferCliche();

pictureNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_PICTURE_NUMBER);
|

Картинку в клише можно загрузить:

  • из файла, вызвав метод /uploadPictureCliche()/ и указав путь к
    файлу картинки в параметре LIBFPTR_PARAM_FILENAME
  • из буфера, вызвав метод /uploadPixelBufferCliche()/ и передав
    массив пикселей в параметре LIBFPTR_PARAM_PIXEL_BUFFER и ширину
    одной строки в параметре LIBFPTR_PARAM_WIDTH

Дополнительно можно указать масштаб в параметре
LIBFPTR_PARAM_SCALE_PERCENT.

После загрузки необходимо удостовериться, что картинка указана в строках
клише <#cliche>.

Подробнее о формате массива пикселей в приложении <#pixel_buffer_format>.

Поддерживается только для ККТ версий 5.X. Для версий 3.X нужно
использовать методы загрузки картинки в память ККТ <#upload_picture_memory>

Методы uploadPixelBuffer() и uploadPictureFromFile() более не
рекомендуются к использованию.

Выгрузка картинки из памяти ККТ

Выгрузка картинки из памяти ККТ в файл

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_PICTURE_NUMBER, 1);
libfptr_set_param_str(fptr, LIBFPTR_PARAM_FILENAME, L»C:\picture.bmp»);
libfptr_download_picture(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.setParam(LIBFPTR_PARAM_FILENAME, L»C:\picture.bmp»);
fptr.downloadPicture();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1)
fptr.setParam(IFptr.LIBFPTR_PARAM_FILENAME, «C:\picture.bmp»)
fptr.downloadPicture()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.setParam(IFptr.LIBFPTR_PARAM_FILENAME, «C:\picture.bmp»);
fptr.downloadPicture();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.setParam(IFptr.LIBFPTR_PARAM_FILENAME, «/storage/emulated/0/picture.bmp»);
fptr.downloadPicture();
|

|[fptr setParam:LIBFPTR_PARAM_PICTURE_NUMBER intParam:1];
[fptr setParam:LIBFPTR_PARAM_FILENAME NSStringParam:@»/Users/user/picture.bmp»];
[fptr downloadPicture];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.setParam(Constants.LIBFPTR_PARAM_FILENAME, «C:\picture.bmp»);
fptr.downloadPicture();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.setParam(fptr.LIBFPTR_PARAM_FILENAME, ‘C:\picture.bmp’);
fptr.downloadPicture;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_PICTURE_NUMBER, 1)
fptr.SetParam(fptr10.LIBFPTR_PARAM_FILENAME, «C:\picture.bmp»)
fptr.DownloadPicture()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
Fptr.setParam(Fptr.LIBFPTR_PARAM_FILENAME, «C:\picture.bmp»);
Fptr.downloadPicture();
|

Выгрузка картинки из памяти ККТ в буфер

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_PICTURE_NUMBER, 1);
libfptr_download_pixel_buffer(fptr);

uint width = libfptr_get_param_int(fptr, LIBFPTR_PARAM_WIDTH);
uint height = libfptr_get_param_int(fptr, LIBFPTR_PARAM_HEIGHT);
std::vector pixels(width * height);
libfptr_get_param_bytearray(fptr, LIBFPTR_PARAM_PIXEL_BUFFER, &pixels[0], pixels.size())
|

|fptr.setParam(LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.downloadPixelBuffer();

std::vector pixels = fptr.getParamByteArray(LIBFPTR_PARAM_PIXEL_BUFFER);
uint width = fptr.getParamInt(LIBFPTR_PARAM_WIDTH);
uint height = fptr.getParamInt(LIBFPTR_PARAM_HEIGHT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1)
fptr.downloadPixelBuffer()

pixels = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_PIXEL_BUFFER)
width = fptr.getParamInt(IFptr.LIBFPTR_PARAM_WIDTH)
height = fptr.getParamInt(IFptr.LIBFPTR_PARAM_HEIGHT)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.downloadPixelBuffer();

byte[] pixels = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_PIXEL_BUFFER);
long width = fptr.getParamInt(IFptr.LIBFPTR_PARAM_WIDTH);
long height = fptr.getParamInt(IFptr.LIBFPTR_PARAM_HEIGHT);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.downloadPixelBuffer();

byte[] pixels = fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_PIXEL_BUFFER);
long width = fptr.getParamInt(IFptr.LIBFPTR_PARAM_WIDTH);
long height = fptr.getParamInt(IFptr.LIBFPTR_PARAM_HEIGHT);
|

|[fptr setParam:LIBFPTR_PARAM_PICTURE_NUMBER intParam:1];
[fptr downloadPixelBuffer];

NSData *pixels = [fptr getParamByteArray:LIBFPTR_PARAM_PIXEL_BUFFER];
uint width = [fptr getParamInt:LIBFPTR_PARAM_WIDTH];
uint height = [fptr getParamInt:LIBFPTR_PARAM_HEIGHT];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.downloadPixelBuffer();

byte[] pixels = fptr.getParamByteArray(Constants.LIBFPTR_PARAM_PIXEL_BUFFER);
uint width = fptr.getParamInt(Constants.LIBFPTR_PARAM_WIDTH);
uint height = fptr.getParamInt(Constants.LIBFPTR_PARAM_HEIGHT);
|

|var
pixels: Variant;
width: LongInt;
height: LongInt;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
fptr.downloadPixelBuffer;

pixels = fptr.getParamByteArray(fptr.LIBFPTR_PARAM_PIXEL_BUFFER);
width = fptr.getParamInt(fptr.LIBFPTR_PARAM_WIDTH);
height = fptr.getParamInt(fptr.LIBFPTR_PARAM_HEIGHT);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_PICTURE_NUMBER, 1)
fptr.DownloadPixelBuffer()

pixels := fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_PIXEL_BUFFER)
width := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_WIDTH)
height := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_HEIGHT)
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_PICTURE_NUMBER, 1);
Fptr.downloadPixelBuffer();

pixels = Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_PIXEL_BUFFER);
width = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_WIDTH);
height = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_HEIGHT);
|

Для выгрузки картинки из памяти ККТ в файл необходимо вызвать метод / downloadPicture()/, указав путь к файлу картинки в параметре
LIBFPTR_PARAM_FILENAME и номер картинки в параметре
LIBFPTR_PARAM_PICTURE_NUMBER. Выгрузка происходит в формате BMP.

Для выгрузки картинки из памяти ККТ в буфер необходимо вызвать метод / downloadPixelBuffer()/, указав номер картинки в параметре
LIBFPTR_PARAM_PICTURE_NUMBER. При успешном выполнении будут заполнены
следующие выходные параметры:

  • LIBFPTR_PARAM_PIXEL_BUFFER — массив пикселей;
  • LIBFPTR_PARAM_WIDTH — ширина изображения;
  • LIBFPTR_PARAM_HEIGHT — высота изображения.

Подробнее о формате массива пикселей в приложении <#pixel_buffer_format>.

Если ККТ не поддерживает работу с несколькими картинками, будет
выгружена единственная доступная, внезависимости от значения параметра
LIBFPTR_PARAM_PICTURE_NUMBER.

Поддерживается для всех ККТ

Очистка картинок

Очистка картинок в памяти ККТ

|libfptr_clear_pictures(fptr);
|

|fptr.clearPictures();
|

|fptr.clearPictures()
|

|fptr.clearPictures();
|

|fptr.clearPictures();
|

|[fptr clearPictures];
|

|fptr.clearPictures();
|

|begin
fptr.clearPictures;
end;
|

|fptr.ClearPictures()
|

|Fptr.clearPictures();
|

Для очистки картинок в памяти ККТ необходимо вызвать метод / clearPictures()/.

Поддерживается для всех ККТ

JSON-задания

Проверка JSON-задания

Проверка JSON-задания

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_JSON_DATA, L»{\»type\»: \»openShift\»}»);
libfptr_validate_json(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_JSON_DATA, «{\»type\»: \»openShift\»}»);
fptr.validateJson();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_JSON_DATA, «{\»type\»: \»openShift\»}»)
fptr.validateJson()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_JSON_DATA, «{\»type\»: \»openShift\»}»);
fptr.validateJson();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_JSON_DATA, «{\»type\»: \»openShift\»}»);
fptr.validateJson();
|

|[fptr setParam:LIBFPTR_PARAM_JSON_DATA NSStringParam:@»{\»type\»: \»openShift\»}»];
[fptr validateJson];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_JSON_DATA, «{\»type\»: \»openShift\»}»);
fptr.validateJson();
|

|var
result: String;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_JSON_DATA, ‘{«type»: «openShift»}’);
fptr.validateJson;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_JSON_DATA, «{\»type\»: \»openShift\»}»)
fptr.ValidateJson()
|

|// Метод недоступен
|

Для проверки JSON-задания необходимо вызвать метод /validateJson()/ и
в параметре LIBFPTR_PARAM_JSON_DATA передать текст задания. Если JSON-
задание некорректно, метод вернёт ошибку, иначе не вернёт ничего. Если
задание проверить текущим набором скриптов невозможно, вернётся ошибка
LIBFPTR_ERROR_VALIDATE_FUNC_NOT_FOUND.

Поддерживается для всех ККТ

Выполнение JSON-задания

Выполнение JSON-задания

|libfptr_set_param_str(fptr, LIBFPTR_PARAM_JSON_DATA, L»{\»type\»: \»openShift\»}»);
libfptr_process_json(fptr);

std::vector result(128);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_JSON_DATA, &result[0], result.size());
if (size > result.size())
{
result.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_JSON_DATA, &result[0], result.size());
}
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_JSON_DATA, «{\»type\»: \»openShift\»}»);
fptr.processJson();

std::wstring result = fptr.getParamString(LIBFPTR_PARAM_JSON_DATA);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_JSON_DATA, «{\»type\»: \»openShift\»}»)
fptr.processJson()

result = fptr.getParamString(IFptr.LIBFPTR_PARAM_JSON_DATA)
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_JSON_DATA, «{\»type\»: \»openShift\»}»);
fptr.processJson();

String result = fptr.getParamString(IFptr.LIBFPTR_PARAM_JSON_DATA);
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_JSON_DATA, «{\»type\»: \»openShift\»}»);
fptr.processJson();

String result = fptr.getParamString(IFptr.LIBFPTR_PARAM_JSON_DATA);
|

|[fptr setParam:LIBFPTR_PARAM_JSON_DATA NSStringParam:@»{\»type\»: \»openShift\»}»];
[fptr processJson];

NSString *result = [fptr getParamString:LIBFPTR_PARAM_JSON_DATA];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_JSON_DATA, «{\»type\»: \»openShift\»}»);
fptr.processJson();

String result = fptr.getParamString(Constants.LIBFPTR_PARAM_JSON_DATA);
|

|var
result: String;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_JSON_DATA, ‘{«type»: «openShift»}’);
fptr.processJson;

result := fptr.getParamString(fptr.LIBFPTR_PARAM_JSON_DATA);

end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_JSON_DATA, «{\»type\»: \»openShift\»}»)
fptr.ProcessJson()

result := fptr.GetParamString(fptr10.LIBFPTR_PARAM_JSON_DATA)
|

|// Метод недоступен
|

Для выполнения JSON-задания необходимо вызвать метод /processJson()/ и
в параметре LIBFPTR_PARAM_JSON_DATA передать текст задания. Результат
выполнения запишется также в параметр LIBFPTR_PARAM_JSON_DATA. Если
задание завершилось с ошибкой, метод вернет ошибку, а параметр
LIBFPTR_PARAM_JSON_DATA не будет заполнен.

Внимание! Выполнение JSON-задания предполагает выполнение некоторого
множества методов и команд ККТ, во время выполнения касса может
возвращать различные коды ответа. Соответственно, если в ККТ включена
настройка 37 «Звуковой сигнал при ошибке», возможно воспроизведение ККТ
звуковых сигналов (возможно, неоднократно).
Данное поведение не является ошибочным, логика некоторых JSON-заданий
зависит от возвращаемого ККТ результата, поэтому звуковые сигналы не
являются признаком некорректного выполнения JSON-задания. Необходимо
ориентироваться на код ошибки и драйвера и ответ JSON-задания!
Звуковой сигнал ККТ можно отключить, воспользовавшись настройкой 37
«Звуковой сигнал при ошибке».

Поддерживается для всех ККТ

Список возможных Json-заданий представлен ниже.

Объекты Json

Ниже представлены объекты, которые встречаются в разных JSON-заданиях.

  Оператор (Кассир)

Оператор (кассир)

|{
«name»: «Кассир Иванов И.И.»,
«vatin»: «123654789507»
}
|

Данные оператора (кассира) Параметр Описание Тип Возможные значения
Обязательность
name Фамилия и должность оператора (тег 1021) string +
vatin ИНН оператора (тег 1203) string по умолчанию — не используется

  Оплата чека

Оплата чека

|{
«type»: «cash»,
«sum»: 1000.00
}
|

Оплата чека с комментарием

|{
«type»: «electronically»,
«sum»: 1000.00,
«printItems»: [
{
«type»: «text»,
«text»: «в т.ч. плат. карта онлайн = 1000.00 руб»
}
]
}
|

Данные оплаты Параметр Описание Тип Возможные значения Обязательность
type Способ расчета string cash или 0 — наличными
electronically или 1 — безналичными
prepaid или 2 — предварительная оплата (аванс)
credit или 3 — последующая оплата (кредит)
other или 4 — иная форма оплаты (встречное предоставление)
59 — пользовательский тип оплаты +
sum Сумма расчета number +
printItems Элементы для печати после оплаты <#json_document_items>
object[] Используются только элементы с типами:
text

  Налог

Налог

|{
«type»: «vat20»,
«sum»: 12.43
}
|

Данные налога Параметр Описание Тип Возможные значения Обязательность
type Налоговая ставка (тег 1199) string none — налогом не облагается
vat0 — НДС 0%
vat10 — НДС 10%
vat110 — НДС 10/110
vat20 — НДС 20%
vat120 — НДС 20/120 +
sum Сумма налога number Обязательна для налогов на чек,
необязательна для позиций (по умолчанию — расчитывается автоматически)

  Информация о покупателе

Информация о покупателе / клиенте

|{
«emailOrPhone»: «+79161234567»,
«vatin»: «112233445573»,
«name»: «Покупатель А»,
«birthDate»: «12.04.1989»,
«citizenship»: «024»,
«identityDocumentCode»: «21»,
«identityDocumentData»: «Данные документа»,
«address»: «г. Покровск, ул. Вишневая, 6а»
}
|

Данные покупателя Параметр Описание Тип Возможные значения
Обязательность
emailOrPhone E-mail или номер телефона покупателя (тег 1008) string
по умолчанию — не используется
vatin ИНН покупателя (тег 1228) string
name Наименование покупателя (тег 1227) string
birthDate Дата рождения (только ФФД 1.2, тег 1243) string Строка
формата «ДД.ММ.ГГГГ»
citizenship Гражданство (только ФФД 1.2, тег 1244) string Строка
формата «ЦЦЦ», трёхзначное число
identityDocumentCode Код вида документа, удостоверяющего личность
(только ФФД 1.2, тег 1245) string Строка формата «ЦЦ», двузначное число
identityDocumentData Данные документа, удостоверяющего личность
(только ФФД 1.2, тег 1246) string
address Адрес покупателя/клиента (только ФФД 1.2, тег 1254) string

  Информация о продавце

Информация о продавце

|{
«email»: «info@mail.ru»
}
|

Данные продавца Параметр Описание Тип Возможные значения Обязательность
email** E-mail отправителя электронной формы чека (тег 1117) string
по умолчанию — используется заданный при регистрации

  Данные агента

Данные агента

|{
«agents»: [«payingAgent», «bankPayingAgent»],
«payingAgent»: {
«operation»: «Оплата»,
«phones»: [«+79161112233»]
},
«receivePaymentsOperator»: {
«phones»: [«+79163331122»]
},
«moneyTransferOperator»: {
«phones»: [«+79162223311»],
«name»: «Оператор перевода»,
«address»: «Улица Оператора Перевода, д.1»,
«vatin»: «321456987121»
},
«agentsPrint»: true,
«agentDataPrint»: true
}
|

Данные агента Параметр Описание Тип Возможные значения Обязательность
agents Агенты (тег 1057 для чека, 1222 для товара) string[]
bankPayingAgent — банковский платежный агент
bankPayingSubagent — банковский платежный субагент
payingAgent — платежный агент
payingSubagent — платежный субагент
attorney — поверенный
commissionAgent — комиссионер
another — другой тип агента По умолчанию — пустой список (не
устанавливать признак агента)
agentsPrint Печатать реквизит «Признак агента» (тег 1222) bool по
умолчанию — true
agentDataPrint Печатать реквизит «Данные агента» (тег 1223) bool
по умолчанию — true
Данные платежного агента (payingAgent)
operation Операция платежного агента (тег 1044) string +
phones Телефоны платежного агента (тег 1073) string[] +
Данные оператора по приему платежей (receivePaymentsOperator)
phones Телефоны оператора по приему платежей (тег 1074) string[] +
Данные оператора перевода (moneyTransferOperator)
phones Телефоны оператора перевода (тег 1075) string[] +
name Наименование оператора перевода (тег 1026) string +
address Адрес оператора перевода (тег 1005) string +
vatin ИНН оператора перевода (тег 1016) string +

  Данные поставщика

Данные поставщика

|{
«phones»: [«+79175555555»],
«name»: «Поставщик»,
«vatin»: «956839506500»,
«supplierPrint»: true,
«supplierVatinPrint»: true
}
|

Данные поставщика Параметр Описание Тип Возможные значения
Обязательность
phones Телефоны поставщика (тег 1171) string[] +
name Наименование поставщика (тег 1225) string +
vatin ИНН поставщика (тег 1226) string +
supplierPrint Печатать реквизит «Данные поставщика» (тег 1224) bool
по умолчанию — true
supplierVatinPrint Печатать реквизит «ИНН поставщика» (тег 1226)
bool по умолчанию — true

  Информация об организации

Информация об организации

|{
«name»: «ООО \»АТОЛ\»»,
«vatin»: «123456789047»,
«email»: «email@atol.ru»,
«taxationTypes»: [«osn», «esn»],
«agents»: [«payingAgent»],
«address»: «Адрес»
}
|

Данные организации Параметр Описание Тип Возможные значения
Обязательность
name Название организации (тег 1048) string
vatin ИНН организации (тег 1018) string
email E-mail организации (адрес отравителя электронных чеков) (тег
1117) string
address Адрес расчетов (тег 1009) string
taxationTypes Список систем налогообложения (тег 1062) string[]
osn — общая
usnIncome — упрощенная доход
usnIncomeOutcome — упрощенная доход минус расход
esn — единый сельскохозяйственный налог
patent — патентная система налогообложения
agents Признак агента (тег 1057) string[] bankPayingAgent
банковский платежный агент
bankPayingSubagent — банковский платежный субагент
payingAgent — платежный агент
payingSubagent — платежный субагент
attorney — поверенный
commissionAgent — комиссионер
another — другой тип агента по умолчанию — пустой список (не
устанавливать флаги агентов)

  Сведения об операции

Сведения об операции

|{
«id»: 0,
«dateTime»: «2017.07.25 13:16:00»,
«data»: «operation data»
}
|

Сведения об операции (операционный реквизит чека, тег 1270) Параметр
Описание Тип Возможные значения Обязательность
id Идентификатор операции (тег 1271) number 0-255
dateTime Дата, время операции (тег 1273) string Формат —
«yyyy.mm.dd HH:MM:SS»
data Данные операции (тег 1272) string

  Отраслевой реквизит

Отраслевой реквизит

| {
«date»: «2025.07.25»,
«fois»: «001»,
«number»: «126»,
«industryAttribute»: «data»
}
|

Отраслевой реквизит (тег 1260 для позиции и 1261 для чека) Параметр
Описание Тип Возможные значения Обязательность
date Дата документа основания (тег 1263) string Формат — «yyyy.mm.dd»
fois Идентификатор ФОИВ (тег 1262) string Формат — «ЦЦЦ»,
трёхзначное число
number Номер документа основания (тег 1264) string
industryAttribute Значение отраслевого реквизита (тег 1265) string

  Коды товара

Коды товара (с указанием типов КТ)

| {
«undefined»: «…»,
«ean8»: «1234567X»,
«ean13»: «123456789012X»,
«itf14»: «1234567890123X»,
«gs10»: «…»,
«gs1m»: «…»,
«short»: «…»,
«furs»: «…»,
«egais20»: «…»,
«egais30»: «…»,
«f1»: «…»,
«f2»: «…»,
«f3»: «…»,
«f4»: «…»,
«f5»: «…»,
«f6»: «…»
}
|

Коды товара (без указания типов КТ)

| {
«codes»: [
«1234567X»,
«123456789012X»,
«1234567890123X»,
…,
«sgEKKPPcS25y5»
]
}
|

Данный объект используется для формирования реквизита «Код товара» (тег
1163). Данный объект можно использовать двумя способами:

  • с указанием типов КТ (пользователь сам формирует реквизиты с
    конкретным типом кодов товара — реквизиты 13XX);
  • без указания типов КТ (пользователь задаёт массив кодов товара, ККТ
    сама разбирает их тип и формирует реквизит 1163);

При использовании способа «без указания типов КТ» неоходимо подать
массив строк /codes/, остальные реквизиты подавать запрещено!

При использовании способа «с указанием типов КТ» используются
требуемые реквизиты в соответствии с типом КТ, использование массива / codes/ в данном способе запрещено!

Коды товара Параметр Описание Тип Возможные значения Обязательность
undefined Нераспозанный код товара (тег 1300) string
ean8 КТ EAN-8 (тег 1301) string
ean13 КТ EAN-13 (тег 1302) string
itf14 КТ ITF-14 (тег 1303) string
gs10 КТ GS1.0 (тег 1304) string
gs1m КТ GS1.M (тег 1305) string
short КТ КМК (короткий маркировочный код) (тег 1306) string
furs КТ МИ (меховые изделия) (тег 1307) string
egais20 КТ ЕГАИС-2.0 (тег 1308) string
egais30 КТ ЕГАИС-3.0 (тег 1309) string
f1 КТ Ф.1 (тег 1320) string
f2 КТ Ф.2 (тег 1321) string
f3 КТ Ф.3 (тег 1322) string
f4 КТ Ф.4 (тег 1323) string
f5 КТ Ф.5 (тег 1324) string
f6 КТ Ф.6 (тег 1325) string
codes Массив кодов товаров (массив строк) string[]

Коды маркировки gs1m (1305) и short (1306) формируются в позициии
полем imcParams и будут включены в реквизит 1163 автоматически.
Специально подавать их не следует!

  Параметры ККТ

Параметры ККТ

|{
«paymentsAddress»: «Адрес места расчетов»,
«fnsUrl»: «www.nalog.gov.ru»,
«registrationNumber»: «0000000001002292»,
«offlineMode»: false,
«machineInstallation»: false,
«bso»: false,
«encryption»: false,
«autoMode»: false,
«machineNumber»: «»,
«service»: false,
«gambling»: false,
«lottery»: false,
«excise»: false,
«defaultTaxationType»: «osn»,
«ofdChannel»: «usb»,
«insurance»: true,
«marking»: true,
«pawnShop»: true,
«vending»: false,
«catering»: false,
«wholesale»: true
}
|

Данные устройства Параметр Описание Тип Возможные значения
Обязательность
registrationNumber Регистрационный номер ККТ (тег 1037) string
fnsUrl Адрес сайта ФНС (тег 1060) string
offlineMode Признак автономного режима (тег 1002) bool
machineInstallation Признак установки принтера в автомате (тег 1221)
bool
bso Признак АС БСО (тег 1110) bool
encryption Признак шифрования (тег 1056) bool
autoMode Признак автоматического режима (тег 1001) bool
machineNumber Номер автомата (тег 1036) string
internet Признак ККТ для расчетов только в Интернет (тег 1108) bool
service Признак расчетов за услуги (тег 1109) bool
excise Продажа подакцизного товара (тег 1207) bool
gambling Признак проведения азартных игр (тег 1193) bool
lottery Признак проведения лотереи (тег 1126) bool
defaultTaxationType СНО по умолчанию (тег 1055) string osn — общая
usnIncome — упрощенная доход
usnIncomeOutcome — упрощенная доход минус расход
esn — единый сельскохозяйственный налог
patent — патентная система налогообложения Можно не указывать, если
taxationTypes имеет 1 элемент, иначе должен входить в список
taxationTypes
ofdChannel Канал обмена с ОФД string usb — USB (EoU)
ethernet — Ethernet
wifi — Wi-Fi
gsm — GSM-модем
proto — средствами протокола ККТ
tcpipOsStack — TCP/IP стек ОС
ffdVersion Версия ФФД (тег 1209) string 1.05
1.1
1.2
paymentsAddress Место расчетов (тег 1187) string
insurance Признак осуществления страховой деятельности bool
marking Признак торговли маркированными товарами bool
pawnShop Признак осуществления ломбардной деятельности bool
vending Признак применения в торговом автомате bool
catering Признак осуществления услуг общ. питания bool
wholesale Признак оптовой торговли bool

  Параметры ОФД

Параметры ОФД

|{
«name»: «ООО \»Эвотор ОФД\»»,
«vatin»: «9715260691»,
«host»: «ofdp.platformaofd.ru»,
«port»: 21101,
«dns»: «0.0.0.0»
}
|

Данные ОФД Параметр Описание Тип Возможные значения Обязательность
name Название ОФД (тег 1046) string
vatin ИНН ОФД (тег 1017) string
host Адрес ОФД string
port Порт ОФД number 0 — 65535
dns DNS ОФД string

  Параметры ИСМ

Параметры ИСМ

|{
«host»: «31.44.83.188»,
«port»: 21101
}
|

Данные сервера ИСМ (только для ФФД ≥ 1.2) Параметр Описание Тип
Возможные значения Обязательность
host Адрес ОФД string
port Порт ОФД number 0 — 65535

  Код товара

Произвольный тип марки

|»RE0ELx+WgXhKZ1hKNS5UMTEyMDAw»
|

Меховые изделия

|{
«type»: «furs»,
«serial»: «RU-430302-ABC1234567»
}
|

Лекарственные препараты

|{
«type»: «medicines»,
«gtin»: «98765432101234»,
«serial»: «ABC1234567890»
}
|

Табачная продукция

|{
«type»: «tobacco»,
«gtin»: «98765432101234»,
«serial»: «ABC1234»
}
|

Обувь

|{
«type»: «shoes»,
«gtin»: «98765432101234»,
«serial»: «sgEKKPPcS25y5»
}
|

Значение кода товара может быть передано как строкой, так и объектом.

Если передается строка, то её значение интерпретируется как base64-
закодированное значение реквизита 1162. В этом случае пользователь
должен сам составить значение реквизита, закодировать его в base64 и
передать драйверу.

Описание объектов представлено ниже. При передаче значения кода товара
как объекта, драйвер самостоятельно, основываясь на переданных
значениях, составляет реквизит 1162.

Параметр Описание Тип Возможные значения Обязательность
type Тип маркировки string furs — меховые изделия
medicines — лекарства
tobacco — табачная продукция
shoes — обувь +
Дополнительные параметры для меховых изделий (furs)
serial Контрольный знак string +
Дополнительные параметры для лекарств (medicines)
gtin Идентификатор продукта GTIN string +
serial Серийный номер string +
Дополнительные параметры для табачной продукции (tobacco)
gtin Идентификатор продукта GTIN string +
serial Серийный номер string +
Дополнительные параметры для обуви (shoes)
gtin Идентификатор продукта GTIN string +
serial Серийный номер string +

  Код маркировки под ФФД < 1.2

Код маркировки под ФФД < 1.2

|{
«type»: «egais30»,
«mark»: «MTM2MjIyMDAwMDU4ODEwOTE4UVdFUkRGRVdUNTEyMzQ1NllHSEZEU1dFUlQ1NllVSUpIR0ZEU0FFUlRZVUlPS0o4SEdGVkNYWlNETEtKSEdGRFNBT0lQTE1OQkdISllUUkRGR0hKS0lSRVdTREZHSEpJT0lVVERXUUFTREZSRVRZVUlVWUdUUkVERkdIVVlUUkVXUVdF»
}
|

При работе под ФФД < 1.2 при передаче кода маркировки товара в позиции,
ККТ самостоятельно преобразует указанное в /mark/ значение в реквизит 1162.

Параметр Описание Тип Возможные значения Обязательность
type Тип марки string other — любой код маркировки кроме ЕГАИС
2.0 и ЕГАИС 3.0;
egais20 — ЕГАИС 2.0;
egais30 — ЕГАИС 3.0; по умолчанию — other
mark base64-представление значения кода маркировки string +

  Код маркировки под ФФД ≥ 1.2

Код маркировки под ФФД ≥ 1.2 для позиции

|{
«imc»: «MTM2MjIyMDAwMDU4ODEwOTE4UVdFUkRGRVdUNTEyMzQ1NllHSEZEU1dFUlQ1NllVSUpIR0ZEU0FFUlRZVUlPS0o4SEdGVkNYWlNETEtKSEdGRFNBT0lQTE1OQkdISllUUkRGR0hKS0lSRVdTREZHSEpJT0lVVERXUUFTREZSRVRZVUlVWUdUUkVERkdIVVlUUkVXUVdF»,
«itemEstimatedStatus»: «itemPieceSold»,
«imcModeProcessing»: 0,
«itemFractionalAmount»: «4/5»,
«imcBarcode»: «VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIDE=»,
«itemInfoCheckResult»: {
«ecrStandAloneFlag»: false,
«imcCheckFlag»: true,
«imcCheckResult»: true,
«imcEstimatedStatusCorrect»: true,
«imcStatusInfo»: true
}
}
|

Код маркировки под ФФД ≥ 1.2 для проверки

|{
«imcType»: «auto»,
«imc»: «MTM2MjIyMDAwMDU4ODEwOTE4UVdFUkRGRVdUNTEyMzQ1NllHSEZEU1dFUlQ1NllVSUpIR0ZEU0FFUlRZVUlPS0o4SEdGVkNYWlNETEtKSEdGRFNBT0lQTE1OQkdISllUUkRGR0hKS0lSRVdTREZHSEpJT0lVVERXUUFTREZSRVRZVUlVWUdUUkVERkdIVVlUUkVXUVdF»,
«itemEstimatedStatus»: «itemPieceSold»,
«imcModeProcessing»: 0,
«itemFractionalAmount»: «4/5»,
«itemQuantity»: 1,
«itemUnits»: «piece»
}
|

Параметр Описание Тип Возможные значения Обязательность
imcType Тип кода маркировки (тег 2100) string/number 256 — auto
определить тип КМ автоматически;
0 — imcUnrecognized — неопознанный КМ;
1 — imcShort — короткий КМ;
2 — imcFmVerifyCode88 — КМ со значением кода проверки длиной 88
символов, подлежащим проверке в ФН;
3 — imcVerifyCode44 — КМ со значением кода проверки длиной 44 символа,
не подлежащим проверке в ФН;
4 — imcFmVerifyCode44 — КМ со значением кода проверки длиной 44
символа, подлежащим проверке в ФН;
5 — imcVerifyCode4 — КМ со значением кода проверки длиной 4 символа,
не подлежащим проверке в ФН; +
imc base64-представление значения кода маркировки (тег 2000) string +
itemEstimatedStatus Планируемый статус КМ (тег 2003) string/number
1 — itemPieceSold — штучный товар, реализован;
2 — itemDryForSale — мерный товар, в стадии реализации;
3 — itemPieceReturn — штучный товар, возвращен;
4 — itemDryReturn — часть товара, возвращена;
255 — itemStatusUnchanged — статус товара, не изменился; Используется
только для КМ в позициях
*imcModeProcessing * Режим обработки кода товара (тег 2102) number +
itemFractionalAmount Дробное количество маркированного товара (тег
1291) string
imcBarcode Идентификатор маркированного товара (тег 2101) в base64-
представлении string
itemInfoCheckResult Результат проверки сведений о товаре (тег 2106)
<#json_itemInfoCheckResult> object Используется только для КМ в
позициях без проверки в чеке
itemQuantity Количество товара (тег 1023) number Используется
только для проверки КМ
itemUnits Мера количества товара (тег 2108) string/number 0 — piece — штуки, единицы;
10 — gram – грамм;
11 — kilogram – килограмм;
12 — ton – тонна;
20 — centimeter — сантиметр;
21 — decimeter – дециметр;
22 — meter — метр;
30 — squareCentimeter — квадратный сантиметр;
31 — squareDecimeter — квадратный дециметр;
32 — squareMeter — квадратный метр;
40 — milliliter – миллилитр;
41 — liter – литр;
42 — cubicMeter – кубический метр;
50 — kilowattHour – киловатт час;
51 — gkal – гигакалория;
70 — day – сутки (день);
71 — hour — час;
72 — minute – минута;
73 — second – секунда;
80 — kilobyte – килобайт;
81 — megabyte – мегабайт;
82 — gigabyte – гигабайт;
83 — terabyte – терабайт;
255 — otherUnits — иные единицы измерения; Используется только для
проверки КМ

Параметр imcType может не передаваться для позиции, в этом случае ККТ
самостоятельно определяет тип КМ. Но если при проверке КМ на сервере ИСМ
в ответ был получен другой тип КМ, необходимо указывать полученное
(обновленное) значение типа КМ.

Значения параметра itemFractionalAmount представляют собой строку, в
которой записана дробь в формате «Ц…Ц/Ц…Ц», т.е. два числа,
разделённых символом «/» — числитель и знаменатель. Числитель и
знаменатель должны быть отличны от нуля, а также дробь должна быть
правильная, т.е. числитель строго меньше знаменателя. Данный реквизит
соответствует значениям реквизита 1292, реквизит 1291 формируется
автоматически на основании значения этого реквизита.

Значения параметра validationResult используются только в объектах КМ
в позициях, значения параметра получается при проверке КМ и в само
задание проверки КМ соответственно не подаётся.

Значения параметров itemQuantity и itemUnits используются только при
проверке КМ, при подаче объекта КМ в позицию данные параметры указывать
не требуется, так как они будут взяты из соответствующей позиции.
Значения параметров данных параметров (itemQuantity и itemUnits)
следует подавать только в случае, если параметр itemEstimatedStatus
принимает значения:

  • 2 — itemDryForSale — мерный товар, в стадии реализации;
  • 4 — itemDryReturn — часть товара, возвращена;

Параметр imcBarcode необязательный и передаётся в том случае, если в
ответе от сервера ИСМ был возвращён этот параметр.

  Результат проверки сведений о товаре

Результат проверки сведений о товаре

|{
«ecrStandAloneFlag» : true,
«imcCheckFlag» : true,
«imcCheckResult» : true,
«imcEstimatedStatusCorrect» : true,
«imcStatusInfo» : true
}
|

Параметр Описание Тип
*imcCheckFlag * Код маркировки был проверен ФН и (или) ИСМ (тег 2106,
бит 0) boolean
*imcCheckResult * Результат проверки КП КМ положительный (true) или
отрицательный (false) (тег 2106, бит 1) boolean
*imcStatusInfo * Проверка статуса ИСМ выполнена (тег 2106, бит 2) boolean
*imcEstimatedStatusCorrect * Корректность сведений от ИСМ о планируемом
статусе товара (тег 2106, бит 3) boolean
*ecrStandAloneFlag * Результат проверки КП КМ сформирован ККТ,
работающей в автономном режиме (тег 2106, бит 4) boolean

  Результат обработки запроса о КМ ИСМ

Результат обработки запроса о КМ ИСМ

|{
«responseStatus» : true,
«itemStatusCheck» : true
}
|

Параметр Описание Тип
*responseStatus * Результат проверки КП КМ положительный (true) или
отрицательный (false) boolean
*itemStatusCheck * Статус товара корректен boolean

  Пользовательские параметры

Массив пользовательских параметров

|[
{
«id»: 10,
«value»: «АРТИКУЛ»
},
{
«id»: 11,
«value»: «ОПИСАНИЕ»
}
]
|

Параметр Описание Тип
*id * Номер параметра number
*value * Значение параметра string

  Элементы документа

Минимальные состав позиции чека

|{
«type»: «position»,
«name»: «Бананы»,
«price»: 73.15,
«quantity»: 1.0,
«tax»: {
«type»: «vat20»
}
}
|

Позиция с агентами

|{
«type»: «position»,
«name»: «Бананы»,
«price»: 73.15,
«quantity»: 1.0,
«amount»: 73.15,
«tax»: {
«type»: «vat20»
},
«agentInfo»: {
«agents»: [«payingAgent», «bankPayingAgent»],
«payingAgent»: {
«operation»: «Оплата»,
«phones»: [«+79161112233»]
},
«receivePaymentsOperator»: {
«phones»: [«+79163331122»]
},
«moneyTransferOperator»: {
«phones»: [«+79162223311»],
«name»: «Оператор перевода»,
«address»: «Улица Оператора Перевода, д.1»,
«vatin»: «321456987121»
}
},
«supplierInfo»: {
«phones»: [«+79175555555»],
«name»: «Поставщик»,
«vatin»: «956839506500»
}
}
|

Позиция с маркировкой (произвольная)

|{
«type»: «position»,
«name»: «Бананы»,
«price»: 73.15,
«quantity»: 1.0,
«tax»: {
«type»: «vat20»
},
«nomenclatureCode»: «RE0ELx+WgXhKZ1hKNS5UMTEyMDAw»
}
|

Позиция с маркировкой (меховые изделия)

|{
«type»: «position»,
«name»: «Шуба»,
«price»: 100000.0,
«quantity»: 1.0,
«tax»: {
«type»: «vat10»
},
«nomenclatureCode»:{
«type»: «furs»,
«gtin»: «98765432101234»,
«serial»: «RU-430302-ABC1234567»
}
}
|

Позиция с пользовательскими параметрами

|{
«type»: «position»,
«name»: «Пакет»,
«price»: 5,
«quantity»: 2.0,
«amount»: 10,
«paymentMethod»: «fullPayment»,
«paymentObject»: «commodity»,
«tax»: {
«type»: «vat10»
},
«customParameters»: [
{
«id»: 10,
«value»: «АРТИКУЛ»
},
{
«id»: 11,
«value»: «ОПИСАНИЕ»
}
]
}
|

Текст

|{
«type»: «text»,
«text»: «———————————«,
«alignment»: «left»
}
|

Штрихкод

|{
«type»: «barcode»,
«barcode»: «123456789012»,
«barcodeType»: «EAN13»,
«scale»: 2
}
|

Штрихкод GS1-128

|{
«type»: «barcode»,
«barcode»: «[01]98898765432106[3202]012345[15]991231»,
«barcodeType»: «GS1_128»,
«scale»: 1
}
|

QR-код рядом с текстом

|{
«type»: «barcode»,
«barcode»: «https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7»,
«barcodeType»: «QR»,
«scale»: 4,
«alignment»: «left»,
«overlay»: [
{
«type»: «text»,
«text»: «СТРОКА 1»,
«alignment»: «right»
},
{
«type»: «text»,
«text»: «СТРОКА 2»,
«alignment»: «right»
},
{
«type»: «text»,
«text»: «СТРОКА 3»,
«alignment»: «right»
},
{
«type»: «text»,
«text»: «СТРОКА 4»,
«alignment»: «right»
},
{
«type»: «text»,
«text»: «СТРОКА 5»,
«alignment»: «right»
}
]
}
|

Дополнительный реквизит пользователя

|{
«type»: «userAttribute»,
«name»: «Номер документа в учетной системе»,
«value»: «QZ433II»,
«print»: false
}
|

Дополнительный реквизит чека (БСО)

|{
«type»: «additionalAttribute»,
«value»: «1494325660»,
«print»: false
}
|

Изображение из памяти ККТ

|{
«type»: «pictureFromMemory»,
«pictureNumber»: 1,
«alignment»: «left»
}
|

Изображение (массив пикселей) (картинка <#pixel_buffer_format>)

|{
«type»: «pixels»,
«pixels»: «/////////wAAAAD//wAAAAD/////////»,
«width»: 6,
«scale»: 1000,
«alignment»: «center»
}
|

Параметр Описание Тип Возможные значения Обязательность
type Тип элемента string position — товар
text — текстовая строка
barcode — штрихкод
userAttribute — дополнительный реквизит пользователя
additionalAttribute — дополнительный реквизит чека (БСО)
pictureFromMemory — картинка из памяти ККТ
pixels — картинка (массив пикселей) +
Текст
text Строка string по умолчанию — пустая строка (промотка ленты)
alignment Выравнивание string left — по левому краю
center — по центру
right — по правому краю по умолчанию — left
wrap Перенос string none — не переносить, обрезать по ширине ленты
chars — посимвольный перенос
words — перенос по словам

Порядок переноса строк: Строка разбивается на подстроки в соответствии с

переносами в строке (\n, \r\n, \r)

Каждая подстрока разбивается на более мелкие подстроки в соответствии с

wrap
по умолчанию — none
font Шрифт number Зависит от модели ККТ по умолчанию — 0
doubleWidth Двойная ширина bool по умолчанию — false
doubleHeight Двойная высота bool по умолчанию — false
storeInJournal Сохранять в электронном журнале bool по умолчанию —
true, если печать происходит в открытом чеке, иначе false
Штрихкод
barcode Данные ШК string в зависимости от barcodeType +
barcodeType Тип ШК string EAN8
EAN13
UPCA
UPCE
CODE39
CODE93
CODE128
CODABAR
ITF
ITF14
GS1_128
PDF417
QR
CODE39_EXTENDED +
alignment Выравнивание string left — по левому краю
center — по центру
right — по правому краю по умолчанию — center
scale Коэффициент увеличения number по умолчанию — 1
height Высота (только для одномерных ШК) number по умолчанию — 30
printText Печатать значение ШК (только для одномерных ШК) bool по
умолчанию — false
overlay Текст для печати рядом с ШК (см. пример QR-код рядом с текстом)
Для ККТ П5 поддерживается только для QR-кода object[] — массив объектов
типа Текст(«type»: «text») по умолчанию — пустой, не печатать
storeInJournal Сохранять в электронном журнале (только для QR-кода)
bool по умолчанию — true, если печать происходит в открытом чеке,
иначе false
Картинка (массив пикселей)
pixels Массив пикселей. Каждый байт кодирует один пиксель (0 — белый,
другие значения — черный). Затем массив кодируется в base64 string
Строка должна быть корректным base64-представлением +
width Ширина картинки в пикселях number Размер массива пикселей
должен быть кратен этому значению +
scale Процент увеличения картинки number по умолчанию — 100
alignment Выравнивание string left — по левому краю
center — по центру
right — по правому краю по умолчанию — center
Картинка из памяти ККТ
pictureNumber Номер картинки number +
alignment Выравнивание string left — по левому краю
center — по центру
right — по правому краю по умолчанию — center
Товарная позиция
name Наименование товара (тег 1030) string +
price Цена number +
quantity Количество (тег 1023) number +
amount Сумма number +
infoDiscountAmount Информационная скидка number по умолчанию — 0.0
department Отдел number по умолчанию — 1 (по возможности, без
печати на чековой ленте)
measurementUnit Единицы измерения кол-ва товара (строковый тег 1197
для ФФД < 1.2; числовой тег 2108 для ФФД 1.2 или псевдоним) string / number Для ФФД 1.2 0 — piece — штуки, единицы; 10 — gram – грамм; 11 — kilogram – килограмм; 12 — ton – тонна; 20 — centimeter — сантиметр; 21 — decimeter – дециметр; 22 — meter — метр; 30 — squareCentimeter — квадратный сантиметр; 31 — squareDecimeter — квадратный дециметр; 32 — squareMeter — квадратный метр; 40 — milliliter – миллилитр; ¨C3342C – литр; ¨C3343C – кубический метр; ¨C3344C – киловатт час; ¨C3345C – гигакалория; ¨C3346C – сутки (день); ¨C3347C — час; ¨C3348C – минута; ¨C3349C – секунда; ¨C3350C – килобайт; ¨C3351C – мегабайт; ¨C3352C – гигабайт; ¨C3353C – терабайт; ¨C3354C — иные единицы измерения; ФФД < 1.2: по умолчанию не передаются ФФД 1.2: + ¨C3355C Флаг штучного товара. В количестве не будут напечатаны нули в дробной части. bool по умолчанию — false ¨C3356C Признак способа рaсчета (тег 1214) string ¨C3357C — предоплата 100% ¨C3358C — предоплата ¨C3359C — аванс ¨C3360C — полный расчет ¨C3361C — частичный расчет и кредит ¨C3362C — передача в кредит ¨C3363C — оплата кредита по умолчанию — ¨C3364C ¨C3365C Признак предмета расчета (тег 1212) string ¨C3366C или 1 — товар ¨C3367C или 2 — подакцизный товар ¨C3368C или 3 — работа ¨C3369C или 4 — услуга ¨C3370C или 5 — ставка азартной игры ¨C3371C или 6 — выигрыш азартной игры ¨C3372C или 7 — лотерейный билет ¨C3373C или 8 — выигрыш лотереи ¨C3374C или 9 — предоставление результатов интеллектуальной деятельности ¨C3375C или 10 — платеж ¨C3376C или 11 — агентское вознаграждение ¨C3377C (устаревшее) или ¨C3378C или 12 — выплата ¨C3379C или 13 — иной предмет расчета ¨C3380C или 14 — имущественное право ¨C3381C или 15 — внереализационный доход ¨C3382C (устаревшее) или ¨C3383C или 16 — иные платежи и взносы/страховые взносы ¨C3384C или 17 — торговый сбор ¨C3385C или 18 — курортный сбор ¨C3386C или 19 — залог ¨C3387C или 20 — расход ¨C3388C или 21 — взносы на ОПС ИП ¨C3389C или 22 — взносы на ОПС ¨C3390C или 23 — взносы на ОМС ИП ¨C3391C или 24 — взносы на ОМС ¨C3392C или 25 — взносы на ОСС ¨C3393C или 26 — платеж казино ¨C3394C или 27 — выдача денежных средств ¨C3395C или 30 — подакцизный товар, не имеющий код маркировки ¨C3396C или 31 — подакцизный товар, имеющий код маркировки ¨C3397C или 32 — товар, не имеющий код маркировки ¨C3398C или 33 — товар, имеющий код маркировки + ¨C3399C Код товара (маркировка) <#json_nomenclature> (тег
1162) Нельзя использовать одновременно с markingCode и imcParams
string / object
markingCode Код маркировки под ФФД < 1.2 <#json_marking_code>. Нельзя
использовать одновременно с nomenclatureCode и imcParams object
imcParams Код маркировки под ФФД ≥ 1.2 <#json_imc>. Нельзя
использовать одновременно с nomenclatureCode и markingCode object
tax Налог <#json_tax> object
agentInfo Данные агента <#json_agent_info> object
supplierInfo Данные поставщика <#json_supplier_info> object
industryInfo Отраслевой реквизит (только для ФФД ≥ 1.2)
<#json_industry_info> object[]
productCodes Коды товара (только для ФФД ≥ 1.2) <#json_product_codes>
object
additionalAttribute Дополнительный реквизит предмета расчета (тег
1191) string
additionalAttributePrint Печатать или не печатать дополнительный
реквизит предмета расчета bool по умолчанию — true
exciseSum Значение акциза (тег 1229) double
countryCode Код страны происхождения (тег 1230) string
customsDeclaration Номер таможенной декларации (тег 1231) string
userParam3 Значение пользовательского параметра 3 number
userParam4 Значение пользовательского параметра 4 number
userParam5 Значение пользовательского параметра 5 number
userParam6 Значение пользовательского параметра 6 number
customParameters Пользовательские параметры <#json_custom_parameters>
object[]
positionForm Форма фискального документа для добавления позиции
string electronicAndPrint — электронная и печатная формы (по умолчанию)
onlyElectronic — только электронная форма
onlyPrint — только печатная форма
Дополнительный реквизит пользователя (тег 1084)
name Наименование дополнительного реквизита пользователя string +
value Значение дополнительного реквизита пользователя string +
print Печатать или не печатать реквизит на чековой ленте bool по
умолчанию — true
Дополнительный реквизит чека (БСО) (тег 1192)
value Значение дополнительного реквизита чека (БСО) string +
print Печатать или не печатать реквизит на чековой ленте bool по
умолчанию — true

Допечатать документ

Допечатать документ

|{
«type»: «continuePrint»
}
|

С помощью этого задания можно допечатать документ, который закрылся в
фискальном накопителе, но не допечатался на чековой ленте. Задание не
вернет ошибку, если нет документа для допечатывания.

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string continuePrint — допечатать документ +

Данные результата отсутствуют.

Поддерживается для всех ККТ

Открытие смены

Открытие смены

|{
«type»: «openShift»,

"operator": {
   "name": "Иванов",
   "vatin": "123654789507"
}

}
|

Открытие смены с печатью дополнительных строк после

|{
«type»: «openShift»,

"operator": {
   "name": "Иванов",
   "vatin": "123654789507"
},

"postItems": [
    {
        "type": "text",
        "text": "ОТКРЫТА НОВАЯ СМЕНА",
        "alignment": "center",
        "doubleWidth": true
    },
    {
        "type": "text",
        "text": "ХОРОШЕГО ДНЯ, КАССИР",
        "alignment": "center",
        "doubleWidth": true
    }
]

}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string openShift — открытие смены +
operator Оператор (кассир) <#json_operator> object
preItems Элементы для печати до документа <#json_document_items>
object[] Используются только элементы с типами:
text
barcode
pictureFromMemory
pixels
postItems Элементы для печати после документа <#json_document_items>
object[] Используются только элементы с типами:
text
barcode
pictureFromMemory
pixels
electronically Электронный отчет bool true — электронный отчет
false — печатный отчет по умолчанию — false. Если ККТ не поддерживает
такой функционал, параметр будет проигнорирован и отчет будет напечатан.

Ответ на открытие смены

|{
«fiscalParams» : {
«fiscalDocumentDateTime» : «2017-07-25T13:16:00+03:00»,
«fiscalDocumentNumber» : 70,
«fiscalDocumentSign» : «0024109209»,
«fnNumber» : «9999078900000961»,
«registrationNumber» : «0000000001002292»,
«shiftNumber» : 12,
«fnsUrl»: «www.nalog.gov.ru»
},
«warnings»: {
«notPrinted»: true
}
}
|

Результат задания Параметр Описание Тип
Фискальные параметры отчета (fiscalParams)
fiscalDocumentNumber Номер ФД отчета (тег 1040) number
fiscalDocumentSign ФПД отчета (тег 1077) string
fiscalDocumentDateTime Дата и время отчета (тег 1012) string
shiftNumber Номер смены (тег 1038) number
fnNumber Номер ФН (тег 1041) string
registrationNumber РНМ (тег 1037) string
fnsUrl Адрес сайта ФНС (тег 1060) string
Флаги предупреждений (warnings)
notPrinted Документ закрыт, но не допечатан.
Рекомендуется вывести пользователю сообщение о сбое печати и попросить
устранить неисправность (самый стандартный случай — закончилась бумага).
После устранения неисправности требуется продолжить печать bool

В процессе выполнения этого JSON-задания драйвер может автоматически
изменять настройки, связанные с печатью клише и отрезкой чековой ленты,
такие как №62 (Не печатать клише автоматически при закрытии чека),
№69 (Отрезать ЧЛ после печати клише командой «Печать клише»).

Поддерживается для всех ККТ

Закрытие смены

Закрытие смены

|{
«type»: «closeShift»,

"operator": {
    "name": "Иванов",
    "vatin": "123654789507"
}

}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string closeShift — закрытие смены +
operator Оператор (кассир) <#json_operator> object
preItems Элементы для печати до документа <#json_document_items>
object[] Используются только элементы с типами:
text
barcode
pictureFromMemory
pixels
postItems Элементы для печати после документа <#json_document_items>
object[] Используются только элементы с типами:
text
barcode
pictureFromMemory
pixels
electronically Электронный отчет bool true — электронный отчет
false — печатный отчет по умолчанию — false. Если ККТ не поддерживает
такой функционал, параметр будет проигнорирован и отчет будет напечатан.

Ответ на закрытие смены

|{
«fiscalParams» : {
«fiscalDocumentDateTime» : «2017-07-25T13:12:00+03:00»,
«fiscalDocumentNumber» : 69,
«fiscalDocumentSign» : «1138986989»,
«fnNumber» : «9999078900000961»,
«registrationNumber» : «0000000001002292»,
«shiftNumber» : 11,
«receiptsCount» : 3,
«fnsUrl»: «www.nalog.gov.ru»
},
«warnings»: {
«notPrinted»: false
}
}
|

Результат задания Параметр Описание Тип
Фискальные параметры отчета (fiscalParams)
fiscalDocumentNumber Номер ФД отчета (тег 1040) number
fiscalDocumentSign ФПД отчета (тег 1077) string
fiscalDocumentDateTime Дата и время отчета (тег 1012) string
shiftNumber Номер смены (тег 1038) number
fnNumber Номер ФН (тег 1041) string
registrationNumber РНМ (тег 1037) string
receiptsCount Количество чеков за смену number
fnsUrl Адрес сайта ФНС (тег 1060) string
Флаги предупреждений (warnings)
notPrinted Документ закрыт, но не допечатан.
Рекомендуется вывести пользователю сообщение о сбое печати и попросить
устранить неисправность (самый стандартный случай — закончилась бумага).
После устранения неисправности требуется продолжить печать bool

В процессе выполнения этого JSON-задания драйвер может автоматически
изменять настройки, связанные с печатью клише и отрезкой чековой ленты,
такие как №62 (Не печатать клише автоматически при закрытии чека),
№69 (Отрезать ЧЛ после печати клише командой «Печать клише»).

Поддерживается для всех ККТ

Фискальные чеки

Пример чека прихода (с печатью на чековой ленте) для ФФД 1.1

|{
«type»: «sell»,
«taxationType»: «osn»,
«ignoreNonFiscalPrintErrors»: false,

«operator»: {
«name»: «Иванов»,
«vatin»: «123654789507»
},

«items»: [
{
«type»: «position»,
«name»: «Бананы»,
«price»: 73.15,
«quantity»: 1.0,
«amount»: 73.15,
«infoDiscountAmount»: 0.0,
«department»: 1,
«measurementUnit»: «кг»,
«paymentMethod»: «advance»,
«paymentObject»: «commodity»,
«nomenclatureCode»: «RE0ELx+WgXhKZ1hKNS5UMTEyMDAw»,
«tax»: {
«type»: «vat20»
},
«agentInfo»: {
«agents»: [«payingAgent», «bankPayingAgent»],
«payingAgent»: {
«operation»: «Оплата»,
«phones»: [«+79161112233»]
},
«receivePaymentsOperator»: {
«phones»: [«+79163331122»]
},
«moneyTransferOperator»: {
«phones»: [«+79162223311»],
«name»: «Оператор перевода»,
«address»: «Улица Оператора Перевода, д.1»,
«vatin»: «321456987121»
}
},
«supplierInfo»: {
«phones»: [«+79175555555»],
«name»: «Поставщик»,
«vatin»: «956839506500»
}
},
{
«type»: «text»,
«text»: «———————————«,
«alignment»: «left»,
«font»: 0,
«doubleWidth»: false,
«doubleHeight»: false
},
{
«type»: «position»,
«name»: «Шуба»,
«price»: 51.25,
«quantity»: 2.0,
«amount»: 102.50,
«department»: 1,
«paymentMethod»: «fullPayment»,
«paymentObject»: «commodity»,
«nomenclatureCode»: {
«type»: «furs»,
«gtin»: «98765432101234»,
«serial»: «RU-430302-ABC1234567»
},
«tax»: {
«type»: «vat10»
}
},
{
«type»: «text»,
«text»: «———————————«,
«alignment»: «left»,
«font»: 0,
«doubleWidth»: false,
«doubleHeight»: false
},
{
«type»: «position»,
«name»: «Кефир»,
«price»: 48.45,
«quantity»: 1.0,
«amount»: 48.45,
«department»: 1,
«measurementUnit»: «шт.»,
«paymentMethod»: «fullPrepayment»,
«paymentObject»: «excise»,
«additionalAttribute»: «ID:iASDv3w45»,
«tax»: {
«type»: «vat0»
}
},
{
«type»: «barcode»,
«barcode»: «123456789012»,
«barcodeType»: «EAN13»,
«scale»: 2
}
],
«payments»: [
{
«type»: «cash»,
«sum»: 2000.00
}
],
«total»: 224.00
}
|

Пример чека прихода (без печати на чековой ленте) для ФФД 1.1

|{
«type»: «sell»,
«taxationType»: «osn»,
«electronically»: true,

«operator»: {
«name»: «Иванов»,
«vatin»: «123654789507»
},

«clientInfo»: {
«emailOrPhone»: «+79161234567»
},

«items»: [
{
«type»: «position»,
«name»: «Бананы»,
«price»: 73.15,
«quantity»: 1.0,
«amount»: 73.15,
«infoDiscountAmount»: 0.0,
«department»: 1,
«measurementUnit»: «кг»,
«paymentMethod»: «advance»,
«paymentObject»: «commodity»,
«tax»: {
«type»: «vat20»
}
},
{
«type»: «position»,
«name»: «Шуба»,
«price»: 51.25,
«quantity»: 2.0,
«amount»: 102.50,
«department»: 1,
«paymentMethod»: «fullPayment»,
«paymentObject»: «commodity»,
«tax»: {
«type»: «vat10»
}
}
],
«payments»: [
{
«type»: «electronically»,
«sum»: 175.00
}
],
«total»: 175.00
}
|

Пример чека прихода с печатью акции

|{
«type»: «sell»,
«taxationType»: «osn»,

«operator»: {
«name»: «Иванов»,
«vatin»: «123654789507»
},

«clientInfo»: {
«emailOrPhone»: «+79161234567»
},

«items»: [
{
«type»: «userAttribute»,
«name»: «Идентификатор скидки»,
«value»: «PP3569YY»,
«print»: false
},
{
«type»: «position»,
«name»: «Пакет»,
«price»: 5,
«quantity»: 2.0,
«amount»: 10,
«paymentMethod»: «fullPayment»,
«paymentObject»: «commodity»,
«tax»: {
«type»: «vat10»
}
}
],
«payments»: [
{
«type»: «electronically»,
«sum»: 10
}
],
«total»: 10,

«postItems»: [
{
«type»: «text»,
«text»: «АКЦИЯ 2 ПАКЕТА ПО ЦЕНЕ ОДНОГО»,
«alignment»: «center»
},
{
«type»: «text»,
«text»: «ТОЛЬКО В 2018 ГОДУ»,
«alignment»: «center»
},
{
«type»: «text»,
«text»: «ПРЕДЪЯВИТЕ ЧЕК ДЛЯ ПОЛУЧЕНИЯ СКИДКИ»,
«alignment»: «center»
},
{
«type»: «barcode»,
«barcode»: «978020137962»,
«barcodeType»: «EAN13»
}
]
}
|

Пример чека прихода (маркированный товар, передача 1162) для ФФД 1.1

|{
«type»: «sell»,
«taxationType»: «osn»,

«operator»: {
«name»: «Иванов»,
«vatin»: «123654789507»
},

«clientInfo»: {
«emailOrPhone»: «+79161234567»
},

«items»: [
{
«type»: «position»,
«name»: «Лекарство»,
«price»: 73.15,
«quantity»: 1.0,
«amount»: 73.15,
«infoDiscountAmount»: 0.0,
«department»: 1,
«measurementUnit»: «кг»,
«paymentMethod»: «fullPayment»,
«paymentObject»: «commodity»,
«tax»: {
«type»: «vat20»
},
«nomenclatureCode»: {
«type»: «medicines»,
«gtin»: «98765432101234»,
«serial»: «ABC1234567890»
}
},
{
«type»: «position»,
«name»: «Табак»,
«price»: 100,
«quantity»: 2.0,
«amount»: 200,
«infoDiscountAmount»: 0.0,
«department»: 1,
«paymentMethod»: «fullPayment»,
«paymentObject»: «commodity»,
«tax»: {
«type»: «vat20»
},
«nomenclatureCode»: {
«type»: «tobacco»,
«gtin»: «98765432101234»,
«serial»: «ABC1234»
}
},
{
«type»: «position»,
«name»: «Табак»,
«price»: 50,
«quantity»: 3.0,
«amount»: 150,
«infoDiscountAmount»: 0.0,
«department»: 1,
«paymentMethod»: «fullPayment»,
«paymentObject»: «commodity»,
«tax»: {
«type»: «vat0»
},
«nomenclatureCode»: {
«type»: «shoes»,
«gtin»: «98765432101234»,
«serial»: «sgEKKPPcS25y5»
}
},
{
«type»: «position»,
«name»: «Шуба»,
«price»: 51.25,
«quantity»: 2.0,
«amount»: 102.50,
«department»: 1,
«paymentMethod»: «fullPayment»,
«paymentObject»: «commodity»,
«tax»: {
«type»: «vat10»
},
«nomenclatureCode»: {
«type»: «furs»,
«serial»: «RU-430302-ABC1234567»
}
},
{
«type»: «position»,
«name»: «Позиция с кодом товара»,
«price»: 10,
«quantity»: 1.5,
«amount»: 15,
«department»: 1,
«paymentMethod»: «fullPayment»,
«paymentObject»: «commodity»,
«tax»: {
«type»: «vat10»
},
«nomenclatureCode»: «RE0ELx+WgXhKZ1hKNS5UMTEyMDAw»
}
],
«payments»: [
{
«type»: «electronically»,
«sum»: 540
}
],
«total»: 540
}
|

Пример чека прихода (маркированный товар, передача кода маркировки)

|{
«type»: «sell»,
«taxationType»: «osn»,

«operator»: {
«name»: «Иванов»,
«vatin»: «123654789507»
},

«clientInfo»: {
«emailOrPhone»: «+79161234567»
},

«items»: [
{
«type»: «position»,
«name»: «Позиция с кодом товара»,
«price»: 10,
«quantity»: 1.5,
«amount»: 15,
«department»: 1,
«paymentMethod»: «fullPayment»,
«paymentObject»: «commodity»,
«tax»: {
«type»: «vat10»
},
«markingCode»: {
«type»: «egais30»,
«mark»: «MTM2MjIyMDAwMDU4ODEwOTE4UVdFUkRGRVdUNTEyMzQ1NllHSEZEU1dFUlQ1NllVSUpIR0ZEU0FFUlRZVUlPS0o4SEdGVkNYWlNETEtKSEdGRFNBT0lQTE1OQkdISllUUkRGR0hKS0lSRVdTREZHSEpJT0lVVERXUUFTREZSRVRZVUlVWUdUUkVERkdIVVlUUkVXUVdF»
}
}
],
«payments»: [
{
«type»: «electronically»,
«sum»: 15
}
],
«total»: 15
}
|

Пример чека прихода (предварительная проверка маркированного товара
под ФФД ≥ 1.2, передача кода маркировки)

|{
«type»: «sell»,
«validateMarkingCodes»: true,
«operator»: {
«name»: «Иванов»,
«vatin»: «»
},
«electronically»: false,
«items»: [
{
«type»: «position»,
«name»: «*3282705 Товар»,
«price»: 299.95,
«quantity»: 1.0,
«measurementUnit»: «piece»,
«amount»: 299.95,
«infoDiscountAmount»: 0.0,
«tax»: {
«type»: «vat20»,
«sum»: 0.0
},
«paymentObject»: «commodityWithMarking»,
«paymentMethod»: «fullPayment»,
«imcParams»: {
«imcType»: «auto»,
«imc»: «MDEwMjkwMDAwMDQ3NTgzMDIxTWRFZng6WHA2WUZkNx05MTgwMjkdOTJhUUlRa0k3b0hYbXpHL21kS3h6Q1VDS1RKSFhvQk9EZG1DZE01azhRajdnYVpWMnhibjY2eEJYR0lLcnRmdnFQSU5BMmprYmp5ajMvTytreTZvdTFOQT09»,
«itemEstimatedStatus»: «itemPieceSold»,
«imcModeProcessing»: 0
}
}
],
«payments»: [
{
«type»: «0»,
«sum»: 300.0
}
],
«taxes»: [],
«total»: 299.95,
«clientInfo»: {
«emailOrPhone»: «address@mail.ru»
},
«companyInfo»: {
«email»: «test@ofd.ru»
}
}
|

Пример чека прихода с пользовательскими параметрами

|{
«type»: «sell»,
«taxationType»: «osn»,

«operator»: {
«name»: «Иванов»,
«vatin»: «123654789507»
},

«clientInfo»: {
«emailOrPhone»: «+79161234567»
},

«items»: [
{
«type»: «position»,
«name»: «Пакет»,
«price»: 5,
«quantity»: 2.0,
«amount»: 10,
«paymentMethod»: «fullPayment»,
«paymentObject»: «commodity»,
«tax»: {
«type»: «vat10»
},
«customParameters»: [
{
«id»: 10,
«value»: «АРТИКУЛ»
},
{
«id»: 11,
«value»: «ОПИСАНИЕ»
}
]
}
],
«payments»: [
{
«type»: «electronically»,
«sum»: 10
}
],
«total»: 10,
«customParameters»: [
{
«id»: 12,
«value»: «АРТИКУЛ»
},
{
«id»: 13,
«value»: «ОПИСАНИЕ»
}
]
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string sell — чек прихода
buy — чек расхода
sellReturn — чек возврата прихода
buyReturn — чек возврата расхода +
ignoreNonFiscalPrintErrors Игнорировать ошибки при печати
нефискальных элементов из items bool
electronically Электронный чек bool true — электронный чек
false — печатный чек по умолчанию — false
taxationType Система налогообложения string osn — общая
usnIncome — упрощенная (Доход)
usnIncomeOutcome — упрощенная (Доход минус Расход)
esn — единый сельскохозяйственный налог
patent — патентная можно не передавать, если ККТ зарегистрирована с
единственной СНО
paymentsPlace Место проведения расчета (тег 1187) string
paymentsAddress Адрес расчётов (тег 1009) string + для ФФД ≥ 1.2
machineNumber Номер автомата (тег 1036) string
operator Оператор (кассир) <#json_operator> object
clientInfo Данные покупателя <#json_client_info> object
companyInfo Данные продавца <#json_company_info> object
agentInfo Данные агента <#json_agent_info> object
supplierInfo Данные поставщика <#json_supplier_info> object
operationInfo Сведения об операции (только для ФФД ≥ 1.2)
<#json_operation_info> object
industryInfo Отраслевой реквизит (только для ФФД ≥ 1.2)
<#json_industry_info> object[]
items Элементы документа <#json_document_items> object[] +
payments Оплаты <#json_payment> object[] +
taxes Налоги на чек <#json_tax> object[]
total Итог чека number Может отличаться от суммы позиций на
значение, равное копейкам чека.
Если не задан — высчитывается автоматически из суммы всех позиций
preItems Элементы для печати до документа <#json_document_items>
object[] Используются только элементы с типами:
text
barcode
pictureFromMemory
pixels
postItems Элементы для печати после документа <#json_document_items>
object[] Используются только элементы с типами:
text
barcode
pictureFromMemory
pixels
validateMarkingCodes Предварительно проверить имеющиеся в чеке КМ
(только для ФФД ≥ 1.2) bool
customParameters Пользовательские параметры <#json_custom_parameters>
object[]

Пример ответа на чек (без валидации КМ)

|{
«fiscalParams» : {
«fiscalDocumentDateTime» : «2018-03-06T13:52:00+03:00»,
«fiscalDocumentNumber» : 71,
«fiscalDocumentSign» : «1494325660»,
«fiscalReceiptNumber» : 1,
«fnNumber» : «9999078900000961»,
«registrationNumber» : «0000000001002292»,
«shiftNumber» : 12,
«total» : 390.75,
«fnsUrl»: «www.nalog.gov.ru»
},
«warnings»: null
}
|

Пример ответа на чек c предварительной проверкой маркированного
товара под ФФД ≥ 1.2 и передачей кода маркировки

|{
«fiscalParams» : {
«fiscalDocumentDateTime» : «2020-12-10T14:01:00+03:00»,
«fiscalDocumentNumber» : 6,
«fiscalDocumentSign» : «2226822848»,
«fiscalReceiptNumber» : 4,
«fnNumber» : «9999078902007163»,
«fnsUrl» : «www.nalog.gov.ru»,
«registrationNumber» : «0000000001007644»,
«shiftNumber» : 1,
«total» : 299.95
},
«validateMarks» : [
{
// ошибка проверки данной КМ
«driverError»: {
«code»: 0
},
// результаты сохранения КМ в таблице ФН-М в случае успешной проверки
«itemInfoCheckResult»: {
«imcCheckFlag»: true,
«imcCheckResult»: true,
«imcStatusInfo»: true,
«imcEstimatedStatusCorrect»: true,
«ecrStandAloneFlag»: false
},
// результаты проверки в ФН-М
«offlineValidation»: {
«fmCheck»: false,
«fmCheckErrorReason»: «typeIncorrect»,
«fmCheckResult»: false
},
// результаты проверки на сервере ИСМ
«onlineValidation»: {
«imcType» : «imcVerifyCode44»,
«itemInfoCheckResult»: {
«ecrStandAloneFlag»: false,
«imcCheckFlag»: true,
«imcCheckResult»: true,
«imcEstimatedStatusCorrect»: true,
«imcStatusInfo»: true
},
«markOperatorItemStatus»: «itemEstimatedStatusCorrect»,
«markOperatorResponse»: {
«itemStatusCheck»: true,
«responseStatus»: true
},
«markOperatorResponseResult» : «correct»
},
«sentImcRequest»: true
},

]
«warnings» : {}
}
|

Результат задания Параметр Описание Тип
Фискальные параметры чека (fiscalParams)
total Итог number
fiscalDocumentNumber Номер ФД чека number
fiscalDocumentSign ФПД чека string
fiscalDocumentDateTime Дата и время чека string
fiscalReceiptNumber Номер чека в смене number
shiftNumber Номер смены number
fnNumber Номер ФН string
registrationNumber РНМ string
fnsUrl Адрес сайта ФНС string
Валидация массива КМ (validateMarks) <#validate_marks>
Флаги предупреждений (warnings)
notPrinted Документ закрыт, но не допечатан.
Рекомендуется вывести пользователю сообщение о сбое печати и попросить
устранить неисправность (самый стандартный случай — закончилась бумага).
После устранения неисправности требуется продолжить печать. bool

В процессе выполнения этого JSON-задания драйвер может автоматически
изменять настройки, связанные с печатью клише и отрезкой чековой ленты,
такие как №62 (Не печатать клише автоматически при закрытии чека),
№69 (Отрезать ЧЛ после печати клише командой «Печать клише»).

Проверка всех имеющихся КМ в чеке (validateMarkingCodes = true)
является блокирующей операцией и может занимать продолжительное время.
Максимальное время проверки одного КМ — 60 секунд, если ответ от ИСМ за
это время не был получен, JSON-задание выполнено не будет!

При работе по ФФД ≥ 1.2. реквизиты 1228 (ИНН покупателя) и 1261
(отраслевой реквизит) автоматически включаются в данные уведомления,
если в чеке присутствуют позиции, содержащие КМ. Подробнее в
соответствующем разделе <#sales_notice>.

Поддерживается для всех ККТ

Чеки коррекции

Пример чека коррекции (ФФД 1.05)

|{
«type»: «sellCorrection»,
«taxationType»: «osn»,

"correctionType": "self",
"correctionBaseDate": "2017.07.25",
"correctionBaseNumber": "1175",

"operator": {
    "name": "Иванов",
    "vatin": "123654789507"
},

"payments": [
    {
        "type": "cash",
        "sum": 2000.00
    }
],

"taxes": [
    {
        "type": "vat20",
        "sum": 10.0
    },
    {
        "type": "vat10",
        "sum": 15.0
    }
]

}
|

Пример чека коррекции (ФФД 1.1)

|{
«type»: «sellCorrection»,
«taxationType»: «osn»,
«electronically»: true,
«ignoreNonFiscalPrintErrors»: false,

«correctionType»: «self»,
«correctionBaseDate»: «2017.07.25»,
«correctionBaseNumber»: «1175»,

«operator»: {
«name»: «Иванов»,
«vatin»: «123654789507»
},

«clientInfo»: {
«emailOrPhone»: «+79161234567»
},

«items»: [
{
«type»: «position»,
«name»: «Бананы»,
«price»: 73.15,
«quantity»: 1.0,
«amount»: 73.15,
«infoDiscountAmount»: 0.0,
«department»: 1,
«measurementUnit»: «кг»,
«paymentMethod»: «advance»,
«paymentObject»: «commodity»,
«nomenclatureCode»: «MTIzNDEyMzQ1Njc4MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=»,
«tax»: {
«type»: «vat20»
},
«agentInfo»: {
«agents»: [«payingAgent», «bankPayingAgent»],
«payingAgent»: {
«operation»: «Оплата»,
«phones»: [«+79161112233»]
},
«receivePaymentsOperator»: {
«phones»: [«+79163331122»]
},
«moneyTransferOperator»: {
«phones»: [«+79162223311»],
«name»: «Оператор перевода»,
«address»: «Улица Оператора Перевода, д.1»,
«vatin»: «321456987121»
}
},
«supplierInfo»: {
«phones»: [«+79175555555»],
«name»: «Поставщик»,
«vatin»: «956839506500»
}
},
{
«type»: «position»,
«name»: «Шуба»,
«price»: 51.25,
«quantity»: 2.0,
«amount»: 102.50,
«department»: 1,
«paymentMethod»: «fullPayment»,
«paymentObject»: «commodity»,
«nomenclatureCode»: «MTIzNDEyMzQ1Njc4MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=»,
«tax»: {
«type»: «vat10»
}
},
{
«type»: «position»,
«name»: «Пряники»,
«price»: 64.25,
«quantity»: 2.0,
«amount»: 128.50,
«infoDiscountAmount»: 6.0,
«department»: 1,
«measurementUnit»: «шт.»,
«paymentMethod»: «fullPrepayment»,
«paymentObject»: «commodity»,
«tax»: {
«type»: «vat10»
}
},
{
«type»: «position»,
«name»: «Батон нарезной»,
«price»: 38.15,
«quantity»: 1.0,
«amount»: 38.15,
«department»: 1,
«measurementUnit»: «шт.»,
«paymentMethod»: «fullPrepayment»,
«paymentObject»: «commodity»,
«tax»: {
«type»: «10»
}
},
{
«type»: «position»,
«name»: «Кефир»,
«price»: 48.45,
«quantity»: 1.0,
«amount»: 48.45,
«department»: 1,
«measurementUnit»: «шт.»,
«paymentMethod»: «fullPrepayment»,
«paymentObject»: «excise»,
«tax»: {
«type»: «vat0»
}
}
],
«payments»: [
{
«type»: «electronically»,
«sum»: 390.70
}
],
«total»: 390.7
}
|

При работе по ФФД ≥ 1.1 чеки коррекции имеют вид, аналогичный обычным
чекам, но с добавлением информации о коррекции: тип, описание, дата
документа основания и номер документа основания.

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string sellCorrection — чек коррекции прихода
buyCorrection — чек коррекции расхода
sellReturnCorrection — чек коррекции возврата прихода (ФФД ≥ 1.1)
buyReturnCorrection — чек коррекции возврата расхода (ФФД ≥ 1.1) +
ignoreNonFiscalPrintErrors Игнорировать ошибки при печати
нефискальных элементов из items bool
operator Оператор (кассир) <#json_operator> object
correctionType Тип коррекции (тег 1173) string self — самостоятельно
instruction — по предписанию
correctionBaseDate Дата совершения корректируемого расчета (тег 1178)
string Формат — yyyy.mm.dd
correctionBaseNumber Номер предписания налогового органа (тег 1179)
string
electronically Электронный чек bool true — электронный чек
false — печатный чек по умолчанию — false
taxationType Система налогообложения string osn — общая
usnIncome — упрощенная (Доход)
usnIncomeOutcome — упрощенная (Доход минус Расход)
esn — единый сельскохозяйственный налог
patent — патентная можно не передавать, если ККТ зарегистрирована с
единственной СНО
paymentsPlace Место проведения расчета (тег 1187) string
paymentsAddress Адрес расчётов (тег 1009) string + для ФФД ≥ 1.2
machineNumber Номер автомата (тег 1036) string
clientInfo Данные покупателя <#json_client_info> object
companyInfo Данные продавца <#json_company_info> object
agentInfo Данные агента <#json_agent_info> object
supplierInfo Данные поставщика <#json_supplier_info> object
items Элементы документа <#json_items> object[] +
payments Оплаты <#json_payment> object[] +
taxes Налоги на чек <#json_tax> object[]
total Итог чека number Может отличаться от суммы позиций на
значение, равное копейкам чека.
Если не задан — высчитывается автоматически из суммы всех позиций
preItems Элементы для печати до документа <#json_document_items>
object[] Используются только элементы с типами:
text
barcode
pictureFromMemory
pixels
postItems Элементы для печати после документа <#json_document_items>
object[] Используются только элементы с типами:
text
barcode
pictureFromMemory
pixels
customParameters Пользовательские параметры <#json_custom_parameters>
object[]

Пример ответа на чек коррекции

|{
«fiscalParams» : {
«fiscalDocumentDateTime» : «2018-03-06T13:52:00+03:00»,
«fiscalDocumentNumber» : 49,
«fiscalDocumentSign» : «2403680979»,
«fiscalReceiptNumber» : 12,
«fnNumber» : «9999078900000961»,
«registrationNumber» : «0000000001002292»,
«shiftNumber» : 11,
«total» : 2000.0,
«fnsUrl»: «www.nalog.gov.ru»
},
«warnings»: {
«notPrinted»: true
}
}
|

Результат задания Параметр Описание Тип
Фискальные параметры чека (fiscalParams)
total Итог number
fiscalDocumentNumber Номер ФД чека number
fiscalDocumentSign ФПД чека string
fiscalDocumentDateTime Дата и время чека string
shiftNumber Номер смены number
fnNumber Номер ФН string
registrationNumber РНМ string
fnsUrl Адрес сайта ФНС string
Флаги предупреждений (warnings)
notPrinted Документ закрыт, но не допечатан.
Рекомендуется вывести пользователю сообщение о сбое печати и попросить
устранить неисправность (самый стандартный случай — закончилась бумага).
После устранения неисправности требуется продолжить печать. bool

В процессе выполнения этого JSON-задания драйвер может автоматически
изменять настройки, связанные с печатью клише и отрезкой чековой ленты,
такие как №62 (Не печатать клише автоматически при закрытии чека),
№69 (Отрезать ЧЛ после печати клише командой «Печать клише»).

Поддерживается для всех ККТ

Нефискальные документы

Пример нефискального документа

|{
«type»: «nonFiscal»,
«items»: [
{
«type»: «text»,
«text»: «ИНН: 7725760410 КПП: 772501001»,
«alignment»: «center»
},
{
«type»: «text»,
«text»: «КАССА: 00105700000011 СМЕНА:1»,
«alignment»: «center»
},
{
«type»: «text»,
«text»: «ЧЕК: 1 ДАТА: 20.06.2017 14:12»,
«alignment»: «center»
},
{
«type»: «barcode»,
«barcode»: «https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7»,
«barcodeType»: «QR»,
«scale»: 7
},
{
«type»: «text»,
«text»: «https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7»,
«alignment»: «center»
},
{
«type»: «text»,
«text»: «10 58 1c 85 ab 45 29 fa 34 a7 34 10 58 1c 85 ab 45 29 fa 34 a7 34 10 58 1c 85 ab 45 29 fa 34 a7 34 10 58 1c 85 ab 45 29 fa 34 a7 34 34 a7 34 10 58»,
«alignment»: «center»
}
]
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string nonFiscal — нефискальный документ +
items Элементы документа <#json_document_items> object[]
Используются только элементы с типами:
text
barcode
pictureFromMemory +
printFooter Флаг печати подвала документа bool по умолчанию — true

Данные результата задания отсутствуют.

В процессе выполнения этого JSON-задания драйвер может автоматически
изменять настройки, связанные с печатью клише и отрезкой чековой ленты,
такие как №62 (Не печатать клише автоматически при закрытии чека),
№69 (Отрезать ЧЛ после печати клише командой «Печать клише»).

Поддерживается для всех ККТ

X-отчет

Пример X-отчета

|{
«type»: «reportX»,

"operator": {
    "name": "Иванов",
    "vatin": "123654789507"
}

}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string reportX — X-отчет +
operator Оператор (кассир) <#json_operator> object
preItems Элементы для печати до документа <#json_document_items>
object[] Используются только элементы с типами:
text
barcode
pictureFromMemory
pixels
postItems Элементы для печати после документа <#json_document_items>
object[] Используются только элементы с типами:
text
barcode
pictureFromMemory
pixels

Данные результата задания отсутствуют.

В процессе выполнения этого JSON-задания драйвер может автоматически
изменять настройки, связанные с печатью клише и отрезкой чековой ленты,
такие как №62 (Не печатать клише автоматически при закрытии чека),
№69 (Отрезать ЧЛ после печати клише командой «Печать клише»).

Поддерживается для всех ККТ

Внесения и выплаты

Пример внесения

|{
«type»: «cashIn»,

"operator": {
    "name": "Иванов",
    "vatin": "123654789507"
},

"cashSum": 1150.0

}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string cashIn — внесение
cashOut — выплата +
operator Оператор (кассир) <#json_operator> object
cashSum Сумма number +
preItems Элементы для печати до документа <#json_document_items>
object[] Используются только элементы с типами:
text
barcode
pictureFromMemory
pixels
postItems Элементы для печати после документа <#json_document_items>
object[] Используются только элементы с типами:
text
barcode
pictureFromMemory
pixels
electronically Электронный документ bool true — электронный отчет
false — печатный отчет по умолчанию — false

Печать переданного кассира на чековой ленте осуществляется фискальным
регистратором. Не все фискальные регистраторы это делают.

Пример ответа на внесение

|{
«counters» : {
«cashSum» : 1345.0
}
}
|

Результат задания Параметр Описание Тип
Состояние счетчиков наличности после операции (counters)
cashSum Сумма в денежном ящике double

В процессе выполнения этого JSON-задания драйвер может автоматически
изменять настройки, связанные с печатью клише и отрезкой чековой ленты,
такие как №62 (Не печатать клише автоматически при закрытии чека),
№69 (Отрезать ЧЛ после печати клише командой «Печать клише»).

Поддерживается для всех ККТ

Отчет о состоянии расчетов

Пример вызова отчета о состоянии расчетов

|{
«type»: «reportOfdExchangeStatus»,

«operator»: {
«name»: «Иванов»,
«vatin»: «123654789507»
}
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string reportOfdExchangeStatus — отчет о
состоянии расчетов +
operator Оператор (кассир) <#json_operator> object
preItems Элементы для печати до документа <#json_document_items>
object[] Используются только элементы с типами:
text
pictureFromMemory
pixels
postItems Элементы для печати после документа <#json_document_items>
object[] Используются только элементы с типами:
text
pictureFromMemory
pixels

Пример ответа на формирование отчета о состоянии расчетов

|{
«fiscalParams» : {
«fiscalDocumentDateTime» : «2018-03-06T13:52:00+03:00»,
«fiscalDocumentNumber» : 157,
«fiscalDocumentSign» : «1230933772»,
«fnNumber» : «9999078900000961»,
«fnQuantityCounters» : {
«buy» : {
«corrections» : 0,
«count» : 3
},
«buyReturn» : {
«corrections» : 0,
«count» : 3
},
«countAll» : 8,
«sell» : {
«corrections» : 0,
«count» : 3
},
«sellReturn» : {
«corrections» : 0,
«count» : 3
},
«shiftNumber» : 14
},
«fnTotals» : {
«buy» : {
«barterSum» : 0,
«cashSum» : 387,
«corrections» : 0,
«correctionsSum» : 0,
«creditSum» : 0,
«noncashSum» : 0,
«prepaidSum» : 0,
«receipts» : 3,
«receiptsSum» : 387,
«vat0Sum» : 0,
«vat10Sum» : 0,
«vat110Sum» : 0,
«vat120Sum» : 0,
«vat20Sum» : 64.5,
«vatNoSum» : 0
},
«buyReturn» : {
«barterSum» : 0,
«cashSum» : 387,
«corrections» : 0,
«correctionsSum» : 0,
«creditSum» : 0,
«noncashSum» : 0,
«prepaidSum» : 0,
«receipts» : 3,
«receiptsSum» : 387,
«vat0Sum» : 0,
«vat10Sum» : 0,
«vat110Sum» : 0,
«vat120Sum» : 0,
«vat20Sum» : 64.5,
«vatNoSum» : 0
},
«sell» : {
«barterSum» : 0,
«cashSum» : 387,
«corrections» : 0,
«correctionsSum» : 0,
«creditSum» : 0,
«noncashSum» : 0,
«prepaidSum» : 0,
«receipts» : 3,
«receiptsSum» : 387,
«vat0Sum» : 0,
«vat10Sum» : 0,
«vat110Sum» : 0,
«vat120Sum» : 0,
«vat20Sum» : 64.5,
«vatNoSum» : 0
},
«sellReturn» : {
«barterSum» : 0,
«cashSum» : 387,
«corrections» : 0,
«correctionsSum» : 0,
«creditSum» : 0,
«noncashSum» : 0,
«prepaidSum» : 0,
«receipts» : 3,
«receiptsSum» : 387,
«vat0Sum» : 0,
«vat10Sum» : 0,
«vat110Sum» : 0,
«vat120Sum» : 0,
«vat20Sum» : 64.5,
«vatNoSum» : 0
}
},
«fnUnsentDocsCounters» : {
«buy» : {
«count» : 0,
«sum» : 0
},
«buyReturn» : {
«count» : 0,
«sum» : 0
},
«countAll» : 0,
«sell» : {
«count» : 0,
«sum» : 0
},
«sellReturn» : {
«count» : 0,
«sum» : 0
}
},
«fnsUrl» : «www.nalog.gov.ru»,
«receiptsCount» : 0,
«registrationNumber» : «0000000001035160»,
«shiftNumber» : 28
},
«errors» : {
«fnCommandCode» : 0,
«documentNumber» : 111,
«lastSuccessConnectionDateTime»: «2018-03-06T13:42:00+03:00»,
«fn» : {
«code» : 0,
«description» : «Ошибок нет»
},
«network» : {
«code» : 13617,
«description» : «Отсутствует физический канал связи»
},
«ofd» : {
«code» : 0,
«description» : «Ошибок нет»
}
},
«status» : {
«notSentCount» : 46,
«notSentFirstDocDateTime» : «2018-02-04T11:24:00+03:00»,
«notSentFirstDocNumber» : 111
},
«warnings»: {
«notPrinted»: true
}
}
|

Результат задания Параметр Описание Тип
Фискальные параметры отчета (fiscalParams)
fiscalDocumentNumber Номер ФД отчета (тег 1040) number
fiscalDocumentSign ФПД отчета (тег 1077) string
fiscalDocumentDateTime Дата и время отчета (тег 1012) string
shiftNumber Номер смены (тег 1038) number
fnNumber Номер ФН (тег 1041) string
fnQuantityCounters Счетчики количеств операций string
fnTotals Счетчики итогов операций
/Примечание: Счетчики итогов ФН обновляются при закрытии смены.
Типы счетчиков:

  • При открытой смене, возвращаются: «Счетчики текущей смены»
  • При закрытой смене, возвращаются: «Необнуляемые счетчики»

/ string
fnUnsentDocsCounters Счетчики итогов непереданных документов (тег
1158) string
count Общее количество чеков (включая коррекции) number
corrections Количество коррекций number
receiptType Тип расчета number
receipts Общее количество чеков (включая коррекции) number
receiptsSum Итоговая сумма чеков (включая коррекции) number
correctionsSum Сумма коррекций number
cashSum Сумма наличных оплат number
noncashSum Сумма безналичных оплат number
prepaidSum Сумма оплат авансом number
creditSum Сумма оплат кредитом number
barterSum Сумма оплат встречным предоставлением number
vat20Sum Сумма НДС 20% (тег 1102) number
vat10Sum Сумма НДС 10% (тег 1103) number
vat120Sum Сумма НДС 20/120 (тег 1106) number
vat110Sum Сумма НДС 10/110 (тег 1107) number
vat0Sum Сумма НДС 0% (тег 1104) number
vatNoSum Сумма без НДС (тег 1105) number
registrationNumber РНМ (тег 1037) string
fnsUrl Адрес сайта ФНС (тег 1060) string
Состояние (status)
notSentCount Количество неотправленных ФД (тег 1097) number
notSentFirstDocNumber Номер первого неотправленного ФД (тег 1116)
number
notSentFirstDocDateTime Дата и время первого неотправленного ФД (тег
1098) string
Ошибки обмена (errors)
network.code Код ошибки сети number
network.description Текст ошибки сети string
ofd.code Код ошибки ОФД number
ofd.description Текст ошибки ОФД string
fn.code Код ошибки ФН number
fn.description Текст ошибки ФН string
documentNumber Номер ФД, на котором произошла ошибка number
fnCommandCode Команда ФН, на которой произошла ошибка number
lastSuccessConnectionDateTime Дата и время последнего успешного
соединения с ОФД string
Флаги предупреждений (warnings)
notPrinted Документ закрыт, но не допечатан.
Рекомендуется вывести пользователю сообщение о сбое печати и попросить
устранить неисправность (самый стандартный случай — закончилась бумага).
После устранения неисправности требуется продолжить печать. bool

В процессе выполнения этого JSON-задания драйвер может автоматически
изменять настройки, связанные с печатью клише и отрезкой чековой ленты,
такие как №62 (Не печатать клише автоматически при закрытии чека),
№69 (Отрезать ЧЛ после печати клише командой «Печать клише»).

Поддерживается для всех ККТ

Печать документа из ФН

Пример печати документа из ФН по номеру

|{
«type»: «printFnDocument»,

"fiscalDocumentNumber": 12

}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string printFnDocument — печать документа из ФН
по номеру +
fiscalDocumentNumber Номер документа number +

Данные результата задания отсутствуют.

Поддерживается для всех ККТ

Печать копии последнего чека

Печать копии последнего чека

|{
«type»: «printLastReceiptCopy»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string printLastReceiptCopy — печать копии
последнего чека +

Данные результата задания отсутствуют.

Поддерживается для всех ККТ

Запрос параметров регистрации ККТ

Пример запроса параметров регистрации ККТ

|{
«type»: «getRegistrationInfo»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string getRegistrationInfo — запрос параметров
регистрации +

Пример ответа на запрос параметров регистрации ККТ

|{
«organization»: {
«name»: «ООО \»АТОЛ\»»,
«vatin»: «123456789047»,
«email»: «email@atol.ru»,
«taxationTypes»: [«osn», «esn»],
«agents»: [«payingAgent»],
«address»: «Адрес расчетов»
},
«device»: {
«paymentsAddress»: «Адрес места расчетов»,
«fnsUrl»: «www.nalog.gov.ru»,
«registrationNumber»: «0000000001002292»,
«offlineMode»: false,
«machineInstallation»: false,
«bso»: false,
«encryption»: false,
«autoMode»: false,
«machineNumber»: «»,
«internet»: false,
«service»: false,
«gambling»: false,
«lottery»: false,
«excise»: false,
«defaultTaxationType»: «osn»,
«ofdChannel»: «usb»,
«ffdVersion» : «1.2»,
«insurance»: true,
«marking»: true,
«pawnShop»: true,
«vending»: false,
«catering»: false,
«wholesale»: true
},
«ofd»: {
«name»: «ООО \»Эвотор ОФД\»»,
«vatin»: «9715260691»,
«host»: «ofdp.platformaofd.ru»,
«port»: 21101,
«dns»: «0.0.0.0»
},
«ism»: {
«host»: «31.44.83.188»,
«port»: 21101
}
}
|

Результат задания Параметр Описание Тип
organization Информация об организации <#json_organization_info> object
device Параметры ККТ <#json_device_params> object
ofd Параметры ОФД <#json_ofd_params> object
ism Параметры ИСМ <#json_ism_params> object

Поддерживается для всех ККТ

Регистрация / перерегистрация ККТ

Пример перерегистрации ККТ

|{
«type»: «fnChange»,

«operator»: {
«name»: «Иванов»,
«vatin»: «123654789507»
},

«organization»: {
«name»: «ООО \»АТОЛ\»»,
«vatin»: «123456789047»,
«email»: «email@atol.ru»,
«taxationTypes»: [«osn», «esn»],
«agents»: [«payingAgent»],
«address»: «Адрес»
},
«device»: {
«paymentsAddress»: «Адрес места расчетов»,
«fnsUrl»: «www.nalog.gov.ru»,
«registrationNumber»: «0000000001002292»,
«offlineMode»: false,
«machineInstallation»: false,
«bso»: false,
«encryption»: false,
«autoMode»: false,
«machineNumber»: «»,
«service»: false,
«gambling»: false,
«lottery»: false,
«excise»: false,
«defaultTaxationType»: «osn»,
«ofdChannel»: «usb»,
«ffdVersion» : «1.2»,
«insurance»: true,
«marking»: true,
«pawnShop»: true,
«vending»: false,
«catering»: false,
«wholesale»: true
},
«ofd»: {
«name»: «ООО \»Эвотор ОФД\»»,
«vatin»: «9715260691»,
«host»: «ofdp.platformaofd.ru»,
«port»: 21101,
«dns»: «0.0.0.0»
},
«ism»: {
«host»: «31.44.83.188»,
«port»: 21101
}
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string registration — регистрация
fnChange — замена ФН
changeRegistrationParameters — изменение параметров регистрации +
operator Оператор (кассир) <#json_operator> object
reason Причина перерегистрации (ФФД 1.05) string ofdChange
смена ОФД
attributesChange — изменение реквизитов
settingsChange — изменение настроек ККТ Игнорируется при начальной
регистрации
*changeInfoReasons

  • Список причин изменения параметров регистрации (ФФД 1.1) int[]
    Номера битов из таблицы 16 ФФД (Реквизиты, содержащиеся в структуре
    реквизита «код причины перерегистрации»)
    organization Информация об организации <#json_organization_info>
    object
    device Параметры ККТ <#json_device_params> object
    ofd Параметры ОФД <#json_ofd_params> object
    ism Параметры ИСМ (ФФД ≥ 1.2) <#json_ism_params> object
    electronically Электронный отчет bool true — электронный отчет
    false — печатный отчет по умолчанию — false. Если ККТ не поддерживает
    такой функционал, параметр будет проигнорирован и отчет будет напечатан. Пример ответа на перерегистрацию ККТ

|{
«fiscalParams» : {
«fiscalDocumentDateTime» : «2018-03-06T13:52:00+03:00»,
«fiscalDocumentNumber» : 70,
«fiscalDocumentSign» : «0024109209»,
«fnNumber» : «9999078900000961»,
«registrationNumber» : «0000000001002292»,
«shiftNumber» : 12,
«fnsUrl»: «www.nalog.gov.ru»
},
«warnings»: {
«notPrinted»: true
}
}
|

Результат задания Параметр Описание Тип
Фискальные параметры отчета (fiscalParams)
fiscalDocumentNumber Номер ФД отчета (тег 1040) number
fiscalDocumentSign ФПД отчета (тег 1077) string
fiscalDocumentDateTime Дата и время отчета (тег 1012) string
shiftNumber Номер смены (тег 1038) number
fnNumber Номер ФН (тег 1041) string
registrationNumber РНМ (тег 1037) string
fnsUrl Адрес сайта ФНС (тег 1060) string
Флаги предупреждений (warnings)
notPrinted Документ закрыт, но не допечатан.
Рекомендуется вывести пользователю сообщение о сбое печати и попросить
устранить неисправность (самый стандартный случай — закончилась бумага).
После устранения неисправности требуется продолжить печать. bool

Поддерживается для всех ККТ

Закрытие ФН

Пример закрытия ФН

|{
«type»: «closeArchive»,

«operator»: {
«name»: «Иванов»,
«vatin»: «123654789507»
}
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string closeArchive — закрытие ФН +
operator Оператор (кассир) <#json_operator> object
electronically Электронный отчет bool true — электронный отчет
false — печатный отчет по умолчанию — false. Если ККТ не поддерживает
такой функционал, параметр будет проигнорирован и отчет будет напечатан.

Пример ответа на закрытие ФН

|{
«fiscalParams» : {
«fiscalDocumentDateTime» : «2018-03-06T13:52:00+03:00»,
«fiscalDocumentNumber» : 70,
«fiscalDocumentSign» : «0024109209»,
«fnNumber» : «9999078900000961»,
«registrationNumber» : «0000000001002292»,
«shiftNumber» : 12,
«fnsUrl»: «www.nalog.gov.ru»
},
«warnings»: null
}
|

Результат задания Параметр Описание Тип
Фискальные параметры отчета (fiscalParams)
fiscalDocumentNumber Номер ФД отчета (тег 1040) number
fiscalDocumentSign ФПД отчета (тег 1077) string
fiscalDocumentDateTime Дата и время отчета (тег 1012) string
shiftNumber Номер смены (тег 1038) number
fnNumber Номер ФН (тег 1041) string
registrationNumber РНМ (тег 1037) string
fnsUrl Адрес сайта ФНС (тег 1060) string
Флаги предупреждений (warnings)
*notPrinted * Документ закрыт, но не допечатан.
Рекомендуется вывести пользователю сообщение о сбое печати и попросить
устранить неисправность (самый стандартный случай — закончилась бумага).
После устранения неисправности требуется продолжить печать. bool

Поддерживается для всех ККТ

Открыть денежный ящик

Открыть денежный ящик

|{
«type»: «openCashDrawer»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string openCashDrawer — открыть денежный ящик +

Данные результата отсутствуют.

Поддерживается для всех ККТ

Установка даты и времени

Пример установки даты и времени

|{
«type»: «setDateTime»,
«dateTime»: «2018.02.01 12:43:22»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string setDateTime — установка даты и времени +
dateTime Дата и время string Формат — yyyy.mm.dd HH:MM:SS

Данные результата задания отсутствуют.

Поддерживается для всех ККТ

Чтение настроек ККТ

Пример чтения настроек ККТ

|{
«type»: «getDeviceParameters»,

«keys»: [273, 274, 9999, 49, 50]
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string getDeviceParameters — чтение настроек ККТ +
keys Список номеров настроек для чтения number[] +

Список доступных настроек и их значений зависит от модели ККТ и приведен
в приложении Настройки ККТ <#kkt_params_list>.

Если какую-либо из настроек из списка keys считать не удалось, задание
не прервется — просто заполнятся поля errorCode и errorDescription
соответствующего блока ответа. Если ошибки при чтение не было — будет
заполнено поле value.

Пример ответа на чтение настроек ККТ

|{
«deviceParameters» : [
{
«key» : 273,
«value» : «ofdp.platformaofd.ru»
},
{
«key» : 274,
«value» : «21101»
},
{
«errorCode» : 11,
«errorDescription» : «Не поддерживается в данной версии»,
«key» : 9999
},
{
«key» : 49,
«value» : «1»
},
{
«key» : 50,
«value» : «16»
}
]
}
|

Результат задания Параметр Описание Тип
Настройки ККТ (deviceParameters)
key Номер настройки (из запроса) number
value Значение настройки string
errorCode Код ошибки number
errorDescription Текст ошибки string

Поддерживается для всех ККТ

Запись настроек ККТ

Пример записи настроек ККТ

|{
«type»: «setDeviceParameters»,

«deviceParameters» : [
{
«key» : 273,
«value» : «ofdp.platformaofd.ru»
},
{
«key» : 274,
«value» : «21101»
},
{
«key» : 9999,
«value» : «qwerty123»
},
{
«key» : 49,
«value» : «1»
},
{
«key» : 50,
«value» : «16»
}
]
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string setDeviceParameters — запись настроек ККТ +
Настройки ККТ (deviceParameters)
key Номер настройки number +
value Значение настройки string +

Список доступных настроек и их значений зависит от модели ККТи приведен
в приложении Настройки ККТ <#kkt_params_list>.

Если какую-либо из настроек из списка keys записать не удалось,
задание не прервется — просто заполнятся поля errorCode и
errorDescription соответствующего блока ответа.

Пример ответа на запись настроек ККТ

|{
«deviceParameters» : [
{
«key» : 273,
«value» : «ofdp.platformaofd.ru»
},
{
«key» : 274,
«value» : «21101»
},
{
«errorCode» : 11,
«errorDescription» : «Не поддерживается в данной версии»,
«key» : 9999
},
{
«key» : 49,
«value» : «1»
},
{
«key» : 50,
«value» : «16»
}
]
}
|

Результат задания Параметр Описание Тип
Настройки ККТ (deviceParameters)
key Номер настройки (из запроса) number
value Значение настройки (из запроса) string
errorCode Код ошибки number
errorDescription Текст ошибки string

Поддерживается для всех ККТ

Запрос информации о ККТ

Пример запроса информации о ККТ

|{
«type»: «getDeviceInfo»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string getDeviceInfo — запрос информации о ККТ +

Пример ответа на запрос информации о ККТ

|{
«deviceInfo» : {
«configurationVersion» : «5.4.3-rc4»,
«ffdVersion» : «1.05»,
«firmwareVersion» : «1245»,
«fnFfdVersion» : «1.0»,
«model» : 69,
«modelName» : «АТОЛ 77Ф»,
«receiptLineLength» : 48,
«receiptLineLengthPix» : 576,
«serial» : «00106900000014»
}
}
|

Результат задания Параметр Описание Тип
Информация о ККТ (deviceInfo)
model Код модели number
modelName Наименование модели string
serial Заводской номер ККТ (тег 1013) string
firmwareVersion Версия прошивки string
configurationVersion Версия конфигурации string
receiptLineLength Ширина чековой ленты в символах number
receiptLineLengthPix Ширина чековой ленты в пикселях number
ffdVersion Версия ФФД ККТ (тег 1189) string
fnFfdVersion Версия ФФД ФН (тег 1190) string

Поддерживается для всех ККТ

Запрос информации о микроконтроллере

Пример запроса информации о микроконтроллере

|{
«type»: «getMcu»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string getMcu — запрос информации о
микроконтроллере +

Пример ответа на запрос информации о микроконтроллере

|{
«mcu»: {
«partId»: «26 01 3F 37»,
«partName»: «LPC1768»,
«sn»: «F5 00 20 C4 58 60 9E E9 AF 06 00 E9 0F FF 90 1C»
}
}
|

Результат задания Параметр Описание Тип
Информация о микроконтроллере
partId Номер модели микроконтроллера bytearray
partName Название модели микроконтроллера string
sn Уникальный номер микроконтроллера bytearray

Поддерживается только для ККТ версий 5.X

Запрос состояния ККТ

Пример запроса состояния ККТ

|{
«type»: «getDeviceStatus»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string getDeviceStatus — запрос состояния ККТ +

Пример ответа на запрос состояния ККТ

|{
«deviceStatus» : {
«blocked» : false,
«coverOpened» : false,
«currentDateTime» : «2018-03-07T05:39:20+03:00»,
«fiscal» : true,
«fnFiscal» : true,
«fnPresent» : true,
«paperPresent» : true,
«cashDrawerOpened» : false,
«shift» : «closed»
}
}
|

Результат задания Параметр Описание Тип
Состояние ККТ (deviceStatus)
currentDateTime Текущие дата и время ККТ string
shift Состояние смены.
Принимает значения:
closed — закрыта
opened — открыта
expired — истекла string
blocked ККТ заблокирована bool
coverOpened Крышка открыта bool
paperPresent Наличие чековой ленты bool
fiscal ККТ зарегистрирована bool
fnFiscal ФН фискализирован bool
fnPresent ФН обнаружен bool
cashDrawerOpened Денежный ящик открыт bool

Поддерживается для всех ККТ

Запрос состояния денежного ящика

Пример запроса состояния денежного ящика

|{
«type»: «getCashDrawerStatus»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string getCashDrawerStatus — запрос состояния
денежного ящика +

Пример ответа на запрос состояния денежного ящика

|{
«counters» : {
«cashSum» : 6238.0
},
«cashDrawerStatus» : {
«cashDrawerOpened» : false
}
}
|

Результат задания Параметр Описание Тип
Состояние ДЯ (cashDrawerStatus)
cashDrawerOpened Денежный ящик открыт bool
Состояние счетчиков наличности (counters)
cashSum Сумма в денежном ящике double

Поддерживается для всех ККТ

Запрос состояния смены

Пример запроса состояния смены

|{
«type»: «getShiftStatus»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string getShiftStatus — запрос состояния смены +

Пример ответа на запрос состояния смены

|{
«shiftStatus» : {
«documentsCount» : 2,
«expiredTime» : «2018-03-06T13:52:59+03:00»,
«number» : 152,
«state» : «closed»
}
}
|

Результат задания Параметр Описание Тип
Состояние смены (shiftStatus)
documentsCount Количество ФД за смену.
/Примечание: Параметр documentsCount возвращается только при закрытой
смене. Параметр недоступен для ККТ 5.0 с ПО ниже 5.7.20/ number
expiredTime Дата и время истечения смены (24 часа с её открытия).
Имеет смысл, только если смена не закрыта string
number Номер смены, если смена открыта, или номер последней закрытой
смены, если закрыта number
status Состояние смены.
Принимает значения:
closed — закрыта
opened — открыта
expired — истекла string

Поддерживается для всех ККТ

Запрос информации о ФН

Пример запроса информации о ФН

|{
«type»: «getFnInfo»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string getFnInfo — запрос информации о ФН +

Пример ответа на запрос информации о ФН

|{
«fnInfo» : {
«execution» : «ФН-1.1М МГМ (e54) исполнение 15М «,
«ffdVersion» : «1.2»,
«fnContainsKeysUpdaterServerUri» : false,
«fnFfdVersion» : «1.2»,
«numberOfRegistrations» : 1,
«registrationsRemaining» : 29,
«serial» : «9999078902008092»,
«validityDate» : «2021-04-15T21:00:00+03:00»,
«livePhase» : «fiscalMode»,
«version» : «fn 1.2 mgm 02 «,
«warnings» : {
«criticalError» : false,
«memoryOverflow» : false,
«needReplacement» : false,
«ofdTimeout» : false,
«resourceExhausted» : false
}
}
}
|

Результат задания Параметр Описание Тип
Информация о ФН (fnInfo)
serial Заводской номер ФН string
version Версия ФН string
execution Исполнение ФН (только для ФН-М) string
numberOfRegistrations Количество проведенных регистраций number
registrationsRemaining Количество оставшихся регистраций number
validityDate Срок действия ФН string
ffdVersion Версия ФФД ККТ string
fnFfdVersion Версия ФФД ФН string
livePhase Фаза жизни ФН.
Принимает значения:
init — настройка ФН
configured — настроен, готов в активации
fiscalMode — фискальный режим
postFiscalMode — постфискальный режим
accessArchive — доступ к архиву ФН
unknown — неизвестная фаза жизни string
Предупреждения ФН (fnInfo.warnings)
memoryOverflow Память ФН переполнена bool
needReplacement Требуется срочная замена ФН bool
ofdTimeout Превышено время ожидания ответа от ОФД bool
resourceExhausted Исчерпан ресурс ФН bool
criticalError Критическая ошибка ФН bool
fnContainsKeysUpdaterServerUri ФН содержит URI сервера ОКП bool

Поддерживается для всех ККТ

Запрос состояния ФН

Пример запроса статуса ФН

|{
«type»: «getFnStatus»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string getFnStatus — запрос статуса ФН +

Пример ответа на запрос статуса ФН

|{
«fnStatus» : {
«fiscalDocumentNumber»: 15,
«fiscalReceiptNumber»: 15,
«warnings» : {
«criticalError» : false,
«memoryOverflow» : false,
«needReplacement» : false,
«ofdTimeout» : false,
«resourceExhausted» : false
}
}
}
|

Результат задания Параметр Описание Тип
Информация об ФН (fnStatus)
fiscalDocumentNumber Номер последнего ФД number
fiscalReceiptNumber Количество чеков за смену number
Предупреждения ФН (fnInfo.warnings)
memoryOverflow Память ФН переполнена bool
needReplacement Требуется срочная замена ФН bool
ofdTimeout Превышено время ожидания ответа от ОФД bool
resourceExhausted Исчерпан ресурс ФН bool
criticalError Критическая ошибка ФН bool

Поддерживается для всех ККТ

Запрос состояния обмена с ОФД

Пример запроса состояния обмена с ОФД

|{
«type»: «ofdExchangeStatus»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string ofdExchangeStatus — запрос состояния
обмена с ОФД +

Пример ответа на запрос состояния обмена с ОФД

|{
«errors» : {
«fnCommandCode» : 0,
«documentNumber» : 1,
«lastSuccessConnectionDateTime»: «2018-03-06T13:42:00+03:00»,
«fn» : {
«code» : 0,
«description» : «Ошибок нет»
},
«network» : {
«code» : 13617,
«description» : «Отсутствует физический канал связи»
},
«ofd» : {
«code» : 0,
«description» : «Ошибок нет»
}
},
«status» : {
«lastSuccessKeysUpdate» : «1970-01-01T00:00:00+03:00»,
«notSentCount» : 69,
«notSentFirstDocDateTime» : «2018-03-06T13:52:00+03:00»,
«notSentFirstDocNumber» : 1
},
«warnings» : {
«dataForSendIsEmpty» : false
}
}
|

Результат задания Параметр Описание Тип
Состояние (status)
notSentCount Количество неотправленных ФД number
notSentFirstDocNumber Номер первого неотправленного ФД number
notSentFirstDocDateTime Дата и время первого неотправленного ФД string
lastSuccessKeysUpdate Дата и время последнего успешного ОКП string
Ошибки обмена (errors)
network.code Код ошибки сети number
network.description Текст ошибки сети string
ofd.code Код ошибки ОФД number
ofd.description Текст ошибки ОФД string
fn.code Код ошибки ФН number
fn.description Текст ошибки ФН string
documentNumber Номер ФД, на котором произошла ошибка number
fnCommandCode Команда ФН, на которой произошла ошибка number
lastSuccessConnectionDateTime Дата и время последнего успешного
соединения с ОФД string
Флаги предупреждений (warnings)
dataForSendIsEmpty Контейнер для отправки пуст boolean

Поддерживается для всех ККТ

Запрос сменных итогов

Пример запроса сменных итогов

|{
«type»: «getShiftTotals»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string getShiftTotals — запрос сменных итогов +

Пример ответа на запрос сменных итогов

|{
«shiftTotals» : {
«cashDrawer» : {
«sum» : 112.9
},
«income» : {
«count» : 1,
«sum» : 100.0
},
«outcome» : {
«count» : 0,
«sum» : 0.0
},
«receipts» : {
«buy» : {
«count» : 0,
«payments» : {
«cash» : 0.0,
«credit» : 0.0,
«electronically» : 0.0,
«other» : 0.0,
«prepaid» : 0.0,
«userPaymentType-1» : 0.0,
«userPaymentType-2» : 0.0,
«userPaymentType-3» : 0.0,
«userPaymentType-4» : 0.0,
«userPaymentType-5» : 0.0
},
«sum»: 0.0
},
«buyReturn» : {
«count» : 0,
«payments» : {
«cash» : 0.0,
«credit» : 0.0,
«electronically» : 0.0,
«other» : 0.0,
«prepaid» : 0.0,
«userPaymentType-1» : 0.0,
«userPaymentType-2» : 0.0,
«userPaymentType-3» : 0.0,
«userPaymentType-4» : 0.0,
«userPaymentType-5» : 0.0
},
«sum»: 0.0
},
«sell» : {
«count» : 1,
«payments» : {
«cash» : 12.9,
«credit» : 0.0,
«electronically» : 0.0,
«other» : 0.0,
«prepaid» : 0.0,
«userPaymentType-1» : 0.0,
«userPaymentType-2» : 0.0,
«userPaymentType-3» : 0.0,
«userPaymentType-4» : 0.0,
«userPaymentType-5» : 0.0
},
«sum»: 0.0
},
«sellReturn» : {
«count» : 0,
«payments» : {
«cash» : 0.0,
«credit» : 0.0,
«electronically» : 0.0,
«other» : 0.0,
«prepaid» : 0.0,
«userPaymentType-1» : 0.0,
«userPaymentType-2» : 0.0,
«userPaymentType-3» : 0.0,
«userPaymentType-4» : 0.0,
«userPaymentType-5» : 0.0
},
«sum»: 0.0
}
},
«shiftNumber» : 1
}
}
|

Результат задания Параметр Описание Тип
Сменные итоги (shiftTotals)
shiftNumber Номер смены, если смена открыта, или номер последней
закрытой смены, если закрыта number
Информация о денежном ящике (shiftTotals.cashDrawer)
sum Сумма наличных в денежном ящике number
Итоги внесений/выплат (shiftTotals.income, shiftTotals.outcome)
count Количество операций внесения/выплаты number
sum Сумма операций внесения/выплаты number
Итоги по чекам (shiftTotals.receipts.sell,
shiftTotals.receipts.sellReturn, shiftTotals.receipts.buy,
shiftTotals.receipts.buyReturn)
count Количество чеков number
sum Общая сумма чеков number
payments.cash Сумма оплат наличными number
payments.electronically Сумма оплат безналичными number
payments.credit Сумма кредитов number
payments.prepaid Сумма предоплат number
payments.other Сумма оплат встречным предоставлением number
payments.userPaymentType-X Сумма оплат пользовательским типом оплаты
с номером X number

Поддерживается для всех ККТ

Запрос необнуляемых итогов

Пример запроса необнуляемых итогов

|{
«type»: «getOverallTotals»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string getOverallTotals — запрос необнуляемых
итогов +

Пример ответа на запрос необнуляемых итогов

|{
«overallTotals» : {
«receipts» : {
«buy» : {
«sum» : 12.9,
«payments» : {
«cash» : 0.0,
«credit» : 0.0,
«electronically» : 0.0,
«other» : 0.0,
«prepaid» : 0.0,
«userPaymentType-1» : 0.0,
«userPaymentType-2» : 0.0,
«userPaymentType-3» : 0.0,
«userPaymentType-4» : 0.0,
«userPaymentType-5» : 0.0
}
},
«buyReturn» : {
«sum» : 0.0,
«payments» : {
«cash» : 0.0,
«credit» : 0.0,
«electronically» : 0.0,
«other» : 0.0,
«prepaid» : 0.0,
«userPaymentType-1» : 0.0,
«userPaymentType-2» : 0.0,
«userPaymentType-3» : 0.0,
«userPaymentType-4» : 0.0,
«userPaymentType-5» : 0.0
},
},
«sell» : {
«sum» : 0.0,
«payments» : {
«cash» : 0.0,
«credit» : 0.0,
«electronically» : 0.0,
«other» : 0.0,
«prepaid» : 0.0,
«userPaymentType-1» : 0.0,
«userPaymentType-2» : 0.0,
«userPaymentType-3» : 0.0,
«userPaymentType-4» : 0.0,
«userPaymentType-5» : 0.0
},
},
«sellReturn» : {
«sum» : 0.0,
«payments» : {
«cash» : 0.0,
«credit» : 0.0,
«electronically» : 0.0,
«other» : 0.0,
«prepaid» : 0.0,
«userPaymentType-1» : 0.0,
«userPaymentType-2» : 0.0,
«userPaymentType-3» : 0.0,
«userPaymentType-4» : 0.0,
«userPaymentType-5» : 0.0
},
}
}
}
}
|

Результат задания Параметр Описание Тип
Необнуляемые итоги (overallTotals)
Итоги по чекам (overallTotals.receipts.sell,
overallTotals.receipts.sellReturn, overallTotals.receipts.buy,
overallTotals.receipts.buyReturn)
sum Общая сумма number
payments.cash Сумма оплат наличными number
payments.electronically Сумма оплат безналичными number
payments.credit Сумма кредитов number
payments.prepaid Сумма предоплат number
payments.other Сумма оплат встречным предоставлением number
payments.userPaymentType-X Сумма оплат пользовательским типом оплаты
с номером X number

Поддерживается для всех ККТ

Запрос сменных итогов по секциям

Пример запроса сменных итогов по секциям

|{
«type»: «getDepartmentSum»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string getDepartmentSum — запрос сменных итогов
по секциям +

Пример ответа на запрос сменных итогов по секциям

|{
«departmentSum»: {
«department1»: {
«buy»: 0,
«buyReturn»: 0,
«sell»: 294.9,
«sellReturn»: 0
},
«department2»: {
«buy»: 0,
«buyReturn»: 0,
«sell»: 38.7,
«sellReturn»: 0
},
«department3»: {
«buy»: 0,
«buyReturn»: 0,
«sell»: 25.8,
«sellReturn»: 0
},
«department4»: {
«buy»: 0,
«buyReturn»: 0,
«sell»: 64.5,
«sellReturn»: 0
},
«department5»: {
«buy»: 0,
«buyReturn»: 0,
«sell»: 12.9,
«sellReturn»: 0
}
}
}
|

Результат задания Параметр Описание Тип
Сменные итоги по секциям (departmentSum)
Итоги по секциям (departmentSum.department1 .. departmentSum.department5)
buy Сумма по чекам расхода number
buyReturn Сумма по чекам возврата расхода number
sell Сумма по чекам прихода number
sellReturn Сумма по чекам возврата прихода number

Поддерживается только для ККТ версий 5.X

Чтение документа из ФН

Чтение документа из ФН по номеру

|{
«type»: «getFnDocument»,

"fiscalDocumentNumber": 123,
"withRawData": true

}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string getFnDocument — чтение документа из ФН по
номеру +
fiscalDocumentNumber Номер документа number +
withRawData Возвращать также сырые данные документа или нет. Если
документ уже находится в архиве, вернётся ошибка 123 — В ФН нет запрошенных данных bool по умолчанию — false

Пример ответа на чтение документа из ФН по номеру

|{
«documentTLV» : {
«1008» : «+79161234567»,
«1012» : «2020-02-06T12:01:00+03:00»,
«1018» : «1037710104»,
«1020» : 15,
«1031» : 0,
«1036» : «machineNumber»,
«1037» : «0000000001058762»,
«1038» : 17,
«1040» : 123,
«1041» : «9999078900011722»,
«1042» : 7,
«1054» : 1,
«1055» : 1,
«1059» : [
{
«1023» : 1.5,
«1030» : «Позиция с кодом товара»,
«1043» : 15,
«1079» : 10,
«1162» : «C51E3133363232323030303035383831»,
«1199» : 2,
«1212» : 1
}
],
«1077» : «3104ABDC12DB»,
«1081» : 15,
«1103» : 1.36,
«1203» : «123654789507»,
«1209» : 2,
«1215» : 0,
«1216» : 0,
«1217» : 0,
«fiscalDocumentType» : «receipt»,
«short» : false,
«qr»: «t=20200206T1201&s=15.00&fn=9999078900011722&i=123&fp=2883326683&n=1»
},
«rawData» : «EQQQADk5OTkwNzg5MDAwMTE3MjINBBQAMDAwMDAwMDAwMTA1ODc2MiAgICD6AwwAMTAzNzcxMDEwNCAgEAQEAHsAAAD0AwQA/P87XjUEBgAxBKvcEtsOBAQAEQAAABIEBAAHAAAAHgQBAAH8AwIA3AW5BAEAAvADDAArNzkxNjEyMzQ1NjcjBEwAigQQAMUeMTM2MjIyMDAwMDU4ODEGBBYAj66nqOao7yDhIKqupK6sIOKuoqDgoDcEAgDoA/8DBAAGYOMWEwQCANwFrwQBAAK8BAEAAQcEAQAAOQQCANwFvwQBAADABAEAAMEEAQAATwQBAIgfBAEAAQwEDQBtYWNoaW5lTnVtYmVyswQMADEyMzY1NDc4OTUwNw==»
}

|

Результат задания Параметр Описание Тип
Состав документа в тегах (documentTLV)
fiscalDocumentType Тип документа. Принимает следующие значения:
registration — регистрация ККТ
changeRegistrationParameters — перерегистрация ККТ
closeArchive — закрытие ФН
ofdExchangeStatus — отчет о состоянии расчетов
openShift — открытие смены
closeShift — закрытие смены
receipt — чек
receiptCorrection — чек коррекции
bso — БСО
bsoCorrection — БСО коррекции string
short Признак того, что документ считался из архива и содержит
неполный набор данных bool
qr QR-код (реквизит 1196, только для чеков и БСО) string
Номер реквизита ФН Значение реквизита ФН Тип зависит от номера
реквизита ФН
Сырые данные документа в TLV
rawData Сырые данные документа в TLV, закодированные в base64. Поле
заполняется только в том случае, если поле withRawData запроса равно
true string

Поддерживается для всех ККТ

Запрос введенных в ККТ лицензий / кодов защиты

Пример запроса введенных в ККТ лицензий / кодов защиты

|{
«type»: «getLicenses»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string getLicenses — запрос введенных в ККТ
лицензий / кодов защиты +

Пример ответа на запрос введенных в ККТ лицензий / кодов защиты

|{
«licenses» : [
{
«id» : «1»,
«name» : «Фискальные функции»
},
{
«id» : «2»,
«name» : «Запись ПО ККТ»
},
{
«id» : «3»,
«name» : «Работа с НДС 20%»
},
{
«id» : «4»,
«name» : «Работа с ФФД 1.1»
},
{
«id» : «5»,
«name» : «Обработка маркировки»
}
]
}
|

Результат задания Параметр Описание Тип
Лицензии / коды защиты (licenses)
Информация о лицензии / коде защиты
id Номер лицензии / кода защиты string
name Наименование лицензии / кода защиты string

Поддерживается для всех ККТ

Отчет по секциям

Пример отчета по секциям

|{
«type»: «reportDepartments»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string reportDepartments — отчет по секциям +

Данные результата задания отсутствуют.

Поддерживается для всех ККТ

Отчет итогов регистраций/перерегистраций

Пример отчета итогов регистраций/перерегистраций

|{
«type»: «reportFnRegistrations»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string reportFnRegistrations — отчет итогов
регистраций/перерегистраций +

Данные результата задания отсутствуют.

Поддерживается для всех ККТ

Печать документов из БД документов

Пример печати документов из БД документов

|{
«type»: «printDocumentsFromJournal»,

«filter»: «shiftNumber»,

«from»: 1,
«to»: 10
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string printDocumentsFromJournal — печать
докуменов из БД +
filter Фильтр документов string shiftNumber — по номерам смен
fiscalDocumentNumber — по номерам документов +
from Начало диапазона выгрузки number +
to Конец диапазона выгрузки number +

Данные результата задания отсутствуют.

Поддерживается для всех ККТ

Запрос состояния обмена с ИСМ

Пример запроса состояния обмена с ИСМ

|{
«type»: «ismExchangeStatus»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string ismExchangeStatus — запрос состояния
обмена с ИСМ +

Пример ответа на запрос состояния обмена с ИСМ

|{
«errors» : {
«fnCommandCode» : 0,
«documentNumber» : 1,
«lastSuccessConnectionDateTime»: «2018-03-06T13:42:00+03:00»,
«fn» : {
«code» : 0,
«description» : «Ошибок нет»
},
«network» : {
«code» : 13617,
«description» : «Отсутствует физический канал связи»
},
«ism» : {
«code» : 0,
«description» : «Ошибок нет»
}
},
«status» : {
«notSentCount» : 69,
«notSentFirstNoticeDateTime» : «2018-03-06T13:52:00+03:00»,
«notSentFirstNoticeNumber» : 1
},
«warnings» : {
«dataForSendIsEmpty» : false
}
}
|

Результат задания Параметр Описание Тип
Состояние (status)
notSentCount Количество непереданных уведомлений number
notSentFirstNoticeNumber Номер первого непереданного уведомления number
notSentFirstNoticeDateTime Дата и время первого непереданного
уведомления string
Ошибки обмена (errors)
network.code Код ошибки сети number
network.description Текст ошибки сети string
ism.code Код ошибки ИСМ number
ism.description Текст ошибки ИСМ string
fn.code Код ошибки ФН number
fn.description Текст ошибки ФН string
documentNumber Номер ФД, на котором произошла ошибка number
fnCommandCode Команда ФН, на которой произошла ошибка number
lastSuccessConnectionDateTime Дата и время последнего успешного
соединения с ИСМ string
Флаги предупреждений (warnings)
dataForSendIsEmpty Контейнер для отправки пуст boolean

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.2

Начать проверку КМ

Пример процедуры старта проверки КМ

|{
«type»: «beginMarkingCodeValidation»,
«params»: {
«imcType»: «auto»,
«imc»: «MDEwMjkwMDAwMDQ3NTgzMDIxTWRFZng6WHA2WUZkNx05MTgwMjkdOTJhUUlRa0k3b0hYbXpHL21kS3h6Q1VDS1RKSFhvQk9EZG1DZE01azhRajdnYVpWMnhibjY2eEJYR0lLcnRmdnFQSU5BMmprYmp5ajMvTytreTZvdTFOQT09»,
«itemEstimatedStatus»: «itemDryForSale»,
«itemQuantity»: 1.521,
«itemUnits»: «kilogram»,
«imcModeProcessing»: 0,
«notSendToServer»: false
}
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string beginMarkingCodeValidation — начать
проверку КМ +
params КМ для проверки <#json_imc> object +
params.notSendToServer Не отправлять запрос на сервер boolean По
умолчанию — false

Пример ответа на процедуру старта проверки КМ

|{
«offlineValidation»: {
«fmCheck»: true,
«fmCheckResult»: false,
«fmCheckErrorReason»: «noKeys»
}
}
|

Результат задания Параметр Описание Тип
Локальная проверка (offlineValidation)
fmCheck Проверка КМ в ФН (тег 2004, бит 0) boolean
fmCheckResult Результат проверки (тег 2004, бит 1) boolean
fmCheckErrorReason Причина ошибки проверки string

Поле fmCheckErrorReason может принимать следующие значения:

  • /checked/ — КМ успешно проверен;
  • /typeIncorrect/ — КМ данного типа не подлежит проверке в ФН;
  • /noKeys/ — ФН не содержит ключи проверки кода проверки этого КМ;
  • /noGS1/ — проверка невозможна, так как отсутствуют идентификаторы
    применения GS1 91 и/или 92 или их формат неверный;
  • /other/ — проверка невозможна по иной причине;

Параметр notSendToServer применяется в случаях, когда при продаже
маркированного товара указывать код маркировки в чеке необязательно. По
умолчанию принимает значение false.

В соответствии с Федеральным законом от 29 декабря 2022 г. N 597-ФЗ
такой порядок формирования позиции чека допускается, если маркированный
товар:

  • Продается через вендинговый аппарат. Товар должен выдаваться
    покупателю в момент расчета.
  • Передается при оказании услуг общественного питания. Товар может
    передаваться покупателю целиком в потребительской упаковке, на
    которую нанесен код маркировки, либо частью без такой
    потребительской упаковки, до или после момента расчета за указанные
    услуги.
  • Продается ИП или организации за наличные деньги или с предъявлением
    банковской карты. При этом обязательно указывать в чеке ИНН покупателя.

В этом случае необходимо начать проверку маркированного товара с
установленным параметром notSendToServer в значении true. Все
дальнейшие действия проводятся как с обычным маркированным товаром, т.е.
необходимо после JSON-задания beginMarkingCodeValidation вызвать
задание getMarkingCodeValidationStatus и после подтвердить реализацию
маркированного товара заданием acceptMarkingCode.

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.2

Получить результат проверки КМ

Пример получения результат проверки КМ

|{
«type»: «getMarkingCodeValidationStatus»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string getMarkingCodeValidationStatus — получить
результат проверки КМ +

Пример ответа на получение результата проверки КМ

|{
«ready»: true,
«sentImcRequest»: true,
«driverError»: {
«code»: 0
},
«onlineValidation»: {
«itemInfoCheckResult»: {
«imcCheckFlag»: true,
«imcCheckResult»: true,
«imcStatusInfo»: true,
«ecrStandAloneFlag»: true
},
«markOperatorItemStatus»: «itemEstimatedStatusCorrect»,
«markOperatorResponse»: {
«responseStatus»: true,
«itemStatusCheck»: true
},
«markOperatorResponseResult»: «correct»,
«imcType»: «imcFmVerifyCode88»,
«imcBarcode»: «MDEwMjkwMDAwMDQ3NTgzMDIxTWRFZng6WHA2WUZkNx05MTgwMjkdOTJhUUlRa0k3b0hYbXpHL21kS3h6Q1VDS1RKSFhvQk9EZG1DZE01azhRajdnYVpWMnhibjY2eEJYR0lLcnRmdnFQSU5BMmprYmp5ajMvTytreTZvdTFOQT09»,
«imcModeProcessing»: 0
}
}
|

Результат задания Параметр Описание Тип
ready Признак готовности результата проверки КМ boolean
sentImcRequest Признак отправки запроса о проверке КМ boolean
Ошибка драйвера (driverError)
code Стандартный код ошибки драйвера number
error Краткое название ошибки (англоязычное) string
description Описание ошибки драйвера string
Проверка на сервере ИСМ (onlineValidation)
itemInfoCheckResult Результат проверки сведений о товаре (тег 2106)
<#json_itemInfoCheckResult> object
markOperatorItemStatus Сведения о статусе товара (тег 2109) string
markOperatorResponse Результаты обработки запроса (тег 2005)
<#json_markOperatorResponse> object
markOperatorResponseResult Код обработки запроса (тег 2105) string
imcType Тип кода маркировки (тег 2100) string
imcBarcode Идентификатор товара (тег 2101) string
imcModeProcessing Режим обработки кода товара (тег 2102) number

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

  • /imcCheckIsRun/ — процедура проверки уже запущена (если несколько
    раз подряд запущен beginMarkingCodeValidation);
  • /serverNoConnect/ — ошибка связи, истек таймаут на открытие соединения;
  • /imcCheckBreak/ — процедура проверки прервана:
    o не смогли начать задание, процедура проверки уже запущена;
    o соединение установлено, но сервер отклонил проверку (из-за
    неверно переданных данных);
  • /imcCheckWrongState/ — неверное состояние процесса проверки КМ,
    проверьте последовательность команд;
  • /responseTimeout/ — истек таймаут при ожидании ответа на запрос о КМ
    от сервера;

Поле markOperatorItemStatus может принимать следующие значения:

  • /itemEstimatedStatusCorrect/ — планируемый статус товара корректен;
  • /itemEstimatedStatusIncorrect/ — планируемый статус товара некорректен;
  • /itemSaleStopped/ — оборот товара приостановлен;

Поле markOperatorResponseResult может принимать следующие значения:

  • /correct/ — запрос имеет корректный формат, в том числе корректный
    формат кода маркировки;
  • /incorrect/ — запрос имеет некорректный формат;
  • /unrecognized/ — указанный в запросе код маркировки имеет
    некорректный формат (не распознан);

Поле imcType может принимать следующие значения:

  • /auto/ — определить тип КМ автоматически;
  • /imcUnrecognized/ — неопознанный КМ;
  • /imcShort/ — короткий КМ;
  • /imcFmVerifyCode88/ — КМ со значением кода проверки длиной 88
    символов, подлежащим проверке в ФН;
  • /imcVerifyCode44/ — КМ со значением кода проверки длиной 44 символа,
    не подлежащим проверке в ФН;
  • /imcFmVerifyCode44/ — КМ со значением кода проверки длиной 44
    символа, подлежащим проверке в ФН;
  • /imcVerifyCode4/ — КМ со значением кода проверки длиной 4 символа,
    не подлежащим проверке в ФН;

В блоке onlineValidation могут отсутствовать некоторые параметры, их
состав определяется ответом от сервера ИСМ.

Если вернулась ошибка драйвера, отличная от 0 (driverError.code ≠ 0),
то в ответе JSON будут присутствовать только следующие поля:

  • ready — признак готовности результата проверки КМ
  • sentImcRequest — признак отправки запроса о проверке КМ

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.2

Подтвердить реализацию КМ

Пример подтверждения реализации КМ

|{
«type»: «acceptMarkingCode»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string acceptMarkingCode — подтвердить
реализацию КМ +

Пример ответа на подтверждение реализации КМ

|{
«itemInfoCheckResult»: {
«ecrStandAloneFlag»: false,
«imcCheckFlag»: true,
«imcCheckResult»: true,
«imcEstimatedStatusCorrect»: true,
«imcStatusInfo»: true
}
}
|

Результат задания Параметр Описание Тип
Результат сохранения КМ в таблице ФН-М в случае успешной проверки
(itemInfoCheckResult) <#json_itemInfoCheckResult>
*imcCheckFlag * Код маркировки был проверен ФН и (или) ИСМ (тег 2106,
бит 0) boolean
*imcCheckResult * Результат проверки КП КМ положительный (true) или
отрицательный (false) (тег 2106, бит 1) boolean
*imcStatusInfo * Проверка статуса ИСМ выполнена (тег 2106, бит 2) boolean
*imcEstimatedStatusCorrect * Корректность сведений от ИСМ о планируемом
статусе товара (тег 2106, бит 3) boolean
*ecrStandAloneFlag * Результат проверки КП КМ сформирован ККТ,
работающей в автономном режиме (тег 2106, бит 4) boolean

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.2

Отказаться от реализации КМ

Пример отказа от реализации КМ

|{
«type»: «declineMarkingCode»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string declineMarkingCode — отказаться от
реализации КМ +

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.2

Прервать проверку КМ

Пример прерывания проверки КМ

|{
«type»: «cancelMarkingCodeValidation»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string cancelMarkingCodeValidation — прервать
проверку КМ +

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.2

Очистить таблицу проверенных КМ ФН-М

Пример очистки таблицы проверенных КМ

|{
«type»: «clearMarkingCodeValidationResult»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string clearMarkingCodeValidationResult
очистить таблицу проверенных КМ +

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.2

Проверить состояние фоновой проверки

Пример проверки состояния фоновой проверки

|{
«type»: «checkMarkingCodeValidationsReady»
}
|

Данное задание актуально только если проверка КМ выполняется средствами
драйвера, то есть настройка
LIBFPTR_SETTING_VALIDATE_MARK_WITH_FNM_ONLY имеет значение true.
Если проверка КМ выполняется без ожидания ответа от сервера, то КМ
добавляются в буфер КМ, из которого отправляются на сервер ИСМ в порядке
добавления. Запрос позволяет узнать, все ли марки из буфера КМ драйвера
были отправлены.

Во всех остальных случаях, когда проверка КМ выполняется не средствами
драйвера или проверка происходит с ожиданием ответа от сервера значение
validationReady всегда равно true.

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string checkMarkingCodeValidationsReady
проверить состояние фоновой проверки +

Пример ответа на проверку состояния фоновой проверки

|{
«validationReady»: true
}
|

Результат задания Параметр Описание Тип
validationReady Признак завершения фоновых проверок КМ boolean

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.2

Проверка массива КМ

Пример проверки массива КМ

|{
«type»: «validateMarks»,
«timeout»: 60000,
«params»: [
{
«imcType»: «auto»,
«imc»: «MDE0NDk0NTUwNDM1MzA2ODIxUVhZWFNBTEdMTVlRUR05MUVFMDYdOTJZV0NYYm1LNlNOOHZ2d294WkZrN1dBWThXb0pOTUdHcjZDZ3RpdWphMDRjPQ==»,
«itemEstimatedStatus»: «itemDryForSale»,
«itemQuantity»: 1,
«itemUnits»: «piece»,
«imcModeProcessing»: 0,
«itemFractionalAmount»: «4/5»
},

]
}
|

Данное задание позволяет проверить массив марок, для каждой марки
производятся следующие действия:

  • КМ проверяются в ФН;
  • формируется запрос на проверку на сервере ИСМ;
  • происходит отправка, проверка КМ на сервере в течение времени не
    более указанного в параметре timeout;
  • в случае успешной проверки результаты проверки КМ сохраняются в
    таблицу ФН-М;

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string validateMarks — проверка КМ +
timeout Таймаут ожидания проверки одного КМ в мс. number По
умолчанию — 60 000 мс
params Массив КМ для проверки <#json_imc> object[] +

Пример ответа на проверку КМ с ожиданием ответа от сервера

|[
{
// ошибка проверки данной КМ
«driverError»: {
«code»: 0
},
// результаты сохранения КМ в таблице ФН-М в случае успешной проверки
«itemInfoCheckResult»: {
«ecrStandAloneFlag»: false,
«imcCheckFlag»: true,
«imcCheckResult»: true,
«imcEstimatedStatusCorrect»: true,
«imcStatusInfo»: true
},
// результаты проверки в ФН-М
«offlineValidation»: {
«fmCheck»: false,
«fmCheckErrorReason»: «typeIncorrect»,
«fmCheckResult»: false
},
// результаты проверки на сервере ИСМ
«onlineValidation»: {
«imcType» : «imcVerifyCode44»,
«itemInfoCheckResult»: {
«ecrStandAloneFlag»: false,
«imcCheckFlag»: true,
«imcCheckResult»: true,
«imcEstimatedStatusCorrect»: true,
«imcStatusInfo»: true
},
«markOperatorItemStatus»: «itemEstimatedStatusCorrect»,
«markOperatorResponse»: {
«itemStatusCheck»: true,
«responseStatus»: true
},
«markOperatorResponseResult» : «correct»
},
«sentImcRequest»: true
},

]
|

В ответ возвращается массив, описание элемента массива дано ниже.

Результат задания Параметр Описание Тип
Ошибка драйвера (driverError)
code Стандартный код ошибки драйвера number
error Краткое название ошибки (англоязычное) string
description Описание ошибки драйвера string
Локальная проверка (offlineValidation)
fmCheck Проверка КМ в ФН (тег 2004, бит 0) boolean
fmCheckResult Результат проверки (тег 2004, бит 1) boolean
fmCheckErrorReason Причина ошибки проверки string
Проверка на сервере ИСМ (onlineValidation)
itemInfoCheckResult Результат проверки сведений о товаре (тег 2106)
<#json_itemInfoCheckResult> object
markOperatorItemStatus Сведения о статусе товара (тег 2109) string
markOperatorResponse Результаты обработки запроса (тег 2005)
<#json_markOperatorResponse> object
markOperatorResponseResult Код обработки запроса (тег 2105) string
imcType Тип кода маркировки (тег 2100) string
imcBarcode Идентификатор товара (тег 2101) string
imcModeProcessing Режим обработки кода товара (тег 2102) number
Результат сохранения КМ в таблице ФН-М в случае успешной проверки
(itemInfoCheckResult) <#json_itemInfoCheckResult>
*imcCheckFlag * Код маркировки был проверен ФН и (или) ИСМ (тег 2106,
бит 0) boolean
*imcCheckResult * Результат проверки КП КМ положительный (true) или
отрицательный (false) (тег 2106, бит 1) boolean
*imcStatusInfo * Проверка статуса ИСМ выполнена (тег 2106, бит 2) boolean
*imcEstimatedStatusCorrect * Корректность сведений от ИСМ о планируемом
статусе товара (тег 2106, бит 3) boolean
*ecrStandAloneFlag * Результат проверки КП КМ сформирован ККТ,
работающей в автономном режиме (тег 2106, бит 4) boolean

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

  • /imcCheckIsRun/ — процедура проверки уже запущена (если несколько
    раз подряд запущен beginMarkingCodeValidation);
  • /serverNoConnect/ — ошибка связи, истек таймаут на открытие соединения;
  • /imcCheckBreak/ — процедура проверки прервана:
    o не смогли начать задание, процедура проверки уже запущена;
    o соединение установлено, но сервер отклонил проверку (из-за
    неверно переданных данных);
  • /imcCheckWrongState/ — неверное состояние процесса проверки КМ,
    проверьте последовательность команд;
  • /responseTimeout/ — истек таймаут при ожидании ответа на запрос о КМ
    от сервера;

Поле fmCheckErrorReason может принимать следующие значения:

  • /checked/ — КМ успешно проверен;
  • /typeIncorrect/ — КМ данного типа не подлежит проверке в ФН;
  • /noKeys/ — ФН не содержит ключи проверки кода проверки этого КМ;
  • /noGS1/ — проверка невозможна, так как остутствуют идентификаторы
    применения GS1 91 и/или 92 или их формат неверный;
  • /other/ — проверка невозможна по иной причине;

Поле markOperatorItemStatus может принимать следующие значения:

  • /itemEstimatedStatusCorrect/ — планируемый статус товара корректен;
  • /itemEstimatedStatusIncorrect/ — планируемый статус товара некорректен;
  • /itemSaleStopped/ — оборот товара приостановлен;

Поле markOperatorResponseResult может принимать следующие значения:

  • /correct/ — запрос имеет корректный формат, в том числе корректный
    формат кода маркировки;
  • /incorrect/ — запрос имеет некорректный формат;
  • /unrecognized/ — указанный в запросе код маркировки имеет
    некорректный формат (не распознан);

Поле imcType может принимать следующие значения:

  • /auto/ — определить тип КМ автоматически;
  • /imcUnrecognized/ — неопознанный КМ;
  • /imcShort/ — короткий КМ;
  • /imcFmVerifyCode88/ — КМ со значением кода проверки длиной 88
    символов, подлежащим проверке в ФН;
  • /imcVerifyCode44/ — КМ со значением кода проверки длиной 44 символа,
    не подлежащим проверке в ФН;
  • /imcFmVerifyCode44/ — КМ со значением кода проверки длиной 44
    символа, подлежащим проверке в ФН;
  • /imcVerifyCode4/ — КМ со значением кода проверки длиной 4 символа,
    не подлежащим проверке в ФН;

В блоке onlineValidation могут отсутствовать некоторые параметры, их
состав определяется ответом от сервера ИСМ.

Проверка КМ является блокирующей операцией и может занимать
продолжительное время. Максимальное время проверки одного КМ
ограничивается значением параметра timeout.

В зависимости от ответа сервера ИСМ в ответе JSON могут отсутствовать
некоторые параметры

Поддерживается только для ККТ версий 5.X, работающих по ФФД 1.2 и выше

Добавление массива КМ в таблицу проверенных КМ

Пример добавления массива КМ в таблицу проверенных КМ

|{
«type»: «addMarksToBuffer»,
«params»: [
{
«imcType»: «imcFmVerifyCode88»,
«imc»: «MDEwMjkwMDAwMDQ3NTgzMDIxTWRFZng6WHA2WUZkNx05MTgwMjkdOTJhUUlRa0k3b0hYbXpHL21kS3h6Q1VDS1RKSFhvQk9EZG1DZE01azhRajdnYVpWMnhibjY2eEJYR0lLcnRmdnFQSU5BMmprYmp5ajMvTytreTZvdTFOQT09»,
«itemEstimatedStatus»: «itemDryForSale»,
«imcModeProcessing»: 0,
«itemFractionalAmount»: «4/5»,
«itemQuantity»: 1,
«itemUnits»: «piece»
},

]
}
|

В случае, если в задании validateMarks были КМ, которые не были
сохранены в таблицу КМ, пользователь может создать данное задание для
принудительного добавления требуемых КМ в таблицу КМ ФН.

Данное задание позволяет добавить массив марок в таблицу проверенных КМ,
для каждой марки производятся следующие действия:

  • КМ проверяются локально в ФН;
  • формируется запрос на проверку на сервере ИСМ;
  • результаты проверки КМ сохраняются в таблицу ФН-М;

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string addMarksToBuffer — добавление массива КМ
в таблицу проверенных КМ +
params Массив КМ для проверки <#json_imc> object[] +

Пример ответа на добавление массива КМ в таблицу проверенных КМ

|[
{
// ошибка проверки данной КМ
«driverError»: {
«code»: 0
},
// результаты сохранения КМ в таблице ФН-М
«itemInfoCheckResult» : {
«ecrStandAloneFlag» : false,
«imcCheckFlag» : true,
«imcCheckResult» : true,
«imcEstimatedStatusCorrect» : true,
«imcStatusInfo» : true
},
// результаты проверки в ФН-М
«offlineValidation» : {
«fmCheck» : false,
«fmCheckErrorReason» : «typeIncorrect»,
«fmCheckResult» : false
}
},

]
|

В ответ возвращается массив, описание элемента массива дано ниже.

Результат задания Параметр Описание Тип
Ошибка драйвера (driverError)
code Стандартный код ошибки драйвера number
error Краткое название ошибки (англоязычное) string
description Описание ошибки драйвера string
Локальная проверка (offlineValidation)
fmCheck Проверка КМ в ФН (тег 2004, бит 0) boolean
fmCheckResult Результат проверки (тег 2004, бит 1) boolean
fmCheckErrorReason Причина ошибки проверки string
Результат сохранения КМ в таблице ФН-М <#json_itemInfoCheckResult>
*imcCheckFlag * Код маркировки был проверен ФН и (или) ИСМ (тег 2106,
бит 0) boolean
*imcCheckResult * Результат проверки КП КМ положительный (true) или
отрицательный (false) (тег 2106, бит 1) boolean
*imcStatusInfo * Проверка статуса ИСМ выполнена (тег 2106, бит 2) boolean
*imcEstimatedStatusCorrect * Корректность сведений от ИСМ о планируемом
статусе товара (тег 2106, бит 3) boolean
*ecrStandAloneFlag * Результат проверки КП КМ сформирован ККТ,
работающей в автономном режиме (тег 2106, бит 4) boolean

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

  • /imcCheckIsRun/ — процедура проверки уже запущена (если несколько
    раз подряд запущен beginMarkingCodeValidation);
  • /serverNoConnect/ — ошибка связи, истек таймаут на открытие соединения;
  • /imcCheckBreak/ — процедура проверки прервана:
    o не смогли начать задание, процедура проверки уже запущена;
    o соединение установлено, но сервер отклонил проверку (из-за
    неверно переданных данных);
  • /imcCheckWrongState/ — неверное состояние процесса проверки КМ,
    проверьте последовательность команд;
  • /responseTimeout/ — истек таймаут при ожидании ответа на запрос о КМ
    от сервера;

Поле fmCheckErrorReason может принимать следующие значения:

  • /checked/ — КМ успешно проверен;
  • /typeIncorrect/ — КМ данного типа не подлежит проверке в ФН;
  • /noKeys/ — ФН не содержит ключи проверки кода проверки этого КМ;
  • /noGS1/ — проверка невозможна, так как остутствуют идентификаторы
    применения GS1 91 и/или 92 или их формат неверный;
  • /other/ — проверка невозможна по иной причине; Запрос состояния работы с КМ Пример запроса состояния работы с КМ

|{
«type»: «checkImcWorkState»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string checkImcWorkState — запрос состояния
работы с КМ +

Пример ответа на запрос состояния работы с КМ

|{
«fm»: {
«status»: «markReceivedB1»,
«checkingCount»: 2,
«soldImcCount»: 2,
«noticeIsBegin»: true,
«noticeFreeMemory»: «less50»,
«noticeCount»: 0
},
«ecr»: {
«status»: «executed»,
«type»: «waitForResult»,
«stage»: «send»
}
}
|

Результат задания Параметр Описание Тип
Состояние работы ФН с КМ (fm)
status Состояние проверки КМ string
checkingCount Количество проверок КМ number
soldImcCount Количество реализованных КМ number
noticeIsBegin Начато формирование уведомления boolean
noticeFreeMemory Ресурс области уведомлений string
noticeCount Количество неотправленных уведомлений number
Состояние работы ККТ с КМ (ecr)
status Состояние проверки КМ string
type Тип проверки КМ string
stage Этап проверки КМ string

Поле fm.status может принимать следующие значения:

  • /blocked/ — работа с КМ временно заблокирована (переполнение области
    уведомлений);
  • /noImcForCheck/ — нет КМ на проверке;
  • /receivedImc/ — передан КМ на проверку;
  • /requestedImcStatus/ — сформирован запрос о статусе КМ;
  • /reсeivedImcStatus/ — получен ответ на запрос о статусе КМ;

Поле fm.noticeFreeMemory может принимать следующие значения:

  • /less50/ — область заполнена менее чем на 50%;
  • /50to80/ — область заполнена от 50 до 80%;
  • /80to90/ — область заполнена от 80 до 90%;
  • /more90/ — область заполнена более чем на 90%;
  • /outOfMemory/ — область полностью заполнена

Поле ecr.status может принимать следующие значения:

  • /notExecuted/ — проверка КМ в ККТ не выполняется;
  • /executed/ — проверка КМ в ККТ выполняется;
  • /completed/ — проверка КМ в ККТ завершена;
  • /recievedResult/ — результат проверки КМ в ККТ получен;

Поле ecr.type может принимать следующие значения:

  • /modeStandAlone/ — автономный режим;
  • /waitForResult/ — проверка с ожиданием ответа;
  • /notWaitForResult/ — проверка без ожидания ответа;
  • /notSendToServer/ — проверка без отправления на сервер;

Поле ecr.stage может принимать следующие значения:

  • /waitForTask/ — ожидание задания;
  • /openConnection/ — открытие соединения;
  • /send/ — отправка;
  • /waitForResult/ — ожидание ответа;
  • /getResult/ — получение ответа;
  • /decodeResult/ — декодирование ответа;
  • /completed/ — задание завершено;
  • /waitForRepeat/ — ожидание повтора;

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.2

Запрос время проверки КМ

Пример запроса время проверки КМ

|{
«type»: «checkImcTime»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string checkImcTime — запрос время проверки КМ +

Пример ответа на запрос времени проверки КМ

|{
«fmCheckTime «: 10,
«sendingTime «: 10,
«serverExchangeTime «: 15,
«fullTime»: 35
}
|

Результат задания Параметр Описание Тип
fmCheckTime Время проверки в ФН, мс number
sendingTime Время отправки, мс number
serverExchangeTime Время обмена с сервером, мс number
fullTime Полное время проверки, мс number

Параметр fmCheckTime показывает время проверки ФН в мс. Если проверка
в ФН еще не была проведена, то равно 0. Включает в себя время на
проверку в КМ и получение пакета для обмена с сервером.

Параметр sendingTime показывает время открытия соединения и отправки
данных в последней попытке в мс. Если ответ не был получен, то равно 0.
Если ККТ работает в автономном режиме, то всегда равно 0.

Параметр serverExchangeTime показывает время открытия соединения,
отправки данных и получения ответа от сервера в последней попытке. Если
ответ не был получен, то равно 0. Если ККТ работает в автономном режиме,
то всегда равно 0.

Параметр fullTime показывает полное время проверки, включая повторы.
Также к полному времени проверки добавляется время команды ФН на
повторное получение пакета для обмена.

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.2

Проверка связи с сервером ИСМ

Пример проверки связи с сервером ИСМ

|{
«type»: «pingIsm»
}
|

Описание задания Параметр Описание Тип Возможные значения
Обязательность
type Тип задания string pingIsm — проверка связи с сервером ИСМ +

Пример ответа на запрос времени проверки КМ

|{
«ready»: true,
«time»: 10
}
|

Результат задания Параметр Описание Тип
ready Признак готовности проверки связи с ИСМ boolean
time Время ответа от сервера, мс number

Поддерживается только для ККТ версий 5.X, работающих по ФФД ≥ 1.2

БД документов

ДТО10 позволяет автоматически выгружать документы из ККТ и сохранять их
в базу данных. Выгружаются документы из электронного журнала ККТ после
закрытия фискального документа.

При работе с ККТ версий 3.X электронные чеки в БД не сохраняются.
Документы, сформированные вне открытой смены, попадают в БД с номером
смены 0.

На данный момент автоматическая очистка БД не предусмотрена.

Активация БД

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

  • LIBFPTR_SETTING_USE_DOCUMENTS_JOURNAL — использовать БД документов
  • LIBFPTR_SETTING_DOCUMENTS_JOURNAL_PATH — путь к БД документов

При включении работы с базой документов, время формирования документа
увеличится пропорционально размеру документа. Также влияние на время
оказывают канал и качество связи.

Если выгрузить документ не удалось, документ все равно будет закрыт без
ошибки, но не будет добавлен в БД

Использование БД документов

Драйвер позволяет распечатывать документы из БД по диапазонам номеров ФД
и номеров смен.

Для этого служат отчеты LIBFPTR_RT_JOURNAL_DOCUMENT_BY_NUMBERS и
LIBFPTR_RT_JOURNAL_DOCUMENT_BY_SHIFTS.

  Печать документов из БД

Печать документов по диапазону номеров документов

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_JOURNAL_DOCUMENT_BY_NUMBERS);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_DOCUMENT_NUMBER, 10);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_DOCUMENT_NUMBER_END, 20);
libfptr_report(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_JOURNAL_DOCUMENT_BY_NUMBERS);
fptr.setParam(LIBFPTR_PARAM_DOCUMENT_NUMBER, 10);
fptr.setParam(LIBFPTR_PARAM_DOCUMENT_NUMBER_END, 20);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_JOURNAL_DOCUMENT_BY_NUMBERS)
fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 10)
fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER_END, 20)
fptr.report()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_JOURNAL_DOCUMENT_BY_NUMBERS);
fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 10);
fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER_END, 20);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_JOURNAL_DOCUMENT_BY_NUMBERS);
fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 10);
fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER_END, 20);
fptr.report();
|

|[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_JOURNAL_DOCUMENT_BY_NUMBERS];
[fptr setParam:LIBFPTR_PARAM_DOCUMENT_NUMBER intParam:10];
[fptr setParam:LIBFPTR_PARAM_DOCUMENT_NUMBER_END intParam:20];
[fptr report];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_JOURNAL_DOCUMENT_BY_NUMBERS);
fptr.setParam(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER, 10);
fptr.setParam(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER_END, 20);
fptr.report();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_JOURNAL_DOCUMENT_BY_NUMBERS);
fptr.setParam(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 10);
fptr.setParam(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER_END, 20);
fptr.report;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_JOURNAL_DOCUMENT_BY_NUMBERS)
fptr.SetParam(fptr10.LIBFPTR_PARAM_DOCUMENT_NUMBER, 10)
fptr.SetParam(fptr10.LIBFPTR_PARAM_DOCUMENT_NUMBER_END, 20)
fptr.Report()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_JOURNAL_DOCUMENT_BY_NUMBERS);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 10);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER_END, 20);
Fptr.report();
|

Для печати документов из БД по диапазону номеров документов требуется
вызвать метод /report()/ с типом отчета LIBFPTR_PARAM_REPORT_TYPE
равным LIBFPTR_RT_JOURNAL_DOCUMENT_BY_NUMBERS и указать номера первого
и последнего документов в выгрузке в параметрах
LIBFPTR_PARAM_DOCUMENT_NUMBER и LIBFPTR_PARAM_DOCUMENT_NUMBER_END.

Поддерживается для всех ККТ

Печать документов по диапазону номеров смен

|libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_JOURNAL_DOCUMENT_BY_SHIFTS);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_SHIFT_NUMBER, 2);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_SHIFT_NUMBER_END, 5);
libfptr_report(fptr);
|

|fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_JOURNAL_DOCUMENT_BY_SHIFTS);
fptr.setParam(LIBFPTR_PARAM_SHIFT_NUMBER, 2);
fptr.setParam(LIBFPTR_PARAM_SHIFT_NUMBER_END, 5);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_JOURNAL_DOCUMENT_BY_SHIFTS)
fptr.setParam(IFptr.LIBFPTR_PARAM_SHIFT_NUMBER, 2)
fptr.setParam(IFptr.LIBFPTR_PARAM_SHIFT_NUMBER_END, 5)
fptr.report()
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_JOURNAL_DOCUMENT_BY_SHIFTS);
fptr.setParam(IFptr.LIBFPTR_PARAM_SHIFT_NUMBER, 2);
fptr.setParam(IFptr.LIBFPTR_PARAM_SHIFT_NUMBER_END, 5);
fptr.report();
|

|fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_JOURNAL_DOCUMENT_BY_SHIFTS);
fptr.setParam(IFptr.LIBFPTR_PARAM_SHIFT_NUMBER, 2);
fptr.setParam(IFptr.LIBFPTR_PARAM_SHIFT_NUMBER_END, 5);
fptr.report();
|

|[fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_JOURNAL_DOCUMENT_BY_SHIFTS];
[fptr setParam:LIBFPTR_PARAM_SHIFT_NUMBER intParam:2];
[fptr setParam:LIBFPTR_PARAM_SHIFT_NUMBER_END intParam:5];
[fptr report];
|

|fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_JOURNAL_DOCUMENT_BY_SHIFTS);
fptr.setParam(Constants.LIBFPTR_PARAM_SHIFT_NUMBER, 2);
fptr.setParam(Constants.LIBFPTR_PARAM_SHIFT_NUMBER_END, 5);
fptr.report();
|

|begin
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_JOURNAL_DOCUMENT_BY_SHIFTS);
fptr.setParam(fptr.LIBFPTR_PARAM_SHIFT_NUMBER, 2);
fptr.setParam(fptr.LIBFPTR_PARAM_SHIFT_NUMBER_END, 5);
fptr.report;
end;
|

|fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_JOURNAL_DOCUMENT_BY_SHIFTS)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SHIFT_NUMBER, 2)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SHIFT_NUMBER_END, 5)
fptr.Report()
|

|Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_JOURNAL_DOCUMENT_BY_SHIFTS);
Fptr.setParam(Fptr.LIBFPTR_PARAM_SHIFT_NUMBER, 2);
Fptr.setParam(Fptr.LIBFPTR_PARAM_SHIFT_NUMBER_END, 5);
Fptr.report();
|

Для печати документов из БД по диапазону номеров смен требуется вызвать
метод /report()/ с типом отчета LIBFPTR_PARAM_REPORT_TYPE равным
LIBFPTR_RT_JOURNAL_DOCUMENT_BY_SHIFTS и указать номера первой и
последней смены в выгрузке в параметрах LIBFPTR_PARAM_SHIFT_NUMBER и
LIBFPTR_PARAM_SHIFT_NUMBER_END.

Если документы не найдены, будет возвращена ошибка
LIBFPTR_ERROR_NO_DOCUMENTS_FOUND_IN_JOURNAL.

Если хотя бы один документ найден — ошибки возвращено не будет.

Документы, сформированные вне открытой смены, попадают в БД с номером
смены 0.

Поддерживается для всех ККТ

Найти документ в журнале документов

Задание GUID документа и последующий поиск документа в журнале по GUID

|// присвоение чеку GUID
libfptr_open_receipt(fptr);

libfptr_set_user_param_str(fptr, 100, L»{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»);

libfptr_close_receipt(fptr);

// поиск документа в журнале по GUID
libfptr_set_param_str(fptr, LIBFPTR_PARAM_GUID, L»{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»);
libfptr_find_document_in_journal(fptr);

// запрашивать GUID необязательно, он не изменился
uint documentNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENT_NUMBER);
int year, month, day, hour, minute, second;
libfptr_get_param_datetime(fptr, LIBFPTR_PARAM_DATE_TIME, &year, &month, &day, &hour, &minute, &second);

|

|// присвоение чеку GUID
fptr.openReceipt();

fptr.setUserParam(100, L»{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»);

fptr.closeReceipt();

// поиск документа в журнале по GUID
fptr.setParam(LIBFPTR_PARAM_GUID, L»{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»);
fptr.findDocumentInJournal();

// запрашивать GUID необязательно, он не изменился
uint documentNumber = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENT_NUMBER);
std::tm dateTime = fptr.getParamDateTime(LIBFPTR_PARAM_DATE_TIME);
|

|# присвоение чеку GUID
fptr.openReceipt()

fptr.setUserParam(100, «{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»)

fptr.closeReceipt()

поиск документа в журнале по GUID

fptr.setParam(IFptr.LIBFPTR_PARAM_GUID, «{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»)
fptr.findDocumentInJournal()

запрашивать GUID необязательно, он не изменился

documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER)
dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME)
|

|// присвоение чеку GUID
fptr.openReceipt();

fptr.setUserParam(100, «{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»);

fptr.closeReceipt();

// поиск документа в журнале по GUID
fptr.setParam(IFptr.LIBFPTR_PARAM_GUID, «{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»);
fptr.findDocumentInJournal();

// запрашивать GUID необязательно, он не изменился
long documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|// присвоение чеку GUID
fptr.openReceipt();

fptr.setUserParam(100, «{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»);

fptr.closeReceipt();

// поиск документа в журнале по GUID
fptr.setParam(IFptr.LIBFPTR_PARAM_GUID, «{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»);
fptr.findDocumentInJournal();

// запрашивать GUID необязательно, он не изменился
long documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|// присвоение чеку GUID
[fptr openReceipt];

[fptr setUserParam:100 NSStringParam:@»{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»];

[fptr closeReceipt];

// поиск документа в журнале по GUID
[fptr setParam:LIBFPTR_PARAM_GUID NSStringParam:@»{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»];
[fptr findDocumentInJournal];

// запрашивать GUID необязательно, он не изменился
uint documentNumber = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENT_NUMBER];
NSDate *dateTime = [fptr getParamDateTime:LIBFPTR_PARAM_DATE_TIME];
|

|// присвоение чеку GUID
fptr.openReceipt();

fptr.setUserParam(100, «{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»);

fptr.closeReceipt();

// поиск документа в журнале по GUID
fptr.setParam(Constants.LIBFPTR_PARAM_GUID, «{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»);
fptr.findDocumentInJournal();

// запрашивать GUID необязательно, он не изменился
long documentNumber = fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER);
DateTime dateTime = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);
|

|var
documentNumber: Longint;
dateTime: TDateTime;
begin
// присвоение чеку GUID
fptr.openReceipt;

fptr.setUserParam(100, ‘{6F9619FF-8B86-D011-B42D-00CF4FC964FF}’);

fptr.closeReceipt;

// поиск документа в журнале по GUID
fptr.setParam(fptr.LIBFPTR_PARAM_GUID, '{6F9619FF-8B86-D011-B42D-00CF4FC964FF}');
fptr.findDocumentInJournal;

// запрашивать GUID необязательно, он не изменился
documentNumber := fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
dateTime       := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME);

end;
|

|// присвоение чеку GUID
fptr.OpenReceipt()

fptr.SetUserParam(100, «{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»)

fptr.CloseReceipt()

// поиск документа в журнале по GUID
fptr.SetParam(fptr10.LIBFPTR_PARAM_GUID, «{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»)
fptr.FindDocumentInJournal()

// запрашивать GUID необязательно, он не изменился
documentNumber := fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENT_NUMBER)
dateTime := fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_DATE_TIME)
|

|// присвоение чеку GUID
Fptr.openReceipt();

Fptr.setUserParam(100, «{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»);

Fptr.closeReceipt();

// поиск документа в журнале по GUID
Fptr.setParam(Fptr.LIBFPTR_PARAM_GUID, «{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»);
Fptr.findDocumentInJournal();

// запрашивать GUID необязательно, он не изменился
documentNumber = Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
dateTime = Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_DATE_TIME);
|

Задание GUID документа и последующий поиск документа в журнале по
номеру ФД

|// присвоение чеку GUID
libfptr_open_receipt(fptr);

libfptr_set_user_param_str(fptr, 100, L»{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»);

libfptr_close_receipt(fptr);

// поиск документа в журнале по номеру ФД 124
libfptr_set_param_int(fptr, LIBFPTR_PARAM_DOCUMENT_NUMBER, 124);
libfptr_find_document_in_journal(fptr);

// запрашивать номер документа необязательно, он не изменился
std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_GUID, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_GUID, &str[0], str.size());
}
std::wstring guid = std::wstring(&str[0]);

int year, month, day, hour, minute, second;
libfptr_get_param_datetime(fptr, LIBFPTR_PARAM_DATE_TIME, &year, &month, &day, &hour, &minute, &second);

|

|// присвоение чеку GUID
fptr.openReceipt();

fptr.setUserParam(100, L»{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»);

fptr.closeReceipt();

// поиск документа в журнале по номеру ФД 124
fptr.setParam(LIBFPTR_PARAM_DOCUMENT_NUMBER, 124);
fptr.findDocumentInJournal();

// запрашивать номер документа необязательно, он не изменился
std::wstring guid = fptr.getParamString(LIBFPTR_PARAM_GUID);
std::tm dateTime = fptr.getParamDateTime(LIBFPTR_PARAM_DATE_TIME);
|

|# присвоение чеку GUID
fptr.openReceipt()

fptr.setUserParam(100, «{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»)

fptr.closeReceipt()

поиск документа в журнале по номеру ФД 124

fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 124)
fptr.findDocumentInJournal()

запрашивать номер документа необязательно, он не изменился

guid = fptr.getParamString(IFptr.LIBFPTR_PARAM_GUID)
dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME)
|

|// присвоение чеку GUID
fptr.openReceipt();

fptr.setUserParam(100, «{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»);

fptr.closeReceipt();

// поиск документа в журнале по номеру ФД 124
fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 124);
fptr.findDocumentInJournal();

// запрашивать номер документа необязательно, он не изменился
String guid = fptr.getParamString(IFptr.LIBFPTR_PARAM_GUID);
Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|// присвоение чеку GUID
fptr.openReceipt();

fptr.setUserParam(100, «{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»);

fptr.closeReceipt();

// поиск документа в журнале по номеру ФД 124
fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 124);
fptr.findDocumentInJournal();

// запрашивать номер документа необязательно, он не изменился
String guid = fptr.getParamString(IFptr.LIBFPTR_PARAM_GUID);
Date dateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME);
|

|// присвоение чеку GUID
[fptr openReceipt];

[fptr setUserParam:100 NSStringParam:@»{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»];

[fptr closeReceipt];

// поиск документа в журнале по номеру ФД 124
[fptr setParam:LIBFPTR_PARAM_DOCUMENT_NUMBER intParam:124];
[fptr findDocumentInJournal];

// запрашивать номер документа необязательно, он не изменился
NSString *guid = [fptr getParamString:LIBFPTR_PARAM_GUID];
NSDate *dateTime = [fptr getParamDateTime:LIBFPTR_PARAM_DATE_TIME];
|

|// присвоение чеку GUID
fptr.openReceipt();

fptr.setUserParam(100, «{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»);

fptr.closeReceipt();

// поиск документа в журнале по номеру ФД 124
fptr.setParam(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER, 124);
fptr.findDocumentInJournal();

// запрашивать номер документа необязательно, он не изменился
String guid = fptr.getParamString(Constants.LIBFPTR_PARAM_GUID);
DateTime dateTime = fptr.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);
|

|var
guid: String;
dateTime: TDateTime;
begin
// присвоение чеку GUID
fptr.openReceipt;

fptr.setUserParam(100, ‘{6F9619FF-8B86-D011-B42D-00CF4FC964FF}’);

fptr.closeReceipt;

// поиск документа в журнале по номеру ФД 124
fptr.setParam(fptr.LIBFPTR_PARAM_GUID, 124);
fptr.findDocumentInJournal;

// запрашивать номер документа необязательно, он не изменился
guid     := fptr.getParamString(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
dateTime := fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME);

end;
|

|// присвоение чеку GUID
fptr.OpenReceipt()

fptr.SetUserParam(100, «{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»)

fptr.CloseReceipt()

// поиск документа в журнале по номеру ФД 124
fptr.SetParam(fptr10.LIBFPTR_PARAM_DOCUMENT_NUMBER, 124)
fptr.FindDocumentInJournal()

// запрашивать номер документа необязательно, он не изменился
guid := fptr.GetParamString(fptr10.LIBFPTR_PARAM_GUID)
dateTime := fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_DATE_TIME)
|

|// присвоение чеку GUID
Fptr.openReceipt();

Fptr.setUserParam(100, «{6F9619FF-8B86-D011-B42D-00CF4FC964FF}»);

Fptr.closeReceipt();

// поиск документа в журнале по номеру ФД 124
Fptr.setParam(Fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 124);
Fptr.findDocumentInJournal();

// запрашивать номер документа необязательно, он не изменился
guid = Fptr.getParamString(Fptr.LIBFPTR_PARAM_GUID);
dateTime = Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_DATE_TIME);
|

Для поиска документа в журнале необходимо использовать метод / findDocumentInJournal()/ строго с одним из параметров:

  • LIBFPTR_PARAM_GUID — поиск документа по GUID;
  • LIBFPTR_PARAM_DOCUMENT_NUMBER — поиск документа по номеру ФД;

Параметр LIBFPTR_PARAM_GUID представляет собой массив из 16 байт и
может быть передан как массив или как строка GUID вида |{6F9619FF-8B86-
D011-B42D-00CF4FC964FF}|.

В результате выполнения метода будут возвращены следующие параметры. Для
унификации выходящих параметров входящие параметры будут возвращены без
изменений.

Параметр Описание Тип
LIBFPTR_PARAM_GUID GUID документа bytearray
LIBFPTR_PARAM_DOCUMENT_NUMBER Номер документа int
LIBFPTR_PARAM_DATE_TIME Дата и время документа datetime

Внимание! Метод всегда возвращает параметр LIBFPTR_PARAM_GUID как
массив байт (даже если параметр был задан строкой).

GUID документа предварительно задаётся в документе как пользовательский
реквизит номер 100 с помощью метода /setUserParam()/. GUID в чеке
может быть так же задан в виде строки или массива байт.

Поддерживается только для ККТ версий 5.X.

Скрипты драйвера

Описание

Драйвер позволяет выполнять скрипты /JavaScript/ через встроенный
интерпретатор. В качестве встроенного интерпретатора выступает Duktape
https://duktape.org/ версии 2.3.0. Он поддерживает стандарт
ECMAScript E5/E5.1, частично возможна поддержка более старших
стандартов https://wiki.duktape.org/postes5features.

Эти скрипты позволяют вызывать почти все основные методы драйвера, а
также несколько дополнительных. Также они предлагают специально
разработанные для них способы возврата ошибок.

JSON-задания драйвера также работают через скрипты /JavaScript/.

Имеются ограничения на вызовы методов драйвера из скриптов /JavaScript/.
Нельзя:

  • управлять настройками драйвера (методы /setSettings()/, / setSingleSetting()/, /applySingleSettings()/);
  • вызывать диалог настройки (метод /showProperties()/);
  • подключаться и отключаться от ККТ (методы /open()/ и /close()/);
  • работать с JSON-заданиями (методы /validateJson()/, / processJson()/);
  • загружать скрипты в драйвер (метод /uploadDriverScript()/);
  • вызывать скрипты драйвера (методы /execDriverScript()/, / execDriverScriptById()/).

Из скриптов доступен глобальный объект драйвера — |Fptr|.

Внешние скрипты

Для указания пути к внешним скриптам используется настройка
LIBFPTR_SETTING_SCRIPTS_PATH. По пути, указанному в этой настройке,
драйвер будет искать пользовательские скрипты JSON-заданий (метод / processJson()/), скрипты для вызова через метод / execDriverScriptById()/, а также скрипт пользовательских настроек.
Также путь можно указать в переменных окружения (Windows, Linux) или в
реестре (Windows). Приоритеты у способов задания путей следующие:

  1. Настройка LIBFPTR_SETTING_SCRIPTS_PATH драйвера.
  2. Переменная окружения DTO10_SCRIPTS_PATH.
  3. Ключ реестра HKLM\SOFTWARE\ATOL\Drivers\10.0\KKT\SCRIPTS_PATH.

Также их возможно загрузить в драйвер методом /uploadDriverScript()/.

В качестве примера скриптов можно использовать внутренние скрипты
драйвера (располагаются в каталоге /examples/ поставки драйвера).

Возврат результата

Пример обработчика JSON-задания с возвратом ошибки драйвера

|function execute(task) {
Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_X);
if (Fptr.report() < 0) {
return Fptr.error();
}
return Fptr.ok();
}
|

Пример обработчика JSON-задания с возвратом специфичной ошибки

|function execute(task) {
if (task.docNumber === undefined) {
return Fptr.result(99999, «Не найдено обязательное поле»)
}

Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_FN_DOC_BY_NUMBER);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, task.docNumber);
if (Fptr.report() < 0) {
    return Fptr.error();
}
return Fptr.ok();

}
|

Пример обработчика JSON-задания с возвратом результата

|function execute(task) {
Fptr.setParam(Fptr.LIBFPTR_PARAM_DATA_TYPE, Fptr.LIBFPTR_DT_SHIFT_STATE);
if (Fptr.queryData() < 0) {
return Fptr.raise();
}

return Fptr.ok({
    shiftStatus: {
        number: Fptr.getParamInt(Fptr.LIBFPTR_PARAM_SHIFT_NUMBER),
        expiredTime: Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_DATE_TIME),
        state: Fptr.getParamInt(Fptr.LIBFPTR_PARAM_SHIFT_STATE)
    }
});

}
|

Пример обработчика JSON-задания с экстренным прерыванием скрипта

|function execute(task) {
Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_X);
if (Fptr.report() < 0) {
Fptr.raise();
}
return Fptr.ok();
}
|

Все методы драйвера подчиняются такому же набору правил <#errors>, как и
при использовании из любого поддерживаемого языка программирования.

Для хранения результата по умолчанию используется /JavaScript/-объект с
названием |Result| следующей структуры:

Поле Тип Описание
|error| int Код ошибки
|errorDescription| string Описание ошибки
|isError| bool Флаг ошибки. True, если |error| != 0. Только для чтения
|result| object Данные ответа
|events| object События

Дополнительно, добавлены следующие методы объекту |Fptr|, упрощающие
формирование такого объекта:

*

*/ok(data, events)/*. Формирует результат без ошибки (error = 0,
errorDescription = "Ошибок нет"). Входные параметры:

  o |result| - данные результата (object);
  o |events| - список событий (object).

*

*/error(data, events)/*. Формирует результат с ошибкой от последнего
вызова метода драйвера. Входные параметры:

  o |result| - данные результата (object);
  o |events| - список событий (object).

*

*/result(errorCode, errorDescription, data, events)/*. Формирует
результат с указанными кодом и текстом ошибки. Полностью повторяет
аргументы конструктора объекта |Result|. Входные параметры:

  o |errorCode| - код ошибки (int);
  o |errorDescription| - текст ошибки (string);
  o |result| - данные результата (object);
  o |events| - список событий (object).

*

*/raise()/*. Если последний вызов метода драйвера завершился с
ошибкой, прерывает выполнение скрипта.

Параметр |result| представляет собой произвольный /JavaScript/-объект с
результатом выполнения скрипта.

Параметр |events| указывает события, которые произошли во время
выполнения скрипта. На данный момент обрабатывается только одно событие

  • |shiftAutoOpened| (смена была автоматически открыта). Используется в
    JSON-заданиях. Работа с JSON-заданиями

Начиная с версии ДТО 10.5.1.0, обработчики JSON-заданий представляют
собой скрипты на языке /JavaScript/, составленные по определенным
правилам. Есть набор скриптов, которые включены в состав драйвера,
описание соответствующих им JSON-заданий приведено в разделе JSON-
задания <#json-tasks>. Также можно разрабатывать свои (внешние по
отношению к драйверу) скрипты для обработки нестандартных JSON-заданий,
а можно и переопределить встроенные в драйвер.

Каждый скрипт, отвечающий за JSON-задания, должен удовлетворять
следующим условиям:

  • название — json_{type}.js, где {type} — идентификатор задания,
    который передается в поле type JSON-задания. Например,
    json_cashIn.js — скрипт JSON-задания, выполняющего задание с типом
    cashIn (внесение наличности). Если скрипт загружается методом / uploadDriverScript()/, то, соответственно, это не требуется.
  • само JSON-задание должно обрабатываться функцией execute(),
    которой первым и единственным аргументом передается /JavaScript/-
    объект, сформированный из JSON-задания. Корректность формата самой
    строки с заданием (формат JSON) проверяется на уровне драйвера.
  • функция /execute()/ должна возвращать объект результата
    <#scripts_results>.
  • не рекомендуется использовать метод /raise()/, т.к. в результате
    всегда будет возвращаться ошибка 503 (Ошибка скрипта драйвера).
  • скрипт должен самостоятельно проверять формат и значения полей JSON-
    задания. Это можно делать как самостоятельно, так и используя /
    JavaScript/-библиотеку драйвера — fptr10_validators. Также для
    проверки JSON-задания рекомендуется выносить отдельно функцию
    validateTask(), которой передается /JavaScript/-объект,
    сформированный из JSON-задания. Эту функцию можно вызвать через
    метод /validateJson()/ драйвера. Метод /validateJson()/ может
    вызываться без подключения к ККТ.

Для переопределения встроенного в драйвера скрипта достаточно создать
скрипт с аналогичным заданием и положить его в каталог внешних скриптов
<#user_scripts> или загрузить в драйвер с помощью /uploadDriverScript()/.

Пользовательские настройки

ККТ версий 5.X позволяют расширять доступные настройки с помощью
загружаемых шаблонов. Для поддержки таких настроек драйвер будет
использовать скрипт settings.js. Скрипт должен содержать следующие методы:

  • /writeSetting(id, value)/ — записать настройку с идентификатором /
    id/ и значением /value/. Метод должен возвращать объект |Result|. В
    случае, если настройка не поддерживается, рекомендуется возвращать
    ошибку LIBFPTR_ERROR_NOT_SUPPORTED.
  • /readSetting(id)/ — считать настройку с идентификатором /id/.
    Метод должен возвращать значение настройки. Если настройка не
    поддерживается, разрешается возвращать объект |Result| с кодом
    ошибки, |null| или |undefined| (ничего не возвращать).

На данный момент настройки, поддерживаемые этим скриптом, не
отображаются в окне параметров ККТ и не выгружаются через Чтение
настроек ККТ <#read_settings_bulk>.

В этом скрипте недоступны методы драйвера readDeviceSetting() и
writeDeviceSetting(), чтобы избежать возможные зацикливания вызова
скриптового движка.

Библиотеки функций

В драйвер встроены следующие библиотеки:

  • fptr10_validators — содержит функции для проверки корректности
    переменных и полей объектов, а также функции проверки всех
    используемых в стандартных скриптах объектов;
  • fptr10_utils — содержит различные вспомогательные функции и константы;
  • fptr10_items — содержит работу с элементами документов из
    стандартных JSON-заданий;
  • fptr10_base_receipt — содержит реализацию формирования чека;
  • fptr10_base_correction — содержит реализацию формирования чека
    коррекции.

Их можно подключать с помощью глобальной функции |require()|.

Все библиотеки, название которых начинается с <fptr10_>, считаются
встроенными, и подгрузить их из внешнего файла нельзя.

Чтобы использовать свои библиотеки, их файлы нужно положить в каталог
внешних скриптов <#user_scripts>. Подключать их нужно по имени файла
(без .js).

Встроенные функции


  Приостановка выполнения

Приостановка выполнения на 1с

|sleep(1000);
|

Функция /sleep()/ позволяет приостановить выполнение программы на
заданное количество миллисекунд.

Выполнение скрипта

Выполнение скрипта

|const wchar_t code[] = L»Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_X);\n\
if (Fptr.report() < 0) {\n\
return Fptr.error({‘key’:’value’});\n\
}»;

libfptr_set_param_string(LIBFPTR_PARAM_SCRIPT_CODE, code);
libfptr_exec_driver_script(fptr);

std::vector bfr(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_SCRIPT_RESULT, &bfr[0], bfr.size());
if (size > bfr.size())
{
bfr.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_SCRIPT_RESULT, &bfr[0], bfr.size());
}
std::wstring result = std::wstring(&bfr[0]); // Результат — строка «{\»key\»:\»value\»}»
|

|code = «»»Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_X);
if (Fptr.report() < 0) {
return Fptr.error({‘key’:’value’});
}»»»

fptr.setParam(LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.execDriverScript();
std::wstring result = fptr.getParamString(LIBFPTR_PARAM_SCRIPT_RESULT) // Результат — строка «{\»key\»:\»value\»}»
|

|code = «»»Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_X);
if (Fptr.report() < 0) {
return Fptr.error({‘key’:’value’});
}»»»

fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_CODE, code)
fptr.execDriverScript()
result = fptr.getParamString(IFptr.LIBFPTR_PARAM_SCRIPT_RESULT) # Результат — строка «»»{«key»:»value»}»»»
|

|String code = «Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_X);\n» +
«if (Fptr.report() < 0) {\n» +
» return Fptr.error({‘key’:’value’});\n» +
«}»;

fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.execDriverScript();
String result = fptr.getParamString(IFptr.LIBFPTR_PARAM_SCRIPT_RESULT); // Результат — строка «{\»key\»:\»value\»}»
|

|String code = «Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_X);\n» +
«if (Fptr.report() < 0) {\n» +
» return Fptr.error({‘key’:’value’});\n» +
«}»;

fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.execDriverScript();
String result = fptr.getParamString(IFptr.LIBFPTR_PARAM_SCRIPT_RESULT); // Результат — строка «{\»key\»:\»value\»}»
|

|NSString *code = @»Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_X);\n\
if (Fptr.report() < 0) {\n\
return Fptr.error({‘key’:’value’});\n\
}»;

[fptr setParam:LIBFPTR_PARAM_SCRIPT_CODE NSStringParam:code];
[fptr execDriverScript];
NSString *result = [fptr getParamString:LIBFPTR_PARAM_SCRIPT_RESULT]; // Результат — строка «{\»key\»:\»value\»}»
|

|String code = «Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_X);\n» +
«if (Fptr.report() < 0) {\n» +
» return Fptr.error({‘key’:’value’});\n» +
«}»;

fptr.setParam(Constants.LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.execDriverScript();
String result = fptr.getParamString(Constants.LIBFPTR_PARAM_SCRIPT_RESULT); // Результат — строка «{\»key\»:\»value\»}»
|

|const
code = ‘Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_X);’ + #13#10 +
‘if (Fptr.report() < 0) {‘ + #13#10 +
‘ return Fptr.error({«key»:»value»});’ + #13#10 +
‘}’
var
result: String
begin
fptr.setParam(fptr.LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.execDriverScript;
result = fptr.getParamString(fptr.LIBFPTR_PARAM_SCRIPT_RESULT); // Результат — строка ‘{«key»:»value»}’
end;
|

|code := Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_X); if (Fptr.report() < 0) { return Fptr.error({'key':'value'}); }

fptr.SetParam(fptr10.LIBFPTR_PARAM_SCRIPT_CODE, code)
fptr.ExecDriverScript()
result := fptr.GetParamString(fptr10.LIBFPTR_PARAM_SCRIPT_RESULT) // Результат — строка «{\»key\»:\»value\»}»
|

|// Метод недоступен
|

Для выполнения произвольного скрипта нужно вызвать метод / execDriverScript()/ и передать ему код скрипта
LIBFPTR_PARAM_SCRIPT_CODE и параметр скрипта
LIBFPTR_PARAM_SCRIPT_PARAMS. Параметр скрипта должен иметь Json-
структуру (объект или список).

В параметр LIBFPTR_PARAM_SCRIPT_RESULT записывается строковое
представление результата. Результатом считается любое значение, которое
возвращается из скрипта с помощью ключевого слова |return|. Если
возвращается объект |Result|, то в параметр
LIBFPTR_PARAM_SCRIPT_RESULT попадают данные из поля |result|.

Если скрипт возвращает ошибку с помощью вызова /Fptr.error()/ или / Fptr.result()/, она будет разобрана и возвращена методом. Если скрипт
завершает работу вызовом /Fptr.raise()/, то метод вернет ошибку 503
(Ошибка скрипта драйвера) с расширенным текстом ошибки, включающим в
себя оригинальную ошибку. Если скрипт завершается, не возвращая
результат, метод считается успешно выполненым.

Загрузка скриптов

Загрузка скрипта для выполнения

|
const wchar_t code[] = L»Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, __scriptParams.reportType);\n\
if (Fptr.report() < 0) {\n\
return Fptr.error();\n\
}»;

libfptr_set_param_int(LIBFPTR_PARAM_SCRIPT_TYPE, LIBFPTR_SCRIPT_EXECUTABLE);
libfptr_set_param_string(LIBFPTR_PARAM_SCRIPT_CODE, code);
libfptr_set_param_string(LIBFPTR_PARAM_SCRIPT_NAME, L»report»);
libfptr_upload_driver_script(fptr);

wchar_t scriptParams[100] = {0};
swprintf(&settings[0], 100, L»{\»%reportType\»: %d}», LIBFPTR_RT_X);
libfptr_set_param_string(LIBFPTR_PARAM_SCRIPT_NAME, «report»)
libfptr_set_param_string(LIBFPTR_PARAM_SCRIPT_PARAMS, scriptParams)
libfptr_exec_driver_script_by_id(fptr);
|

|code = «»»Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, __scriptParams.reportType);
if (Fptr.report() < 0) {
return Fptr.error();
}»»»

fptr.setParam(LIBFPTR_PARAM_SCRIPT_TYPE, LIBFPTR_SCRIPT_EXECUTABLE);
fptr.setParam(LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.setParam(LIBFPTR_PARAM_SCRIPT_NAME, L»report»);
fptr.uploadDriverScript();

fptr.setParam(LIBFPTR_PARAM_SCRIPT_NAME, «report»);
fptr.setParam(LIBFPTR_PARAM_SCRIPT_PARAMS, std::format(L»{{ \»reportType\»:{} }}», LIBFPTR_RT_X));
fptr.execDriverScriptById();
|

|code = «»»Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, __scriptParams.reportType);
if (Fptr.report() < 0) {
return Fptr.error();
}»»»

fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_TYPE, IFptr.LIBFPTR_SCRIPT_EXECUTABLE)
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_CODE, code)
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_NAME, «report»)
fptr.uploadDriverScript()

fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_NAME, «report»)
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_PARAMS, «{{ \»reportType\»:{} }}».format(IFptr.LIBFPTR_RT_X))
fptr.execDriverScriptById()
|

|String code = «Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, __scriptParams.reportType);\n» +
«if (Fptr.report() < 0) {\n» +
» return Fptr.error();\n» +
«}»;

fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_TYPE, IFptr.LIBFPTR_SCRIPT_EXECUTABLE);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_NAME, «report»);
fptr.uploadDriverScript();

fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_NAME, «report»);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_PARAMS, String.format(«{\»reportType\»:%d}», IFptr.LIBFPTR_RT_X));
fptr.execDriverScriptById();
|

|String code = «Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, __scriptParams.reportType);\n» +
«if (Fptr.report() < 0) {\n» +
» return Fptr.error();\n» +
«}»;

fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_TYPE, IFptr.LIBFPTR_SCRIPT_EXECUTABLE);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_NAME, «report»);
fptr.uploadDriverScript();

fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_NAME, «report»);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_PARAMS, String.format(«{\»reportType\»:%d}», IFptr.LIBFPTR_RT_X));
fptr.execDriverScriptById();
|

|NSString *code = @»Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, __scriptParams.reportType);\n\
if (Fptr.report() < 0) {\n\
return Fptr.error();\n\
}»;

[fptr setParam:LIBFPTR_PARAM_SCRIPT_TYPE intParam:LIBFPTR_SCRIPT_EXECUTABLE];
[fptr setParam:LIBFPTR_PARAM_SCRIPT_CODE NSStringParam:code];
[fptr setParam:LIBFPTR_PARAM_SCRIPT_NAME NSStringParam:@»report»)];
[fptr uploadDriverScript];

[fptr setParam:LIBFPTR_PARAM_SCRIPT_NAME NSStringParam:@»report»];
[fptr setParam:LIBFPTR_PARAM_SCRIPT_PARAMS NSStringParam:[NSString stringWithFormat:@»{\»reportType\»: %d}», LIBFPTR_RT_X];
[fptr execDriverScriptById];
|

|String code = @»Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, __scriptParams.reportType);
if (Fptr.report() < 0) {
return Fptr.error();
}»;

fptr.setParam(Constants.LIBFPTR_PARAM_SCRIPT_TYPE, Constants.LIBFPTR_SCRIPT_EXECUTABLE);
fptr.setParam(Constants.LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.setParam(Constants.LIBFPTR_PARAM_SCRIPT_NAME, «report»);
fptr.uploadDriverScript();

fptr.setParam(Constants.LIBFPTR_PARAM_SCRIPT_NAME, «report»);
fptr.setParam(Constants.LIBFPTR_PARAM_SCRIPT_PARAMS, String.Format(«{\»reportType\»:{0}}», Constants.LIBFPTR_RT_X));
fptr.execDriverScriptById();
|

|const
code = ‘Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, __scriptParams.reportType);’ + #13#10 +
‘if (Fptr.report() < 0) {‘ + #13#10 +
‘ return Fptr.error();’ + #13#10 +
‘}’
begin
fptr.setParam(fptr.LIBFPTR_PARAM_SCRIPT_TYPE, fptr.LIBFPTR_SCRIPT_EXECUTABLE);
fptr.setParam(fptr.LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.setParam(fptr.LIBFPTR_PARAM_SCRIPT_NAME, ‘report’);
fptr.uploadDriverScript;

fptr.setParam(fptr.LIBFPTR_PARAM_SCRIPT_NAME, 'report');
fptr.setParam(fptr.LIBFPTR_PARAM_SCRIPT_PARAMS, Format('{"reportType":%s}', IntToStr(fptr.LIBFPTR_RT_X)));
fptr.execDriverScriptById;

end;
|

|code := Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, __scriptParams.reportType); if (Fptr.report() < 0) { return Fptr.error(); }

fptr.SetParam(fptr10.LIBFPTR_PARAM_SCRIPT_TYPE, fptr10.LIBFPTR_SCRIPT_EXECUTABLE)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SCRIPT_CODE, code)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SCRIPT_NAME, «report»)
fptr.UploadDriverScript()

fptr.SetParam(fptr10.LIBFPTR_PARAM_SCRIPT_NAME, «report»)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SCRIPT_PARAMS, fmt.Sprintf(«\»reportType\»:%d», fptr10.LIBFPTR_RT_X))
fptr.ExecDriverScriptById()
|

|// Метод недоступен
|

Загрузка скрипта JSON-задания

|const wchar_t code[] = L»function execute(task) {\n\
Fptr.logWrite(‘FiscalPrinter’, Fptr.LIBFPTR_LOG_INFO, task);\n\
return Fptr.ok();\n\
}»;

libfptr_set_param_int(LIBFPTR_PARAM_SCRIPT_TYPE, LIBFPTR_SCRIPT_JSON);
libfptr_set_param_string(LIBFPTR_PARAM_SCRIPT_CODE, code);
libfptr_set_param_string(LIBFPTR_PARAM_SCRIPT_NAME, L»test»);
libfptr_upload_driver_script(fptr);

libfptr_set_param_string(LIBFPTR_PARAM_JSON_DATA, L»{\»type\»:\»test\»}»);
libfptr_process_json(fptr);
|

|code = «»»function execute(task) {
Fptr.logWrite(‘FiscalPrinter’, Fptr.LIBFPTR_LOG_INFO, task);
return Fptr.ok();
}»»»

fptr.setParam(LIBFPTR_PARAM_SCRIPT_TYPE, LIBFPTR_SCRIPT_JSON);
fptr.setParam(LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.setParam(LIBFPTR_PARAM_SCRIPT_NAME, L»test»);
fptr.uploadDriverScript();

fptr.setParam(LIBFPTR_PARAM_JSON_DATA, «{\»type\»:\»test\»}»);
fptr.processJson();
|

|code = «»»function execute(task) {
Fptr.logWrite(‘FiscalPrinter’, Fptr.LIBFPTR_LOG_INFO, task);
return Fptr.ok();
}»»»

fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_TYPE, IFptr.LIBFPTR_SCRIPT_JSON)
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_CODE, code)
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_NAME, «test»)
fptr.uploadDriverScript()

fptr.setParam(IFptr.LIBFPTR_PARAM_JSON_DATA, «{\»type\»:\»test\»}»)
fptr.processJson()
|

|String code = «function execute(task) {\n» +
» Fptr.logWrite(‘FiscalPrinter’, Fptr.LIBFPTR_LOG_INFO, task);\n» +
» return Fptr.ok();\n» +
«}»;

fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_TYPE, IFptr.LIBFPTR_SCRIPT_JSON);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_NAME, «test»);
fptr.uploadDriverScript();

fptr.setParam(IFptr.LIBFPTR_PARAM_JSON_DATA, «{\»type\»: \»test\»}»);
fptr.processJson();
|

|String code = «function execute(task) {\n» +
» Fptr.logWrite(‘FiscalPrinter’, Fptr.LIBFPTR_LOG_INFO, task);\n» +
» return Fptr.ok();\n» +
«}»;

fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_TYPE, IFptr.LIBFPTR_SCRIPT_JSON);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_NAME, «test»);
fptr.uploadDriverScript();

fptr.setParam(IFptr.LIBFPTR_PARAM_JSON_DATA, «{\»type\»: \»test\»}»);
fptr.processJson();
|

|NSString *code = @»function exectute(task) {\n\
Fptr.logWrite(‘FiscalPrinter’, Fptr.LIBFPTR_LOG_INFO, task);\n\
return Fptr.ok();\n\
}»;

[fptr setParam:LIBFPTR_PARAM_SCRIPT_TYPE intParam:LIBFPTR_SCRIPT_JSON];
[fptr setParam:LIBFPTR_PARAM_SCRIPT_CODE NSStringParam:code];
[fptr setParam:LIBFPTR_PARAM_SCRIPT_NAME NSStringParam:@»test»)];
[fptr uploadDriverScript];

[fptr setParam:LIBFPTR_PARAM_JSON_DATA NSStringParam:@»{\»type\»: \»test\»}»];
[fptr processJson];
|

|String code = @»function execute(task) {
Fptr.logWrite(‘FiscalPrinter’, Fptr.LIBFPTR_LOG_INFO, task);
return Fptr.ok();
}»;

fptr.setParam(Constants.LIBFPTR_PARAM_SCRIPT_TYPE, Constants.LIBFPTR_SCRIPT_JSON);
fptr.setParam(Constants.LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.setParam(Constants.LIBFPTR_PARAM_SCRIPT_NAME, «test»);
fptr.uploadDriverScript();

fptr.setParam(Constants.LIBFPTR_PARAM_JSON_DATA, «{\»type\»: \»test\»}»);
fptr.processJson();
|

|const
code = ‘function execute(task) {‘ + #13#10 +
‘ Fptr.logWrite(‘FiscalPrinter’, Fptr.LIBFPTR_LOG_INFO, task);’ + #13#10 +
‘ return Fptr.ok();’ + #13#10 +
‘}’
begin
fptr.setParam(fptr.LIBFPTR_PARAM_SCRIPT_TYPE, fptr.LIBFPTR_SCRIPT_JSON);
fptr.setParam(fptr.LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.setParam(fptr.LIBFPTR_PARAM_SCRIPT_NAME, ‘test’);
fptr.uploadDriverScript;

fptr.setParam(fptr.LIBFPTR_PARAM_JSON_DATA, '{"type": "test"}');
fptr.processJson;

end;
|

|code := function execute(task) { Fptr.logWrite('FiscalPrinter', Fptr.LIBFPTR_LOG_INFO, task); return Fptr.ok(); }

fptr.SetParam(fptr10.LIBFPTR_PARAM_SCRIPT_TYPE, fptr10.LIBFPTR_SCRIPT_JSON)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SCRIPT_CODE, code)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SCRIPT_NAME, «test»)
fptr.UploadDriverScript()

fptr.SetParam(fptr10.LIBFPTR_PARAM_JSON_DATA, «{\»type\»: \»test\»}»)
fptr.ProcessJson()
|

|// Метод недоступен
|

Загрузка библиотек функций

|const wchar_t code[] = L»exports.execute = function(task) {\n\
Fptr.logWrite(‘FiscalPrinter’, Fptr.LIBFPTR_LOG_INFO, task);\n\
return Fptr.ok();\n\
}»;

libfptr_set_param_int(LIBFPTR_PARAM_SCRIPT_TYPE, LIBFPTR_SCRIPT_LIBRARY);
libfptr_set_param_string(LIBFPTR_PARAM_SCRIPT_CODE, code);
libfptr_set_param_string(LIBFPTR_PARAM_SCRIPT_NAME, L»test»);
libfptr_upload_driver_script(fptr);

|

|code = «»»exports.execute = function(task) {
Fptr.logWrite(‘FiscalPrinter’, Fptr.LIBFPTR_LOG_INFO, task);
return Fptr.ok();
}»»»

fptr.setParam(LIBFPTR_PARAM_SCRIPT_TYPE, LIBFPTR_SCRIPT_LIBRARY);
fptr.setParam(LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.setParam(LIBFPTR_PARAM_SCRIPT_NAME, L»test»);
fptr.uploadDriverScript();

|

|code = «»»exports.execute = function(task) {
Fptr.logWrite(‘FiscalPrinter’, Fptr.LIBFPTR_LOG_INFO, task);
return Fptr.ok();
}»»»

fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_TYPE, IFptr.LIBFPTR_SCRIPT_LIBRARY)
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_CODE, code)
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_NAME, «test»)
fptr.uploadDriverScript()

|

|String code = «exports.execute = function(task) {\n» +
» Fptr.logWrite(‘FiscalPrinter’, Fptr.LIBFPTR_LOG_INFO, task);\n» +
» return Fptr.ok();\n» +
«}»;

fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_TYPE, IFptr.LIBFPTR_SCRIPT_LIBRARY);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_NAME, «test»);
fptr.uploadDriverScript();

|

|String code = «exports.execute = function(task) {\n» +
» Fptr.logWrite(‘FiscalPrinter’, Fptr.LIBFPTR_LOG_INFO, task);\n» +
» return Fptr.ok();\n» +
«}»;

fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_TYPE, IFptr.LIBFPTR_SCRIPT_LIBRARY);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_NAME, «test»);
fptr.uploadDriverScript();

|

|NSString *code = @»exports.execute = function(task) {\n\
Fptr.logWrite(‘FiscalPrinter’, Fptr.LIBFPTR_LOG_INFO, task);\n\
return Fptr.ok();\n\
}»;

[fptr setParam:LIBFPTR_PARAM_SCRIPT_TYPE intParam:LIBFPTR_SCRIPT_LIBRARY];
[fptr setParam:LIBFPTR_PARAM_SCRIPT_CODE NSStringParam:code];
[fptr setParam:LIBFPTR_PARAM_SCRIPT_NAME NSStringParam:@»test»)];
[fptr uploadDriverScript];

|

|String code = @»exports.execute = function(task) {
Fptr.logWrite(‘FiscalPrinter’, Fptr.LIBFPTR_LOG_INFO, task);
return Fptr.ok();
}»;

fptr.setParam(Constants.LIBFPTR_PARAM_SCRIPT_TYPE, Constants.LIBFPTR_SCRIPT_LIBRARY);
fptr.setParam(Constants.LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.setParam(Constants.LIBFPTR_PARAM_SCRIPT_NAME, «test»);
fptr.uploadDriverScript();

|

|const
code = ‘exports.execute = function(task) {‘ + #13#10 +
‘ Fptr.logWrite(‘FiscalPrinter’, Fptr.LIBFPTR_LOG_INFO, task);’ + #13#10 +
‘ return Fptr.ok();’ + #13#10 +
‘}’
begin
fptr.setParam(fptr.LIBFPTR_PARAM_SCRIPT_TYPE, fptr.LIBFPTR_SCRIPT_LIBRARY);
fptr.setParam(fptr.LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.setParam(fptr.LIBFPTR_PARAM_SCRIPT_NAME, ‘test’);
fptr.uploadDriverScript;

end;
|

|code := exports.execute = function(task) { Fptr.logWrite('FiscalPrinter', Fptr.LIBFPTR_LOG_INFO, task); return Fptr.ok(); }

fptr.SetParam(fptr10.LIBFPTR_PARAM_SCRIPT_TYPE, fptr10.LIBFPTR_SCRIPT_LIBRARY)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SCRIPT_CODE, code)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SCRIPT_NAME, «test»)
fptr.UploadDriverScript()

|

|// Метод недоступен
|

Загрузка скрипта настроек

|const wchar_t code[] = L»function readSetting(id) {\n\
}\n\
function writeSetting(id, value) {\n\
}\n»;

libfptr_set_param_int(LIBFPTR_PARAM_SCRIPT_TYPE, LIBFPTR_SCRIPT_SETTINGS);
libfptr_set_param_string(LIBFPTR_PARAM_SCRIPT_CODE, code);
libfptr_upload_driver_script(fptr);
|

|code = «»»function readSetting(id) {
}
function writeSetting(id, value) {
}»»»

fptr.setParam(LIBFPTR_PARAM_SCRIPT_TYPE, LIBFPTR_SCRIPT_SETTINGS);
fptr.setParam(LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.uploadDriverScript();
|

|code = «»»function readSetting(id) {
}
function writeSetting(id, value) {
}»»»

fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_TYPE, IFptr.LIBFPTR_SCRIPT_SETTINGS)
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_CODE, code)
fptr.uploadDriverScript()
|

|String code = «function readSetting(id) {\n» +
«}\n» +
«function writeSetting(id, value) {\n» +
«}»;

fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_TYPE, IFptr.LIBFPTR_SCRIPT_SETTINGS);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.uploadDriverScript();
|

|String code = «function readSetting(id) {\n» +
«}\n» +
«function writeSetting(id, value) {\n» +
«}»;

fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_TYPE, IFptr.LIBFPTR_SCRIPT_SETTINGS);
fptr.setParam(IFptr.LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.uploadDriverScript();
|

|NSString *code = @»function readSetting(id) {\n\
}\n\
function writeSetting(id, value) {\n\
}\n»;

[fptr setParam:LIBFPTR_PARAM_SCRIPT_TYPE intParam:LIBFPTR_SCRIPT_SETTINGS];
[fptr setParam:LIBFPTR_PARAM_SCRIPT_CODE NSStringParam:code];
[fptr uploadDriverScript];
|

|String code = @»function readSetting(id) {
}
function writeSetting(id, value) {
}»;

fptr.setParam(Constants.LIBFPTR_PARAM_SCRIPT_TYPE, Constants.LIBFPTR_SCRIPT_SETTINGS);
fptr.setParam(Constants.LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.uploadDriverScript();
|

|const
code = ‘function readSetting(id) {‘ + #13#10 +
‘}’ + #13#10 +
‘function writeSetting(id, value) {‘ + #13#10 +
‘}’
begin
fptr.setParam(fptr.LIBFPTR_PARAM_SCRIPT_TYPE, fptr.LIBFPTR_SCRIPT_SETTINGS);
fptr.setParam(fptr.LIBFPTR_PARAM_SCRIPT_CODE, code);
fptr.uploadDriverScript;
end;
|

|code := function readSetting(id) { } function writeSetting(id, value) { }

fptr.SetParam(fptr10.LIBFPTR_PARAM_SCRIPT_TYPE, fptr10.LIBFPTR_SCRIPT_SETTINGS)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SCRIPT_CODE, code)
fptr.UploadDriverScript()
|

|// Метод недоступен
|

Помимо выполнения скриптов (методы /execDriverScript()/) и загрузки
скриптов из файлов <#user_scripts>, можно загрузить скрипты в драйвер во
время работы программно. Для этого требуется вызвать метод / uploadDriverScript()/, передав ему следующие параметры:

  • код скрипта LIBFPTR_PARAM_SCRIPT_CODE;
  • идентификатор скрипта LIBFPTR_PARAM_SCRIPT_NAME;
  • тип загружаемого скрипта LIBFPTR_PARAM_SCRIPT_TYPE. Может
    принимать значения:
    o LIBFPTR_SCRIPT_EXECUTABLE — скрипт для дальнейшего выполнения
    методом /execDriverScriptById()/;
    o LIBFPTR_SCRIPT_JSON — для вызова скрипта при выполнении JSON-
    задания (/processJson()/);
    o LIBFPTR_SCRIPT_SETTINGS — для обработки пользовательских
    настроек (в этом случае параметр LIBFPTR_PARAM_SCRIPT_NAME не
    обязателен);
    o LIBFPTR_SCRIPT_LIBRARY — для загрузки библиотек функций JSON-
    задания (/uploadDriverScript()/).

В случае типа LIBFPTR_SCRIPT_EXECUTABLE, загруженный таким способом
скрипт можно вызвать с помощью метода /execDriverScriptById()/. Метод
принимает идентификатор скрипта LIBFPTR_PARAM_SCRIPT_NAME и параметр
скрипта LIBFPTR_PARAM_SCRIPT_PARAMS, и может возвращать результат
выполнения в параметре LIBFPTR_PARAM_SCRIPT_RESULT (аналогично методу
/execDriverScript()/). Параметр скрипта должен иметь Json-структуру
(объект или список). Из самого скрипта он доступен через переменную
__scriptParams.

Также скрипты для использования методом /execDriverScriptById()/ будут
подгружаться из каталога внешних скриптов <#user_scripts>. Драйвер ищет
их по префиксу <exec_> и расширению .js. Остальная часть имени файла
используется как идентификатор LIBFPTR_PARAM_SCRIPT_NAME.

Работа с файлами

Удалить файл

|var result = RemoveFile(«C:\example.txt»);

if (result == 0) {
return «OK»;
}
else {
return «Error remove file»;
}
|

Переименовать/переместить файл

|var result = RenameFile(«C:\example.txt», «C:\новое имя.txt»);

if (result == 0) {
return «OK»;
}
else {
return «Error rename file»;
}
|

Записать данные в файл

|var file = FileOpen(«C:\example.txt», «a»);

if (!file.isValid) {
return «Error open file»;
}

var resultWrite = FileWrite(file, «Содержание файла \»example.txt\»\nЗдесь может быть полезная информация»);

if (resultWrite != 0) {
return «Error write file»;
}

if (FileClose(file) != 0) {
return «Error close file»;
}
else {
return «OK»;
}
|

Прочитать 2-ю строку из файла

|var file = FileOpen(«C:\example.txt», «r»);

if (!file.isValid) {
return «Error open file»;
}

var str = FileReadLine(file); // чтение 1-й строки
str = FileReadLine(file); // чтение 2-й строки

if (str == null) {
return «Error read file line»;
}

if (FileClose(file) != 0) {
return «Error close file»;
}
else {
return «OK. Line number 2 data = <» + str + «>»;
}
|

Прочитать все содержимое файла

|var file = FileOpen(«C:\example.txt», «r»);

if (!file.isValid) {
return «Error open file»;
}

var str = FileReadAll(file);

if (str == null) {
return «Error read file»;
}

if (FileClose(file) != 0) {
return «Error close file»;
}
else {
return «OK. File data = <» + str + «>»;
}
|

Скриптовый язык драйвера позволяет выполнять различные операции с
файлами в файловой системе. Поддерживаются такие функции:

  • RemoveFile(<Имя файла>) — удалить файл (возвращает число). При
    успешном выполнении возвращается |0|. Если удаление невозможно —
    возвращается |-1| (например, файл не найден или открыт на
    редактирование);
  • RenameFile(<Старое имя файла>, <Новое имя файла>) — переименовать/
    переместить файл (возвращает число). При успешном выполнении
    возвращается |0|. Если переименование/перемещение невозможно —
    возвращается |-1| (например, файл не найден или новый файл уже
    существует). В случае, если старый файл открыт на редактирование,
    его переименование/перемещение не вызывает ошибки и возвращается |0|;
  • FileOpen(<Имя файла>, <Режим>) — открыть файл. Возвращает
    дескриптор открытого файла. Дескриптор содержит признак успешного
    открытия файла |isValid| и имя файла |fileName|. После успешного
    открытия файла дескриптор передается в дальнейшие функции работы с
    файлом. Параметр <Режим> может принимать значения:
    o «r» — открыть файл на чтение. Если файл не найден,
    возвращается ошибка (объект результата содержит |isValid = false|);
    o «w» — создать файл для записи. Если файл не найден — он
    создается, иначе содержимое файла очищается. Если не найдена
    указанная директория — возвращается ошибка;
    o «a» — дописать информацию в конец файла. Если файл не найден —
    он создается;
    o «r+» — открыть файл для чтения/записи. Если файл не найден,
    возвращается ошибка. Иначе файл открывается для чтения и дозаписи;
    o «w+» — создать файл для чтения/записи. Если файл не найден, он
    создается. Иначе содержимое файла очищается;
    o «a+» — дописать информацию в конец файла или создать файл для
    чтения/записи.
  • FileClose(<Дескриптор файла>) — закрыть файл. Возвращает число
    (при успешном выполнении — |0|, если файл не был открыт успешно —
    |-1|, иначе отрицательное число, соответствующее ошибке);
  • FileWrite(<Дескриптор файла>, <строка с данными>) — записать
    данные в файл. Возвращает число (при успешном выполнении — |0|,
    иначе — |-1|);
  • FileReadLine(<Дескриптор файла>) — прочитать следующую строку из
    файла. Возвращает строку, прочитанную из файла (при неуспешном
    чтении возвращает |null|). Если функция вызывается сразу после
    FileOpen — читается первая строка файла, при дальнейших вызовах
    читаются последующие строки;
  • FileReadAll(<Дескриптор файла>) — прочитать все содержимое файла.
    Возвращает строку со всеми данными файла (при неуспешном чтении
    возвращает |null|).

При чтении/записи данных в файл используется кодировка UTF-8. После
вызова функции записи обязательно вызывать FileClose — только после
этого происходит реальная запись в файл.

При задании имен файлов всегда указывается абсолютный путь к файлу.
Поскольку на ОС Windows в качестве разделителя между папками
используется символ |»\»| (который также используется для экранирования
символов внутри строки), при задании пути нужно использовать двойной
|»\»| (например |C:\example.txt|). На других ОС путь указывается как
есть (например |/home/user/example.txt|).

Совместимость

Некоторые скрипты используются самим драйвером и другими приложениями,
потому должны удовлетворять определённым условиям. Это важно, если
планируется использование нестандартных скриптов.

  Скрипт получения результата документа

Этот скрипт относится к семейству запускаемых (вызываемых через / execDriverScriptById()/) и отвечает за формирование результата
выполнения json-задания фискального документа. На вход он должен
принимать параметры fiscalDocumentNumber, в который записывается номер
ФД, по которому необходимо получить информацию, и recovery, который
имеет логический тип и сообщает скрипту, что в поле warnings нужно
подставить добавить поле recovered с указанным значением. Он должен
всегда возвращать объект /Result/ с данными, соответствующими
результату json-задания.

Если результат запрашивается не по последнему сформированному документу,
некоторые данные могут быть не точны. В любом случае, скрипт должен
выдавать максимально возможный набор данных в том же самом формате,
который используется при формировании результатов выполнения json-
заданий фискальных документов.

Этот скрипт используется WebRequests, так что если планируется его
использование совместно с нестандартными скриптами, этот скрипт должен
быть адаптирован.

Приложение

Список кодов ошибок

/000/ — LIBFPTR_OK — Ошибок нет

/001/ — LIBFPTR_ERROR_CONNECTION_DISABLED — Соединение не установлено

/002/ — LIBFPTR_ERROR_NO_CONNECTION — Нет связи

/003/ — LIBFPTR_ERROR_PORT_BUSY — Порт занят

/004/ — LIBFPTR_ERROR_PORT_NOT_AVAILABLE — Порт недоступен

/005/ — LIBFPTR_ERROR_INCORRECT_DATA — Некорректные данные от устройства

/006/ — LIBFPTR_ERROR_INTERNAL — Внутренняя ошибка библиотеки

/007/ — LIBFPTR_ERROR_UNSUPPORTED_CAST — Неподдерживаемое
преобразование типа параметра

/008/ — LIBFPTR_ERROR_NO_REQUIRED_PARAM — Не найден обязательный параметр

/009/ — LIBFPTR_ERROR_INVALID_SETTINGS — Некорректные настройки

/010/ — LIBFPTR_ERROR_NOT_CONFIGURED — Драйвер не настроен

/011/ — LIBFPTR_ERROR_NOT_SUPPORTED — Не поддерживается в данной версии

/012/ — LIBFPTR_ERROR_INVALID_MODE — Не поддерживается в данном режиме

/013/ — LIBFPTR_ERROR_INVALID_PARAM — Нeкорректное значение параметра

/014/ — LIBFPTR_ERROR_NOT_LOADED — Не удалось загрузить библиотеку

/015/ — LIBFPTR_ERROR_UNKNOWN — Неизвестная ошибка

/016/ — LIBFPTR_ERROR_INVALID_SUM — Неверная цена (сумма)

/017/ — LIBFPTR_ERROR_INVALID_QUANTITY — Неверное количество

/018/ — LIBFPTR_ERROR_CASH_COUNTER_OVERFLOW — Переполнение счетчика
наличности

/019/ — LIBFPTR_ERROR_LAST_OPERATION_STORNO_DENIED — Невозможно сторно
последней операции

/020/ — LIBFPTR_ERROR_STORNO_BY_CODE_DENIED — Сторно по коду невозможно

/021/ — LIBFPTR_ERROR_LAST_OPERATION_NOT_REPEATABLE — Невозможен
повтор последней операции

/022/ — LIBFPTR_ERROR_DISCOUNT_NOT_REPEATABLE — Повторная скидка на
операцию невозможна

/023/ — LIBFPTR_ERROR_DISCOUNT_DENIED — Невозможно начислить скидку/
надбавку

/024/ — LIBFPTR_ERROR_INVALID_COMMODITY_CODE — Неверный код товара

/025/ — LIBFPTR_ERROR_INVALID_COMMODITY_BARCODE — Неверный штрихкод товара

/026/ — LIBFPTR_ERROR_INVALID_COMMAND_FORMAT — Неверный формат команды

/027/ — LIBFPTR_ERROR_INVALID_COMMAND_LENGTH — Неверная длина

/028/ — LIBFPTR_ERROR_BLOCKED_IN_DATE_INPUT_MODE — ККТ заблокирована в
режиме ввода даты

/029/ — LIBFPTR_ERROR_NEED_DATE_ACCEPT — Требуется подтверждение ввода
даты

/030/ — LIBFPTR_ERROR_NO_MORE_DATA — Нет больше данных

/031/ — LIBFPTR_ERROR_NO_ACCEPT_OR_CANCEL — Нет подтверждения или
отмены продажи

/032/ — LIBFPTR_ERROR_BLOCKED_BY_REPORT_INTERRUPTION — Отчет о
закрытии смены прерван

/033/ — LIBFPTR_ERROR_DISABLE_CASH_CONTROL_DENIED — Отключение
контроля наличности невозможно (не настроены необходимые типы оплаты)

/034/ — LIBFPTR_ERROR_MODE_BLOCKED — Вход в режим заблокирован

/035/ — LIBFPTR_ERROR_CHECK_DATE_TIME — Проверьте дату и время

/036/ — LIBFPTR_ERROR_DATE_TIME_LESS_THAN_FS — Переданные дата/время
меньше даты/времени последнего фискального документа

/037/ — LIBFPTR_ERROR_CLOSE_ARCHIVE_DENIED — Невозможно закрыть архив

/038/ — LIBFPTR_ERROR_COMMODITY_NOT_FOUND — Товар не найден

/039/ — LIBFPTR_ERROR_WEIGHT_BARCODE_WITH_INVALID_QUANTITY — Весовой
штрихкод с количеством <> 1.000

/040/ — LIBFPTR_ERROR_RECEIPT_BUFFER_OVERFLOW — Переполнение буфера чека

/041/ — LIBFPTR_ERROR_QUANTITY_TOO_FEW — Недостаточное количество товара

/042/ — LIBFPTR_ERROR_STORNO_TOO_MUCH — Сторнируемое количество больше
проданного

/043/ — LIBFPTR_ERROR_BLOCKED_COMMODITY_NOT_FOUND — Товар не найден

/044/ — LIBFPTR_ERROR_NO_PAPER — Нет бумаги

/045/ — LIBFPTR_ERROR_COVER_OPENED — Открыта крышка

/046/ — LIBFPTR_ERROR_PRINTER_FAULT — Нет связи с принтером чеков

/047/ — LIBFPTR_ERROR_MECHANICAL_FAULT — Механическая ошибка
печатающего устройства

/048/ — LIBFPTR_ERROR_INVALID_RECEIPT_TYPE — Неверный тип чека

/049/ — LIBFPTR_ERROR_INVALID_UNIT_TYPE — Недопустимое целевое устройство

/050/ — LIBFPTR_ERROR_NO_MEMORY — Нет места в массиве картинок/штрихкодов

/051/ — LIBFPTR_ERROR_PICTURE_NOT_FOUND — Неверный номер картинки/
штрихкода (картинка/штрихкод отсутствует)

/052/ — LIBFPTR_ERROR_NONCACH_PAYMENTS_TOO_MUCH — Сумма не наличных
платежей превышает сумму чека

/053/ — LIBFPTR_ERROR_RETURN_DENIED — Накопление меньше суммы возврата
или аннулирования

/054/ — LIBFPTR_ERROR_PAYMENTS_OVERFLOW — Переполнение суммы платежей

/055/ — LIBFPTR_ERROR_BUSY — Предыдущая операция незавершена

/056/ — LIBFPTR_ERROR_GSM — Ошибка GSM-модуля

/057/ — LIBFPTR_ERROR_INVALID_DISCOUNT — Неверная величина скидки /
надбавки

/058/ — LIBFPTR_ERROR_OPERATION_AFTER_DISCOUNT_DENIED — Операция после
скидки / надбавки невозможна

/059/ — LIBFPTR_ERROR_INVALID_DEPARTMENT — Неверная секция

/060/ — LIBFPTR_ERROR_INVALID_PAYMENT_TYPE — Неверный вид оплаты

/061/ — LIBFPTR_ERROR_MULTIPLICATION_OVERFLOW — Переполнение при умножении

/062/ — LIBFPTR_ERROR_DENIED_BY_SETTINGS — Операция запрещена в
таблице настроек

/063/ — LIBFPTR_ERROR_TOTAL_OVERFLOW — Переполнение итога чека

/064/ — LIBFPTR_ERROR_DENIED_IN_ANNULATION_RECEIPT — Открыт чек
аннулирования — операция невозможна

/065/ — LIBFPTR_ERROR_JOURNAL_OVERFLOW — Переполнение буфера ЭЖ

/066/ — LIBFPTR_ERROR_NOT_FULLY_PAID — Чек оплачен не полностью

/067/ — LIBFPTR_ERROR_DENIED_IN_RETURN_RECEIPT — Открыт чек возврата —
операция невозможна

/068/ — LIBFPTR_ERROR_SHIFT_EXPIRED — Смена превысила 24 часа

/069/ — LIBFPTR_ERROR_DENIED_IN_SELL_RECEIPT — Открыт чек продажи —
операция невозможна

/070/ — LIBFPTR_ERROR_FISCAL_MEMORY_OVERFLOW — Переполнение ФП

/071/ — LIBFPTR_ERROR_INVALID_PASSWORD — Неверный пароль

/072/ — LIBFPTR_ERROR_JOURNAL_BUSY — Идет обработка ЭЖ

/073/ — LIBFPTR_ERROR_DENIED_IN_CLOSED_SHIFT — Смена закрыта —
операция невозможна

/074/ — LIBFPTR_ERROR_INVALID_TABLE_NUMBER — Неверный номер таблицы

/075/ — LIBFPTR_ERROR_INVALID_ROW_NUMBER — Неверный номер ряда

/076/ — LIBFPTR_ERROR_INVALID_FIELD_NUMBER — Неверный номер поля

/077/ — LIBFPTR_ERROR_INVALID_DATE_TIME — Неверная дата и/или время

/078/ — LIBFPTR_ERROR_INVALID_STORNO_SUM — Неверная сумма сторно

/079/ — LIBFPTR_ERROR_CHANGE_CALCULATION — Подсчет суммы сдачи невозможен

/080/ — LIBFPTR_ERROR_NO_CASH — В ККТ нет денег для выплаты

/081/ — LIBFPTR_ERROR_DENIED_IN_CLOSED_RECEIPT — Документ закрыт —
операция невозможна

/082/ — LIBFPTR_ERROR_DENIED_IN_OPENED_RECEIPT — Документ открыт —
операция невозможна

/083/ — LIBFPTR_ERROR_DENIED_IN_OPENED_SHIFT — Смена открыта, операция
невозможна

/084/ — LIBFPTR_ERROR_SERIAL_NUMBER_ALREADY_ENTERED — Серийный номер /
MAC-адрес уже задан

/085/ — LIBFPTR_ERROR_TOO_MUCH_REREGISTRATIONS — Исчерпан лимит
перерегистраций

/086/ — LIBFPTR_ERROR_INVALID_SHIFT_NUMBER — Неверный номер смены

/087/ — LIBFPTR_ERROR_INVALID_SERIAL_NUMBER — Недопустимый серийный
номер ККТ

/088/ — LIBFPTR_ERROR_INVALID_RNM_VATIN — Недопустимый РНМ и/или ИНН

/089/ — LIBFPTR_ERROR_FISCAL_PRINTER_NOT_ACTIVATED — ККТ не
зарегистрирована

/090/ — LIBFPTR_ERROR_SERIAL_NUMBER_NOT_ENTERED — Не задан серийный номер

/091/ — LIBFPTR_ERROR_NO_MORE_REPORTS — Нет отчетов

/092/ — LIBFPTR_ERROR_MODE_NOT_ACTIVATED — Режим не активизирован

/093/ — LIBFPTR_ERROR_RECORD_NOT_FOUND_IN_JOURNAL — Данные документа
отсутствуют

/094/ — LIBFPTR_ERROR_INVALID_LICENSE — Некорректный код защиты /
лицензия или номер

/095/ — LIBFPTR_ERROR_NEED_FULL_RESET — Требуется выполнение общего
гашения

/096/ — LIBFPTR_ERROR_DENIED_BY_LICENSE — Команда не разрешена
введенными кодами защиты / лицензиями ККТ

/097/ — LIBFPTR_ERROR_DISCOUNT_CANCELLATION_DENIED — Невозможна отмена
скидки/надбавки

/098/ — LIBFPTR_ERROR_CLOSE_RECEIPT_DENIED — Невозможно закрыть чек
данным типом оплаты

/099/ — LIBFPTR_ERROR_INVALID_ROUTE_NUMBER — Неверный номер маршрута

/100/ — LIBFPTR_ERROR_INVALID_START_ZONE_NUMBER — Неверный номер
начальной зоны

/101/ — LIBFPTR_ERROR_INVALID_END_ZONE_NUMBER — Неверный номер
конечной зоны

/102/ — LIBFPTR_ERROR_INVALID_RATE_TYPE — Неверный тип тарифа

/103/ — LIBFPTR_ERROR_INVALID_RATE — Неверный тариф

/104/ — LIBFPTR_ERROR_FISCAL_MODULE_EXCHANGE — Ошибка обмена с
фискальным модулем

/105/ — LIBFPTR_ERROR_NEED_TECHNICAL_SUPPORT — Необходимо провести
профилактические работы

/106/ — LIBFPTR_ERROR_SHIFT_NUMBERS_DID_NOT_MATCH — Неверные номера
смен в ККТ и ФН

/107/ — LIBFPTR_ERROR_DEVICE_NOT_FOUND — Нет устройства,
обрабатывающего данную команду

/108/ — LIBFPTR_ERROR_EXTERNAL_DEVICE_CONNECTION — Нет связи с внешним
устройством

/109/ — LIBFPTR_ERROR_DISPENSER_INVALID_STATE — Ошибочное состояние ТРК

/110/ — LIBFPTR_ERROR_INVALID_POSITIONS_COUNT — Недопустимое кол-во
позиций в чеке

/111/ — LIBFPTR_ERROR_DISPENSER_INVALID_NUMBER — Ошибочный номер ТРК

/112/ — LIBFPTR_ERROR_INVALID_DIVIDER — Неверный делитель

/113/ — LIBFPTR_ERROR_FN_ACTIVATION_DENIED — Активация данного ФН в
составе данной ККТ невозможна

/114/ — LIBFPTR_ERROR_PRINTER_OVERHEAT — Перегрев головки принтера

/115/ — LIBFPTR_ERROR_FN_EXCHANGE — Ошибка обмена с ФН на уровне
интерфейса I2C

/116/ — LIBFPTR_ERROR_FN_INVALID_FORMAT — Ошибка формата передачи ФН

/117/ — LIBFPTR_ERROR_FN_INVALID_STATE — Неверное состояние ФН

/118/ — LIBFPTR_ERROR_FN_FAULT — Неисправимая ошибка ФН

/119/ — LIBFPTR_ERROR_FN_CRYPTO_FAULT — Ошибка КС ФН

/120/ — LIBFPTR_ERROR_FN_EXPIRED — Закончен срок эксплуатации ФН

/121/ — LIBFPTR_ERROR_FN_OVERFLOW — Архив ФН переполнен

/122/ — LIBFPTR_ERROR_FN_INVALID_DATE_TIME — В ФН переданы неверная
дата или время

/123/ — LIBFPTR_ERROR_FN_NO_MORE_DATA — В ФН нет запрошенных данных

/124/ — LIBFPTR_ERROR_FN_TOTAL_OVERFLOW — Переполнение ФН (итог чека)

/125/ — LIBFPTR_ERROR_BUFFER_OVERFLOW — Буфер переполнен

/126/ — LIBFPTR_ERROR_PRINT_SECOND_COPY_DENIED — Невозможно напечатать
вторую фискальную копию

/127/ — LIBFPTR_ERROR_NEED_RESET_JOURNAL — Требуется гашение ЭЖ

/128/ — LIBFPTR_ERROR_TAX_SUM_TOO_MUCH — Некорректная сумма налога

/129/ — LIBFPTR_ERROR_TAX_ON_LAST_OPERATION_DENIED — Начисление налога
на последнюю операцию невозможно

/130/ — LIBFPTR_ERROR_INVALID_FN_NUMBER — Неверный номер ФН

/131/ — LIBFPTR_ERROR_TAX_CANCEL_DENIED — Сумма сторно налога больше
суммы зарегистрированного налога данного типа

/132/ — LIBFPTR_ERROR_LOW_BATTERY — Операция невозможна, недостаточно
питания

/133/ — LIBFPTR_ERROR_FN_INVALID_COMMAND — Некорректное значение
параметров команды ФН

/134/ — LIBFPTR_ERROR_FN_COMMAND_OVERFLOW — Превышение размеров TLV
данных ФН

/135/ — LIBFPTR_ERROR_FN_NO_TRANSPORT_CONNECTION — Нет транспортного
соединения ФН

/136/ — LIBFPTR_ERROR_FN_CRYPTO_HAS_EXPIRED — Исчерпан ресурс КС ФН

/137/ — LIBFPTR_ERROR_FN_RESOURCE_HAS_EXPIRED — Ресурс хранения ФД
исчерпан

/138/ — LIBFPTR_ERROR_INVALID_MESSAGE_FROM_OFD — Сообщение от ОФД не
может быть принято ФН

/139/ — LIBFPTR_ERROR_FN_HAS_NOT_SEND_DOCUMENTS — В ФН есть
неотправленные ФД

/140/ — LIBFPTR_ERROR_FN_TIMEOUT — Исчерпан ресурс ожидания передачи
сообщения в ФН

/141/ — LIBFPTR_ERROR_FN_SHIFT_EXPIRED — Продолжительность смены ФН
более 24 часов

/142/ — LIBFPTR_ERROR_FN_INVALID_TIME_DIFFERENCE — Неверная разница во
времени между двумя операциями ФН

/143/ — LIBFPTR_ERROR_INVALID_TAXATION_TYPE — Некорректная СНО

/144/ — LIBFPTR_ERROR_INVALID_TAX_TYPE — Недопустимый номер ставки налога

/145/ — LIBFPTR_ERROR_INVALID_COMMODITY_PAYMENT_TYPE — Недопустимый
тип оплаты товара

/146/ — LIBFPTR_ERROR_INVALID_COMMODITY_CODE_TYPE — Недопустимый тип
кода товара

/147/ — LIBFPTR_ERROR_EXCISABLE_COMMODITY_DENIED — Недопустима
регистрация подакцизного товара

/148/ — LIBFPTR_ERROR_FISCAL_PROPERTY_WRITE — Ошибка программирования
реквизита

/149/ — LIBFPTR_ERROR_INVALID_COUNTER_TYPE — Неверный тип счетчика

/150/ — LIBFPTR_ERROR_CUTTER_FAULT — Ошибка отрезчика

/151/ — LIBFPTR_ERROR_REPORT_INTERRUPTED — Снятие отчета прервалось

/152/ — LIBFPTR_ERROR_INVALID_LEFT_MARGIN — Недопустимое значение
отступа слева

/153/ — LIBFPTR_ERROR_INVALID_ALIGNMENT — Недопустимое значение
выравнивания

/154/ — LIBFPTR_ERROR_INVALID_TAX_MODE — Недопустимое значение режима
работы с налогом

/155/ — LIBFPTR_ERROR_FILE_NOT_FOUND — Файл не найден или неверный формат

/156/ — LIBFPTR_ERROR_PICTURE_TOO_BIG — Размер картинки слишком большой

/157/ — LIBFPTR_ERROR_INVALID_BARCODE_PARAMS — Не удалось сформировать
штрихкод

/158/ — LIBFPTR_ERROR_FISCAL_PROPERTY_DENIED — Неразрешенные реквизиты

/159/ — LIBFPTR_ERROR_FN_INTERFACE — Ошибка интерфейса ФН

/160/ — LIBFPTR_ERROR_DATA_DUPLICATE — Дублирование данных

/161/ — LIBFPTR_ERROR_NO_REQUIRED_FISCAL_PROPERTY — Не указаны
обязательные реквизиты

/162/ — LIBFPTR_ERROR_FN_READ_DOCUMENT — Ошибка чтения документа из ФН

/163/ — LIBFPTR_ERROR_FLOAT_OVERFLOW — Переполнение чисел с плавающей
точкой

/164/ — LIBFPTR_ERROR_INVALID_SETTING_VALUE — Неверное значение
параметра ККТ

/165/ — LIBFPTR_ERROR_HARD_FAULT — Внутренняя ошибка ККТ

/166/ — LIBFPTR_ERROR_FN_NOT_FOUND — ФН не найден

/167/ — LIBFPTR_ERROR_INVALID_AGENT_FISCAL_PROPERTY — Невозможно
записать реквизит агента

/168/ — LIBFPTR_ERROR_INVALID_FISCAL_PROPERTY_VALUE_1002_1056
Недопустимое сочетание реквизитов 1002 и 1056

/169/ — LIBFPTR_ERROR_INVALID_FISCAL_PROPERTY_VALUE_1002_1017
Недопустимое сочетание реквизитов 1002 и 1017

/170/ — LIBFPTR_ERROR_SCRIPT — Ошибка скриптового движка ККТ

/171/ — LIBFPTR_ERROR_INVALID_USER_MEMORY_INDEX — Неверный номер
пользовательской ячейки памяти

/172/ — LIBFPTR_ERROR_NO_ACTIVE_OPERATOR — Кассир не зарегистрирован

/173/ — LIBFPTR_ERROR_REGISTRATION_REPORT_INTERRUPTED — Отчет о
регистрации ККТ прерван

/174/ — LIBFPTR_ERROR_CLOSE_FN_REPORT_INTERRUPTED — Отчет о закрытии
ФН прерван

/175/ — LIBFPTR_ERROR_OPEN_SHIFT_REPORT_INTERRUPTED — Отчет об
открытии смены прерван

/176/ — LIBFPTR_ERROR_OFD_EXCHANGE_REPORT_INTERRUPTED — Отчет о
состоянии расчетов прерван

/177/ — LIBFPTR_ERROR_CLOSE_RECEIPT_INTERRUPTED — Закрытие чека прервано

/178/ — LIBFPTR_ERROR_FN_QUERY_INTERRUPTED — Получение документа из ФН
прервано

/179/ — LIBFPTR_ERROR_RTC_FAULT — Сбой часов

/180/ — LIBFPTR_ERROR_MEMORY_FAULT — Сбой памяти

/181/ — LIBFPTR_ERROR_CHIP_FAULT — Сбой микросхемы

/182/ — LIBFPTR_ERROR_TEMPLATES_CORRUPTED — Ошибка шаблонов документов

/183/ — LIBFPTR_ERROR_INVALID_MAC_ADDRESS — Недопустимое значение MAC-
адреса

/184/ — LIBFPTR_ERROR_INVALID_SCRIPT_NUMBER — Неверный тип (номер) шаблона

/185/ — LIBFPTR_ERROR_SCRIPTS_FAULT — Загруженные шаблоны повреждены
или отсутствуют

/186/ — LIBFPTR_ERROR_INVALID_SCRIPTS_VERSION — Несовместимая версия
загруженных шаблонов

/187/ — LIBFPTR_ERROR_INVALID_CLICHE_FORMAT — Ошибка в формате клише

/188/ — LIBFPTR_ERROR_WAIT_FOR_REBOOT — Требуется перезагрузка ККТ

/189/ — LIBFPTR_ERROR_NO_LICENSE — Подходящие лицензии не найдены

/190/ — LIBFPTR_ERROR_INVALID_FFD_VERSION — Неверная версия ФФД

/191/ — LIBFPTR_ERROR_CHANGE_SETTING_DENIED — Параметр доступен только
для чтения

/192/ — LIBFPTR_ERROR_INVALID_NOMENCLATURE_TYPE — Неверный тип кода товара

/193/ — LIBFPTR_ERROR_INVALID_GTIN — Неверное значение GTIN

/194/ — LIBFPTR_ERROR_NEGATIVE_MATH_RESULT — Отрицательный результат
математической операции

/195/ — LIBFPTR_ERROR_FISCAL_PROPERTIES_COMBINATION — Недопустимое
сочетание реквизитов

/196/ — LIBFPTR_ERROR_OPERATOR_LOGIN — Не удалось зарегистрировать кассира

/197/ — LIBFPTR_ERROR_INVALID_INTERNET_CHANNEL — Данный канал Интернет
отсутствует в ККТ

/198/ — LIBFPTR_ERROR_DATETIME_NOT_SYNCRONIZED — Дата и время не
синхронизированы

/199/ — LIBFPTR_ERROR_JOURNAL — Ошибка электронного журнала

/200/ — LIBFPTR_ERROR_DENIED_IN_OPENED_DOC — Документ открыт —
операция невозможна (не используется)

/201/ — LIBFPTR_ERROR_DENIED_IN_CLOSED_DOC — Документ закрыт —
операция невозможна (не используется)

/202/ — LIBFPTR_ERROR_LICENSE_MEMORY_OVERFLOW — Нет места для
сохранения лицензий

/203/ — LIBFPTR_ERROR_NEED_CANCEL_DOCUMENT — Произошла критичная
ошибка, документ необходимо отменить

/204/ — LIBFPTR_ERROR_REGISTERS_NOT_INITIALIZED — Регистры ККТ еще не
инициализированы

/205/ — LIBFPTR_ERROR_TOTAL_REQUIRED — Требуется регистрация итога

/206/ — LIBFPTR_ERROR_SETTINGS_FAULT — Сбой таблицы настроек

/207/ — LIBFPTR_ERROR_COUNTERS_FAULT — Сбой счетчиков и регистров ККТ

/208/ — LIBFPTR_ERROR_USER_MEMORY_FAULT — Сбой пользовательской памяти

/209/ — LIBFPTR_ERROR_SERVICE_COUNTERS_FAULT — Сбой сервисных регистров

/210/ — LIBFPTR_ERROR_ATTRIBUTES_FAULT — Сбой реквизитов ККТ

/211/ — LIBFPTR_ERROR_ALREADY_IN_UPDATE_MODE — ККТ уже в режиме
обновления конфигурации

/212/ — LIBFPTR_ERROR_INVALID_FIRMWARE — Конфигурация не прошла проверку

/213/ — LIBFPTR_ERROR_INVALID_CHANNEL — Аппаратный канал отсутствует,
выключен или ещё не проинициализирован

/214/ — LIBFPTR_ERROR_INTERFACE_DOWN — Сетевой интерфейс не подключен,
или на нём не получен IP-адрес

/215/ — LIBFPTR_ERROR_INVALID_FISCAL_PROPERTY_VALUE_1212_1030
Недопустимое сочетание реквизитов 1212 и 1030

/216/ — LIBFPTR_ERROR_INVALID_FISCAL_PROPERTY_VALUE_1214
Некорректный признак способа расчета

/217/ — LIBFPTR_ERROR_INVALID_FISCAL_PROPERTY_VALUE_1212
Некорректный признак предмета расчета

/218/ — LIBFPTR_ERROR_SYNC_TIME — Ошибка синхронизации времени

/219/ — LIBFPTR_ERROR_VAT18_VAT20_IN_RECEIPT — В одном чеке
одновременно не может быть позиций с НДС 18% (18/118) и НДС 20% (20/120)

/220/ — LIBFPTR_ERROR_PICTURE_NOT_CLOSED — Картинка не закрыта

/221/ — LIBFPTR_ERROR_INTERFACE_BUSY — Сетевой интерфейс занят

/222/ — LIBFPTR_ERROR_INVALID_PICTURE_NUMBER — Неверный номер картинки

/223/ — LIBFPTR_ERROR_INVALID_CONTAINER — Ошибка проверки контейнера

/224/ — LIBFPTR_ERROR_ARCHIVE_CLOSED — Архив ФН закрыт

/225/ — LIBFPTR_ERROR_NEED_REGISTRATION — Нужно выполнить
регистрацию / перерегистрацию

/226/ — LIBFPTR_ERROR_DENIED_DURING_UPDATE — Операция невозможна, идет
обновление ПО ККТ

/227/ — LIBFPTR_ERROR_INVALID_TOTAL — Неверный итог чека

/228/ — LIBFPTR_ERROR_MARKING_CODE_CONFLICT — Запрещена одновременная
передача КМ и реквизита 1162

/229/ — LIBFPTR_ERROR_INVALID_RECORDS_ID — Набор записей по заданному
идентификатору не найден

/230/ — LIBFPTR_ERROR_INVALID_SIGNATURE — Ошибка цифровой подписи

/231/ — LIBFPTR_ERROR_INVALID_EXCISE_SUM — Некорректная сумма акциза

/232/ — LIBFPTR_ERROR_NO_DOCUMENTS_FOUND_IN_JOURNAL — Заданный
диапазон документов не найден в БД документов

/233/ — LIBFPTR_ERROR_INVALID_SCRIPT_TYPE — Неподдерживаемый тип скрипта

/234/ — LIBFPTR_ERROR_INVALID_SCRIPT_NAME — Некорректный идентификатор
скрипта

/235/ — LIBFPTR_ERROR_INVALID_POSITIONS_COUNT_WITH_1162 — Кол-во
позиций с реквизитом 1162/1163 в автономном режиме превысило разрешенный
лимит

/236/ — LIBFPTR_ERROR_INVALID_UC_COUNTER — Универсальный счетчик с
заданными параметрами недоступен

/237/ — LIBFPTR_ERROR_INVALID_UC_TAG — Неподдерживаемый тег для
универсальных счетчиков

/238/ — LIBFPTR_ERROR_INVALID_UC_IDX — Некорректный индекс для
универсальных счетчиков

/239/ — LIBFPTR_ERROR_INVALID_UC_SIZE — Неверный размер универсального
счетчика

/240/ — LIBFPTR_ERROR_INVALID_UC_CONFIG — Неверная конфигурация
универсальных счетчиков

/241/ — LIBFPTR_ERROR_CONNECTION_LOST — Соединение с ККТ потеряно

/242/ — LIBFPTR_ERROR_UNIVERSAL_COUNTERS_FAULT — Ошибка универсальных
счетчиков

/243/ — LIBFPTR_ERROR_INVALID_TAX_SUM — Некорректная сумма налога

/244/ — LIBFPTR_ERROR_INVALID_MARKING_CODE_TYPE — Некорректное
значение типа кода маркировки

/245/ — LIBFPTR_ERROR_LICENSE_HARD_FAULT — Аппаратная ошибка при
сохранении лицензии

/246/ — LIBFPTR_ERROR_LICENSE_INVALID_SIGN — Подпись лицензии некорректна

/247/ — LIBFPTR_ERROR_LICENSE_INVALID_SERIAL — Лицензия не подходит
для данной ККТ

/248/ — LIBFPTR_ERROR_LICENSE_INVALID_TIME — Срок действия лицензии истёк

/249/ — LIBFPTR_ERROR_DOCUMENT_CANCELED — Документ был отменен

/250/ — LIBFPTR_ERROR_INVALID_SCRIPT_PARAMS — Некорректные параметры
скрипта

/251/ — LIBFPTR_ERROR_CLICHE_TOO_LONG — Длина клише превышает
максимальное значение

/252/ — LIBFPTR_ERROR_COMMODITIES_TABLE_FAULT — Ошибка таблицы товаров

/253/ — LIBFPTR_ERROR_COMMODITIES_TABLE — Общая ошибка таблицы товаров

/254/ — LIBFPTR_ERROR_COMMODITIES_TABLE_INVALID_TAG — Некорректный тег
для таблицы товаров

/255/ — LIBFPTR_ERROR_COMMODITIES_TABLE_INVALID_TAG_SIZE
Некорректный размер тега для таблицы товаров

/256/ — LIBFPTR_ERROR_COMMODITIES_TABLE_NO_TAG_DATA — Нет данных по
тегу в таблице товаров

/257/ — LIBFPTR_ERROR_COMMODITIES_TABLE_NO_FREE_MEMORY — Нет места в
динамической области памяти таблицы товаров

/258/ — LIBFPTR_ERROR_INVALID_CACHE — Ошибка чтения/записи данных кеша

/259/ — LIBFPTR_ERROR_SCHEDULER_NOT_READY — Функции планировщика
заданий не доступны

/260/ — LIBFPTR_ERROR_SCHEDULER_INVALID_TASK — Неизвестный тип задания
планировщика

/261/ — LIBFPTR_ERROR_MINIPOS_NO_POSITION_PAYMENT — Отсутствует
позиция оплаты

/262/ — LIBFPTR_ERROR_MINIPOS_COMMAND_TIME_OUT — Таймаут выполнения
команды истек

/263/ — LIBFPTR_ERROR_MINIPOS_MODE_FR_DISABLED — Режим ФР выключен

/264/ — LIBFPTR_ERROR_ENTRY_NOT_FOUND_IN_OTP — Не найдена запись в OTP

/265/ — LIBFPTR_ERROR_EXCISABLE_COMMODITY_WITHOUT_EXCISE — Подакцизный
товар без акциза зарегистрирован в чеке

/266/ — LIBFPTR_ERROR_BARCODE_TYPE_NOT_SUPPORTED — Данный тип
штрихкода не поддерживается

/267/ — LIBFPTR_ERROR_OVERLAY_DATA_OVERFLOW — Размер данных штрихкода
и текста превышает допустимый

/268/ — LIBFPTR_ERROR_INVALID_MODULE_ADDRESS — Ошибка чтения адреса
модуля и сегмента

/269/ — LIBFPTR_ERROR_ECR_MODEL_NOT_SUPPORTED — Данная модель ККТ не
поддерживается

/270/ — LIBFPTR_ERROR_PAID_NOT_REQUIRED — Оплата по данному чеку не
требуется

/271/ — LIBFPTR_ERROR_NON_PRINTABLE_CHAR — Непечатаемые символы в
реквизите

/272/ — LIBFPTR_ERROR_INVALID_USER_TAG — Неизвестный пользовательский тег

/273/ — LIBFPTR_ERROR_COMMODITIES_TABLE_ITERATION_STOPPED — Перебор
окончен без найденных данных

/274/ — LIBFPTR_ERROR_COMMODITIES_TABLE_INVALID_CSV_FORMAT
Некорректный формат CSV

/275/ — LIBFPTR_ERROR_MINIPOS_NO_FILE_ON_USB_STORE — Нет файла на USB-
носителе

/276/ — LIBFPTR_ERROR_MINIPOS_NO_AGENT_FISCAL_PROPERTY — Не задан
признак агента по предмету расчета

/401/ — LIBFPTR_ERROR_MARKING_CODE_VALIDATION_IN_PROGRESS — Процедура
проверки КМ уже запущена

/402/ — LIBFPTR_ERROR_NO_CONNECTION_WITH_SERVER — Ошибка соединения с
сервером

/403/ — LIBFPTR_ERROR_MARKING_CODE_VALIDATION_CANCELED — Процедура
проверки КМ прервана

/404/ — LIBFPTR_ERROR_INVALID_MARKING_CODE_STATUS — Некорректное
значение статуса КМ

/405/ — LIBFPTR_ERROR_INVALID_GS1 — Неверный код GS1

/406/ — LIBFPTR_ERROR_MARKING_WORK_DENIED — Запрещена работа с
маркированным товарами

/407/ — LIBFPTR_ERROR_MARKING_WORK_TEMPORARY_BLOCKED — Работа с
маркированными товарами временно заблокирована

/408/ — LIBFPTR_ERROR_MARKS_OVERFLOW — Переполнена таблица хранения КМ

/409/ — LIBFPTR_ERROR_INVALID_MARKING_CODE — Некорректный код маркировки

/410/ — LIBFPTR_ERROR_INVALID_STATE — Неверное состояние

/411/ — LIBFPTR_ERROR_OFD_EXCHANGE — Ошибка обмена с сервером ОФД или ИСМ

/412/ — LIBFPTR_ERROR_INVALID_MEASUREMENT_UNIT — Некорректное значение
единиц измерения

/413/ — LIBFPTR_ERROR_OPERATION_DENIED_IN_CURRENT_FFD — Операция не
разрешена в данной версии ФФД

/414/ — LIBFPTR_ERROR_MARKING_OPERATION_DENIED — Операция не
разрешена, при регистрации не был установлен признак ТМТ

/415/ — LIBFPTR_ERROR_NO_DATA_TO_SEND — Нет данных для отправки

/416/ — LIBFPTR_ERROR_NO_MARKED_POSITION — Нет маркированных позиций в
чеке

/417/ — LIBFPTR_ERROR_HAS_NOT_SEND_NOTICES — Имеются неотправленные
уведомления

/418/ — LIBFPTR_ERROR_UPDATE_KEYS_REQUIRED — Требуется повторное
проведение процедуры обновления ключей

/419/ — LIBFPTR_ERROR_UPDATE_KEYS_SERVICE — Ошибка сервиса обновления
ключей проверки КМ

/420/ — LIBFPTR_ERROR_MARK_NOT_CHECKED — КМ не проверен в ФН

/421/ — LIBFPTR_ERROR_MARK_CHECK_TIMEOUT_EXPIRED — Истёк таймаут
проверки КМ

/422/ — LIBFPTR_ERROR_NO_MARKING_CODE_IN_TABLE — Данный КМ отсутствует
в таблице

/423/ — LIBFPTR_ERROR_CHEKING_MARK_IN_PROGRESS — Выполняется проверка КМ

/424/ — LIBFPTR_ERROR_INVALID_SERVER_ADDRESS — Настройки адреса
сервера не заданы

/425/ — LIBFPTR_ERROR_UPDATE_KEYS_TIMEOUT — Истёк таймаут обновления
ключей проверки

/426/ — LIBFPTR_ERROR_PROPERTY_FOR_MARKING_POSITION_ONLY — Данный
реквизит разрешён только для маркированной позиции

/501/ — LIBFPTR_ERROR_RECEIPT_PARSE_ERROR — Ошибка парсинга запроса

/502/ — LIBFPTR_ERROR_INTERRUPTED_BY_PREVIOUS_ERRORS — Выполнение
прервано из-за предыдущих ошибок

/503/ — LIBFPTR_ERROR_DRIVER_SCRIPT_ERROR — Ошибка скрипта драйвера

/504/ — LIBFPTR_ERROR_VALIDATE_FUNC_NOT_FOUND — Функция проверки
задания не найдена

/601/ — LIBFPTR_ERROR_RCP_SERVER_BUSY — Устройство на сервере
удалённого подключения занято другим клиентом

/602/ — LIBFPTR_ERROR_RCP_SERVER_VERSION — Некорректная версия
протокола обмена с сервером удалённого подключения

/603/ — LIBFPTR_ERROR_RCP_SERVER_EXCHANGE — Ошибка обмена с сервером
удалённого подключения

с /1000/ по /1999/ — с LIBFPTR_ERROR_USERS_SCRIPTS_BASE по
LIBFPTR_ERROR_USERS_SCRIPTS_END — Пользовательские ошибки скриптов ККТ

Используемые сторонние библиотеки

Название Версия Лицензия
log4cpp http://log4cpp.sourceforge.net/ 1.1.2rc5 LGPL
CxImage https://sourceforge.net/projects/cximage 7.0.1 zlib/libpng
http://opensource.org/licenses/Zlib
zlib https://www.zlib.net/ 1.2.11 zlib/libpng
libpng https://libpng.sourceforge.io/ 1.6.28 zlib/libpng
zint https://zint.github.io/ 2.6.0 BSD
libusb (linux) https://github.com/libusb/libusb 1.0.21 LGPLv2
https://www.gnu.org/licenses/lgpl-2.1.html
libusb (android) https://github.com/saki4510t/UVCCamera @c9399e6
LGPLv2 https://www.gnu.org/licenses/lgpl-2.1.html
decNumber https://github.com/gcc-mirror/gcc/blob/master/libdecnumber
3.68 ICU License — ICU 1.8.1 and later
jsoncpp https://github.com/open-source-parsers/jsoncpp 1.7.7 MIT
http://jsoncpp.sourceforge.net/LICENSE
utf8cpp http://utfcpp.sourceforge.net/ Boost Software License
http://www.boost.org/users/license.html
base64 https://github.com/ReneNyffenegger/cpp-base64 @a8aae95 zlib/
libpng https://github.com/ReneNyffenegger/cpp-base64/blob/master/LICENSE
Duktape https://duktape.org/ 2.3.0 Duktape MIT license
SQLite3 https://www.sqlite.org/ 3.29.0 SQLite
PicoHTTPParser https://github.com/h2o/picohttpparser @81fe3d9 MIT
https://opensource.org/licenses/MIT
libsodium https://github.com/jedisct1/libsodium 1.0.18 ISC
libbson 1.17.0-pre Apache 2.0
Qt https://www.qt.io/ 4.8.7, 5.6.2, 5.2.1 LGPL
QtCSV https://github.com/iamantony/qtcsv 1.5 MIT
QtWinMigrate (windows) https://github.com/qtproject/qt-solutions
2.6.0 BSD http://opensource.org/licenses/BSD-3-Clause
QuaZIP https://sourceforge.net/projects/quazip 0.7.3 LGPLv2
https://www.gnu.org/licenses/lgpl-2.1.html
Slate https://github.com/slatedocs/slate @7ecc79c Apache 2.0
https://github.com/slatedocs/slate/blob/dev/LICENSE

Пример использования

|#include «libfptr10.h»

std::wstring getErrorDescription(libfptr_handle fptr)
{
std::vector str(32);
int size = libfptr_error_description(fptr, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_error_description(fptr, &str[0], str.size());
}
return std::wstring(&str[0]);
}

int main(int argc, char **argv)
{
// Создание и настройка компонента
libfptr_handle fptr;
libfptr_create(&fptr);

libfptr_set_single_setting(fptr, LIBFPTR_SETTING_PORT, std::to_wstring(LIBFPTR_PORT_USB).c_str());
libfptr_apply_single_settings(fptr);

// Соединение с ККТ
libfptr_open(fptr);

// Регистрация кассира
libfptr_set_param_str(fptr, 1021, L"Иванов И.И.");
libfptr_set_param_str(fptr, 1203, L"500100732259");
libfptr_operator_login(fptr);

// Открытие чека (с передачей телефона получателя)
libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
libfptr_set_param_str(fptr, 1008, L"+79161234567");
libfptr_open_receipt(fptr);

// Регистрация позиции
libfptr_set_param_str(fptr, LIBFPTR_PARAM_COMMODITY_NAME, L"Чипсы LAYS");
libfptr_set_param_double(fptr, LIBFPTR_PARAM_PRICE, 73.99);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_QUANTITY, 5);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
libfptr_set_param_int(fptr, 1212, 1);
libfptr_set_param_int(fptr, 1214, 7);
libfptr_registration(fptr);

// Регистрация итога (отбрасываем копейки)
libfptr_set_param_double(fptr, LIBFPTR_PARAM_SUM, 369.0);
libfptr_receipt_total(fptr);

// Оплата наличными
libfptr_set_param_int(fptr, LIBFPTR_PARAM_PAYMENT_TYPE, LIBFPTR_PT_CASH);
libfptr_set_param_double(fptr, LIBFPTR_PARAM_PAYMENT_SUM, 1000);
libfptr_payment(fptr);

// Закрытие чека
libfptr_close_receipt(fptr);

while (libfptr_check_document_closed(fptr) < 0) {
  // Не удалось проверить состояние документа. Вывести пользователю текст ошибки, попросить устранить неполадку и повторить запрос
  std::wcout << getErrorDescription(fptr) << std::endl;
  continue;
}

if (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_DOCUMENT_CLOSED) == 0) {
  // Документ не закрылся. Требуется его отменить (если это чек) и сформировать заново
  libfptr_cancel_receipt(fptr);
  return;
}

if (libfptr_get_param_bool(fptr, LIBFPTR_PARAM_DOCUMENT_PRINTED) == 0) {
  // Можно сразу вызвать метод допечатывания документа, он завершится с ошибкой, если это невозможно
  while (libfptr_continue_print(fptr) < 0) {
    // Если не удалось допечатать документ - показать пользователю ошибку и попробовать еще раз.
    std::wcout << L"Не удалось напечатать документ (Ошибка \"" << getErrorDescription(fptr) << L"\"). Устраните неполадку и повторите.";
    continue;
  }
}

// Получение информации о чеке из ФН
libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_LAST_DOCUMENT);
libfptr_fn_query_data(fptr);
wchar_t fiscalSign[50] = {0};
libfptr_get_param_str(fptr, LIBFPTR_PARAM_FISCAL_SIGN, &fiscalSign[0], sizeof(fiscalSign) / sizeof(fiscalSign[0]));
uint documentNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENT_NUMBER);

// Формирование слипа ЕГАИС
libfptr_begin_nonfiscal_document(fptr);

libfptr_set_param_str(fptr, LIBFPTR_PARAM_TEXT, L"ИНН: 111111111111 КПП: 222222222");
libfptr_set_param_int(fptr, LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_CENTER);
libfptr_print_text(fptr);

libfptr_set_param_str(fptr, LIBFPTR_PARAM_TEXT, L"КАССА: 1               СМЕНА: 11");
libfptr_set_param_int(fptr, LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_CENTER);
libfptr_print_text(fptr);

libfptr_set_param_str(fptr, LIBFPTR_PARAM_TEXT, L"ЧЕК: 314  ДАТА: 20.11.2017 15:39");
libfptr_set_param_int(fptr, LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_CENTER);
libfptr_print_text(fptr);

libfptr_set_param_str(fptr, LIBFPTR_PARAM_BARCODE, L"https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7");
libfptr_set_param_int(fptr, LIBFPTR_PARAM_BARCODE_TYPE, LIBFPTR_BT_QR);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_CENTER);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_SCALE, 500);
libfptr_print_barcode(fptr);

libfptr_print_text(fptr);

libfptr_set_param_str(fptr, LIBFPTR_PARAM_TEXT, L"https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7");
libfptr_set_param_int(fptr, LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_CENTER);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_TEXT_WRAP, LIBFPTR_TW_CHARS);
libfptr_print_text(fptr);

libfptr_print_text(fptr);

libfptr_set_param_str(fptr, LIBFPTR_PARAM_TEXT,
                          L"10 58 1c 85 bb 80 99 84 40 b1 4f 35 8a 35 3f 7c "
                          L"78 b0 0a ff cd 37 c1 8e ca 04 1c 7e e7 5d b4 85 "
                          L"ff d2 d6 b2 8d 7f df 48 d2 5d 81 10 de 6a 05 c9 "
                          L"81 74");
libfptr_set_param_int(fptr, LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_CENTER);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_TEXT_WRAP, LIBFPTR_TW_WORDS);
libfptr_print_text(fptr);

libfptr_end_nonfiscal_document(fptr);

// Z-отчет
libfptr_set_param_int(fptr, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_CLOSE_SHIFT);
libfptr_report(fptr);

// Получение информации о неотправленных документах
libfptr_set_param_int(fptr, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_OFD_EXCHANGE_STATUS);
libfptr_fn_query_data(fptr);
wchar_t unsentDateTime[50] = {0};
uint unsentCount = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENTS_COUNT);
uint unsentFirstNumber = libfptr_get_param_int(fptr, LIBFPTR_PARAM_DOCUMENT_NUMBER);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_DATE_TIME, &unsentDateTime[0], sizeof(unsentDateTime) / sizeof(unsentDateTime[0]));

// Завершение работы
libfptr_close(fptr);
libfptr_destroy(&fptr);

}
|

|#include «fptr10.h»

int main(int argc, char **argv)
{
// Создание и настройка компонента
Fptr fptr;

fptr.setSingleSetting(LIBFPTR_SETTING_PORT, std::to_wstring(LIBFPTR_PORT_USB));
fptr.applySingleSettings();

// Соединение с ККТ
fptr.open();

// Регистрация кассира
fptr.setParam(1021, L"Иванов И.И.");
fptr.setParam(1203, L"500100732259");
fptr.operatorLogin();

// Открытие чека (с передачей телефона получателя)
fptr.setParam(LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_RT_SELL);
fptr.setParam(1008, L"+79161234567");
fptr.openReceipt();

// Регистрация позиции
fptr.setParam(LIBFPTR_PARAM_COMMODITY_NAME, L"Чипсы LAYS");
fptr.setParam(LIBFPTR_PARAM_PRICE, 73.99);
fptr.setParam(LIBFPTR_PARAM_QUANTITY, 5);
fptr.setParam(LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_TAX_VAT10);
fptr.setParam(1212, 1);
fptr.setParam(1214, 7);
fptr.registration();

// Регистрация итога (отбрасываем копейки)
fptr.setParam(LIBFPTR_PARAM_SUM, 369.0);
fptr.receiptTotal(fptr);

// Оплата наличными
fptr.setParam(LIBFPTR_PARAM_PAYMENT_TYPE, LIBFPTR_PT_CASH);
fptr.setParam(LIBFPTR_PARAM_PAYMENT_SUM, 1000);
fptr.payment();

// Закрытие чека
fptr.closeReceipt();

while (fptr.checkDocumentClosed() < 0) {
  // Не удалось проверить состояние документа. Вывести пользователю текст ошибки, попросить устранить неполадку и повторить запрос
  std::wcout << fptr.errorDescription() << std::endl;
  continue;
}

if (fptr.getParamBool(LIBFPTR_PARAM_DOCUMENT_CLOSED) == 0) {
  // Документ не закрылся. Требуется его отменить (если это чек) и сформировать заново
  fptr.cancelReceipt();
  return;
}

if (fptr.getParamBool(LIBFPTR_PARAM_DOCUMENT_PRINTED) == 0) {
  // Можно сразу вызвать метод допечатывания документа, он завершится с ошибкой, если это невозможно
  while (fptr.continuePrint() < 0) {
    // Если не удалось допечатать документ - показать пользователю ошибку и попробовать еще раз.
    std::wcout << L"Не удалось напечатать документ (Ошибка \"" << fptr.errorDescription() << L"\"). Устраните неполадку и повторите.";
    continue;
  }
}

// Получение информации о чеке из ФН
fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_LAST_DOCUMENT);
fptr.fnQueryData();
std::wstring fiscalSign = fptr.getParamStr(LIBFPTR_PARAM_FISCAL_SIGN);
uint documentNumber = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENT_NUMBER);

// Формирование слипа ЕГАИС
fptr.beginNonfiscalDocument();

fptr.setParam(LIBFPTR_PARAM_TEXT, L"ИНН: 111111111111 КПП: 222222222");
fptr.setParam(LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_CENTER);
fptr.printText();

fptr.setParam(LIBFPTR_PARAM_TEXT, L"КАССА: 1               СМЕНА: 11");
fptr.setParam(LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_CENTER);
fptr.printText();

fptr.setParam(LIBFPTR_PARAM_TEXT, L"ЧЕК: 314  ДАТА: 20.11.2017 15:39");
fptr.setParam(LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_CENTER);
fptr.printText();

fptr.setParam(LIBFPTR_PARAM_BARCODE, L"https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7");
fptr.setParam(LIBFPTR_PARAM_BARCODE_TYPE, LIBFPTR_BT_QR);
fptr.setParam(LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(LIBFPTR_PARAM_SCALE, 500);
fptr.printBarcode();

fptr.printText();

fptr.setParam(LIBFPTR_PARAM_TEXT, L"https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7");
fptr.setParam(LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(LIBFPTR_PARAM_TEXT_WRAP, LIBFPTR_TW_CHARS);
fptr.printText();

fptr.printText();

fptr.setParam(LIBFPTR_PARAM_TEXT,
                          L"10 58 1c 85 bb 80 99 84 40 b1 4f 35 8a 35 3f 7c "
                          L"78 b0 0a ff cd 37 c1 8e ca 04 1c 7e e7 5d b4 85 "
                          L"ff d2 d6 b2 8d 7f df 48 d2 5d 81 10 de 6a 05 c9 "
                          L"81 74");
fptr.setParam(LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(LIBFPTR_PARAM_TEXT_WRAP, LIBFPTR_TW_WORDS);
fptr.printText();

fptr.endNonfiscalDocument();

// Z-отчет
fptr.setParam(LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_RT_CLOSE_SHIFT);
fptr.report();

// Получение информации о неотправленных документах
fptr.setParam(LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_FNDT_OFD_EXCHANGE_STATUS);
fptr.fnQueryData(fptr);
uint unsentCount = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENTS_COUNT);
uint unsentFirstNumber = fptr.getParamInt(LIBFPTR_PARAM_DOCUMENT_NUMBER);
std::wstring unsentDateTime = fptr.getParamStr(LIBFPTR_PARAM_DATE_TIME);

// Завершение работы
fptr.close();

}
|

|import sys
import os
from libfptr10 import IFptr

fptr = IFptr(»)

fptr.setSingleSetting(IFptr.LIBFPTR_SETTING_PORT, str(IFptr.LIBFPTR_PORT_USB))
fptr.applySingleSettings()

fptr.open()

Регистрация кассира

fptr.setParam(1021, «Иванов И.И.»)
fptr.setParam(1203, «500100732259»)
fptr.operatorLogin()

Открытие чека(с передачей телефона получателя)

fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL)
fptr.setParam(1008, «+79161234567»)
fptr.openReceipt()

Регистрация позиции

fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, «Чипсы LAYS»)
fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 73.99)
fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5)
fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10)
fptr.setParam(1212, 1)
fptr.setParam(1214, 7)
fptr.registration()

Регистрация итога (отбрасываем копейки)

fptr.setParam(IFptr.LIBFPTR_PARAM_SUM, 369.0)
fptr.receiptTotal()

Оплата наличными

fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_TYPE, IFptr.LIBFPTR_PT_CASH)
fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_SUM, 1000)
fptr.payment()

Закрытие чека

fptr.closeReceipt()

while fptr.checkDocumentClosed() < 0:
# Не удалось проверить состояние документа. Вывести пользователю текст ошибки, попросить устранить неполадку и повторить запрос
print(fptr.errorDescription())
continue

if not fptr.getParamBool(IFptr.LIBFPTR_PARAM_DOCUMENT_CLOSED):
# Документ не закрылся. Требуется его отменить (если это чек) и сформировать заново
fptr.cancelReceipt()
return

if not fptr.getParamBool(IFptr.LIBFPTR_PARAM_DOCUMENT_PRINTED):
# Можно сразу вызвать метод допечатывания документа, он завершится с ошибкой, если это невозможно
while fptr.continuePrint() < 0:
# Если не удалось допечатать документ — показать пользователю ошибку и попробовать еще раз.
print(‘Не удалось напечатать документ (Ошибка «%s»). Устраните неполадку и повторите.’, fptr.errorDescription())
continue

Запрос информации о закрытом чеке

fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_LAST_DOCUMENT)
fptr.fnQueryData()
print(«Fiscal Sign = {}».format(fptr.getParamString(IFptr.LIBFPTR_PARAM_FISCAL_SIGN)))
print(«Fiscal Document Number = {}».format(fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER)))

Формирование слипа ЕГАИС

fptr.beginNonfiscalDocument()

fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «ИНН: 111111111111 КПП: 222222222»)
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER)
fptr.printText()

fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «КАССА: 1 СМЕНА: 11»)
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER)
fptr.printText()

fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «ЧЕК: 314 ДАТА: 20.11.2017 15:39»)
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER)
fptr.printText()

fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE, «https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7»)
fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE_TYPE, IFptr.LIBFPTR_BT_QR)
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER)
fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE, 5)
fptr.printBarcode()

fptr.printText()

fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, «https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7»)
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER)
fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT_WRAP, IFptr.LIBFPTR_TW_CHARS)
fptr.printText()

fptr.printText()

fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT,
«10 58 1c 85 bb 80 99 84 40 b1 4f 35 8a 35 3f 7c «
«78 b0 0a ff cd 37 c1 8e ca 04 1c 7e e7 5d b4 85 «
«ff d2 d6 b2 8d 7f df 48 d2 5d 81 10 de 6a 05 c9 «
«81 74»)
fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER)
fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT_WRAP, IFptr.LIBFPTR_TW_WORDS)
fptr.printText()

fptr.endNonfiscalDocument()

Отчет о закрытии смены

fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_CLOSE_SHIFT)
fptr.report()

Получение информации о неотправленных документах

fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_OFD_EXCHANGE_STATUS)
fptr.fnQueryData()
unsentCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT)
unsentFirstNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER)
unsentDateTime = fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME)

Завершение работы

fptr.close()
|

|package ru.atol.test;

import ru.atol.drivers10.fptr.Fptr;
import ru.atol.drivers10.fptr.IFptr;
import java.text.DateFormat;
import java.text.SimpleDateFormat;

public class Main {
public static void main(String[] args) {
IFptr fptr = new Fptr();

    fptr.setSingleSetting(IFptr.LIBFPTR_SETTING_PORT, String.valueOf(IFptr.LIBFPTR_PORT_USB));
    fptr.applySingleSettings();

    // Соединение с ККТ
    fptr.open();

    // Регистрация кассира
    fptr.setParam(1021, "Иванов И.И.");
    fptr.setParam(1203, "500100732259");
    fptr.operatorLogin();

    // Открытие чека (с передачей телефона получателя)
    fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
    fptr.setParam(1008, "+79161234567");
    fptr.openReceipt();

    // Регистрация позиции
    fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, "Чипсы LAYS");
    fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 73.99);
    fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5);
    fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
    fptr.setParam(1212, 1);
    fptr.setParam(1214, 7);
    fptr.registration();

    // Регистрация итога (отбрасываем копейки)
    fptr.setParam(IFptr.LIBFPTR_PARAM_SUM, 369.0);
    fptr.receiptTotal();

    // Оплата наличными
    fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_TYPE, IFptr.LIBFPTR_PT_CASH);
    fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_SUM, 1000);
    fptr.payment();

    // Закрытие чека
    fptr.closeReceipt();

    while (fptr.checkDocumentClosed() < 0) {
        // Не удалось проверить состояние документа. Вывести пользователю текст ошибки, попросить устранить неполадку и повторить запрос
        System.out.println(fptr.errorDescription());
        continue;
    }

    if (!fptr.getParamBool(IFptr.LIBFPTR_PARAM_DOCUMENT_CLOSED)) {
        // Документ не закрылся. Требуется его отменить (если это чек) и сформировать заново
        fptr.cancelReceipt();
        return;
    }

    if (!fptr.getParamBool(IFptr.LIBFPTR_PARAM_DOCUMENT_PRINTED)) {
        // Можно сразу вызвать метод допечатывания документа, он завершится с ошибкой, если это невозможно
        while (fptr.continuePrint() < 0) {
            // Если не удалось допечатать документ - показать пользователю ошибку и попробовать еще раз.
            System.out.println(String.format("Не удалось напечатать документ (Ошибка \"%s\"). Устраните неполадку и повторите.", fptr.errorDescription()));
            continue;
        }
    }

    // Запрос информации о закрытом чеке
    fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_LAST_DOCUMENT);
    fptr.fnQueryData();
    System.out.println(String.format("Fiscal Sign = %s", fptr.getParamString(IFptr.LIBFPTR_PARAM_FISCAL_SIGN)));
    System.out.println(String.format("Fiscal Document Number = %d", fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER)));

    // Формирование слипа ЕГАИС
    fptr.beginNonfiscalDocument();

    fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, "ИНН: 111111111111 КПП: 222222222");
    fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
    fptr.printText();

    fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, "КАССА: 1               СМЕНА: 11");
    fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
    fptr.printText();

    fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, "ЧЕК: 314  ДАТА: 20.11.2017 15:39");
    fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
    fptr.printText();

    fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE, "https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7");
    fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE_TYPE, IFptr.LIBFPTR_BT_QR);
    fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
    fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE, 5);
    fptr.printBarcode();

    fptr.printText();

    fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, "https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7");
    fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
    fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT_WRAP, IFptr.LIBFPTR_TW_CHARS);
    fptr.printText();

    fptr.printText();

    fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT,
            "10 58 1c 85 bb 80 99 84 40 b1 4f 35 8a 35 3f 7c " +
            "78 b0 0a ff cd 37 c1 8e ca 04 1c 7e e7 5d b4 85 " +
            "ff d2 d6 b2 8d 7f df 48 d2 5d 81 10 de 6a 05 c9 " +
            "81 74");
    fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
    fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT_WRAP, IFptr.LIBFPTR_TW_WORDS);
    fptr.printText();

    fptr.endNonfiscalDocument();

    // Отчет о закрытии смены
    fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_CLOSE_SHIFT);
    fptr.report();

    // Получение информации о неотправленных документах
    fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_OFD_EXCHANGE_STATUS);
    fptr.fnQueryData();
    System.out.println(String.format("Unsent documents count = %d", fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT)));
    System.out.println(String.format("First unsent document number = %d", fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER)));
    DateFormat df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
    System.out.println(String.format("First unsent document date = %s", df.format(fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME))));

    // Завершение работы
    fptr.close();
}

}
|

|package ru.atol.test;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;
import ru.atol.drivers10.fptr.Fptr;
import ru.atol.drivers10.fptr.IFptr;
import ru.atol.drivers10.fptr.settings.SettingsActivity;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private static final String TAG = «Test»;
private static final int REQUEST_SHOW_SETTINGS = 1;
private IFptr fptr;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    findViewById(R.id.btnShowSettings).setOnClickListener(this);
    findViewById(R.id.btnPrintReceipt).setOnClickListener(this);

    // Создание объекта компонента
    fptr = new Fptr(getApplication());

    // Начальная инициализация настройками (тут они могут вычитываться, например, из хранилища приложения)
    fptr.setSingleSetting(IFptr.LIBFPTR_SETTING_PORT, String.valueOf(IFptr.LIBFPTR_PORT_BLUETOOTH));
    fptr.setSingleSetting(IFptr.LIBFPTR_SETTING_MACADDRESS, "00:11:22:33:44:55");
    fptr.applySingleSettings();
}

@Override
public void onClick(View view) {
    if (view.getId() == R.id.btnShowSettings) {
        Intent intent = new Intent(getApplication(), SettingsActivity.class);

        // Передаем текущие настройки в SettingsActivity.
        // Если не передать - будет показана SettingsActivity с настройками по умолчанию
        intent.putExtra(SettingsActivity.DEVICE_SETTINGS, fptr.getSettings());
        startActivityForResult(intent, REQUEST_SHOW_SETTINGS);
    }
   else if (view.getId() == R.id.btnPrintReceipt) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                // Соединение с ККТ
                fptr.open();

                // Регистрация кассира
                fptr.setParam(1021, "Иванов И.И.");
                fptr.setParam(1203, "500100732259");
                fptr.operatorLogin();

                // Открытие чека (с передачей телефона получателя)
                fptr.setParam(IFptr.LIBFPTR_PARAM_RECEIPT_TYPE, IFptr.LIBFPTR_RT_SELL);
                fptr.setParam(1008, "+79161234567");
                fptr.openReceipt();

                // Регистрация позиции
                fptr.setParam(IFptr.LIBFPTR_PARAM_COMMODITY_NAME, "Чипсы LAYS");
                fptr.setParam(IFptr.LIBFPTR_PARAM_PRICE, 73.99);
                fptr.setParam(IFptr.LIBFPTR_PARAM_QUANTITY, 5);
                fptr.setParam(IFptr.LIBFPTR_PARAM_TAX_TYPE, IFptr.LIBFPTR_TAX_VAT10);
                fptr.setParam(1212, 1);
                fptr.setParam(1214, 7);
                fptr.registration();

                // Регистрация итога (отбрасываем копейки)
                fptr.setParam(IFptr.LIBFPTR_PARAM_SUM, 369.0);
                fptr.receiptTotal();

                // Оплата наличными
                fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_TYPE, IFptr.LIBFPTR_PT_CASH);
                fptr.setParam(IFptr.LIBFPTR_PARAM_PAYMENT_SUM, 1000);
                fptr.payment();

                // Закрытие чека
                fptr.closeReceipt();

                while (fptr.checkDocumentClosed() < 0) {
                    // Не удалось проверить состояние документа. Вывести пользователю текст ошибки, попросить устранить неполадку и повторить запрос
                    Log.d(TAG, fptr.errorDescription());
                    continue;
                }

                if (!fptr.getParamBool(IFptr.LIBFPTR_PARAM_DOCUMENT_CLOSED)) {
                    // Документ не закрылся. Требуется его отменить (если это чек) и сформировать заново
                    fptr.cancelReceipt();
                    return;
                }

                if (!fptr.getParamBool(IFptr.LIBFPTR_PARAM_DOCUMENT_PRINTED)) {
                    // Можно сразу вызвать метод допечатывания документа, он завершится с ошибкой, если это невозможно
                    while (fptr.continuePrint() < 0) {
                        // Если не удалось допечатать документ - показать пользователю ошибку и попробовать еще раз.
                        Log.d(TAG, String.format("Не удалось напечатать документ (Ошибка \"%s\"). Устраните неполадку и повторите.", fptr.errorDescription()));
                        continue;
                    }
                }

                // Запрос информации о закрытом чеке
                fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_LAST_DOCUMENT);
                fptr.fnQueryData();
                final String fiscalSign = fptr.getParamString(IFptr.LIBFPTR_PARAM_FISCAL_SIGN);
                final long documentNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(MainActivity.this,
                                String.format("ФПД: %s\nФД: %d",
                                        fiscalSign,
                                        documentNumber),
                                Toast.LENGTH_LONG).show();
                    }
                });

                // Формирование слипа ЕГАИС
                fptr.beginNonfiscalDocument();

                fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, "ИНН: 111111111111 КПП: 222222222");
                fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
                fptr.printText();

                fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, "КАССА: 1               СМЕНА: 11");
                fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
                fptr.printText();

                fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, "ЧЕК: 314  ДАТА: 20.11.2017 15:39");
                fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
                fptr.printText();

                fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE, "https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7");
                fptr.setParam(IFptr.LIBFPTR_PARAM_BARCODE_TYPE, IFptr.LIBFPTR_BT_QR);
                fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
                fptr.setParam(IFptr.LIBFPTR_PARAM_SCALE, 5);
                fptr.printBarcode();

                fptr.printText();

                fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT, "https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7");
                fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
                fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT_WRAP, IFptr.LIBFPTR_TW_CHARS);
                fptr.printText();

                fptr.printText();

                fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT,
                        "10 58 1c 85 bb 80 99 84 40 b1 4f 35 8a 35 3f 7c " +
                        "78 b0 0a ff cd 37 c1 8e ca 04 1c 7e e7 5d b4 85 " +
                        "ff d2 d6 b2 8d 7f df 48 d2 5d 81 10 de 6a 05 c9 " +
                        "81 74");
                fptr.setParam(IFptr.LIBFPTR_PARAM_ALIGNMENT, IFptr.LIBFPTR_ALIGNMENT_CENTER);
                fptr.setParam(IFptr.LIBFPTR_PARAM_TEXT_WRAP, IFptr.LIBFPTR_TW_WORDS);
                fptr.printText();

                fptr.endNonfiscalDocument();

                // Отчет о закрытии смены
                fptr.setParam(IFptr.LIBFPTR_PARAM_REPORT_TYPE, IFptr.LIBFPTR_RT_CLOSE_SHIFT);
                fptr.report();

                // Получение информации о неотправленных документах
                fptr.setParam(IFptr.LIBFPTR_PARAM_FN_DATA_TYPE, IFptr.LIBFPTR_FNDT_OFD_EXCHANGE_STATUS);
                fptr.fnQueryData();
                final long unsentCount = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENTS_COUNT);
                final long unsentFirstNumber = fptr.getParamInt(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER);
                DateFormat df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
                final String unsentDateTime = df.format(fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_DATE_TIME))
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(MainActivity.this,
                                String.format("Статус обмена с ОФД: %d неотправленно, первый: №%d (%s)",
                                        unsentCount,
                                        unsentFirstNumber,
                                        unsentDateTime),
                                Toast.LENGTH_LONG).show();
                   }
                });
            }
        }).start();
    }
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_SHOW_SETTINGS && resultCode == Activity.RESULT_OK) {
        // Записываем настройки в объект
        fptr.setSettings(data.getStringExtra(SettingsActivity.DEVICE_SETTINGS));
    }
} 

@Override
public void onBackPressed() {
    // Гарантировано чистим объект.
    // Вызов этого метода так же разрывает соединение, если оно установлено.
    fptr.destroy();
    super.onBackPressed();
}

}
|

|#import

import «fptr10/libfptr10_objc.h»

int main(int argc, const char * argv[]) {
@autoreleasepool {
IFptr *fptr = [[IFptr alloc] init];
NSLog(@»Version: %@», [fptr version]);

    [fptr setSingleSetting:LIBFPTR_SETTING_PORT value:[NSString stringWithFormat:@"%d", LIBFPTR_PORT_TCPIP]];
    [fptr setSingleSetting:LIBFPTR_SETTING_IPADDRESS value:@"192.168.2.30"];
    [fptr applySingleSettings];

    [fptr open];

    // Регистрация кассира
    [fptr setParam:1021 NSStringParam:@"Иванов И.И."];
    [fptr setParam:1203 NSStringParam:@"500100732259"];
    [fptr operatorLogin];

    // Открытие чека(с передачей телефона получателя)
    [fptr setParam:1008 NSStringParam:@"+79161234567"];
    [fptr setParam:LIBFPTR_PARAM_RECEIPT_TYPE intParam:LIBFPTR_RT_SELL];
    [fptr openReceipt];

    // Регистрация позиции
    [fptr setParam:LIBFPTR_PARAM_COMMODITY_NAME NSStringParam:@"Чипсы LAYS"];
    [fptr setParam:LIBFPTR_PARAM_PRICE doubleParam:73.99];
    [fptr setParam:LIBFPTR_PARAM_QUANTITY intParam:5];
    [fptr setParam:LIBFPTR_PARAM_TAX_TYPE intParam:LIBFPTR_TAX_VAT10];
    [fptr setParam:1212 intParam:1];
    [fptr setParam:1214 intParam:7];
    [fptr registration];

    // Регистрация итога (отбрасываем копейки)
    [fptr setParam:LIBFPTR_PARAM_SUM doubleParam:369.0];
    [fptr receiptTotal];

    // Оплата наличными
    [fptr setParam:LIBFPTR_PARAM_PAYMENT_TYPE intParam:LIBFPTR_PT_CASH];
    [fptr setParam:LIBFPTR_PARAM_PAYMENT_SUM doubleParam:1000];
    [fptr payment];

    // Закрытие чека
    [fptr closeReceipt];

    while ([fptr checkDocumentClosed] < 0) {
        // Не удалось проверить состояние документа. Вывести пользователю текст ошибки, попросить устранить неполадку и повторить запрос
        NSLog([fptr errorDescription]);
        continue;
    }

    if (![fptr getParamBool:LIBFPTR_PARAM_DOCUMENT_CLOSED]) {
        // Документ не закрылся. Требуется его отменить (если это чек) и сформировать заново
        [fptr cancelReceipt];
        return;
    }

    if (![fptr getParamBool:LIBFPTR_PARAM_DOCUMENT_PRINTED]) {
        // Можно сразу вызвать метод допечатывания документа, он завершится с ошибкой, если это невозможно
        while ([fptr continuePrint] < 0) {
            // Если не удалось допечатать документ - показать пользователю ошибку и попробовать еще раз.
            NSLog(@"Не удалось напечатать документ (Ошибка \"%@\"). Устраните неполадку и повторите.", [fptr errorDescription]);
            continue;
        }
    }

    // Запрос информации о закрытом чеке
    [fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_LAST_DOCUMENT];
    [fptr fnQueryData];
    NSLog(@"Fiscal Sign = %@", [fptr getParamString:LIBFPTR_PARAM_FISCAL_SIGN]);
    NSLog(@"Fiscal DocumentNumber = %d", [fptr getParamInt:LIBFPTR_PARAM_DOCUMENT_NUMBER]);

    // Формирование слипа ЕГАИС
    [fptr beginNonfiscalDocument];

    [fptr setParam:LIBFPTR_PARAM_TEXT NSStringParam:@"ИНН: 111111111111 КПП: 222222222"];
    [fptr setParam:LIBFPTR_PARAM_ALIGNMENT intParam:LIBFPTR_ALIGNMENT_CENTER];
    [fptr printText];

    [fptr setParam:LIBFPTR_PARAM_TEXT NSStringParam:@"КАССА: 1               СМЕНА: 11"];
    [fptr setParam:LIBFPTR_PARAM_ALIGNMENT intParam:LIBFPTR_ALIGNMENT_CENTER];
    [fptr printText];

    [fptr setParam:LIBFPTR_PARAM_TEXT NSStringParam:@"ЧЕК: 314  ДАТА: 20.11.2017 15:39"];
    [fptr setParam:LIBFPTR_PARAM_ALIGNMENT intParam:LIBFPTR_ALIGNMENT_CENTER];
    [fptr printText];

    [fptr setParam:LIBFPTR_PARAM_BARCODE NSStringParam:@"https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7"];
    [fptr setParam:LIBFPTR_PARAM_BARCODE_TYPE intParam:LIBFPTR_BT_QR];
    [fptr setParam:LIBFPTR_PARAM_ALIGNMENT intParam:LIBFPTR_ALIGNMENT_CENTER];
    [fptr setParam:LIBFPTR_PARAM_SCALE intParam:5];
    [fptr printBarcode];

    [fptr printText];

    [fptr setParam:LIBFPTR_PARAM_TEXT NSStringParam:@"https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7"];
    [fptr setParam:LIBFPTR_PARAM_ALIGNMENT intParam:LIBFPTR_ALIGNMENT_CENTER];
    [fptr setParam:LIBFPTR_PARAM_TEXT_WRAP intParam:LIBFPTR_TW_CHARS];
    [fptr printText];

    [fptr printText];

    [fptr setParam:LIBFPTR_PARAM_TEXT
                      NSStringParam:@"10 58 1c 85 bb 80 99 84 40 b1 4f 35 8a 35 3f 7c "
                      @"78 b0 0a ff cd 37 c1 8e ca 04 1c 7e e7 5d b4 85 "
                      @"ff d2 d6 b2 8d 7f df 48 d2 5d 81 10 de 6a 05 c9 "
                      @"81 74"];
    [fptr setParam:LIBFPTR_PARAM_ALIGNMENT intParam:LIBFPTR_ALIGNMENT_CENTER];
    [fptr setParam:LIBFPTR_PARAM_TEXT_WRAP intParam:LIBFPTR_TW_WORDS];
    [fptr printText];

    [fptr endNonfiscalDocument];

    // Отчет о закрытии смены
    [fptr setParam:LIBFPTR_PARAM_REPORT_TYPE intParam:LIBFPTR_RT_CLOSE_SHIFT];
    [fptr report];

    // Получение информации о неотправленных документах
    [fptr setParam:LIBFPTR_PARAM_FN_DATA_TYPE intParam:LIBFPTR_FNDT_OFD_EXCHANGE_STATUS];
    [fptr fnQueryData];
    int unsentCount = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENTS_COUNT];
    int unsentFirstNumber = [fptr getParamInt:LIBFPTR_PARAM_DOCUMENT_NUMBER];
    NSDate* unsentDateTime = [fptr getParamDateTime:LIBFPTR_PARAM_DATE_TIME];
    NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
    formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    NSLog(@"First unsent document = %d (%@)", unsentFirstNumber, [formatter stringFromDate:unsentDateTime]);
    NSLog(@"Unsent count = %d", unsentCount);

    [fptr close];
    [fptr release];
}
return 0;

}
|

|using System;
using Atol.Drivers10.Fptr;

namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
IFptr fptr = new Fptr();
fptr.setSingleSetting(Constants.LIBFPTR_SETTING_PORT, (Constants.LIBFPTR_PORT_USB).ToString());
fptr.applySingleSettings();

        // Соединение с ККТ
        fptr.open();

        // Регистрация кассира
        fptr.setParam(1021, "Иванов И.И.");
        fptr.setParam(1203, "500100732259");
        fptr.operatorLogin();

        // Открытие чека (с передачей телефона получателя)
        fptr.setParam(Constants.LIBFPTR_PARAM_RECEIPT_TYPE, Constants.LIBFPTR_RT_SELL);
        fptr.setParam(1008, "+79161234567");
        fptr.openReceipt();

        // Регистрация позиции
        fptr.setParam(Constants.LIBFPTR_PARAM_COMMODITY_NAME, "Чипсы LAYS");
        fptr.setParam(Constants.LIBFPTR_PARAM_PRICE, 73.99);
        fptr.setParam(Constants.LIBFPTR_PARAM_QUANTITY, 5);
        fptr.setParam(Constants.LIBFPTR_PARAM_TAX_TYPE, Constants.LIBFPTR_TAX_VAT10);
        fptr.setParam(1212, 1);
        fptr.setParam(1214, 7);
        fptr.registration();

        // Регистрация итога (отбрасываем копейки)
        fptr.setParam(Constants.LIBFPTR_PARAM_SUM, 369.0);
        fptr.receiptTotal();

        // Оплата наличными
        fptr.setParam(Constants.LIBFPTR_PARAM_PAYMENT_TYPE, Constants.LIBFPTR_PT_CASH);
        fptr.setParam(Constants.LIBFPTR_PARAM_PAYMENT_SUM, 1000);
        fptr.payment();

        // Закрытие чека
        fptr.closeReceipt();

        while (fptr.checkDocumentClosed() < 0)
        {
            // Не удалось проверить состояние документа. Вывести пользователю текст ошибки, попросить устранить неполадку и повторить запрос
            Console.WriteLine(fptr.errorDescription());
            continue;
        }

        if (!fptr.getParamBool(Constants.LIBFPTR_PARAM_DOCUMENT_CLOSED))
        {
            // Документ не закрылся. Требуется его отменить (если это чек) и сформировать заново
            fptr.cancelReceipt();
            return;
        }

        if (!fptr.getParamBool(Constants.LIBFPTR_PARAM_DOCUMENT_PRINTED))
        {
            // Можно сразу вызвать метод допечатывания документа, он завершится с ошибкой, если это невозможно
            while (fptr.continuePrint() < 0)
            {
                // Если не удалось допечатать документ - показать пользователю ошибку и попробовать еще раз.
                Console.WriteLine(String.Format("Не удалось напечатать документ (Ошибка \"{0}\"). Устраните неполадку и повторите.", fptr.errorDescription()));
                continue;
            }
        }

        // Запрос информации о закрытом чеке
        fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_LAST_DOCUMENT);
        fptr.fnQueryData();
        Console.WriteLine(String.Format("Fiscal Sign = {0}", fptr.getParamString(Constants.LIBFPTR_PARAM_FISCAL_SIGN)));
        Console.WriteLine(String.Format("Fiscal Document Number = {0}", fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER)));

        // Формирование слипа ЕГАИС
        fptr.beginNonfiscalDocument();

        fptr.setParam(Constants.LIBFPTR_PARAM_TEXT, "ИНН: 111111111111 КПП: 222222222");
        fptr.setParam(Constants.LIBFPTR_PARAM_ALIGNMENT, Constants.LIBFPTR_ALIGNMENT_CENTER);
        fptr.printText();

        fptr.setParam(Constants.LIBFPTR_PARAM_TEXT, "КАССА: 1               СМЕНА: 11");
        fptr.setParam(Constants.LIBFPTR_PARAM_ALIGNMENT, Constants.LIBFPTR_ALIGNMENT_CENTER);
        fptr.printText();

        fptr.setParam(Constants.LIBFPTR_PARAM_TEXT, "ЧЕК: 314  ДАТА: 20.11.2017 15:39");
        fptr.setParam(Constants.LIBFPTR_PARAM_ALIGNMENT, Constants.LIBFPTR_ALIGNMENT_CENTER);
        fptr.printText();

        fptr.setParam(Constants.LIBFPTR_PARAM_BARCODE, "https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7");
        fptr.setParam(Constants.LIBFPTR_PARAM_BARCODE_TYPE, Constants.LIBFPTR_BT_QR);
        fptr.setParam(Constants.LIBFPTR_PARAM_ALIGNMENT, Constants.LIBFPTR_ALIGNMENT_CENTER);
        fptr.setParam(Constants.LIBFPTR_PARAM_SCALE, 5);
        fptr.printBarcode();

        fptr.printText();

        fptr.setParam(Constants.LIBFPTR_PARAM_TEXT, "https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7");
        fptr.setParam(Constants.LIBFPTR_PARAM_ALIGNMENT, Constants.LIBFPTR_ALIGNMENT_CENTER);
        fptr.setParam(Constants.LIBFPTR_PARAM_TEXT_WRAP, Constants.LIBFPTR_TW_CHARS);
        fptr.printText();

        fptr.printText();

        fptr.setParam(Constants.LIBFPTR_PARAM_TEXT,
                "10 58 1c 85 bb 80 99 84 40 b1 4f 35 8a 35 3f 7c " +
                "78 b0 0a ff cd 37 c1 8e ca 04 1c 7e e7 5d b4 85 " +
                "ff d2 d6 b2 8d 7f df 48 d2 5d 81 10 de 6a 05 c9 " +
                "81 74");
        fptr.setParam(Constants.LIBFPTR_PARAM_ALIGNMENT, Constants.LIBFPTR_ALIGNMENT_CENTER);
        fptr.setParam(Constants.LIBFPTR_PARAM_TEXT_WRAP, Constants.LIBFPTR_TW_WORDS);
        fptr.printText();

        fptr.endNonfiscalDocument();

        // Отчет о закрытии смены
        fptr.setParam(Constants.LIBFPTR_PARAM_REPORT_TYPE, Constants.LIBFPTR_RT_CLOSE_SHIFT);
        fptr.report();

        // Получение информации о неотправленных документах
        fptr.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_OFD_EXCHANGE_STATUS);
        fptr.fnQueryData();
        Console.WriteLine(String.Format("Unsent documents count = {0}", fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENTS_COUNT)));
        Console.WriteLine(String.Format("First unsent document number = {0}", fptr.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER)));
        Console.WriteLine(String.Format("First unsent document date = {0}", (fptr.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME)).ToString("yyyy.MM.dd HH:mm:ss")));

        // Завершение работы
        fptr.close();
        Console.ReadKey();
    }
}

}
|

|uses
ActiveX, Dialogs, SysUtils, ComObj;

var
fptr: OleVariant;

begin
CoInitialize(nil);
fptr := CreateOleObject(‘AddIn.Fptr10’);
fptr.setSingleSetting(fptr.LIBFPTR_SETTING_PORT, IntToStr(fptr.LIBFPTR_PORT_USB));
fptr.applySingleSettings;

// Соединение с ККТ
fptr.open;

// Регистрация кассира
fptr.setParam(1021, 'Иванов И.И.');
fptr.setParam(1203, '500100732259');
fptr.operatorLogin;

// Открытие чека (с передачей телефона получателя)
fptr.setParam(fptr.LIBFPTR_PARAM_RECEIPT_TYPE, fptr.LIBFPTR_RT_SELL);
fptr.setParam(1008, '+79161234567');
fptr.openReceipt;

// Регистрация позиции
fptr.setParam(fptr.LIBFPTR_PARAM_COMMODITY_NAME, 'Чипсы LAYS');
fptr.setParam(fptr.LIBFPTR_PARAM_PRICE, 73.99);
fptr.setParam(fptr.LIBFPTR_PARAM_QUANTITY, 5);
fptr.setParam(fptr.LIBFPTR_PARAM_TAX_TYPE, fptr.LIBFPTR_TAX_VAT10);
fptr.setParam(1212, 1);
fptr.setParam(1214, 7);
fptr.registration;

// Регистрация итога (отбрасываем копейки)
fptr.setParam(fptr.LIBFPTR_PARAM_SUM, 369.0);
fptr.receiptTotal;

// Оплата наличными
fptr.setParam(fptr.LIBFPTR_PARAM_PAYMENT_TYPE, fptr.LIBFPTR_PT_CASH);
fptr.setParam(fptr.LIBFPTR_PARAM_PAYMENT_SUM, 1000);
fptr.payment;

// Закрытие чека
fptr.closeReceipt;
showmessage(fptr.errorDescription);
While fptr.checkDocumentClosed < 0 do
begin
    // Не удалось проверить состояние документа. Вывести пользователю текст ошибки, попросить устранить неполадку и повторить запрос
    showmessage(fptr.errorDescription);
    Continue;
end;

if not fptr.getParamBool(fptr.LIBFPTR_PARAM_DOCUMENT_CLOSED) then
begin
    // Документ не закрылся. Требуется его отменить (если это чек) и сформировать заново
    fptr.cancelReceipt;
    Exit;
end;

if not fptr.getParamBool(fptr.LIBFPTR_PARAM_DOCUMENT_PRINTED) then
begin
    // Можно сразу вызвать метод допечатывания документа, он завершится с ошибкой, если это невозможно
    While fptr.continuePrint < 0 do
    begin
        // Если не удалось допечатать документ - показать пользователю ошибку и попробовать еще раз.
        showmessage('Не удалось напечатать документ (Ошибка "' + fptr.errorDescription + '"). Устраните неполадку и повторите.');
        Continue;
    end;
end;

// Запрос информации о закрытом чеке
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_LAST_DOCUMENT);
fptr.fnQueryData;
showmessage('Fiscal Sign = ' + fptr.getParamString(fptr.LIBFPTR_PARAM_FISCAL_SIGN));
showmessage('Fiscal Document Number = ' + IntToStr(fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER)));

// Формирование слипа ЕГАИС
fptr.beginNonfiscalDocument;

fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, 'ИНН: 111111111111 КПП: 222222222');
fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.printText;

fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, 'КАССА: 1               СМЕНА: 11');
fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.printText;

fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, 'ЧЕК: 314  ДАТА: 20.11.2017 15:39');
fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.printText;

fptr.setParam(fptr.LIBFPTR_PARAM_BARCODE, 'https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7');
fptr.setParam(fptr.LIBFPTR_PARAM_BARCODE_TYPE, fptr.LIBFPTR_BT_QR);
fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(fptr.LIBFPTR_PARAM_SCALE, 5);
fptr.printBarcode;

fptr.printText;

fptr.setParam(fptr.LIBFPTR_PARAM_TEXT, 'https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7');
fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(fptr.LIBFPTR_PARAM_TEXT_WRAP, fptr.LIBFPTR_TW_CHARS);
fptr.printText;

fptr.printText;

fptr.setParam(fptr.LIBFPTR_PARAM_TEXT,
        '10 58 1c 85 bb 80 99 84 40 b1 4f 35 8a 35 3f 7c ' +
        '78 b0 0a ff cd 37 c1 8e ca 04 1c 7e e7 5d b4 85 ' +
        'ff d2 d6 b2 8d 7f df 48 d2 5d 81 10 de 6a 05 c9 ' +
        '81 74');
fptr.setParam(fptr.LIBFPTR_PARAM_ALIGNMENT, fptr.LIBFPTR_ALIGNMENT_CENTER);
fptr.setParam(fptr.LIBFPTR_PARAM_TEXT_WRAP, fptr.LIBFPTR_TW_WORDS);
fptr.printText;

fptr.endNonfiscalDocument;

// Отчет о закрытии смены
fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_CLOSE_SHIFT);
fptr.report;

// Получение информации о неотправленных документах
fptr.setParam(fptr.LIBFPTR_PARAM_FN_DATA_TYPE, fptr.LIBFPTR_FNDT_OFD_EXCHANGE_STATUS);
fptr.fnQueryData;
showmessage('Unsent documents count = ' + IntToStr(fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENTS_COUNT)));
showmessage('First unsent document number = ' + IntToStr(fptr.getParamInt(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER)));
showmessage('First unsent document date = ' + DateTimeToStr(fptr.getParamDateTime(fptr.LIBFPTR_PARAM_DATE_TIME)));

// Завершение работы
fptr.close;

end.
|

|import (
«log»
«strconv»

"atol.ru/drivers10/fptr"

)

func main() {
fptr := fptr10.New()
defer fptr.Destroy()

fptr.SetSingleSetting(fptr10.LIBFPTR_SETTING_PORT, strconv.Itoa(fptr10.LIBFPTR_PORT_USB))
if err := fptr.ApplySingleSettings(); err != nil {
    log.Println(err)
    return
}

// Соединение с ККТ
if err := fptr.Open(); err != nil {
    log.Println(err)
    return
}

// Регистрация кассира
fptr.SetParam(1021, "Иванов И.И.")
fptr.SetParam(1203, "500100732259")
if err := fptr.OperatorLogin(); err != nil {
    log.Println(err)
    return
}

// Открытие чека (с передачей телефона получателя)
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECEIPT_TYPE, fptr10.LIBFPTR_RT_SELL)
fptr.SetParam(1008, "+79161234567")
if err := fptr.OpenReceipt(); err != nil {
    log.Println(err)
    return
}

// Регистрация позиции
fptr.SetParam(fptr10.LIBFPTR_PARAM_COMMODITY_NAME, "Чипсы LAYS")
fptr.SetParam(fptr10.LIBFPTR_PARAM_PRICE, 73.99)
fptr.SetParam(fptr10.LIBFPTR_PARAM_QUANTITY, 5)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TAX_TYPE, fptr10.LIBFPTR_TAX_VAT10)
fptr.SetParam(1212, 1)
fptr.SetParam(1214, 7)
if err := fptr.Registration(); err != nil {
    log.Println(err)
    return
}

// Регистрация итога (отбрасываем копейки)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SUM, 369.0)
if err := fptr.ReceiptTotal(); err != nil {
    log.Println(err)
    return
}

// Оплата наличными
fptr.SetParam(fptr10.LIBFPTR_PARAM_PAYMENT_TYPE, fptr10.LIBFPTR_PT_CASH)
fptr.SetParam(fptr10.LIBFPTR_PARAM_PAYMENT_SUM, 1000)
if err := fptr.Payment(); err != nil {
    log.Println(err)
    return
}

// Закрытие чека
_ = fptr.CloseReceipt()
for {
    err := fptr.CheckDocumentClosed()
    if err != nil {
        // Не удалось проверить состояние документа. Вывести пользователю текст ошибки, попросить устранить неполадку и повторить запрос
        log.Println(fptr.ErrorDescription())
        continue
    } else {
        break
    }
}

if !fptr.GetParamBool(fptr10.LIBFPTR_PARAM_DOCUMENT_CLOSED) {
    // Документ не закрылся. Требуется его отменить (если это чек) и сформировать заново
    _ = fptr.CancelReceipt()
    return
}

if !fptr.GetParamBool(fptr10.LIBFPTR_PARAM_DOCUMENT_PRINTED) {
    // Можно сразу вызвать метод допечатывания документа, он завершится с ошибкой, если это невозможно
    for {
        if err := fptr.ContinuePrint(); err != nil {
            // Если не удалось допечатать документ - показать пользователю ошибку и попробовать еще раз.
            log.Printf("Не удалось напечатать документ (Ошибка \"%v\"). Устраните неполадку и повторите.", fptr.ErrorDescription())
            continue
        }
    }
}

// Запрос информации о закрытом чеке
fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_LAST_DOCUMENT)
if err := fptr.FnQueryData(); err != nil {
    log.Println(err)
    return
}
log.Printf("Fiscal Sign = %v", fptr.GetParamString(fptr10.LIBFPTR_PARAM_FISCAL_SIGN))
log.Printf("Fiscal Document Number = %v", fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENT_NUMBER))

// Формирование слипа ЕГАИС
if err := fptr.BeginNonfiscalDocument(); err != nil {
    log.Println(err)
    return
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_TEXT, "ИНН: 111111111111 КПП: 222222222")
fptr.SetParam(fptr10.LIBFPTR_PARAM_ALIGNMENT, fptr10.LIBFPTR_ALIGNMENT_CENTER)
if err := fptr.PrintText(); err != nil {
    log.Println(err)
    return
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_TEXT, "КАССА: 1               СМЕНА: 11")
fptr.SetParam(fptr10.LIBFPTR_PARAM_ALIGNMENT, fptr10.LIBFPTR_ALIGNMENT_CENTER)
if err := fptr.PrintText(); err != nil {
    log.Println(err)
    return
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_TEXT, "ЧЕК: 314  ДАТА: 20.11.2017 15:39")
fptr.SetParam(fptr10.LIBFPTR_PARAM_ALIGNMENT, fptr10.LIBFPTR_ALIGNMENT_CENTER)
if err := fptr.PrintText(); err != nil {
    log.Println(err)
    return
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_BARCODE, "https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7")
fptr.SetParam(fptr10.LIBFPTR_PARAM_BARCODE_TYPE, fptr10.LIBFPTR_BT_QR)
fptr.SetParam(fptr10.LIBFPTR_PARAM_ALIGNMENT, fptr10.LIBFPTR_ALIGNMENT_CENTER)
fptr.SetParam(fptr10.LIBFPTR_PARAM_SCALE, 5)
if err := fptr.PrintBarcode(); err != nil {
    log.Println(err)
    return
}

if err := fptr.PrintText(); err != nil {
    log.Println(err)
    return
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_TEXT, "https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7")
fptr.SetParam(fptr10.LIBFPTR_PARAM_ALIGNMENT, fptr10.LIBFPTR_ALIGNMENT_CENTER)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TEXT_WRAP, fptr10.LIBFPTR_TW_CHARS)
if err := fptr.PrintText(); err != nil {
    log.Println(err)
    return
}

if err := fptr.PrintText(); err != nil {
    log.Println(err)
    return
}

fptr.SetParam(fptr10.LIBFPTR_PARAM_TEXT,
    "10 58 1c 85 bb 80 99 84 40 b1 4f 35 8a 35 3f 7c "+
        "78 b0 0a ff cd 37 c1 8e ca 04 1c 7e e7 5d b4 85 "+
        "ff d2 d6 b2 8d 7f df 48 d2 5d 81 10 de 6a 05 c9 "+
        "81 74")
fptr.SetParam(fptr10.LIBFPTR_PARAM_ALIGNMENT, fptr10.LIBFPTR_ALIGNMENT_CENTER)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TEXT_WRAP, fptr10.LIBFPTR_TW_WORDS)
if err := fptr.PrintText(); err != nil {
    log.Println(err)
    return
}

if err := fptr.EndNonfiscalDocument(); err != nil {
    log.Println(err)
    return
}

// Отчет о закрытии смены
fptr.SetParam(fptr10.LIBFPTR_PARAM_REPORT_TYPE, fptr10.LIBFPTR_RT_CLOSE_SHIFT)
if err := fptr.Report(); err != nil {
    log.Println(err)
    return
}

// Получение информации о неотправленных документах
fptr.SetParam(fptr10.LIBFPTR_PARAM_FN_DATA_TYPE, fptr10.LIBFPTR_FNDT_OFD_EXCHANGE_STATUS)
if err := fptr.FnQueryData(); err != nil {
    log.Println(err)
    return
}
log.Printf("Unsent documents count = %v", fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENTS_COUNT))
log.Printf("First unsent document number = %v", fptr.GetParamInt(fptr10.LIBFPTR_PARAM_DOCUMENT_NUMBER))
log.Printf("First unsent document date = %v", fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_DATE_TIME))

// Завершение работы
if err := fptr.Close(); err != nil {
    log.Println(err)
    return
}

}
|

|// Регистрация кассира
Fptr.setParam(1021, «Иванов И.И.»);
Fptr.setParam(1203, «500100732259»);
Fptr.operatorLogin();

// Открытие чека (с передачей телефона получателя)
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECEIPT_TYPE, Fptr.LIBFPTR_RT_SELL);
Fptr.setParam(1008, «+79161234567»);
Fptr.openReceipt();

// Регистрация позиции
Fptr.setParam(Fptr.LIBFPTR_PARAM_COMMODITY_NAME, «Чипсы LAYS»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_PRICE, 73.99);
Fptr.setParam(Fptr.LIBFPTR_PARAM_QUANTITY, 5);
Fptr.setParam(Fptr.LIBFPTR_PARAM_TAX_TYPE, Fptr.LIBFPTR_TAX_VAT10);
Fptr.setParam(1212, 1);
Fptr.setParam(1214, 7);
Fptr.registration();

// Регистрация итога (отбрасываем копейки)
Fptr.setParam(Fptr.LIBFPTR_PARAM_SUM, 369.0);
Fptr.receiptTotal();

// Оплата наличными
Fptr.setParam(Fptr.LIBFPTR_PARAM_PAYMENT_TYPE, Fptr.LIBFPTR_PT_CASH);
Fptr.setParam(Fptr.LIBFPTR_PARAM_PAYMENT_SUM, 1000);
Fptr.payment();

// Закрытие чека
Fptr.closeReceipt();

while (Fptr.checkDocumentClosed() < 0) {
// Не удалось проверить состояние документа. Вывести пользователю текст ошибки, попросить устранить неполадку и повторить запрос
Console.WriteLine(Fptr.errorDescription());
continue;
}

if (!Fptr.getParamBool(Fptr.LIBFPTR_PARAM_DOCUMENT_CLOSED)) {
// Документ не закрылся. Требуется его отменить (если это чек) и сформировать заново
Fptr.cancelReceipt();
return;
}

if (!Fptr.getParamBool(Fptr.LIBFPTR_PARAM_DOCUMENT_PRINTED)) {
// Можно сразу вызвать метод допечатывания документа, он завершится с ошибкой, если это невозможно
while (Fptr.continuePrint() < 0) {
// Если не удалось допечатать документ — показать пользователю ошибку и попробовать еще раз.
Fptr.logWrite(‘FiscalPrinter’, Fptr.LIBFPTR_LOG_ERROR, «Не удалось напечатать документ (Ошибка \»» + fptr.errorDescription() + «\»). Устраните неполадку и повторите.»);
continue;
}
}

// Запрос информации о закрытом чеке
Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_LAST_DOCUMENT);
Fptr.fnQueryData();
Fptr.logWrite(«FiscalPrinter», Fptr.LIBFPTR_LOG_INFO, «Fiscal Sign = » + Fptr.getParamString(Fptr.LIBFPTR_PARAM_FISCAL_SIGN));
Fptr.logWrite(«FiscalPrinter», Fptr.LIBFPTR_LOG_INFO, «Fiscal Document Number = » + Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER));

// Формирование слипа ЕГАИС
Fptr.beginNonfiscalDocument();

Fptr.setParam(Fptr.LIBFPTR_PARAM_TEXT, «ИНН: 111111111111 КПП: 222222222»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_ALIGNMENT, Fptr.LIBFPTR_ALIGNMENT_CENTER);
Fptr.printText();

Fptr.setParam(Fptr.LIBFPTR_PARAM_TEXT, «КАССА: 1 СМЕНА: 11»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_ALIGNMENT, Fptr.LIBFPTR_ALIGNMENT_CENTER);
Fptr.printText();

Fptr.setParam(Fptr.LIBFPTR_PARAM_TEXT, «ЧЕК: 314 ДАТА: 20.11.2017 15:39»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_ALIGNMENT, Fptr.LIBFPTR_ALIGNMENT_CENTER);
Fptr.printText();

Fptr.setParam(Fptr.LIBFPTR_PARAM_BARCODE, «https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_BARCODE_TYPE, Fptr.LIBFPTR_BT_QR);
Fptr.setParam(Fptr.LIBFPTR_PARAM_ALIGNMENT, Fptr.LIBFPTR_ALIGNMENT_CENTER);
Fptr.setParam(Fptr.LIBFPTR_PARAM_SCALE, 5);
Fptr.printBarcode();

Fptr.printText();

Fptr.setParam(Fptr.LIBFPTR_PARAM_TEXT, «https://check.egais.ru?id=cf1b1096-3cbc-11e7-b3c1-9b018b2ba3f7»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_ALIGNMENT, Fptr.LIBFPTR_ALIGNMENT_CENTER);
Fptr.setParam(Fptr.LIBFPTR_PARAM_TEXT_WRAP, Fptr.LIBFPTR_TW_CHARS);
Fptr.printText();

Fptr.printText();

Fptr.setParam(Fptr.LIBFPTR_PARAM_TEXT,
«10 58 1c 85 bb 80 99 84 40 b1 4f 35 8a 35 3f 7c » +
«78 b0 0a ff cd 37 c1 8e ca 04 1c 7e e7 5d b4 85 » +
«ff d2 d6 b2 8d 7f df 48 d2 5d 81 10 de 6a 05 c9 » +
«81 74»);
Fptr.setParam(Fptr.LIBFPTR_PARAM_ALIGNMENT, Fptr.LIBFPTR_ALIGNMENT_CENTER);
Fptr.setParam(Fptr.LIBFPTR_PARAM_TEXT_WRAP, Fptr.LIBFPTR_TW_WORDS);
Fptr.printText();

Fptr.endNonfiscalDocument();

// Отчет о закрытии смены
Fptr.setParam(Fptr.LIBFPTR_PARAM_REPORT_TYPE, Fptr.LIBFPTR_RT_CLOSE_SHIFT);
Fptr.report();

// Получение информации о неотправленных документах
Fptr.setParam(Fptr.LIBFPTR_PARAM_FN_DATA_TYPE, Fptr.LIBFPTR_FNDT_OFD_EXCHANGE_STATUS);
Fptr.fnQueryData();
Fptr.logWrite(«FiscalPrinter», Fptr.LIBFPTR_LOG_INFO, «Unsent documents count = » + Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENTS_COUNT));
Fptr.logWrite(«FiscalPrinter», Fptr.LIBFPTR_LOG_INFO, «First unsent document number = » + Fptr.getParamInt(Fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER));
Fptr.logWrite(«FiscalPrinter», Fptr.LIBFPTR_LOG_INFO, «First unsent document date = » + Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_DATE_TIME).toString());
|

Пример полного цикла работы с драйвером, состоящий из этапов:

  • подключение к ККТ по USB;
  • формирование электронного чека с передачей дополнительных реквизитов;
  • получение информации о чеке;
  • формирование слипа ЕГАИС;
  • получение сменного итога по продажам;
  • снятие Z-отчета;
  • получение информации о количестве неотправленных в ОФД документов. Алгоритмы Чтение документа из ФН Пример чтения документа №8 и вывода его на экран

|#include

include

include

include

include

include

include «libfptr10.h»

std::wstring getStr(libfptr_handle fptr, int paramID)
{
std::vector str(32);
int size = libfptr_get_param_str(fptr, paramID, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, paramID, &str[0], str.size());
}
return std::wstring(&str[0]);
}

std::vector getByteArray(libfptr_handle fptr, int paramID)
{
std::vector bfr(128);
int size = libfptr_get_param_bytearray(fptr, paramID, &bfr[0], bfr.size());
if (size > bfr.size())
{
bfr.resize(size);
libfptr_get_param_bytearray(fptr, paramID, &bfr[0], bfr.size());
}
bfr.resize(size);
return bfr;
}

int readNextRecord(libfptr_handle fptr, const std::wstring &recordsID)
{
libfptr_set_param_str(fptr, LIBFPTR_PARAM_RECORDS_ID, recordsID.c_str());
return libfptr_read_next_record(fptr);
}

int endReadRecords(libfptr_handle fptr, const std::wstring &recordsID)
{
libfptr_set_param_str(fptr, LIBFPTR_PARAM_RECORDS_ID, recordsID.c_str());
return libfptr_end_read_records(fptr);
}

std::wstring printable(int offset, const std::wstring &tagName, uint tagNumber,
const std::wstring &tagValue, bool newLineBeforeValue, bool newLineAfterValue)
{
std::wstringstream ss;
while (offset > 0)
{
ss << L» «;
—offset;
}
ss << tagName
<< L» (» << tagNumber << L»): «
<< (newLineBeforeValue ? L»\n» : L»»)
<< tagValue
<< (newLineAfterValue ? L»\n» : L»») ;
return ss.str();
}

std::wstring parse(libfptr_handle fptr, int printOffset, const std::wstring &tagName,
const std::vector &tagValue, uint tagNumber, uint tagType)
{
switch (tagType)
{
case LIBFPTR_TAG_TYPE_BITS:
case LIBFPTR_TAG_TYPE_BYTE:
case LIBFPTR_TAG_TYPE_UINT_16:
case LIBFPTR_TAG_TYPE_UINT_32:
return printable(printOffset, tagName, tagNumber, std::to_wstring(libfptr_get_param_int(fptr, LIBFPTR_PARAM_TAG_VALUE)), false, true);
case LIBFPTR_TAG_TYPE_VLN:
case LIBFPTR_TAG_TYPE_FVLN:
return printable(printOffset, tagName, tagNumber, std::to_wstring(libfptr_get_param_double(fptr, LIBFPTR_PARAM_TAG_VALUE)), false, true);
case LIBFPTR_TAG_TYPE_BOOL:
return printable(printOffset, tagName, tagNumber, std::to_wstring(libfptr_get_param_bool(fptr, LIBFPTR_PARAM_TAG_VALUE)), false, true);
case LIBFPTR_TAG_TYPE_ARRAY:
{
std::vector v = getByteArray(fptr, LIBFPTR_PARAM_TAG_VALUE);
std::wstringstream ss;
for (auto e : v) {
ss << std::hex << std::setw(2) << std::setfill(L’0′) << (uint)e;
}
return printable(printOffset,
tagName,
tagNumber,
ss.str(),
false) + L»\n»;
}
case LIBFPTR_TAG_TYPE_STRING:
return printable(printOffset, tagName, tagNumber, getStr(fptr, LIBFPTR_PARAM_TAG_VALUE), false, true);
case LIBFPTR_TAG_TYPE_UNIX_TIME:
{
int y, m, d, H, M, S;
libfptr_get_param_datetime(fptr, LIBFPTR_PARAM_TAG_VALUE, &y, &m, &d, &H, &M, &S);
wchar_t dt[20] = {0};
swprintf(dt, 20, L»%04d.%02d.%02d %02d:%02d:%02d», y, m, d, H, M, S);
return printable(printOffset,
tagName,
tagNumber,
dt,
false, true);
}
case LIBFPTR_TAG_TYPE_STLV:
{
libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_PARSE_COMPLEX_ATTR);
libfptr_set_param_bytearray(fptr,
LIBFPTR_PARAM_TAG_VALUE,
&tagValue[0],
tagValue.size());
libfptr_begin_read_records(fptr);
std::wstring recordsID = getStr(fptr, LIBFPTR_PARAM_RECORDS_ID);

        std::wstringstream result;
        while (readNextRecord(fptr, recordsID) == 0)
        {
            result << parse(fptr, printOffset + 1,
                            getStr(fptr, LIBFPTR_PARAM_TAG_NAME),
                            getByteArray(fptr, LIBFPTR_PARAM_TAG_VALUE),
                            libfptr_get_param_int(fptr, LIBFPTR_PARAM_TAG_NUMBER),
                            libfptr_get_param_int(fptr, LIBFPTR_PARAM_TAG_TYPE));
        }
        return printable(printOffset,
                         tagName,
                         tagNumber,
                         result.str(),
                         true, false);
    }
    default:
        return L"";
}

}

int main()
{
libfptr_handle fptr;
libfptr_create(&fptr);

libfptr_open(fptr);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_FN_DOCUMENT_TLVS);
libfptr_set_param_int(fptr, LIBFPTR_PARAM_DOCUMENT_NUMBER, 8);
libfptr_begin_read_records(fptr);
std::wstring recordsID = getStr(fptr, LIBFPTR_PARAM_RECORDS_ID);

std::wstringstream result;
while (readNextRecord(fptr, recordsID) == 0)
{
    result << parse(fptr, 0,
                    getStr(fptr, LIBFPTR_PARAM_TAG_NAME),
                    getByteArray(fptr, LIBFPTR_PARAM_TAG_VALUE),
                    libfptr_get_param_int(fptr, LIBFPTR_PARAM_TAG_NUMBER),
                    libfptr_get_param_int(fptr, LIBFPTR_PARAM_TAG_TYPE));
}

endReadRecords(fptr, recordsID);

std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
std::cout << converter.to_bytes(result.str()) << std::endl;

libfptr_close(fptr);
libfptr_destroy(&fptr);

return 0;

}
|

|#include

include

include

include

include

include

include «fptr10.h»

using namespace Atol::Fptr;

int readNextRecord(Fptr &fptr, const std::wstring &recordsID)
{
fptr.setParam(LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

int endReadRecords(Fptr &fptr, const std::wstring &recordsID)
{
fptr.setParam(LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.endReadRecords();
}

std::wstring printable(int offset, const std::wstring &tagName, uint tagNumber,
const std::wstring &tagValue, bool newLineBeforeValue, bool newLineAfterValue)
{
std::wstringstream ss;
while (offset > 0)
{
ss << L» «;
—offset;
}
ss << tagName
<< L» (» << tagNumber << L»): «
<< (newLineBeforeValue ? L»\n» : L»»)
<< tagValue
<< (newLineAfterValue ? L»\n» : L»») ;
return ss.str();
}

std::wstring parse(Fptr &fptr, int printOffset, const std::wstring &tagName,
const std::vector &tagValue, uint tagNumber, uint tagType)
{
switch (tagType)
{
case LIBFPTR_TAG_TYPE_BITS:
case LIBFPTR_TAG_TYPE_BYTE:
case LIBFPTR_TAG_TYPE_UINT_16:
case LIBFPTR_TAG_TYPE_UINT_32:
return printable(printOffset, tagName, tagNumber, std::to_wstring(fptr.getParamInt(LIBFPTR_PARAM_TAG_VALUE)), false, true);
case LIBFPTR_TAG_TYPE_VLN:
case LIBFPTR_TAG_TYPE_FVLN:
return printable(printOffset, tagName, tagNumber, std::to_wstring(fptr.getParamDouble(LIBFPTR_PARAM_TAG_VALUE)), false, true);
case LIBFPTR_TAG_TYPE_BOOL:
return printable(printOffset, tagName, tagNumber, std::to_wstring(fptr.getParamBool(LIBFPTR_PARAM_TAG_VALUE)), false, true);
case LIBFPTR_TAG_TYPE_ARRAY:
{
std::vector v = fptr.getParamByteArray(LIBFPTR_PARAM_TAG_VALUE);
std::wstringstream ss;
for (auto e : v) {
ss << std::hex << std::setw(2) << std::setfill(L’0′) << (uint)e;
}
return printable(printOffset,
tagName,
tagNumber,
ss.str(),
false) + L»\n»;
}
case LIBFPTR_TAG_TYPE_STRING:
return printable(printOffset, tagName, tagNumber, fptr.getParamStr(LIBFPTR_PARAM_TAG_VALUE), false, true);
case LIBFPTR_TAG_TYPE_UNIX_TIME:
{
std::tm dt = fptr.getParamDateTime(LIBFPTR_PARAM_TAG_VALUE);
wchar_t dtStr[20] = {0};
strftime(dtStr, wcslen(dtStr), L»%Y.%n.%d %X», &dt);
return printable(printOffset,
tagName,
tagNumber,
dt,
false, true);
}
case LIBFPTR_TAG_TYPE_STLV:
{
fptr.setParam(LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_PARSE_COMPLEX_ATTR);
fptr.setParam(LIBFPTR_PARAM_TAG_VALUE, tagValue);
fptr.beginReadRecords();
std::wstring recordsID = fptr.getParamStr(LIBFPTR_PARAM_RECORDS_ID);

        std::wstringstream result;
        while (readNextRecord(fptr, recordsID) == 0)
        {
            result << parse(fptr, printOffset + 1,
                            fptr.getParamStr(LIBFPTR_PARAM_TAG_NAME),
                            fptr.getParamByteArray(LIBFPTR_PARAM_TAG_VALUE),
                            fptr.getParamInt(LIBFPTR_PARAM_TAG_NUMBER),
                            fptr.getParamInt(LIBFPTR_PARAM_TAG_TYPE));
        }
        return printable(printOffset,
                         tagName,
                         tagNumber,
                         result.str(),
                         true, false);
    }
    default:
        return L"";
}

}

int main()
{
Fptr fptr;

fptr.open();

fptr.setParam(LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_RT_FN_DOCUMENT_TLVS);
fptr.setParam(LIBFPTR_PARAM_DOCUMENT_NUMBER, 8);
fptr.beginReadRecords();
std::wstring recordsID = fptr.getParamStr(LIBFPTR_PARAM_RECORDS_ID);

std::wstringstream result;
while (readNextRecord(fptr, recordsID) == 0)
{
    result << parse(fptr, 0,
                    fptr.getParamStr(LIBFPTR_PARAM_TAG_NAME),
                    fptr.getParamByteArray(LIBFPTR_PARAM_TAG_VALUE),
                    fptr.getParamInt(LIBFPTR_PARAM_TAG_NUMBER),
                    fptr.getParamInt(LIBFPTR_PARAM_TAG_TYPE));
}

endReadRecords(fptr, recordsID);

std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
std::cout << converter.to_bytes(result.str()) << std::endl;

fptr.close();

return 0;

}
|

|import os

from libfptr10 import IFptr

def read_next_record(fptr, records_id):
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, records_id)
return fptr.readNextRecord()

def end_read_records(fptr, records_id):
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, records_id)
return fptr.endReadRecords()

def printable(offset, tag_name, tag_number, tag_value, new_line_before_value, new_line_after_value):
return ‘{}{} ({}): {}{}{}’.format(offset * ‘ ‘,
tag_name,
tag_number,
‘\n’ if new_line_before_value else »,
tag_value,
‘\n’ if new_line_after_value else »)

def parse(fptr, print_offset, tag_name, tag_value, tag_number, tag_type):
if tag_type in [IFptr.LIBFPTR_TAG_TYPE_BITS, IFptr.LIBFPTR_TAG_TYPE_BYTE, IFptr.LIBFPTR_TAG_TYPE_UINT_16,
IFptr.LIBFPTR_TAG_TYPE_UINT_32]:
return printable(print_offset, tag_name, tag_number, fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_VALUE), False, True)
elif tag_type in [IFptr.LIBFPTR_TAG_TYPE_VLN]:
return printable(print_offset, tag_name, tag_number, fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAG_VALUE), False, True)
elif tag_type in [IFptr.LIBFPTR_TAG_TYPE_FVLN]:
return printable(print_offset, tag_name, tag_number, fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAG_VALUE), False, True)
elif tag_type in [IFptr.LIBFPTR_TAG_TYPE_BOOL]:
return printable(print_offset, tag_name, tag_number, fptr.getParamBool(IFptr.LIBFPTR_PARAM_TAG_VALUE), False, True)
elif tag_type in [IFptr.LIBFPTR_TAG_TYPE_ARRAY]:
return printable(print_offset, tag_name, tag_number, fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE), False, True)
elif tag_type in [IFptr.LIBFPTR_TAG_TYPE_STRING]:
return printable(print_offset, tag_name, tag_number, fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_VALUE), False, True)
elif tag_type in [IFptr.LIBFPTR_TAG_TYPE_UNIX_TIME]:
return printable(print_offset, tag_name, tag_number, fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_TAG_VALUE), False, True)
elif tag_type in [IFptr.LIBFPTR_TAG_TYPE_STLV]:
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_PARSE_COMPLEX_ATTR)
fptr.setParam(IFptr.LIBFPTR_PARAM_TAG_VALUE, tag_value)
fptr.beginReadRecords()
records_id = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID)

    result = ''
    while read_next_record(fptr, records_id) == 0:
        result += parse(fptr, print_offset + 1,
                        fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_NAME),
                        fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE),
                        fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_NUMBER),
                        fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_TYPE))

    end_read_records(fptr, records_id)
    return printable(print_offset, tag_name, tag_number, result, True, False)
else:
    return ''

def main():
fptr = IFptr(»)

fptr.open()

fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_FN_DOCUMENT_TLVS)
fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 8)
fptr.beginReadRecords()
records_id = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID)

result = ''
while read_next_record(fptr, records_id) == 0:
    result += parse(fptr, 0,
                    fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_NAME),
                    fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE),
                    fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_NUMBER),
                    fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_TYPE))

end_read_records(fptr, records_id)

fptr.close()

print(result)

if name == ‘main‘:
main()
|

|package ru.atol;

import org.apache.commons.lang.StringUtils;
import ru.atol.drivers10.fptr.Fptr;
import ru.atol.drivers10.fptr.IFptr;

import java.util.Arrays;

public class Main {
private static int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

private static int endReadRecords(IFptr fptr, String recordsID) {
    fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
    return fptr.endReadRecords();
}

private static String printable(int offset, String tagName, long tagNumber, String tagValue, boolean newLineBeforeValue, boolean newLineAfterValue) {
    return String.format("%s%s (%d): %s%s%s", StringUtils.repeat("  ", offset),
            tagName,
            tagNumber,
            newLineBeforeValue ? "\n" : "",
            tagValue,
            newLineAfterValue ? "\n" : "");
}

private static String parse(IFptr fptr, int printOffset, String tagName, byte[] tagValue, long tagNumber, long tagType) {
    switch ((int) tagType) {
        case IFptr.LIBFPTR_TAG_TYPE_BITS:
        case IFptr.LIBFPTR_TAG_TYPE_BYTE:
        case IFptr.LIBFPTR_TAG_TYPE_UINT_16:
        case IFptr.LIBFPTR_TAG_TYPE_UINT_32:
            return printable(printOffset, tagName, tagNumber, String.valueOf(fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_VALUE)), false, true);
        case IFptr.LIBFPTR_TAG_TYPE_VLN:
        case IFptr.LIBFPTR_TAG_TYPE_FVLN:
            return printable(printOffset, tagName, tagNumber, String.valueOf(fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAG_VALUE)), false, true);
        case IFptr.LIBFPTR_TAG_TYPE_BOOL:
            return printable(printOffset, tagName, tagNumber, String.valueOf(fptr.getParamBool(IFptr.LIBFPTR_PARAM_TAG_VALUE)), false, true);
        case IFptr.LIBFPTR_TAG_TYPE_ARRAY:
            return printable(printOffset, tagName, tagNumber, Arrays.toString(fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE)), false, true);
        case IFptr.LIBFPTR_TAG_TYPE_STRING:
            return printable(printOffset, tagName, tagNumber, fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_VALUE), false, true);
        case IFptr.LIBFPTR_TAG_TYPE_UNIX_TIME:
            return printable(printOffset, tagName, tagNumber, fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_TAG_VALUE).toString(), false, true);
        case IFptr.LIBFPTR_TAG_TYPE_STLV:
            fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_PARSE_COMPLEX_ATTR);
            fptr.setParam(IFptr.LIBFPTR_PARAM_TAG_VALUE, tagValue);
            fptr.beginReadRecords();
            String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);

            StringBuilder result = new StringBuilder();
            while (readNextRecord(fptr, recordsID) == 0) {
                result.append(parse(fptr, printOffset + 1,
                        fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_NAME),
                        fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE),
                        fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_NUMBER),
                        fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_TYPE)));
            }

            endReadRecords(fptr, recordsID);
            return printable(printOffset, tagName, tagNumber, result.toString(), true, false);
        default:
            return "";
    }
}

public static void main(String[] args) throws Exception {
    IFptr fptr = new Fptr();

    fptr.open();
    fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_FN_DOCUMENT_TLVS);
    fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 8);
    fptr.beginReadRecords();
    String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);

    StringBuilder result = new StringBuilder();
    while (readNextRecord(fptr, recordsID) == 0) {
        result.append(parse(fptr, 0,
                fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_NAME),
                fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE),
                fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_NUMBER),
                fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_TYPE)));
    }

    endReadRecords(fptr, recordsID);

    fptr.close();

    System.out.println(result);
}

}
|

|package ru.atol;

import org.apache.commons.lang.StringUtils;
import ru.atol.drivers10.fptr.Fptr;
import ru.atol.drivers10.fptr.IFptr;

import java.util.Arrays;

public class DocumentReader {
private static int readNextRecord(IFptr fptr, String recordsID) {
fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

private static int endReadRecords(IFptr fptr, String recordsID) {
    fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
    return fptr.endReadRecords();
}

private static String printable(int offset, String tagName, long tagNumber, String tagValue, boolean newLineBeforeValue, boolean newLineAfterValue) {
    return String.format("%s%s (%d): %s%s%s", StringUtils.repeat("  ", offset),
            tagName,
            tagNumber,
            newLineBeforeValue ? "\n" : "",
            tagValue,
            newLineAfterValue ? "\n" : "");
}

private static String parse(IFptr fptr, int printOffset, String tagName, byte[] tagValue, long tagNumber, long tagType) {
    switch ((int) tagType) {
        case IFptr.LIBFPTR_TAG_TYPE_BITS:
        case IFptr.LIBFPTR_TAG_TYPE_BYTE:
        case IFptr.LIBFPTR_TAG_TYPE_UINT_16:
        case IFptr.LIBFPTR_TAG_TYPE_UINT_32:
            return printable(printOffset, tagName, tagNumber, String.valueOf(fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_VALUE)), false, true);
        case IFptr.LIBFPTR_TAG_TYPE_VLN:
        case IFptr.LIBFPTR_TAG_TYPE_FVLN:
            return printable(printOffset, tagName, tagNumber, String.valueOf(fptr.getParamDouble(IFptr.LIBFPTR_PARAM_TAG_VALUE)), false, true);
        case IFptr.LIBFPTR_TAG_TYPE_BOOL:
            return printable(printOffset, tagName, tagNumber, String.valueOf(fptr.getParamBool(IFptr.LIBFPTR_PARAM_TAG_VALUE)), false, true);
        case IFptr.LIBFPTR_TAG_TYPE_ARRAY:
            return printable(printOffset, tagName, tagNumber, Arrays.toString(fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE)), false, true);
        case IFptr.LIBFPTR_TAG_TYPE_STRING:
            return printable(printOffset, tagName, tagNumber, fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_VALUE), false, true);
        case IFptr.LIBFPTR_TAG_TYPE_UNIX_TIME:
            return printable(printOffset, tagName, tagNumber, fptr.getParamDateTime(IFptr.LIBFPTR_PARAM_TAG_VALUE).toString(), false, true);
        case IFptr.LIBFPTR_TAG_TYPE_STLV:
            fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_PARSE_COMPLEX_ATTR);
            fptr.setParam(IFptr.LIBFPTR_PARAM_TAG_VALUE, tagValue);
            fptr.beginReadRecords();
            String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);

            StringBuilder result = new StringBuilder();
            while (readNextRecord(fptr, recordsID) == 0) {
                result.append(parse(fptr, printOffset + 1,
                        fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_NAME),
                        fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE),
                        fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_NUMBER),
                        fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_TYPE)));
            }

            endReadRecords(fptr, recordsID);
            return printable(printOffset, tagName, tagNumber, result.toString(), true, false);
        default:
            return "";
    }
}

public static void read(Context ctx) throws Exception {
    IFptr fptr = new Fptr(ctx);

    fptr.open();
    fptr.setParam(IFptr.LIBFPTR_PARAM_RECORDS_TYPE, IFptr.LIBFPTR_RT_FN_DOCUMENT_TLVS);
    fptr.setParam(IFptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 8);
    fptr.beginReadRecords();
    String recordsID = fptr.getParamString(IFptr.LIBFPTR_PARAM_RECORDS_ID);

    StringBuilder result = new StringBuilder();
    while (readNextRecord(fptr, recordsID) == 0) {
        result.append(parse(fptr, 0,
                fptr.getParamString(IFptr.LIBFPTR_PARAM_TAG_NAME),
                fptr.getParamByteArray(IFptr.LIBFPTR_PARAM_TAG_VALUE),
                fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_NUMBER),
                fptr.getParamInt(IFptr.LIBFPTR_PARAM_TAG_TYPE)));
    }

    endReadRecords(fptr, recordsID);

    fptr.close();

    Log.d("DocumentReader", result);
}

}
|

|#import

import «fptr10/libfptr10_objc.h»

int readNextRecord(IFptr *fptr, NSString *recordsID) {
[fptr setParam:LIBFPTR_PARAM_RECORDS_ID NSStringParam:recordsID];
return [fptr readNextRecord];
}

int endReadRecords(IFptr *fptr, NSString *recordsID) {
[fptr setParam:LIBFPTR_PARAM_RECORDS_ID NSStringParam:recordsID];
return [fptr endReadRecords];
}

NSString* printable(int offset, NSString *tagName, uint tagNumber, NSString *tagValue, bool newLineBeforeValue, bool newLineAfterValue) {
NSString o = [@»» stringByPaddingToLength:[@» » length]offset withString:@» » startingAtIndex:0];
return [NSString stringWithFormat:@»%@%@ (%d): %s%@%s», o,
tagName,
tagNumber,
newLineBeforeValue ? «\n» : «»,
tagValue,
newLineAfterValue ? «\n» : «»];
}

NSString* parse(IFptr *fptr, int printOffset, NSString *tagName, NSData *tagValue, uint tagNumber, uint tagType) {
switch (tagType) {
case LIBFPTR_TAG_TYPE_BITS:
case LIBFPTR_TAG_TYPE_BYTE:
case LIBFPTR_TAG_TYPE_UINT_16:
case LIBFPTR_TAG_TYPE_UINT_32:
return printable(printOffset, tagName, tagNumber, [NSString stringWithFormat:@»%d», [fptr getParamInt:LIBFPTR_PARAM_TAG_VALUE]], false, true);
case LIBFPTR_TAG_TYPE_VLN:
case LIBFPTR_TAG_TYPE_FVLN:
return printable(printOffset, tagName, tagNumber, [NSString stringWithFormat:@»%f», [fptr getParamDouble:LIBFPTR_PARAM_TAG_VALUE]], false, true);
case LIBFPTR_TAG_TYPE_BOOL:
return printable(printOffset, tagName, tagNumber, [NSString stringWithFormat:@»%d», [fptr getParamBool:LIBFPTR_PARAM_TAG_VALUE]], false, true);
case LIBFPTR_TAG_TYPE_ARRAY: {
NSData *data = [fptr getParamByteArray:LIBFPTR_PARAM_TAG_VALUE];
NSUInteger capacity = data.length * 2;
NSMutableString *sbuf = [NSMutableString stringWithCapacity:capacity];
const unsigned char *buf = data.bytes;
NSInteger i;
for (i=0; i<data.length; ++i) {
[sbuf appendFormat:@»%02lX», (NSUInteger)buf[i]];
}
return printable(printOffset, tagName, tagNumber, sbuf, false, true);
}
case LIBFPTR_TAG_TYPE_STRING:
return printable(printOffset, tagName, tagNumber, [fptr getParamString:LIBFPTR_PARAM_TAG_VALUE], false, true);
case LIBFPTR_TAG_TYPE_UNIX_TIME: {
NSDate *dt = [fptr getParamDateTime:LIBFPTR_PARAM_TAG_VALUE];
NSDateFormatter *dtFormatter = [[NSDateFormatter alloc] init];
dtFormatter.dateFormat = @»yyyy-MM-dd HH:mm:ss»;
return printable(printOffset, tagName, tagNumber, [dtFormatter stringFromDate:dt], false, true);
}
case LIBFPTR_TAG_TYPE_STLV: {
[fptr setParam:LIBFPTR_PARAM_RECORDS_TYPE intParam:LIBFPTR_RT_PARSE_COMPLEX_ATTR];
[fptr setParam:LIBFPTR_PARAM_TAG_VALUE NSDataParam:tagValue];
[fptr beginReadRecords];
NSString *recordsID = [fptr getParamString:LIBFPTR_PARAM_RECORDS_ID];

        NSString *result = @"";
        while (readNextRecord(fptr, recordsID) == 0) {
            result = [result stringByAppendingString:parse(fptr, printOffset + 1,
                                                           [fptr getParamString:LIBFPTR_PARAM_TAG_NAME],
                                                           [fptr getParamByteArray:LIBFPTR_PARAM_TAG_VALUE],
                                                           [fptr getParamInt:LIBFPTR_PARAM_TAG_NUMBER],
                                                           [fptr getParamInt:LIBFPTR_PARAM_TAG_TYPE])];
        }

        endReadRecords(fptr, recordsID);
        return printable(printOffset, tagName, tagNumber, result, true, false);
    }
    default:
            return @"";
}

}

int main(int argc, const char * argv[]) {
@autoreleasepool {
IFptr *fptr = [[IFptr alloc] init];

    [fptr open];

    [fptr setParam:LIBFPTR_PARAM_RECORDS_TYPE intParam:LIBFPTR_RT_FN_DOCUMENT_TLVS];
    [fptr setParam:LIBFPTR_PARAM_DOCUMENT_NUMBER intParam:8];
    [fptr beginReadRecords];
    NSString *recordsID = [fptr getParamString:LIBFPTR_PARAM_RECORDS_ID];

    NSString *result = @"";
    while (readNextRecord(fptr, recordsID) == 0) {
        result = [result stringByAppendingString:parse(fptr, 0,
                                                       [fptr getParamString:LIBFPTR_PARAM_TAG_NAME],
                                                       [fptr getParamByteArray:LIBFPTR_PARAM_TAG_VALUE],
                                                       [fptr getParamInt:LIBFPTR_PARAM_TAG_NUMBER],
                                                       [fptr getParamInt:LIBFPTR_PARAM_TAG_TYPE])];
    }

    endReadRecords(fptr, recordsID);

    NSLog(@"%@", result);

    [fptr close];
}

return 0;

}
|

|program Project1;

{$APPTYPE CONSOLE}

uses
System, Variants,
ActiveX,
ComObj,
SysUtils,
Windows,
StrUtils;

function readNextRecord(fptr: Variant; recordsID: String): integer;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
Result := fptr.readNextRecord;
end;

function endReadRecords(fptr: Variant; recordsID: String): integer;
begin
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
Result := fptr.endReadRecords;
end;

function BinToStr(const bin: array of byte): string;
const HexSymbols = ‘0123456789ABCDEF’;
var i: integer;
begin
SetLength(Result, 2Length(bin)); for i := 0 to Length(bin)-1 do begin Result[1 + 2i + 0] := HexSymbols[1 + bin[i] shr 4];
Result[1 + 2*i + 1] := HexSymbols[1 + bin[i] and $0F];
end;
end;

function printable(offset: integer; tagName: string; tagNumber: Integer; tagValue: string; newLineBeforeValue: Boolean; newLineAfterValue: Boolean): string;
begin
Result := Format(‘%s%s (%d): %s%s%s’, [DupeString(‘ ‘, offset),
tagName,
tagNumber,
IfThen(newLineBeforeValue, AnsiString(#13#10), »),
tagValue],
IfThen(newLineAfterValue, AnsiString(#13#10), »));
end;

function parse(fptr: OleVariant; printOffset: integer; tagName: string; tagValue: Variant; tagNumber, tagType: integer): string;
var
byteArrayValue: Variant;
byteArray: array of byte;
i: integer;
S, recordsID: string;
begin
Result := »;
if (tagType = fptr.LIBFPTR_TAG_TYPE_BITS) or (tagType = fptr.LIBFPTR_TAG_TYPE_BYTE) or (tagType = fptr.LIBFPTR_TAG_TYPE_UINT_16) or (tagType = fptr.LIBFPTR_TAG_TYPE_UINT_32) then
begin
Result := printable(printOffset, tagName, tagNumber, IntToStr(fptr.getParamInt(fptr.LIBFPTR_PARAM_TAG_VALUE)), False, True);
end
else if (tagType = fptr.LIBFPTR_TAG_TYPE_VLN) or (tagType = fptr.LIBFPTR_TAG_TYPE_FVLN) then
begin
Result := printable(printOffset, tagName, tagNumber, FloatToStr(fptr.getParamDouble(fptr.LIBFPTR_PARAM_TAG_VALUE)), False, True);
end
else if tagType = fptr.LIBFPTR_TAG_TYPE_BOOL then
begin
Result := printable(printOffset, tagName, tagNumber, BoolToStr(fptr.getParamBool(fptr.LIBFPTR_PARAM_TAG_VALUE)), False, True);
end
else if tagType = fptr.LIBFPTR_TAG_TYPE_ARRAY then
begin
byteArrayValue := fptr.getParamByteArray(fptr.LIBFPTR_PARAM_TAG_VALUE);
i := Length(byteArrayValue);
SetLength(byteArray, VarArrayHighBound(byteArrayValue, 1));
for i := VarArrayLowBound(byteArrayValue, 1) to VarArrayHighBound(byteArrayValue, 1) do
begin
byteArray[i] := VarArrayGet(byteArrayValue, i);
end;

Result := printable(printOffset, tagName, tagNumber, BinToStr(byteArray), False, True);

end
else if tagType = fptr.LIBFPTR_TAG_TYPE_STRING then
begin
Result := printable(printOffset, tagName, tagNumber, fptr.getParamString(fptr.LIBFPTR_PARAM_TAG_VALUE), False, True);
end
else if tagType = fptr.LIBFPTR_TAG_TYPE_UNIX_TIME then
begin
Result := printable(printOffset, tagName, tagNumber, DateTimeToStr(fptr.getParamDateTime(fptr.LIBFPTR_PARAM_TAG_VALUE)), False, True);
end
else if tagType = fptr.LIBFPTR_TAG_TYPE_STLV then
begin
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_TYPE, fptr.LIBFPTR_RT_PARSE_COMPLEX_ATTR);
fptr.setParam(fptr.LIBFPTR_PARAM_TAG_VALUE, tagValue);
fptr.beginReadRecords;
recordsID := fptr.getParamString(fptr.LIBFPTR_PARAM_RECORDS_ID);

S := '';
while readNextRecord(fptr, recordsID) = 0 do
begin
  S := S + parse(fptr, printOffset + 1,
                    fptr.getParamString(fptr.LIBFPTR_PARAM_TAG_NAME),
                    fptr.getParamByteArray(fptr.LIBFPTR_PARAM_TAG_VALUE),
                    fptr.getParamInt(fptr.LIBFPTR_PARAM_TAG_NUMBER),
                    fptr.getParamInt(fptr.LIBFPTR_PARAM_TAG_TYPE));
end;

endReadRecords(fptr, recordsID);

Result := printable(printOffset, tagName, tagNumber, S, True, False);

end
else Result := »;
end;

var
fptr: OleVariant;
result: string;
recordsID: string;
newStr: string;

begin
CoInitialize(nil);
fptr := CreateOleObject(‘AddIn.Fptr10’);

fptr.open;
fptr.setParam(fptr.LIBFPTR_PARAM_RECORDS_TYPE, fptr.LIBFPTR_RT_FN_DOCUMENT_TLVS);
fptr.setParam(fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 8);
fptr.beginReadRecords;
recordsID := fptr.getParamString(fptr.LIBFPTR_PARAM_RECORDS_ID);

while readNextRecord(fptr, recordsID) = 0 do
begin
result := result + parse(fptr, 0,
fptr.getParamString(fptr.LIBFPTR_PARAM_TAG_NAME),
fptr.getParamByteArray(fptr.LIBFPTR_PARAM_TAG_VALUE),
fptr.getParamInt(fptr.LIBFPTR_PARAM_TAG_NUMBER),
fptr.getParamInt(fptr.LIBFPTR_PARAM_TAG_TYPE));
end;

endReadRecords(fptr, recordsID);

fptr.close;

SetLength(newStr, Length(result));
CharToOem(PChar(result), PChar(newStr));
Writeln(newStr);
ReadLn;
end.
|

|using Atol.Drivers10.Fptr;
using System;
using System.Text;

namespace Test
{
class Program
{
private static int readNextRecord(IFptr fptr, String recordsID)
{
fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return fptr.readNextRecord();
}

    private static int endReadRecords(IFptr fptr, String recordsID)
    {
        fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_ID, recordsID);
        return fptr.endReadRecords();
    }

    private static String printable(int offset, String tagName, uint tagNumber, String tagValue, bool newLineBeforeValue, bool newLineAfterValue)
    {
        return String.Format("{0}{1} ({2}): {3}{4}{5}", new StringBuilder().Insert(0, "  ", offset).ToString(),
                tagName,
                tagNumber,
                newLineBeforeValue ? "\n" : "",
                tagValue,
                newLineAfterValue ? "\n" : "");
    }

    private static String parse(IFptr fptr, int printOffset, String tagName, byte[] tagValue, uint tagNumber, uint tagType)
    {
        switch ((int)tagType)
        {
            case Constants.LIBFPTR_TAG_TYPE_BITS:
            case Constants.LIBFPTR_TAG_TYPE_BYTE:
            case Constants.LIBFPTR_TAG_TYPE_UINT_16:
            case Constants.LIBFPTR_TAG_TYPE_UINT_32:
                return printable(printOffset, tagName, tagNumber, fptr.getParamInt(Constants.LIBFPTR_PARAM_TAG_VALUE).ToString(), false, true);
            case Constants.LIBFPTR_TAG_TYPE_VLN:
            case Constants.LIBFPTR_TAG_TYPE_FVLN:
                return printable(printOffset, tagName, tagNumber, fptr.getParamDouble(Constants.LIBFPTR_PARAM_TAG_VALUE).ToString(), false, true);
            case Constants.LIBFPTR_TAG_TYPE_BOOL:
                return printable(printOffset, tagName, tagNumber, fptr.getParamBool(Constants.LIBFPTR_PARAM_TAG_VALUE).ToString(), false, true);
            case Constants.LIBFPTR_TAG_TYPE_ARRAY:
                return printable(printOffset, tagName, tagNumber, BitConverter.ToString(fptr.getParamByteArray(Constants.LIBFPTR_PARAM_TAG_VALUE)), false, true);
            case Constants.LIBFPTR_TAG_TYPE_STRING:
                return printable(printOffset, tagName, tagNumber, fptr.getParamString(Constants.LIBFPTR_PARAM_TAG_VALUE), false, true);
            case Constants.LIBFPTR_TAG_TYPE_UNIX_TIME:
                return printable(printOffset, tagName, tagNumber, fptr.getParamDateTime(Constants.LIBFPTR_PARAM_TAG_VALUE).ToString(), false, true);
            case Constants.LIBFPTR_TAG_TYPE_STLV:
                fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_TYPE, Constants.LIBFPTR_RT_PARSE_COMPLEX_ATTR);
                fptr.setParam(Constants.LIBFPTR_PARAM_TAG_VALUE, tagValue);
                fptr.beginReadRecords();
                String recordsID = fptr.getParamString(Constants.LIBFPTR_PARAM_RECORDS_ID);

                StringBuilder result = new StringBuilder();
                while (readNextRecord(fptr, recordsID) == 0)
                {
                    result.Append(parse(fptr, printOffset + 1,
                            fptr.getParamString(Constants.LIBFPTR_PARAM_TAG_NAME),
                            fptr.getParamByteArray(Constants.LIBFPTR_PARAM_TAG_VALUE),
                            fptr.getParamInt(Constants.LIBFPTR_PARAM_TAG_NUMBER),
                            fptr.getParamInt(Constants.LIBFPTR_PARAM_TAG_TYPE)));
                }

                endReadRecords(fptr, recordsID);
                return printable(printOffset, tagName, tagNumber, result.ToString(), true, false);
            default:
                return "";
        }
    }

    static void Main(string[] args)
    {
        IFptr fptr = new Fptr();

        fptr.open();
        fptr.setParam(Constants.LIBFPTR_PARAM_RECORDS_TYPE, Constants.LIBFPTR_RT_FN_DOCUMENT_TLVS);
        fptr.setParam(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER, 8);
        fptr.beginReadRecords();
        String recordsID = fptr.getParamString(Constants.LIBFPTR_PARAM_RECORDS_ID);

        StringBuilder result = new StringBuilder();
        while (readNextRecord(fptr, recordsID) == 0)
        {
            result.Append(parse(fptr, 0,
                    fptr.getParamString(Constants.LIBFPTR_PARAM_TAG_NAME),
                    fptr.getParamByteArray(Constants.LIBFPTR_PARAM_TAG_VALUE),
                    fptr.getParamInt(Constants.LIBFPTR_PARAM_TAG_NUMBER),
                    fptr.getParamInt(Constants.LIBFPTR_PARAM_TAG_TYPE)));
        }

        endReadRecords(fptr, recordsID);

        fptr.close();

        Console.WriteLine(result.ToString());
    }
}

}
|

|package main

import (
«fmt»
«test/fptr10»
«strings»
)

func readNextRecord(fptr *fptr10.IFptr, recordsID string) error {
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_ID, recordsID)
return fptr.ReadNextRecord()
}

func endReadRecords(fptr *fptr10.IFptr, recordsID string) error {
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_ID, recordsID)
return fptr.EndReadRecords()
}

func printable(offset int, tagName string, tagNumber uint, tagValue interface{}, newLineBeforeValue bool, newLineAfterValue bool) string {
nla := «»
nlb := «»
if newLineBeforeValue {
nlb = «\n»
}
if newLineAfterValue {
nla = «\n»
}
return fmt.Sprintf(«%s%s (%d): %s%v%s», strings.Repeat(» «, offset),
tagName, tagNumber, nlb, tagValue, nla)
}

func parse(fptr *fptr10.IFptr, printOffset int, tagName string, tagValue []byte, tagNumber uint, tagType uint) string {
switch tagType {
case fptr10.LIBFPTR_TAG_TYPE_BITS, fptr10.LIBFPTR_TAG_TYPE_BYTE, fptr10.LIBFPTR_TAG_TYPE_UINT_16, fptr10.LIBFPTR_TAG_TYPE_UINT_32:
return printable(printOffset, tagName, tagNumber, fptr.GetParamInt(fptr10.LIBFPTR_PARAM_TAG_VALUE), false, true)
case fptr10.LIBFPTR_TAG_TYPE_VLN, fptr10.LIBFPTR_TAG_TYPE_FVLN:
return printable(printOffset, tagName, tagNumber, fptr.GetParamDouble(fptr10.LIBFPTR_PARAM_TAG_VALUE), false, true)
case fptr10.LIBFPTR_TAG_TYPE_BOOL:
return printable(printOffset, tagName, tagNumber, fptr.GetParamBool(fptr10.LIBFPTR_PARAM_TAG_VALUE), false, true)
case fptr10.LIBFPTR_TAG_TYPE_ARRAY:
return printable(printOffset, tagName, tagNumber, fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_TAG_VALUE), false, true)
case fptr10.LIBFPTR_TAG_TYPE_STRING:
return printable(printOffset, tagName, tagNumber, fptr.GetParamString(fptr10.LIBFPTR_PARAM_TAG_VALUE), false, true)
case fptr10.LIBFPTR_TAG_TYPE_UNIX_TIME:
return printable(printOffset, tagName, tagNumber, fptr.GetParamDateTime(fptr10.LIBFPTR_PARAM_TAG_VALUE), false, true)
case fptr10.LIBFPTR_TAG_TYPE_STLV:
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_TYPE, fptr10.LIBFPTR_RT_PARSE_COMPLEX_ATTR)
fptr.SetParam(fptr10.LIBFPTR_PARAM_TAG_VALUE, tagValue)
fptr.BeginReadRecords()
recordsID := fptr.GetParamString(fptr10.LIBFPTR_PARAM_RECORDS_ID)

    result := ""
    for readNextRecord(fptr, recordsID) == nil {
        result += parse(fptr, printOffset + 1,
            fptr.GetParamString(fptr10.LIBFPTR_PARAM_TAG_NAME),
            fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_TAG_VALUE),
            fptr.GetParamInt(fptr10.LIBFPTR_PARAM_TAG_NUMBER),
            fptr.GetParamInt(fptr10.LIBFPTR_PARAM_TAG_TYPE))
    }

    endReadRecords(fptr, recordsID)
    return printable(printOffset, tagName, tagNumber, result, true, false)
}

return ""

}

func main() {
fptr := fptr10.New()
defer func() {
fptr.Close()
fptr.Destroy()
}()

fptr.Open()
fptr.SetParam(fptr10.LIBFPTR_PARAM_RECORDS_TYPE, fptr10.LIBFPTR_RT_FN_DOCUMENT_TLVS)
fptr.SetParam(fptr10.LIBFPTR_PARAM_DOCUMENT_NUMBER, 8)
fptr.BeginReadRecords()
recordsID := fptr.GetParamString(fptr10.LIBFPTR_PARAM_RECORDS_ID)

result := ""
for readNextRecord(fptr, recordsID) == nil {
    result += parse(fptr, 0,
        fptr.GetParamString(fptr10.LIBFPTR_PARAM_TAG_NAME),
        fptr.GetParamByteArray(fptr10.LIBFPTR_PARAM_TAG_VALUE),
        fptr.GetParamInt(fptr10.LIBFPTR_PARAM_TAG_NUMBER),
        fptr.GetParamInt(fptr10.LIBFPTR_PARAM_TAG_TYPE))
}

endReadRecords(fptr, recordsID)

fptr.Close()

print(result)

}
|

|function readNextRecord(recordsID) {
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID)
return Fptr.readNextRecord()
}

function endReadRecords(recordsID) {
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_ID, recordsID);
return Fptr.endReadRecords();
}

function printable(offset, tagName, tagNumber, tagValue, newLineBeforeValue, newLineAfterValue) {
s = » «.repeat(offset) + tagName + » (» + tagNumber + «): » + (newLineBeforeValue ? «\n» : «») + tagValue + (newLineAfterValue ? «\n» : «»);
return s;
}

function parse(printOffset, tagName, tagValue, tagNumber, tagType) {
switch (tagType) {
case Fptr.LIBFPTR_TAG_TYPE_BITS:
case Fptr.LIBFPTR_TAG_TYPE_BYTE:
case Fptr.LIBFPTR_TAG_TYPE_UINT_16:
case Fptr.LIBFPTR_TAG_TYPE_UINT_32:
return printable(printOffset, tagName, tagNumber, Fptr.getParamInt(Fptr.LIBFPTR_PARAM_TAG_VALUE).toString(), false, true)
case Fptr.LIBFPTR_TAG_TYPE_VLN:
case Fptr.LIBFPTR_TAG_TYPE_FVLN:
return printable(printOffset, tagName, tagNumber, Fptr.getParamDouble(Fptr.LIBFPTR_PARAM_TAG_VALUE).toString(), false, true)
case Fptr.LIBFPTR_TAG_TYPE_BOOL:
return printable(printOffset, tagName, tagNumber, Fptr.getParamBool(Fptr.LIBFPTR_PARAM_TAG_VALUE).toString(), false, true)
case Fptr.LIBFPTR_TAG_TYPE_ARRAY:
return printable(printOffset, tagName, tagNumber, Duktape.enc(‘jx’, Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_TAG_VALUE)), false, true)
case Fptr.LIBFPTR_TAG_TYPE_STRING:
return printable(printOffset, tagName, tagNumber, Fptr.getParamString(Fptr.LIBFPTR_PARAM_TAG_VALUE), false, true)
case Fptr.LIBFPTR_TAG_TYPE_UNIX_TIME:
return printable(printOffset, tagName, tagNumber, Fptr.getParamDateTime(Fptr.LIBFPTR_PARAM_TAG_VALUE).toString(), false, true)
case Fptr.LIBFPTR_TAG_TYPE_STLV:
Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_TYPE, Fptr.LIBFPTR_RT_PARSE_COMPLEX_ATTR);
Fptr.setParam(Fptr.LIBFPTR_PARAM_TAG_VALUE, tagValue);
Fptr.beginReadRecords();
var recordsID = Fptr.getParamString(Fptr.LIBFPTR_PARAM_RECORDS_ID);

        var result = "";
        while (readNextRecord(recordsID) == 0) {
            result += parse(printOffset + 1,
                Fptr.getParamString(Fptr.LIBFPTR_PARAM_TAG_NAME),
                Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_TAG_VALUE),
                Fptr.getParamInt(Fptr.LIBFPTR_PARAM_TAG_NUMBER),
                Fptr.getParamInt(Fptr.LIBFPTR_PARAM_TAG_TYPE));
        }

        endReadRecords(recordsID);
        return printable(printOffset, tagName, tagNumber, result, true, false);
}

}

Fptr.setParam(Fptr.LIBFPTR_PARAM_RECORDS_TYPE, Fptr.LIBFPTR_RT_FN_DOCUMENT_TLVS);
Fptr.setParam(Fptr.LIBFPTR_PARAM_DOCUMENT_NUMBER, 8);
Fptr.beginReadRecords();
var recordsID = Fptr.getParamString(Fptr.LIBFPTR_PARAM_RECORDS_ID);

var result = «»;
while (readNextRecord(recordsID) == 0) {
result += parse(0,
Fptr.getParamString(Fptr.LIBFPTR_PARAM_TAG_NAME),
Fptr.getParamByteArray(Fptr.LIBFPTR_PARAM_TAG_VALUE),
Fptr.getParamInt(Fptr.LIBFPTR_PARAM_TAG_NUMBER),
Fptr.getParamInt(Fptr.LIBFPTR_PARAM_TAG_TYPE));
}

endReadRecords(recordsID);
Fptr.logWrite(‘FiscalPrinter’, Fptr.LIBFPTR_LOG_INFO, result)
|

Для чтения документа из ФН нужно рекурсивно вычитать все его реквизиты,
попутно разбирая STLV-структуры на составные части. Для этого
понадобятся следующие операции в драйвере:

  • чтение документа из ФН <#read_fn_document>;
  • разбор составного реквизита ФН <#parse_stlv>.

Использование выходного параметр LIBFPTR_PARAM_RECORDS_ID метода / beginReadRecords()/ позволяет разделять результаты нескольких операций
чтения данных

Формат массива пикселей

Пример изображения

|██████ — 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
█ █ — 0xFF 0x00 0x00 0x00 0x00 0xFF
█ █ — 0xFF 0x00 0x00 0x00 0x00 0xFF
██████ — 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|

Массив пикселей изображения используется для печати методом / printPixelBuffer()/, а также для загрузки/выгрузки изображений из
памяти ККТ методами /uploadPixelBufferMemory()/, / uploadPixelBufferCliche()/ и /downloadPixelBuffer()/.

Для передачи используется формат один пиксель на один байт. Для
обозначения белых пикселей используется байт со значением 0x00, для
черных — любое отличное от 0x00 число.

Изображение описывается следующими параметрами:

  • LIBFPTR_PARAM_PIXEL_BUFFER — массив пикселей, представляющих
    изображение;
  • LIBFPTR_PARAM_WIDTH — ширина одной строки изображения. Работа с клише Формат

При использовании настроек 184-203 (Строка клише N) и методов / setHeaderLines()/ и /setFooterLines()/ драйвер принимает особым
образом размеченные строки.

В строки можно включать следующие последовательности:

  • ¶N,OFFSET¶ — вставить картинку из памяти ККТ с номером /N/ и
    смещением от левого края чековой ленты /OFFSET/. Пример —
    ¶0,center¶. Символ — https://unicode-table.com/ru/00B6
    https://unicode-table.com/ru/00B6. Смещение может быть задано как
    в пикселях, так и константой:
    o left — прижать к левому краю чековой ленты;
    o center — выровнять по центру;
    o right — прижать к правому краю чековой ленты.

При чтении клише вместо констант будут подставлены значения смещения в
пикселях.

Для ККТ версий 5.X в клише можно вставить только одну картинку — с
номером 0.

  • »C — символ /C/ будет напечатан с двойной шириной. Пример —
    »Т»Е»С»Т. Символ » — https://unicode-table.com/ru/00BB .
  • ↓N↓ — промотать чековую ленту на /N/ пикселей. Пример — ↓50↓.
    Символ — https://unicode-table.com/ru/2193 .

Доступно только для ККТ версий 5.X.

  • , , — символы выравнивания (по левому краю, по центру и по
    правому краю соответственно). Символ — https://unicode-
    table.com/ru/21C7 https://unicode-table.com/ru/21C7,
    https://unicode-table.com/ru/21CC , — https://unicode-table.com/ru/21C9 .

Доступно только для ККТ версий 5.X.

  • ⤊N⤊ — задать номер /N/ шрифта. Пример — ⤊3⤊. Символ
    https://unicode-table.com/ru/290A https://unicode-table.com/ru/290A

Доступно только для ККТ версий 5.X.

  Порядок печати

Помимо самого клише, драйвер позволяет печатать дополнительные строки и
изображения. Это можно сделать с помощью preItems и postItems в
JSON-заданиях, а также с помощью методов /setHeaderLines()/ и / setFooterLines()/. Ниже указано, как переданные с помощью них данные
печатаются на чековой ленте относительно документа:

  1. Заголовок клише.
  2. Дополнительный заголовок (setHeaderLines()).
  3. Дополнительные элементы (preItems).
  4. Строки документа (позиции, оплаты, налоги, реквизиты, QR-код и другие).
  5. Дополнительные элементы (postItems).
  6. Дополнительный подвал (setFooterLines()).
  7. Подвал клише (только ККТ версий 3.X). Настройки ККТ Альянс 20Ф

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения

Для работы данной настройки необходимо, чтобы настройка 292 Использовать
загружаемые шаблоны была отлична от 0
55 Пересчитывать суммы налогов после скидки на итог число 1 — Да
0 — Нет
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 5 — EthernetOverTransport
276 Канал обмена с ОФД число 5 — EthernetOverTransport
6 — TCP/IP стек ОС
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
299 Регистрировать секции число 0 — Нет
1 — Да
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

АТОЛ 1Ф

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения

Для работы данной настройки необходимо, чтобы настройка 292 Использовать
загружаемые шаблоны была отлична от 0
55 Пересчитывать суммы налогов после скидки на итог число 1 — Да
0 — Нет
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
76 Выключение / перезагрузка ККТ число 1 — По команде
2 — По кнопке и по команде
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 5 — EthernetOverTransport
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
299 Регистрировать секции число 0 — Нет
1 — Да
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

АТОЛ 11Ф (5.X)

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения

Для работы данной настройки необходимо, чтобы настройка 292 Использовать
загружаемые шаблоны была отлична от 0
55 Пересчитывать суммы налогов после скидки на итог число 1 — Да
0 — Нет
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
236 Скорость ККТ число 4800 — 4800 бод
9600 — 9600 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
230400 — 230400 бод
460800 — 460800 бод
921600 — 921600 бод
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 64
270 Пароль доступа к точке доступа строка Максимальная длина 64
271 Номер канала Wi-Fi в режиме точки доступа число 1 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 1 — USB (EoU)
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
294 Использовать RS232 число 0 — Нет
1 — Да
296 Ожидание подключения по Wi-Fi, с. (0 — деактивация, 255 — ожидание
без ограничений) число 0 .. 255
297 Ожидание подключения по GSM, с. (0 — деактивация, 255 — ожидание без
ограничений) число 0 .. 255
298 Ожидание подключения по Bluetooth, с. (0 — деактивация, 255 —
ожидание без ограничений) число 0 .. 255
299 Регистрировать секции число 0 — Нет
1 — Да
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
329 IP-порт (Wi-Fi) число 1 .. 65535
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
349 Режим включения интерфейсов число 0 — Следовать настройкам
1 — Включить все при следующей перезагрузке
2 — Включать все при каждой перезагрузке
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

АТОЛ 11Ф

Номер Описание Тип Возможные значения
0 Номер ККТ в магазине число 0 .. 255
2 Печатать названия секций число 0 — Не печатать
1 — Печатать
3 Печатать необнуляемую сумму приходов и расходов число 0 — Не печатать
1 — Печатать
4 Производить инкассацию число 0 — Нет
1 — Да
5 Расширенный X-отчет и Z-отчет число 0 — Нет
1 — Да
6 Печатать информацию о количестве чеков за смену по типам операций
число 0 — Не печатать
1 — Печатать
7 Автоматически печатать отчет по секциям перед X- и Z-отчетом число 0 —
Не печатать
1 — Печатать
8 Яркость печати ЧЛ число 1 .. 15
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
10 Игнорировать ошибки ДЯ при работе от аккумуляторов число 0 — Нет
1 — Да
11 Пароль доступа строка Максимальная длина 4
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
13 Шрифт ЧЛ число 1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
14 Количество печатаемых строк после чека на ЧЛ число 0 .. 20
15 Печатать разделители в суточных отчетах число 0 — Не печатать
1 — Печатать
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
17 Печатать необнуляемый итог на начало смены в Z-отчете число 0 — Не
печатать
1 — Печатать
18 Печатать необнуляемый итог на начало смены в X-отчете число 0 — Не
печатать
1 — Печатать
19 Печатать текст командой «Печать строки» число 0 — Не печатать
1 — Печатать
20 Режим перехода на летнее/зимнее время число 0 — Не переходить
1 — Переходить, не оповещать
2 — Переходить, оповещать кассира
3 — Переходить, оповещать кассира и хост
21 Дата перехода на летнее время число
22 Дата перехода на зимнее время число
23 Количество символов в строке число 24 .. 64
24 Символ для разделителя строка Максимальная длина 1
25 Проверять время число 0 .. 99
26 Смещение области печати слева число 0 .. 24
27 Печатать налоги в Х- и Z-отчете и при регистрации число 0 — Не печатать
1 — Печатать
28 Минимальная яркость термокомпенсации на ЧЛ число 1 .. 15
29 Печатать на ЧЛ документ готовности к работе число 0 — Не печатать
1 — Печатать
30 Печатать на ЧЛ клише в служебных сообщениях число 0 — Не печатать
1 — Печатать
31 Печатать на ЧЛ сообщение о вводе даты-времени число 0 — Не печатать
1 — Печатать
32 Протокол работы ККТ число 0 — АТОЛ 2
1 — АТОЛ 3
33 PIN-код для Bluetooth строка Максимальная длина 8
34 Уровень коррекции ошибок QR-кода число 1 .. 4
35 Количество строк заголовка клише число 0 — 0
1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
8 — 8
9 — 9
10 — 10
11 — 11
12 — 12
13 — 13
14 — 14
15 — 15
16 — 16
17 — 17
18 — 18
19 — 19
20 — 20
99 — Старый формат печати
36 Расстояние от ТПГ до отрезного ножа число 0 .. 255
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
38 Звуковой сигнал при окончании бумаги и открытии крышки число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
40 Сохранять печатаемый документ в память число 0 — Не сохранять
1 — Сохранять только отчеты
2 — Сохранять все
41 Печатать нулевые налоги число 0 — Не печатать
1 — Печатать
42 Печать необнуляемой суммы возвратов приходов число 0 — Не печатать
1 — Печатать
43 Печать необнуляемой суммы возвратов расходов число 0 — Не печатать
1 — Печатать
44 Печатать количество отмененных чеков по типам число 0 — Не печатать
1 — Печатать
45 Не печатать блоки «приходы», «возвраты приходов», «расходы»,
«возвраты расходов» число 0 — Не печатать
1 — Печатать
46 Печатать нулевые суммы число 0 — Не печатать
1 — Печатать
47 Печатать номер ККМ в магазине число 0 — Не печатать
1 — Печатать
48 Печатать реквизиты чека на аннулированных чеках число 0 — Не печатать
1 — Печатать
49 Получать IP-адреса от DHCP (Ethernet) число 0 — Нет
1 — Да
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения
51 Шаблон чека число 1 — Шаблон 1
2 — Шаблон 2
52 Признак способа расчета по умолчанию число 1 — Предоплата 100%
2 — Предоплата
3 — Аванс
4 — Полный расчет
5 — Частичный расчет и кредит
6 — Передача в кредит
7 — Оплата кредита
53 Округлять сумму налога число 0 — На весь чек
1 — После каждой позиции
55 Пересчитывать суммы налогов после скидки на итог число 0 — Нет
1 — Да
56 Учет наличности число 0 — Отключен
1 — Включен
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать полное наименование
2 — Печатать краткое наименование
59 Не печатать Z-отчет при закрытии смены число 0 — Печатать
1 — Не печатать
60 Печатать необнуляемые суммы по способам расчета прихода и возврата
прихода число 0 — Не печатать
1 — Печатать
61 Печатать необнуляемые суммы по способам расчета расхода и возврата
расхода число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
63 Признак предмета расчета по умолчанию число 1 — Товар
2 — Подакцизный товар
3 — Работа
4 — Услуга
5 — Ставка азартной игры
6 — Выигрыш азартной игры
7 — Лотерейный билет
8 — Выигрыш лотереи
9 — Предоставление РИД
10 — Платеж
11 — Агентское вознаграждение
12 — Выплата
13 — Иной предмет расчета
14 — Имущественное право
15 — Внереализационный доход
16 — Иные платежи и взносы
17 — Торговый сбор
18 — Курортный сбор
19 — Залог
20 — Расход
21 — Взносы на ОПС ИП
22 — Взносы на ОПС
23 — Взносы на ОМС ИП
24 — Взносы на ОМС
25 — Взносы на ОСС
26 — Платеж казино
27 — Выдача денежных средств
30 — Подакцизный товар, не имеющий КМ
31 — Подакцизный товар, имеющий КМ
32 — Товар, не имеющий КМ, за исключением подакцизного
33 — Товар, имеющий КМ, за исключением подакцизного
94 Пароль кассира 1 строка Максимальная длина 8
95 Пароль кассира 2 строка Максимальная длина 8
96 Пароль кассира 3 строка Максимальная длина 8
97 Пароль кассира 4 строка Максимальная длина 8
98 Пароль кассира 5 строка Максимальная длина 8
99 Пароль кассира 6 строка Максимальная длина 8
100 Пароль кассира 7 строка Максимальная длина 8
101 Пароль кассира 8 строка Максимальная длина 8
102 Пароль кассира 9 строка Максимальная длина 8
103 Пароль кассира 10 строка Максимальная длина 8
104 Пароль кассира 11 строка Максимальная длина 8
105 Пароль кассира 12 строка Максимальная длина 8
106 Пароль кассира 13 строка Максимальная длина 8
107 Пароль кассира 14 строка Максимальная длина 8
108 Пароль кассира 15 строка Максимальная длина 8
109 Пароль кассира 16 строка Максимальная длина 8
110 Пароль кассира 17 строка Максимальная длина 8
111 Пароль кассира 18 строка Максимальная длина 8
112 Пароль кассира 19 строка Максимальная длина 8
113 Пароль кассира 20 строка Максимальная длина 8
114 Пароль кассира 21 строка Максимальная длина 8
115 Пароль кассира 22 строка Максимальная длина 8
116 Пароль кассира 23 строка Максимальная длина 8
117 Пароль кассира 24 строка Максимальная длина 8
118 Пароль кассира 25 строка Максимальная длина 8
119 Пароль кассира 26 строка Максимальная длина 8
120 Пароль кассира 27 строка Максимальная длина 8
121 Пароль кассира 28 строка Максимальная длина 8
122 Имя кассира 1 строка Максимальная длина 42
123 Имя кассира 2 строка Максимальная длина 42
124 Имя кассира 3 строка Максимальная длина 42
125 Имя кассира 4 строка Максимальная длина 42
126 Имя кассира 5 строка Максимальная длина 42
127 Имя кассира 6 строка Максимальная длина 42
128 Имя кассира 7 строка Максимальная длина 42
129 Имя кассира 8 строка Максимальная длина 42
130 Имя кассира 9 строка Максимальная длина 42
131 Имя кассира 10 строка Максимальная длина 42
132 Имя кассира 11 строка Максимальная длина 42
133 Имя кассира 12 строка Максимальная длина 42
134 Имя кассира 13 строка Максимальная длина 42
135 Имя кассира 14 строка Максимальная длина 42
136 Имя кассира 15 строка Максимальная длина 42
137 Имя кассира 16 строка Максимальная длина 42
138 Имя кассира 17 строка Максимальная длина 42
139 Имя кассира 18 строка Максимальная длина 42
140 Имя кассира 19 строка Максимальная длина 42
141 Имя кассира 20 строка Максимальная длина 42
142 Имя кассира 21 строка Максимальная длина 42
143 Имя кассира 22 строка Максимальная длина 42
144 Имя кассира 23 строка Максимальная длина 42
145 Имя кассира 24 строка Максимальная длина 42
146 Имя кассира 25 строка Максимальная длина 42
147 Имя кассира 26 строка Максимальная длина 42
148 Имя кассира 27 строка Максимальная длина 42
149 Имя кассира 28 строка Максимальная длина 42
150 ИНН кассира 1 строка Максимальная длина 12
151 ИНН кассира 2 строка Максимальная длина 12
152 ИНН кассира 3 строка Максимальная длина 12
153 ИНН кассира 4 строка Максимальная длина 12
154 ИНН кассира 5 строка Максимальная длина 12
155 ИНН кассира 6 строка Максимальная длина 12
156 ИНН кассира 7 строка Максимальная длина 12
157 ИНН кассира 8 строка Максимальная длина 12
158 ИНН кассира 9 строка Максимальная длина 12
159 ИНН кассира 10 строка Максимальная длина 12
160 ИНН кассира 11 строка Максимальная длина 12
161 ИНН кассира 12 строка Максимальная длина 12
162 ИНН кассира 13 строка Максимальная длина 12
163 ИНН кассира 14 строка Максимальная длина 12
164 ИНН кассира 15 строка Максимальная длина 12
165 ИНН кассира 16 строка Максимальная длина 12
166 ИНН кассира 17 строка Максимальная длина 12
167 ИНН кассира 18 строка Максимальная длина 12
168 ИНН кассира 19 строка Максимальная длина 12
169 ИНН кассира 20 строка Максимальная длина 12
170 ИНН кассира 21 строка Максимальная длина 12
171 ИНН кассира 22 строка Максимальная длина 12
172 ИНН кассира 23 строка Максимальная длина 12
173 ИНН кассира 24 строка Максимальная длина 12
174 ИНН кассира 25 строка Максимальная длина 12
175 ИНН кассира 26 строка Максимальная длина 12
176 ИНН кассира 27 строка Максимальная длина 12
177 ИНН кассира 28 строка Максимальная длина 12
178 Пароль администратора строка Максимальная длина 8
179 Имя администратора строка Максимальная длина 42
180 ИНН администратора строка Максимальная длина 12
181 Пароль системного администратора строка Максимальная длина 8
182 Имя системного администратора строка Максимальная длина 42
183 ИНН системного администратора строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина 42
185 Строка клише 2 строка Максимальная длина 42
186 Строка клише 3 строка Максимальная длина 42
187 Строка клише 4 строка Максимальная длина 42
188 Строка клише 5 строка Максимальная длина 42
189 Строка клише 6 строка Максимальная длина 42
190 Строка клише 7 строка Максимальная длина 42
191 Строка клише 8 строка Максимальная длина 42
192 Строка клише 9 строка Максимальная длина 42
193 Строка клише 10 строка Максимальная длина 42
194 Строка клише 11 строка Максимальная длина 42
195 Строка клише 12 строка Максимальная длина 42
196 Строка клише 13 строка Максимальная длина 42
197 Строка клише 14 строка Максимальная длина 42
198 Строка клише 15 строка Максимальная длина 42
199 Строка клише 16 строка Максимальная длина 42
200 Строка клише 17 строка Максимальная длина 42
201 Строка клише 18 строка Максимальная длина 42
202 Строка клише 19 строка Максимальная длина 42
203 Строка клише 20 строка Максимальная длина 42
204 Наименование секции 1 строка Максимальная длина 42
205 Наименование секции 2 строка Максимальная длина 42
206 Наименование секции 3 строка Максимальная длина 42
207 Наименование секции 4 строка Максимальная длина 42
208 Наименование секции 5 строка Максимальная длина 42
209 Наименование секции 6 строка Максимальная длина 42
210 Наименование секции 7 строка Максимальная длина 42
211 Наименование секции 8 строка Максимальная длина 42
212 Наименование секции 9 строка Максимальная длина 42
213 Наименование секции 10 строка Максимальная длина 42
214 Наименование секции 11 строка Максимальная длина 42
215 Наименование секции 12 строка Максимальная длина 42
216 Наименование секции 13 строка Максимальная длина 42
217 Наименование секции 14 строка Максимальная длина 42
218 Наименование секции 15 строка Максимальная длина 42
219 Наименование секции 16 строка Максимальная длина 42
220 Номер налога 1 число 1 .. 6
221 Номер налога 2 число 1 .. 6
222 Номер налога 3 число 1 .. 6
223 Номер налога 4 число 1 .. 6
224 Номер налога 5 число 1 .. 6
225 Номер налога 6 число 1 .. 6
226 Номер налога 7 число 1 .. 6
227 Номер налога 8 число 1 .. 6
228 Номер налога 9 число 1 .. 6
229 Номер налога 10 число 1 .. 6
230 Номер налога 11 число 1 .. 6
231 Номер налога 12 число 1 .. 6
232 Номер налога 13 число 1 .. 6
233 Номер налога 14 число 1 .. 6
234 Номер налога 15 число 1 .. 6
235 Номер налога 16 число 1 .. 6
236 Скорость ККТ число 1200 — 1200 бод
2400 — 2400 бод
4800 — 4800 бод
9600 — 9600 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
237 Подключенное устройство число 0 — Нет устройства
1 — Сканер
238 Скорость подключенного устройства число 1200 — 1200 бод
2400 — 2400 бод
4800 — 4800 бод
9600 — 9600 бод
14400 — 14400 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
239 Канал обмена с ККТ число 0 — RS-232
4 — USB
5 — Bluetooth
7 — Wi-Fi
240 Наименование способа расчета 2 строка Максимальная длина 42
241 Наименование способа расчета 3 строка Максимальная длина 42
242 Наименование способа расчета 4 строка Максимальная длина 42
243 Наименование способа расчета 5 строка Максимальная длина 42
244 Наименование способа расчета 6 строка Максимальная длина 42
245 Наименование способа расчета 7 строка Максимальная длина 42
246 Наименование способа расчета 8 строка Максимальная длина 42
247 Наименование способа расчета 9 строка Максимальная длина 42
248 Наименование способа расчета 10 строка Максимальная длина 42
249 Номер формы расчета 2 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
250 Номер формы расчета 3 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
251 Номер формы расчета 4 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
252 Номер формы расчета 5 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
265 Конфигурационная строка (GSM) строка Максимальная длина 32
266 Имя пользователя (GSM) строка Максимальная длина 32
267 Пароль (GSM) строка Максимальная длина 32
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 32
270 Пароль доступа к точке доступа строка Максимальная длина 32
271 Номер канала Wi-Fi в режиме точки доступа число 0 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
1 — WEP
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 1 .. 65535
275 DNS ОФД строка Максимальная длина 15
276 Канал обмена с ОФД число 1 — USB (EoU)
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
277 Адрес сайта ФНС строка Максимальная длина 64
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
280 Интервал посылок диагностических сообщений, с. число 0 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 1 .. 5
282 Интервал опроса ФН при разрывах (в сек.) число 5 .. 120
301 Печатать на ЧЛ сообщение о полученном IP-адресе число 0 — Не печатать
1 — Печатать
305 Частота обмена с ФН, кбит/с число 50 .. 400
306 Передавать необязательные реквизиты в ОФД число 0 — Не передавать
1 — Передавать
307 Ожидание инициализации ФН после включения, с. число 5 .. 255
308 Ожидание обработки команды в ФН, с. число 10 .. 255
309 Размер чека в байтах число 0 .. 4294967295
310 Печатать пароль доступа к точке Wi-Fi число 0 — Не печатать
1 — Печатать
311 Блокировать ККТ при переполнении ЭЖ число 0 — Не блокировать
1 — Блокировать работу по протоколу
2 — Блокировать работу с ЛК
312 Работа со скидками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
313 Работа с надбавками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
330 Шрифт реквизитов в чеке число 1 .. 7
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
332 Печатать реквизит «Наименование ОФД» число 0 — Не печатать
1 — Печатать
333 Печатать реквизит «Адрес электронной почты отправителя» число 0 — Не
печатать
1 — Печатать
334 Работа с ЭЖ число 0 — Отключена
1 — Включена
345 Печатать реквизит «ИНН поставщика» число 0 — Не печатать
1 — Печатать

АТОЛ 15Ф (5.X)

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения

Для работы данной настройки необходимо, чтобы настройка 292 Использовать
загружаемые шаблоны была отлична от 0
55 Пересчитывать суммы налогов после скидки на итог число 1 — Да
0 — Нет
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
76 Выключение / перезагрузка ККТ число 1 — По команде
2 — По кнопке и по команде
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 64
270 Пароль доступа к точке доступа строка Максимальная длина 64
271 Номер канала Wi-Fi в режиме точки доступа число 1 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 1 — USB (EoU)
3 — Wi-Fi
5 — EthernetOverTransport
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
296 Ожидание подключения по Wi-Fi, с. (0 — деактивация, 255 — ожидание
без ограничений) число 0 .. 255
298 Ожидание подключения по Bluetooth, с. (0 — деактивация, 255 —
ожидание без ограничений) число 0 .. 255
299 Регистрировать секции число 0 — Нет
1 — Да
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
329 IP-порт (Wi-Fi) число 1 .. 65535
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
349 Режим включения интерфейсов число 0 — Следовать настройкам
1 — Включить все при следующей перезагрузке
2 — Включать все при каждой перезагрузке
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

АТОЛ 15Ф

Номер Описание Тип Возможные значения
0 Номер ККТ в магазине число 0 .. 255
2 Печатать названия секций число 0 — Не печатать
1 — Печатать
3 Печатать необнуляемую сумму приходов и расходов число 0 — Не печатать
1 — Печатать
4 Производить инкассацию число 0 — Нет
1 — Да
5 Расширенный X-отчет и Z-отчет число 0 — Нет
1 — Да
6 Печатать информацию о количестве чеков за смену по типам операций
число 0 — Не печатать
1 — Печатать
7 Автоматически печатать отчет по секциям перед X- и Z-отчетом число 0 —
Не печатать
1 — Печатать
8 Яркость печати ЧЛ число 1 .. 15
11 Пароль доступа строка Максимальная длина 4
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
13 Шрифт ЧЛ число 1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
14 Количество печатаемых строк после чека на ЧЛ число 0 .. 20
15 Печатать разделители в суточных отчетах число 0 — Не печатать
1 — Печатать
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
17 Печатать необнуляемый итог на начало смены в Z-отчете число 0 — Не
печатать
1 — Печатать
18 Печатать необнуляемый итог на начало смены в X-отчете число 0 — Не
печатать
1 — Печатать
19 Печатать текст командой «Печать строки» число 0 — Не печатать
1 — Печатать
20 Режим перехода на летнее/зимнее время число 0 — Не переходить
1 — Переходить, не оповещать
2 — Переходить, оповещать кассира
3 — Переходить, оповещать кассира и хост
21 Дата перехода на летнее время число
22 Дата перехода на зимнее время число
23 Количество символов в строке число 24 .. 42
24 Символ для разделителя строка Максимальная длина 1
25 Проверять время число 0 .. 99
26 Смещение области печати слева число 0 .. 24
27 Печатать налоги в Х- и Z-отчете и при регистрации число 0 — Не печатать
1 — Печатать
28 Минимальная яркость термокомпенсации на ЧЛ число 1 .. 15
29 Печатать на ЧЛ документ готовности к работе число 0 — Не печатать
1 — Печатать
30 Печатать на ЧЛ клише в служебных сообщениях число 0 — Не печатать
1 — Печатать
31 Печатать на ЧЛ сообщение о вводе даты-времени число 0 — Не печатать
1 — Печатать
32 Протокол работы ККТ число 0 — АТОЛ 2
1 — АТОЛ 3
33 PIN-код для Bluetooth строка Максимальная длина 8
34 Уровень коррекции ошибок QR-кода число 1 .. 4
35 Количество строк заголовка клише число 0 — 0
1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
8 — 8
9 — 9
10 — 10
11 — 11
12 — 12
13 — 13
14 — 14
15 — 15
16 — 16
17 — 17
18 — 18
19 — 19
20 — 20
99 — Старый формат печати
36 Расстояние от ТПГ до отрезного ножа число 0 .. 255
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
38 Звуковой сигнал при окончании бумаги и открытии крышки число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
40 Сохранять печатаемый документ в память число 0 — Не сохранять
1 — Сохранять только отчеты
2 — Сохранять все
41 Печатать нулевые налоги число 0 — Не печатать
1 — Печатать
42 Печать необнуляемой суммы возвратов приходов число 0 — Не печатать
1 — Печатать
43 Печать необнуляемой суммы возвратов расходов число 0 — Не печатать
1 — Печатать
44 Печатать количество отмененных чеков по типам число 0 — Не печатать
1 — Печатать
45 Не печатать блоки «приходы», «возвраты приходов», «расходы»,
«возвраты расходов» число 0 — Не печатать
1 — Печатать
46 Печатать нулевые суммы число 0 — Не печатать
1 — Печатать
47 Печатать номер ККМ в магазине число 0 — Не печатать
1 — Печатать
48 Печатать реквизиты чека на аннулированных чеках число 0 — Не печатать
1 — Печатать
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения
51 Шаблон чека число 1 — Шаблон 1
2 — Шаблон 2
52 Признак способа расчета по умолчанию число 1 — Предоплата 100%
2 — Предоплата
3 — Аванс
4 — Полный расчет
5 — Частичный расчет и кредит
6 — Передача в кредит
7 — Оплата кредита
53 Округлять сумму налога число 0 — На весь чек
1 — После каждой позиции
55 Пересчитывать суммы налогов после скидки на итог число 0 — Нет
1 — Да
56 Учет наличности число 0 — Отключен
1 — Включен
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать полное наименование
2 — Печатать краткое наименование
59 Не печатать Z-отчет при закрытии смены число 0 — Печатать
1 — Не печатать
60 Печатать необнуляемые суммы по способам расчета прихода и возврата
прихода число 0 — Не печатать
1 — Печатать
61 Печатать необнуляемые суммы по способам расчета расхода и возврата
расхода число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
63 Признак предмета расчета по умолчанию число 1 — Товар
2 — Подакцизный товар
3 — Работа
4 — Услуга
5 — Ставка азартной игры
6 — Выигрыш азартной игры
7 — Лотерейный билет
8 — Выигрыш лотереи
9 — Предоставление РИД
10 — Платеж
11 — Агентское вознаграждение
12 — Выплата
13 — Иной предмет расчета
14 — Имущественное право
15 — Внереализационный доход
16 — Иные платежи и взносы
17 — Торговый сбор
18 — Курортный сбор
19 — Залог
20 — Расход
21 — Взносы на ОПС ИП
22 — Взносы на ОПС
23 — Взносы на ОМС ИП
24 — Взносы на ОМС
25 — Взносы на ОСС
26 — Платеж казино
27 — Выдача денежных средств
30 — Подакцизный товар, не имеющий КМ
31 — Подакцизный товар, имеющий КМ
32 — Товар, не имеющий КМ, за исключением подакцизного
33 — Товар, имеющий КМ, за исключением подакцизного
64 Таймаут на выключение ККТ (минуты) число 0 .. 990
76 Выключение / перезагрузка ККТ число 0 — По кнопке
1 — По команде
2 — По кнопке и по команде
94 Пароль кассира 1 строка Максимальная длина 8
95 Пароль кассира 2 строка Максимальная длина 8
96 Пароль кассира 3 строка Максимальная длина 8
97 Пароль кассира 4 строка Максимальная длина 8
98 Пароль кассира 5 строка Максимальная длина 8
99 Пароль кассира 6 строка Максимальная длина 8
100 Пароль кассира 7 строка Максимальная длина 8
101 Пароль кассира 8 строка Максимальная длина 8
102 Пароль кассира 9 строка Максимальная длина 8
103 Пароль кассира 10 строка Максимальная длина 8
104 Пароль кассира 11 строка Максимальная длина 8
105 Пароль кассира 12 строка Максимальная длина 8
106 Пароль кассира 13 строка Максимальная длина 8
107 Пароль кассира 14 строка Максимальная длина 8
108 Пароль кассира 15 строка Максимальная длина 8
109 Пароль кассира 16 строка Максимальная длина 8
110 Пароль кассира 17 строка Максимальная длина 8
111 Пароль кассира 18 строка Максимальная длина 8
112 Пароль кассира 19 строка Максимальная длина 8
113 Пароль кассира 20 строка Максимальная длина 8
114 Пароль кассира 21 строка Максимальная длина 8
115 Пароль кассира 22 строка Максимальная длина 8
116 Пароль кассира 23 строка Максимальная длина 8
117 Пароль кассира 24 строка Максимальная длина 8
118 Пароль кассира 25 строка Максимальная длина 8
119 Пароль кассира 26 строка Максимальная длина 8
120 Пароль кассира 27 строка Максимальная длина 8
121 Пароль кассира 28 строка Максимальная длина 8
122 Имя кассира 1 строка Максимальная длина 42
123 Имя кассира 2 строка Максимальная длина 42
124 Имя кассира 3 строка Максимальная длина 42
125 Имя кассира 4 строка Максимальная длина 42
126 Имя кассира 5 строка Максимальная длина 42
127 Имя кассира 6 строка Максимальная длина 42
128 Имя кассира 7 строка Максимальная длина 42
129 Имя кассира 8 строка Максимальная длина 42
130 Имя кассира 9 строка Максимальная длина 42
131 Имя кассира 10 строка Максимальная длина 42
132 Имя кассира 11 строка Максимальная длина 42
133 Имя кассира 12 строка Максимальная длина 42
134 Имя кассира 13 строка Максимальная длина 42
135 Имя кассира 14 строка Максимальная длина 42
136 Имя кассира 15 строка Максимальная длина 42
137 Имя кассира 16 строка Максимальная длина 42
138 Имя кассира 17 строка Максимальная длина 42
139 Имя кассира 18 строка Максимальная длина 42
140 Имя кассира 19 строка Максимальная длина 42
141 Имя кассира 20 строка Максимальная длина 42
142 Имя кассира 21 строка Максимальная длина 42
143 Имя кассира 22 строка Максимальная длина 42
144 Имя кассира 23 строка Максимальная длина 42
145 Имя кассира 24 строка Максимальная длина 42
146 Имя кассира 25 строка Максимальная длина 42
147 Имя кассира 26 строка Максимальная длина 42
148 Имя кассира 27 строка Максимальная длина 42
149 Имя кассира 28 строка Максимальная длина 42
150 ИНН кассира 1 строка Максимальная длина 12
151 ИНН кассира 2 строка Максимальная длина 12
152 ИНН кассира 3 строка Максимальная длина 12
153 ИНН кассира 4 строка Максимальная длина 12
154 ИНН кассира 5 строка Максимальная длина 12
155 ИНН кассира 6 строка Максимальная длина 12
156 ИНН кассира 7 строка Максимальная длина 12
157 ИНН кассира 8 строка Максимальная длина 12
158 ИНН кассира 9 строка Максимальная длина 12
159 ИНН кассира 10 строка Максимальная длина 12
160 ИНН кассира 11 строка Максимальная длина 12
161 ИНН кассира 12 строка Максимальная длина 12
162 ИНН кассира 13 строка Максимальная длина 12
163 ИНН кассира 14 строка Максимальная длина 12
164 ИНН кассира 15 строка Максимальная длина 12
165 ИНН кассира 16 строка Максимальная длина 12
166 ИНН кассира 17 строка Максимальная длина 12
167 ИНН кассира 18 строка Максимальная длина 12
168 ИНН кассира 19 строка Максимальная длина 12
169 ИНН кассира 20 строка Максимальная длина 12
170 ИНН кассира 21 строка Максимальная длина 12
171 ИНН кассира 22 строка Максимальная длина 12
172 ИНН кассира 23 строка Максимальная длина 12
173 ИНН кассира 24 строка Максимальная длина 12
174 ИНН кассира 25 строка Максимальная длина 12
175 ИНН кассира 26 строка Максимальная длина 12
176 ИНН кассира 27 строка Максимальная длина 12
177 ИНН кассира 28 строка Максимальная длина 12
178 Пароль администратора строка Максимальная длина 8
179 Имя администратора строка Максимальная длина 42
180 ИНН администратора строка Максимальная длина 12
181 Пароль системного администратора строка Максимальная длина 8
182 Имя системного администратора строка Максимальная длина 42
183 ИНН системного администратора строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина 42
185 Строка клише 2 строка Максимальная длина 42
186 Строка клише 3 строка Максимальная длина 42
187 Строка клише 4 строка Максимальная длина 42
188 Строка клише 5 строка Максимальная длина 42
189 Строка клише 6 строка Максимальная длина 42
190 Строка клише 7 строка Максимальная длина 42
191 Строка клише 8 строка Максимальная длина 42
192 Строка клише 9 строка Максимальная длина 42
193 Строка клише 10 строка Максимальная длина 42
194 Строка клише 11 строка Максимальная длина 42
195 Строка клише 12 строка Максимальная длина 42
196 Строка клише 13 строка Максимальная длина 42
197 Строка клише 14 строка Максимальная длина 42
198 Строка клише 15 строка Максимальная длина 42
199 Строка клише 16 строка Максимальная длина 42
200 Строка клише 17 строка Максимальная длина 42
201 Строка клише 18 строка Максимальная длина 42
202 Строка клише 19 строка Максимальная длина 42
203 Строка клише 20 строка Максимальная длина 42
204 Наименование секции 1 строка Максимальная длина 42
205 Наименование секции 2 строка Максимальная длина 42
206 Наименование секции 3 строка Максимальная длина 42
207 Наименование секции 4 строка Максимальная длина 42
208 Наименование секции 5 строка Максимальная длина 42
209 Наименование секции 6 строка Максимальная длина 42
210 Наименование секции 7 строка Максимальная длина 42
211 Наименование секции 8 строка Максимальная длина 42
212 Наименование секции 9 строка Максимальная длина 42
213 Наименование секции 10 строка Максимальная длина 42
214 Наименование секции 11 строка Максимальная длина 42
215 Наименование секции 12 строка Максимальная длина 42
216 Наименование секции 13 строка Максимальная длина 42
217 Наименование секции 14 строка Максимальная длина 42
218 Наименование секции 15 строка Максимальная длина 42
219 Наименование секции 16 строка Максимальная длина 42
220 Номер налога 1 число 1 .. 6
221 Номер налога 2 число 1 .. 6
222 Номер налога 3 число 1 .. 6
223 Номер налога 4 число 1 .. 6
224 Номер налога 5 число 1 .. 6
225 Номер налога 6 число 1 .. 6
226 Номер налога 7 число 1 .. 6
227 Номер налога 8 число 1 .. 6
228 Номер налога 9 число 1 .. 6
229 Номер налога 10 число 1 .. 6
230 Номер налога 11 число 1 .. 6
231 Номер налога 12 число 1 .. 6
232 Номер налога 13 число 1 .. 6
233 Номер налога 14 число 1 .. 6
234 Номер налога 15 число 1 .. 6
235 Номер налога 16 число 1 .. 6
239 Канал обмена с ККТ число 4 — USB
5 — Bluetooth
7 — Wi-Fi
240 Наименование способа расчета 2 строка Максимальная длина 42
241 Наименование способа расчета 3 строка Максимальная длина 42
242 Наименование способа расчета 4 строка Максимальная длина 42
243 Наименование способа расчета 5 строка Максимальная длина 42
244 Наименование способа расчета 6 строка Максимальная длина 42
245 Наименование способа расчета 7 строка Максимальная длина 42
246 Наименование способа расчета 8 строка Максимальная длина 42
247 Наименование способа расчета 9 строка Максимальная длина 42
248 Наименование способа расчета 10 строка Максимальная длина 42
249 Номер формы расчета 2 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
250 Номер формы расчета 3 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
251 Номер формы расчета 4 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
252 Номер формы расчета 5 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
265 Конфигурационная строка (GSM) строка Максимальная длина 32
266 Имя пользователя (GSM) строка Максимальная длина 32
267 Пароль (GSM) строка Максимальная длина 32
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 32
270 Пароль доступа к точке доступа строка Максимальная длина 32
271 Номер канала Wi-Fi в режиме точки доступа число 0 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
1 — WEP
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 1 .. 65535
275 DNS ОФД строка Максимальная длина 15
276 Канал обмена с ОФД число 1 — USB (EoU)
3 — Wi-Fi
5 — EthernetOverTransport
277 Адрес сайта ФНС строка Максимальная длина 64
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
280 Интервал посылок диагностических сообщений, с. число 0 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 1 .. 5
282 Интервал опроса ФН при разрывах (в сек.) число 5 .. 120
301 Печатать на ЧЛ сообщение о полученном IP-адресе число 0 — Не печатать
1 — Печатать
305 Частота обмена с ФН, кбит/с число 50 .. 400
306 Передавать необязательные реквизиты в ОФД число 0 — Не передавать
1 — Передавать
307 Ожидание инициализации ФН после включения, с. число 5 .. 255
308 Ожидание обработки команды в ФН, с. число 10 .. 255
309 Размер чека в байтах число 0 .. 4294967295
310 Печатать пароль доступа к точке Wi-Fi число 0 — Не печатать
1 — Печатать
311 Блокировать ККТ при переполнении ЭЖ число 0 — Не блокировать
1 — Блокировать работу по протоколу
2 — Блокировать работу с ЛК
312 Работа со скидками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
313 Работа с надбавками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
330 Шрифт реквизитов в чеке число 1 .. 7
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
332 Печатать реквизит «Наименование ОФД» число 0 — Не печатать
1 — Печатать
333 Печатать реквизит «Адрес электронной почты отправителя» число 0 — Не
печатать
1 — Печатать
334 Работа с ЭЖ число 0 — Отключена
1 — Включена
345 Печатать реквизит «ИНН поставщика» число 0 — Не печатать
1 — Печатать

АТОЛ 20Ф (5.X)

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения

Для работы данной настройки необходимо, чтобы настройка 292 Использовать
загружаемые шаблоны была отлична от 0
55 Пересчитывать суммы налогов после скидки на итог число 1 — Да
0 — Нет
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 64
270 Пароль доступа к точке доступа строка Максимальная длина 64
271 Номер канала Wi-Fi в режиме точки доступа число 1 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 1 — USB (EoU)
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
285 Ширина бумаги число 0 — По умолчанию
1 — 80мм
2 — 57мм
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
296 Ожидание подключения по Wi-Fi, с. (0 — деактивация, 255 — ожидание
без ограничений) число 0 .. 255
297 Ожидание подключения по GSM, с. (0 — деактивация, 255 — ожидание без
ограничений) число 0 .. 255
298 Ожидание подключения по Bluetooth, с. (0 — деактивация, 255 —
ожидание без ограничений) число 0 .. 255
299 Регистрировать секции число 0 — Нет
1 — Да
300 Включить отрезчик число 0 — Нет
1 — Да
322 Отрезать документы полностью число 0 — Нет
1 — Да
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
329 IP-порт (Wi-Fi) число 1 .. 65535
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
349 Режим включения интерфейсов число 0 — Следовать настройкам
1 — Включить все при следующей перезагрузке
2 — Включать все при каждой перезагрузке
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

АТОЛ 20Ф

Номер Описание Тип Возможные значения
0 Номер ККТ в магазине число 0 .. 255
2 Печатать названия секций число 0 — Не печатать
1 — Печатать
3 Печатать необнуляемую сумму приходов и расходов число 0 — Не печатать
1 — Печатать
4 Производить инкассацию число 0 — Нет
1 — Да
5 Расширенный X-отчет и Z-отчет число 0 — Нет
1 — Да
6 Печатать информацию о количестве чеков за смену по типам операций
число 0 — Не печатать
1 — Печатать
7 Автоматически печатать отчет по секциям перед X- и Z-отчетом число 0 —
Не печатать
1 — Печатать
8 Яркость печати ЧЛ число 1 .. 15
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
11 Пароль доступа строка Максимальная длина 4
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
13 Шрифт ЧЛ число 1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
14 Количество печатаемых строк после чека на ЧЛ число 0 .. 20
15 Печатать разделители в суточных отчетах число 0 — Не печатать
1 — Печатать
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
17 Печатать необнуляемый итог на начало смены в Z-отчете число 0 — Не
печатать
1 — Печатать
18 Печатать необнуляемый итог на начало смены в X-отчете число 0 — Не
печатать
1 — Печатать
19 Печатать текст командой «Печать строки» число 0 — Не печатать
1 — Печатать
20 Режим перехода на летнее/зимнее время число 0 — Не переходить
1 — Переходить, не оповещать
2 — Переходить, оповещать кассира
3 — Переходить, оповещать кассира и хост
21 Дата перехода на летнее время число
22 Дата перехода на зимнее время число
23 Количество символов в строке число 24 .. 64
24 Символ для разделителя строка Максимальная длина 1
25 Проверять время число 0 .. 99
26 Смещение области печати слева число 0 .. 24
27 Печатать налоги в Х- и Z-отчете и при регистрации число 0 — Не печатать
1 — Печатать
28 Минимальная яркость термокомпенсации на ЧЛ число 1 .. 15
29 Печатать на ЧЛ документ готовности к работе число 0 — Не печатать
1 — Печатать
30 Печатать на ЧЛ клише в служебных сообщениях число 0 — Не печатать
1 — Печатать
31 Печатать на ЧЛ сообщение о вводе даты-времени число 0 — Не печатать
1 — Печатать
32 Протокол работы ККТ число 0 — АТОЛ 2
1 — АТОЛ 3
33 PIN-код для Bluetooth строка Максимальная длина 8
34 Уровень коррекции ошибок QR-кода число 1 .. 4
35 Количество строк заголовка клише число 0 — 0
1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
8 — 8
9 — 9
10 — 10
11 — 11
12 — 12
13 — 13
14 — 14
15 — 15
16 — 16
17 — 17
18 — 18
19 — 19
20 — 20
99 — Старый формат печати
36 Расстояние от ТПГ до отрезного ножа число 0 .. 255
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
38 Звуковой сигнал при окончании бумаги и открытии крышки число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
40 Сохранять печатаемый документ в память число 0 — Не сохранять
1 — Сохранять только отчеты
2 — Сохранять все
41 Печатать нулевые налоги число 0 — Не печатать
1 — Печатать
42 Печать необнуляемой суммы возвратов приходов число 0 — Не печатать
1 — Печатать
43 Печать необнуляемой суммы возвратов расходов число 0 — Не печатать
1 — Печатать
44 Печатать количество отмененных чеков по типам число 0 — Не печатать
1 — Печатать
45 Не печатать блоки «приходы», «возвраты приходов», «расходы»,
«возвраты расходов» число 0 — Не печатать
1 — Печатать
46 Печатать нулевые суммы число 0 — Не печатать
1 — Печатать
47 Печатать номер ККМ в магазине число 0 — Не печатать
1 — Печатать
48 Печатать реквизиты чека на аннулированных чеках число 0 — Не печатать
1 — Печатать
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения
51 Шаблон чека число 1 — Шаблон 1
2 — Шаблон 2
52 Признак способа расчета по умолчанию число 1 — Предоплата 100%
2 — Предоплата
3 — Аванс
4 — Полный расчет
5 — Частичный расчет и кредит
6 — Передача в кредит
7 — Оплата кредита
53 Округлять сумму налога число 0 — На весь чек
1 — После каждой позиции
55 Пересчитывать суммы налогов после скидки на итог число 0 — Нет
1 — Да
56 Учет наличности число 0 — Отключен
1 — Включен
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать полное наименование
2 — Печатать краткое наименование
59 Не печатать Z-отчет при закрытии смены число 0 — Печатать
1 — Не печатать
60 Печатать необнуляемые суммы по способам расчета прихода и возврата
прихода число 0 — Не печатать
1 — Печатать
61 Печатать необнуляемые суммы по способам расчета расхода и возврата
расхода число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
63 Признак предмета расчета по умолчанию число 1 — Товар
2 — Подакцизный товар
3 — Работа
4 — Услуга
5 — Ставка азартной игры
6 — Выигрыш азартной игры
7 — Лотерейный билет
8 — Выигрыш лотереи
9 — Предоставление РИД
10 — Платеж
11 — Агентское вознаграждение
12 — Выплата
13 — Иной предмет расчета
14 — Имущественное право
15 — Внереализационный доход
16 — Иные платежи и взносы
17 — Торговый сбор
18 — Курортный сбор
19 — Залог
20 — Расход
21 — Взносы на ОПС ИП
22 — Взносы на ОПС
23 — Взносы на ОМС ИП
24 — Взносы на ОМС
25 — Взносы на ОСС
26 — Платеж казино
27 — Выдача денежных средств
30 — Подакцизный товар, не имеющий КМ
31 — Подакцизный товар, имеющий КМ
32 — Товар, не имеющий КМ, за исключением подакцизного
33 — Товар, имеющий КМ, за исключением подакцизного
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
66 Отрезать чек после завершения документа число 0 — Не отрезать
1 — Не полностью
2 — Полностью
67 Запретить отрезку чеков число 0 — Нет
1 — Да
68 Запретить отрезку отчетов число 0 — Нет
1 — Да
69 Отрезать ЧЛ после печати клише командой «Печать клише» число 0 — Нет
1 — Да
75 Расстояние от ножа отрезчика до гребенки число 0 .. 255
94 Пароль кассира 1 строка Максимальная длина 8
95 Пароль кассира 2 строка Максимальная длина 8
96 Пароль кассира 3 строка Максимальная длина 8
97 Пароль кассира 4 строка Максимальная длина 8
98 Пароль кассира 5 строка Максимальная длина 8
99 Пароль кассира 6 строка Максимальная длина 8
100 Пароль кассира 7 строка Максимальная длина 8
101 Пароль кассира 8 строка Максимальная длина 8
102 Пароль кассира 9 строка Максимальная длина 8
103 Пароль кассира 10 строка Максимальная длина 8
104 Пароль кассира 11 строка Максимальная длина 8
105 Пароль кассира 12 строка Максимальная длина 8
106 Пароль кассира 13 строка Максимальная длина 8
107 Пароль кассира 14 строка Максимальная длина 8
108 Пароль кассира 15 строка Максимальная длина 8
109 Пароль кассира 16 строка Максимальная длина 8
110 Пароль кассира 17 строка Максимальная длина 8
111 Пароль кассира 18 строка Максимальная длина 8
112 Пароль кассира 19 строка Максимальная длина 8
113 Пароль кассира 20 строка Максимальная длина 8
114 Пароль кассира 21 строка Максимальная длина 8
115 Пароль кассира 22 строка Максимальная длина 8
116 Пароль кассира 23 строка Максимальная длина 8
117 Пароль кассира 24 строка Максимальная длина 8
118 Пароль кассира 25 строка Максимальная длина 8
119 Пароль кассира 26 строка Максимальная длина 8
120 Пароль кассира 27 строка Максимальная длина 8
121 Пароль кассира 28 строка Максимальная длина 8
122 Имя кассира 1 строка Максимальная длина 64
123 Имя кассира 2 строка Максимальная длина 64
124 Имя кассира 3 строка Максимальная длина 64
125 Имя кассира 4 строка Максимальная длина 64
126 Имя кассира 5 строка Максимальная длина 64
127 Имя кассира 6 строка Максимальная длина 64
128 Имя кассира 7 строка Максимальная длина 64
129 Имя кассира 8 строка Максимальная длина 64
130 Имя кассира 9 строка Максимальная длина 64
131 Имя кассира 10 строка Максимальная длина 64
132 Имя кассира 11 строка Максимальная длина 64
133 Имя кассира 12 строка Максимальная длина 64
134 Имя кассира 13 строка Максимальная длина 64
135 Имя кассира 14 строка Максимальная длина 64
136 Имя кассира 15 строка Максимальная длина 64
137 Имя кассира 16 строка Максимальная длина 64
138 Имя кассира 17 строка Максимальная длина 64
139 Имя кассира 18 строка Максимальная длина 64
140 Имя кассира 19 строка Максимальная длина 64
141 Имя кассира 20 строка Максимальная длина 64
142 Имя кассира 21 строка Максимальная длина 64
143 Имя кассира 22 строка Максимальная длина 64
144 Имя кассира 23 строка Максимальная длина 64
145 Имя кассира 24 строка Максимальная длина 64
146 Имя кассира 25 строка Максимальная длина 64
147 Имя кассира 26 строка Максимальная длина 64
148 Имя кассира 27 строка Максимальная длина 64
149 Имя кассира 28 строка Максимальная длина 64
150 ИНН кассира 1 строка Максимальная длина 12
151 ИНН кассира 2 строка Максимальная длина 12
152 ИНН кассира 3 строка Максимальная длина 12
153 ИНН кассира 4 строка Максимальная длина 12
154 ИНН кассира 5 строка Максимальная длина 12
155 ИНН кассира 6 строка Максимальная длина 12
156 ИНН кассира 7 строка Максимальная длина 12
157 ИНН кассира 8 строка Максимальная длина 12
158 ИНН кассира 9 строка Максимальная длина 12
159 ИНН кассира 10 строка Максимальная длина 12
160 ИНН кассира 11 строка Максимальная длина 12
161 ИНН кассира 12 строка Максимальная длина 12
162 ИНН кассира 13 строка Максимальная длина 12
163 ИНН кассира 14 строка Максимальная длина 12
164 ИНН кассира 15 строка Максимальная длина 12
165 ИНН кассира 16 строка Максимальная длина 12
166 ИНН кассира 17 строка Максимальная длина 12
167 ИНН кассира 18 строка Максимальная длина 12
168 ИНН кассира 19 строка Максимальная длина 12
169 ИНН кассира 20 строка Максимальная длина 12
170 ИНН кассира 21 строка Максимальная длина 12
171 ИНН кассира 22 строка Максимальная длина 12
172 ИНН кассира 23 строка Максимальная длина 12
173 ИНН кассира 24 строка Максимальная длина 12
174 ИНН кассира 25 строка Максимальная длина 12
175 ИНН кассира 26 строка Максимальная длина 12
176 ИНН кассира 27 строка Максимальная длина 12
177 ИНН кассира 28 строка Максимальная длина 12
178 Пароль администратора строка Максимальная длина 8
179 Имя администратора строка Максимальная длина 64
180 ИНН администратора строка Максимальная длина 12
181 Пароль системного администратора строка Максимальная длина 8
182 Имя системного администратора строка Максимальная длина 64
183 ИНН системного администратора строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина 64
185 Строка клише 2 строка Максимальная длина 64
186 Строка клише 3 строка Максимальная длина 64
187 Строка клише 4 строка Максимальная длина 64
188 Строка клише 5 строка Максимальная длина 64
189 Строка клише 6 строка Максимальная длина 64
190 Строка клише 7 строка Максимальная длина 64
191 Строка клише 8 строка Максимальная длина 64
192 Строка клише 9 строка Максимальная длина 64
193 Строка клише 10 строка Максимальная длина 64
194 Строка клише 11 строка Максимальная длина 64
195 Строка клише 12 строка Максимальная длина 64
196 Строка клише 13 строка Максимальная длина 64
197 Строка клише 14 строка Максимальная длина 64
198 Строка клише 15 строка Максимальная длина 64
199 Строка клише 16 строка Максимальная длина 64
200 Строка клише 17 строка Максимальная длина 64
201 Строка клише 18 строка Максимальная длина 64
202 Строка клише 19 строка Максимальная длина 64
203 Строка клише 20 строка Максимальная длина 64
204 Наименование секции 1 строка Максимальная длина 64
205 Наименование секции 2 строка Максимальная длина 64
206 Наименование секции 3 строка Максимальная длина 64
207 Наименование секции 4 строка Максимальная длина 64
208 Наименование секции 5 строка Максимальная длина 64
209 Наименование секции 6 строка Максимальная длина 64
210 Наименование секции 7 строка Максимальная длина 64
211 Наименование секции 8 строка Максимальная длина 64
212 Наименование секции 9 строка Максимальная длина 64
213 Наименование секции 10 строка Максимальная длина 64
214 Наименование секции 11 строка Максимальная длина 64
215 Наименование секции 12 строка Максимальная длина 64
216 Наименование секции 13 строка Максимальная длина 64
217 Наименование секции 14 строка Максимальная длина 64
218 Наименование секции 15 строка Максимальная длина 64
219 Наименование секции 16 строка Максимальная длина 64
220 Номер налога 1 число 1 .. 6
221 Номер налога 2 число 1 .. 6
222 Номер налога 3 число 1 .. 6
223 Номер налога 4 число 1 .. 6
224 Номер налога 5 число 1 .. 6
225 Номер налога 6 число 1 .. 6
226 Номер налога 7 число 1 .. 6
227 Номер налога 8 число 1 .. 6
228 Номер налога 9 число 1 .. 6
229 Номер налога 10 число 1 .. 6
230 Номер налога 11 число 1 .. 6
231 Номер налога 12 число 1 .. 6
232 Номер налога 13 число 1 .. 6
233 Номер налога 14 число 1 .. 6
234 Номер налога 15 число 1 .. 6
235 Номер налога 16 число 1 .. 6
238 Скорость подключенного устройства число 1200 — 1200 бод
2400 — 2400 бод
4800 — 4800 бод
9600 — 9600 бод
14400 — 14400 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
239 Канал обмена с ККТ число 4 — USB
5 — Bluetooth
7 — Wi-Fi
240 Наименование способа расчета 2 строка Максимальная длина 64
241 Наименование способа расчета 3 строка Максимальная длина 64
242 Наименование способа расчета 4 строка Максимальная длина 64
243 Наименование способа расчета 5 строка Максимальная длина 64
244 Наименование способа расчета 6 строка Максимальная длина 64
245 Наименование способа расчета 7 строка Максимальная длина 64
246 Наименование способа расчета 8 строка Максимальная длина 64
247 Наименование способа расчета 9 строка Максимальная длина 64
248 Наименование способа расчета 10 строка Максимальная длина 64
249 Номер формы расчета 2 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
250 Номер формы расчета 3 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
251 Номер формы расчета 4 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
252 Номер формы расчета 5 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
265 Конфигурационная строка (GSM) строка Максимальная длина 32
266 Имя пользователя (GSM) строка Максимальная длина 32
267 Пароль (GSM) строка Максимальная длина 32
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 32
270 Пароль доступа к точке доступа строка Максимальная длина 32
271 Номер канала Wi-Fi в режиме точки доступа число 0 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
1 — WEP
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 1 .. 65535
275 DNS ОФД строка Максимальная длина 15
276 Канал обмена с ОФД число 1 — USB (EoU)
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
277 Адрес сайта ФНС строка Максимальная длина 64
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
280 Интервал посылок диагностических сообщений, с. число 0 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 1 .. 5
282 Интервал опроса ФН при разрывах (в сек.) число 5 .. 120
301 Печатать на ЧЛ сообщение о полученном IP-адресе число 0 — Не печатать
1 — Печатать
305 Частота обмена с ФН, кбит/с число 50 .. 400
306 Передавать необязательные реквизиты в ОФД число 0 — Не передавать
1 — Передавать
307 Ожидание инициализации ФН после включения, с. число 5 .. 255
308 Ожидание обработки команды в ФН, с. число 10 .. 255
309 Размер чека в байтах число 0 .. 4294967295
310 Печатать пароль доступа к точке Wi-Fi число 0 — Не печатать
1 — Печатать
311 Блокировать ККТ при переполнении ЭЖ число 0 — Не блокировать
1 — Блокировать работу по протоколу
2 — Блокировать работу с ЛК
312 Работа со скидками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
313 Работа с надбавками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
330 Шрифт реквизитов в чеке число 1 .. 7
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
332 Печатать реквизит «Наименование ОФД» число 0 — Не печатать
1 — Печатать
333 Печатать реквизит «Адрес электронной почты отправителя» число 0 — Не
печатать
1 — Печатать
334 Работа с ЭЖ число 0 — Отключена
1 — Включена
345 Печатать реквизит «ИНН поставщика» число 0 — Не печатать
1 — Печатать

АТОЛ 22Ф (5.X)

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
49 Получать IP-адреса от DHCP (Ethernet) число 0 — Нет
1 — Да
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения

Для работы данной настройки необходимо, чтобы настройка 292 Использовать
загружаемые шаблоны была отлична от 0
55 Пересчитывать суммы налогов после скидки на итог число 1 — Да
0 — Нет
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
71 IP-адрес (Ethernet) строка Максимальная длина 15
72 Маска подсети (Ethernet) строка Максимальная длина 15
73 Шлюз по умолчанию (Ethernet) строка Максимальная длина 15
74 IP-порт (Ethernet) число 1 .. 65535
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
236 Скорость ККТ число 4800 — 4800 бод
9600 — 9600 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
230400 — 230400 бод
460800 — 460800 бод
921600 — 921600 бод
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 64
270 Пароль доступа к точке доступа строка Максимальная длина 64
271 Номер канала Wi-Fi в режиме точки доступа число 1 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 1 — USB (EoU)
2 — Ethernet
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
283 Статичный DNS число 0 — Выключен
1 — Включен
284 Адрес DNS строка Максимальная длина 15
285 Ширина бумаги число 0 — По умолчанию
1 — 80мм
2 — 57мм
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
294 Использовать RS232 число 0 — Нет
1 — Да
295 Ожидание получения сетевых настроек по Ethernet, с. (0 —
деактивация, 255 — ожидание без ограничений) число 0 .. 255
296 Ожидание подключения по Wi-Fi, с. (0 — деактивация, 255 — ожидание
без ограничений) число 0 .. 255
297 Ожидание подключения по GSM, с. (0 — деактивация, 255 — ожидание без
ограничений) число 0 .. 255
298 Ожидание подключения по Bluetooth, с. (0 — деактивация, 255 —
ожидание без ограничений) число 0 .. 255
299 Регистрировать секции число 0 — Нет
1 — Да
300 Включить отрезчик число 0 — Нет
1 — Да
322 Отрезать документы полностью число 0 — Нет
1 — Да
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
329 IP-порт (Wi-Fi) число 1 .. 65535
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
349 Режим включения интерфейсов число 0 — Следовать настройкам
1 — Включить все при следующей перезагрузке
2 — Включать все при каждой перезагрузке
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
380 Интерфейс ФН число 0 — По умолчанию
1 — I2C
2 — UART
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

АТОЛ 22Ф

Номер Описание Тип Возможные значения
0 Номер ККТ в магазине число 0 .. 255
2 Печатать названия секций число 0 — Не печатать
1 — Печатать
3 Печатать необнуляемую сумму приходов и расходов число 0 — Не печатать
1 — Печатать
4 Производить инкассацию число 0 — Нет
1 — Да
5 Расширенный X-отчет и Z-отчет число 0 — Нет
1 — Да
6 Печатать информацию о количестве чеков за смену по типам операций
число 0 — Не печатать
1 — Печатать
7 Автоматически печатать отчет по секциям перед X- и Z-отчетом число 0 —
Не печатать
1 — Печатать
8 Яркость печати ЧЛ число 1 .. 15
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
11 Пароль доступа строка Максимальная длина 4
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
13 Шрифт ЧЛ число 1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
14 Количество печатаемых строк после чека на ЧЛ число 0 .. 20
15 Печатать разделители в суточных отчетах число 0 — Не печатать
1 — Печатать
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
17 Печатать необнуляемый итог на начало смены в Z-отчете число 0 — Не
печатать
1 — Печатать
18 Печатать необнуляемый итог на начало смены в X-отчете число 0 — Не
печатать
1 — Печатать
19 Печатать текст командой «Печать строки» число 0 — Не печатать
1 — Печатать
20 Режим перехода на летнее/зимнее время число 0 — Не переходить
1 — Переходить, не оповещать
2 — Переходить, оповещать кассира
3 — Переходить, оповещать кассира и хост
21 Дата перехода на летнее время число
22 Дата перехода на зимнее время число
23 Количество символов в строке число 24 .. 64
24 Символ для разделителя строка Максимальная длина 1
25 Проверять время число 0 .. 99
26 Смещение области печати слева число 0 .. 24
27 Печатать налоги в Х- и Z-отчете и при регистрации число 0 — Не печатать
1 — Печатать
28 Минимальная яркость термокомпенсации на ЧЛ число 1 .. 15
29 Печатать на ЧЛ документ готовности к работе число 0 — Не печатать
1 — Печатать
30 Печатать на ЧЛ клише в служебных сообщениях число 0 — Не печатать
1 — Печатать
31 Печатать на ЧЛ сообщение о вводе даты-времени число 0 — Не печатать
1 — Печатать
32 Протокол работы ККТ число 0 — АТОЛ 2
1 — АТОЛ 3
33 PIN-код для Bluetooth строка Максимальная длина 8
34 Уровень коррекции ошибок QR-кода число 1 .. 4
35 Количество строк заголовка клише число 0 — 0
1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
8 — 8
9 — 9
10 — 10
11 — 11
12 — 12
13 — 13
14 — 14
15 — 15
16 — 16
17 — 17
18 — 18
19 — 19
20 — 20
99 — Старый формат печати
36 Расстояние от ТПГ до отрезного ножа число 0 .. 255
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
38 Звуковой сигнал при окончании бумаги и открытии крышки число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
40 Сохранять печатаемый документ в память число 0 — Не сохранять
1 — Сохранять только отчеты
2 — Сохранять все
41 Печатать нулевые налоги число 0 — Не печатать
1 — Печатать
42 Печать необнуляемой суммы возвратов приходов число 0 — Не печатать
1 — Печатать
43 Печать необнуляемой суммы возвратов расходов число 0 — Не печатать
1 — Печатать
44 Печатать количество отмененных чеков по типам число 0 — Не печатать
1 — Печатать
45 Не печатать блоки «приходы», «возвраты приходов», «расходы»,
«возвраты расходов» число 0 — Не печатать
1 — Печатать
46 Печатать нулевые суммы число 0 — Не печатать
1 — Печатать
47 Печатать номер ККМ в магазине число 0 — Не печатать
1 — Печатать
48 Печатать реквизиты чека на аннулированных чеках число 0 — Не печатать
1 — Печатать
49 Получать IP-адреса от DHCP (Ethernet) число 0 — Нет
1 — Да
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения
51 Шаблон чека число 1 — Шаблон 1
2 — Шаблон 2
52 Признак способа расчета по умолчанию число 1 — Предоплата 100%
2 — Предоплата
3 — Аванс
4 — Полный расчет
5 — Частичный расчет и кредит
6 — Передача в кредит
7 — Оплата кредита
53 Округлять сумму налога число 0 — На весь чек
1 — После каждой позиции
55 Пересчитывать суммы налогов после скидки на итог число 0 — Нет
1 — Да
56 Учет наличности число 0 — Отключен
1 — Включен
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать полное наименование
2 — Печатать краткое наименование
59 Не печатать Z-отчет при закрытии смены число 0 — Печатать
1 — Не печатать
60 Печатать необнуляемые суммы по способам расчета прихода и возврата
прихода число 0 — Не печатать
1 — Печатать
61 Печатать необнуляемые суммы по способам расчета расхода и возврата
расхода число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
63 Признак предмета расчета по умолчанию число 1 — Товар
2 — Подакцизный товар
3 — Работа
4 — Услуга
5 — Ставка азартной игры
6 — Выигрыш азартной игры
7 — Лотерейный билет
8 — Выигрыш лотереи
9 — Предоставление РИД
10 — Платеж
11 — Агентское вознаграждение
12 — Выплата
13 — Иной предмет расчета
14 — Имущественное право
15 — Внереализационный доход
16 — Иные платежи и взносы
17 — Торговый сбор
18 — Курортный сбор
19 — Залог
20 — Расход
21 — Взносы на ОПС ИП
22 — Взносы на ОПС
23 — Взносы на ОМС ИП
24 — Взносы на ОМС
25 — Взносы на ОСС
26 — Платеж казино
27 — Выдача денежных средств
30 — Подакцизный товар, не имеющий КМ
31 — Подакцизный товар, имеющий КМ
32 — Товар, не имеющий КМ, за исключением подакцизного
33 — Товар, имеющий КМ, за исключением подакцизного
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
66 Отрезать чек после завершения документа число 0 — Не отрезать
1 — Не полностью
2 — Полностью
67 Запретить отрезку чеков число 0 — Нет
1 — Да
68 Запретить отрезку отчетов число 0 — Нет
1 — Да
69 Отрезать ЧЛ после печати клише командой «Печать клише» число 0 — Нет
1 — Да
71 IP-адрес (Ethernet) строка Максимальная длина 15
72 Маска подсети (Ethernet) строка Максимальная длина 15
73 Шлюз по умолчанию (Ethernet) строка Максимальная длина 15
74 IP-порт (Ethernet) число 1 .. 65535
75 Расстояние от ножа отрезчика до гребенки число 0 .. 255
94 Пароль кассира 1 строка Максимальная длина 8
95 Пароль кассира 2 строка Максимальная длина 8
96 Пароль кассира 3 строка Максимальная длина 8
97 Пароль кассира 4 строка Максимальная длина 8
98 Пароль кассира 5 строка Максимальная длина 8
99 Пароль кассира 6 строка Максимальная длина 8
100 Пароль кассира 7 строка Максимальная длина 8
101 Пароль кассира 8 строка Максимальная длина 8
102 Пароль кассира 9 строка Максимальная длина 8
103 Пароль кассира 10 строка Максимальная длина 8
104 Пароль кассира 11 строка Максимальная длина 8
105 Пароль кассира 12 строка Максимальная длина 8
106 Пароль кассира 13 строка Максимальная длина 8
107 Пароль кассира 14 строка Максимальная длина 8
108 Пароль кассира 15 строка Максимальная длина 8
109 Пароль кассира 16 строка Максимальная длина 8
110 Пароль кассира 17 строка Максимальная длина 8
111 Пароль кассира 18 строка Максимальная длина 8
112 Пароль кассира 19 строка Максимальная длина 8
113 Пароль кассира 20 строка Максимальная длина 8
114 Пароль кассира 21 строка Максимальная длина 8
115 Пароль кассира 22 строка Максимальная длина 8
116 Пароль кассира 23 строка Максимальная длина 8
117 Пароль кассира 24 строка Максимальная длина 8
118 Пароль кассира 25 строка Максимальная длина 8
119 Пароль кассира 26 строка Максимальная длина 8
120 Пароль кассира 27 строка Максимальная длина 8
121 Пароль кассира 28 строка Максимальная длина 8
122 Имя кассира 1 строка Максимальная длина 64
123 Имя кассира 2 строка Максимальная длина 64
124 Имя кассира 3 строка Максимальная длина 64
125 Имя кассира 4 строка Максимальная длина 64
126 Имя кассира 5 строка Максимальная длина 64
127 Имя кассира 6 строка Максимальная длина 64
128 Имя кассира 7 строка Максимальная длина 64
129 Имя кассира 8 строка Максимальная длина 64
130 Имя кассира 9 строка Максимальная длина 64
131 Имя кассира 10 строка Максимальная длина 64
132 Имя кассира 11 строка Максимальная длина 64
133 Имя кассира 12 строка Максимальная длина 64
134 Имя кассира 13 строка Максимальная длина 64
135 Имя кассира 14 строка Максимальная длина 64
136 Имя кассира 15 строка Максимальная длина 64
137 Имя кассира 16 строка Максимальная длина 64
138 Имя кассира 17 строка Максимальная длина 64
139 Имя кассира 18 строка Максимальная длина 64
140 Имя кассира 19 строка Максимальная длина 64
141 Имя кассира 20 строка Максимальная длина 64
142 Имя кассира 21 строка Максимальная длина 64
143 Имя кассира 22 строка Максимальная длина 64
144 Имя кассира 23 строка Максимальная длина 64
145 Имя кассира 24 строка Максимальная длина 64
146 Имя кассира 25 строка Максимальная длина 64
147 Имя кассира 26 строка Максимальная длина 64
148 Имя кассира 27 строка Максимальная длина 64
149 Имя кассира 28 строка Максимальная длина 64
150 ИНН кассира 1 строка Максимальная длина 12
151 ИНН кассира 2 строка Максимальная длина 12
152 ИНН кассира 3 строка Максимальная длина 12
153 ИНН кассира 4 строка Максимальная длина 12
154 ИНН кассира 5 строка Максимальная длина 12
155 ИНН кассира 6 строка Максимальная длина 12
156 ИНН кассира 7 строка Максимальная длина 12
157 ИНН кассира 8 строка Максимальная длина 12
158 ИНН кассира 9 строка Максимальная длина 12
159 ИНН кассира 10 строка Максимальная длина 12
160 ИНН кассира 11 строка Максимальная длина 12
161 ИНН кассира 12 строка Максимальная длина 12
162 ИНН кассира 13 строка Максимальная длина 12
163 ИНН кассира 14 строка Максимальная длина 12
164 ИНН кассира 15 строка Максимальная длина 12
165 ИНН кассира 16 строка Максимальная длина 12
166 ИНН кассира 17 строка Максимальная длина 12
167 ИНН кассира 18 строка Максимальная длина 12
168 ИНН кассира 19 строка Максимальная длина 12
169 ИНН кассира 20 строка Максимальная длина 12
170 ИНН кассира 21 строка Максимальная длина 12
171 ИНН кассира 22 строка Максимальная длина 12
172 ИНН кассира 23 строка Максимальная длина 12
173 ИНН кассира 24 строка Максимальная длина 12
174 ИНН кассира 25 строка Максимальная длина 12
175 ИНН кассира 26 строка Максимальная длина 12
176 ИНН кассира 27 строка Максимальная длина 12
177 ИНН кассира 28 строка Максимальная длина 12
178 Пароль администратора строка Максимальная длина 8
179 Имя администратора строка Максимальная длина 64
180 ИНН администратора строка Максимальная длина 12
181 Пароль системного администратора строка Максимальная длина 8
182 Имя системного администратора строка Максимальная длина 64
183 ИНН системного администратора строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина 64
185 Строка клише 2 строка Максимальная длина 64
186 Строка клише 3 строка Максимальная длина 64
187 Строка клише 4 строка Максимальная длина 64
188 Строка клише 5 строка Максимальная длина 64
189 Строка клише 6 строка Максимальная длина 64
190 Строка клише 7 строка Максимальная длина 64
191 Строка клише 8 строка Максимальная длина 64
192 Строка клише 9 строка Максимальная длина 64
193 Строка клише 10 строка Максимальная длина 64
194 Строка клише 11 строка Максимальная длина 64
195 Строка клише 12 строка Максимальная длина 64
196 Строка клише 13 строка Максимальная длина 64
197 Строка клише 14 строка Максимальная длина 64
198 Строка клише 15 строка Максимальная длина 64
199 Строка клише 16 строка Максимальная длина 64
200 Строка клише 17 строка Максимальная длина 64
201 Строка клише 18 строка Максимальная длина 64
202 Строка клише 19 строка Максимальная длина 64
203 Строка клише 20 строка Максимальная длина 64
204 Наименование секции 1 строка Максимальная длина 64
205 Наименование секции 2 строка Максимальная длина 64
206 Наименование секции 3 строка Максимальная длина 64
207 Наименование секции 4 строка Максимальная длина 64
208 Наименование секции 5 строка Максимальная длина 64
209 Наименование секции 6 строка Максимальная длина 64
210 Наименование секции 7 строка Максимальная длина 64
211 Наименование секции 8 строка Максимальная длина 64
212 Наименование секции 9 строка Максимальная длина 64
213 Наименование секции 10 строка Максимальная длина 64
214 Наименование секции 11 строка Максимальная длина 64
215 Наименование секции 12 строка Максимальная длина 64
216 Наименование секции 13 строка Максимальная длина 64
217 Наименование секции 14 строка Максимальная длина 64
218 Наименование секции 15 строка Максимальная длина 64
219 Наименование секции 16 строка Максимальная длина 64
220 Номер налога 1 число 1 .. 6
221 Номер налога 2 число 1 .. 6
222 Номер налога 3 число 1 .. 6
223 Номер налога 4 число 1 .. 6
224 Номер налога 5 число 1 .. 6
225 Номер налога 6 число 1 .. 6
226 Номер налога 7 число 1 .. 6
227 Номер налога 8 число 1 .. 6
228 Номер налога 9 число 1 .. 6
229 Номер налога 10 число 1 .. 6
230 Номер налога 11 число 1 .. 6
231 Номер налога 12 число 1 .. 6
232 Номер налога 13 число 1 .. 6
233 Номер налога 14 число 1 .. 6
234 Номер налога 15 число 1 .. 6
235 Номер налога 16 число 1 .. 6
236 Скорость ККТ число 1200 — 1200 бод
2400 — 2400 бод
4800 — 4800 бод
9600 — 9600 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
238 Скорость подключенного устройства число 1200 — 1200 бод
2400 — 2400 бод
4800 — 4800 бод
9600 — 9600 бод
14400 — 14400 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
239 Канал обмена с ККТ число 0 — RS-232
4 — USB
5 — Bluetooth
6 — Ethernet
7 — Wi-Fi
240 Наименование способа расчета 2 строка Максимальная длина 64
241 Наименование способа расчета 3 строка Максимальная длина 64
242 Наименование способа расчета 4 строка Максимальная длина 64
243 Наименование способа расчета 5 строка Максимальная длина 64
244 Наименование способа расчета 6 строка Максимальная длина 64
245 Наименование способа расчета 7 строка Максимальная длина 64
246 Наименование способа расчета 8 строка Максимальная длина 64
247 Наименование способа расчета 9 строка Максимальная длина 64
248 Наименование способа расчета 10 строка Максимальная длина 64
249 Номер формы расчета 2 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
250 Номер формы расчета 3 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
251 Номер формы расчета 4 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
252 Номер формы расчета 5 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
265 Конфигурационная строка (GSM) строка Максимальная длина 32
266 Имя пользователя (GSM) строка Максимальная длина 32
267 Пароль (GSM) строка Максимальная длина 32
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 32
270 Пароль доступа к точке доступа строка Максимальная длина 32
271 Номер канала Wi-Fi в режиме точки доступа число 0 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
1 — WEP
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 1 .. 65535
275 DNS ОФД строка Максимальная длина 15
276 Канал обмена с ОФД число 1 — USB (EoU)
2 — Ethernet
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
277 Адрес сайта ФНС строка Максимальная длина 64
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
280 Интервал посылок диагностических сообщений, с. число 0 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 1 .. 5
282 Интервал опроса ФН при разрывах (в сек.) число 5 .. 120
301 Печатать на ЧЛ сообщение о полученном IP-адресе число 0 — Не печатать
1 — Печатать
305 Частота обмена с ФН, кбит/с число 50 .. 400
306 Передавать необязательные реквизиты в ОФД число 0 — Не передавать
1 — Передавать
307 Ожидание инициализации ФН после включения, с. число 5 .. 255
308 Ожидание обработки команды в ФН, с. число 10 .. 255
309 Размер чека в байтах число 0 .. 4294967295
310 Печатать пароль доступа к точке Wi-Fi число 0 — Не печатать
1 — Печатать
311 Блокировать ККТ при переполнении ЭЖ число 0 — Не блокировать
1 — Блокировать работу по протоколу
2 — Блокировать работу с ЛК
312 Работа со скидками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
313 Работа с надбавками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
330 Шрифт реквизитов в чеке число 1 .. 7
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
332 Печатать реквизит «Наименование ОФД» число 0 — Не печатать
1 — Печатать
333 Печатать реквизит «Адрес электронной почты отправителя» число 0 — Не
печатать
1 — Печатать
334 Работа с ЭЖ число 0 — Отключена
1 — Включена
345 Печатать реквизит «ИНН поставщика» число 0 — Не печатать
1 — Печатать

АТОЛ 22 v2 Ф

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
49 Получать IP-адреса от DHCP (Ethernet) число 0 — Нет
1 — Да
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения

Для работы данной настройки необходимо, чтобы настройка 292 Использовать
загружаемые шаблоны была отлична от 0
55 Пересчитывать суммы налогов после скидки на итог число 1 — Да
0 — Нет
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
71 IP-адрес (Ethernet) строка Максимальная длина 15
72 Маска подсети (Ethernet) строка Максимальная длина 15
73 Шлюз по умолчанию (Ethernet) строка Максимальная длина 15
74 IP-порт (Ethernet) число 1 .. 65535
76 Выключение / перезагрузка ККТ число 1 — По команде
2 — По кнопке и по команде
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
236 Скорость ККТ число 4800 — 4800 бод
9600 — 9600 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
230400 — 230400 бод
460800 — 460800 бод
921600 — 921600 бод
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 64
270 Пароль доступа к точке доступа строка Максимальная длина 64
271 Номер канала Wi-Fi в режиме точки доступа число 1 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 1 — USB (EoU)
2 — Ethernet
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
283 Статичный DNS число 0 — Выключен
1 — Включен
284 Адрес DNS строка Максимальная длина 15
285 Ширина бумаги число 0 — По умолчанию
1 — 80мм
2 — 57мм
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
294 Использовать RS232 число 0 — Нет
1 — Да
295 Ожидание получения сетевых настроек по Ethernet, с. (0 —
деактивация, 255 — ожидание без ограничений) число 0 .. 255
296 Ожидание подключения по Wi-Fi, с. (0 — деактивация, 255 — ожидание
без ограничений) число 0 .. 255
297 Ожидание подключения по GSM, с. (0 — деактивация, 255 — ожидание без
ограничений) число 0 .. 255
298 Ожидание подключения по Bluetooth, с. (0 — деактивация, 255 —
ожидание без ограничений) число 0 .. 255
299 Регистрировать секции число 0 — Нет
1 — Да
300 Включить отрезчик число 0 — Нет
1 — Да
322 Отрезать документы полностью число 0 — Нет
1 — Да
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
329 IP-порт (Wi-Fi) число 1 .. 65535
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
349 Режим включения интерфейсов число 0 — Следовать настройкам
1 — Включить все при следующей перезагрузке
2 — Включать все при каждой перезагрузке
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
364 Цвет индикатора состояния «Включено» число 0 .. 16777215
365 Цвет индикатора состояния «Ошибка» число 0 .. 16777215
366 Цвет индикатора состояния «Нет бумаги» число 0 .. 16777215
367 Цвет индикатора состояния «Открыта крышка» число 0 .. 16777215
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
380 Интерфейс ФН число 0 — По умолчанию
1 — I2C
2 — UART
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

АТОЛ 25Ф (5.X)

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
49 Получать IP-адреса от DHCP (Ethernet) число 0 — Нет
1 — Да
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения

Для работы данной настройки необходимо, чтобы настройка 292 Использовать
загружаемые шаблоны была отлична от 0
55 Пересчитывать суммы налогов после скидки на итог число 1 — Да
0 — Нет
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
71 IP-адрес (Ethernet) строка Максимальная длина 15
72 Маска подсети (Ethernet) строка Максимальная длина 15
73 Шлюз по умолчанию (Ethernet) строка Максимальная длина 15
74 IP-порт (Ethernet) число 1 .. 65535
76 Выключение / перезагрузка ККТ число 1 — По команде
2 — По кнопке и по команде
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
236 Скорость ККТ число 4800 — 4800 бод
9600 — 9600 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
230400 — 230400 бод
460800 — 460800 бод
921600 — 921600 бод
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 64
270 Пароль доступа к точке доступа строка Максимальная длина 64
271 Номер канала Wi-Fi в режиме точки доступа число 1 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 1 — USB (EoU)
2 — Ethernet
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
283 Статичный DNS число 0 — Выключен
1 — Включен
284 Адрес DNS строка Максимальная длина 15
285 Ширина бумаги число 0 — По умолчанию
1 — 80мм
2 — 57мм
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
294 Использовать RS232 число 0 — Нет
1 — Да
295 Ожидание получения сетевых настроек по Ethernet, с. (0 —
деактивация, 255 — ожидание без ограничений) число 0 .. 255
296 Ожидание подключения по Wi-Fi, с. (0 — деактивация, 255 — ожидание
без ограничений) число 0 .. 255
297 Ожидание подключения по GSM, с. (0 — деактивация, 255 — ожидание без
ограничений) число 0 .. 255
298 Ожидание подключения по Bluetooth, с. (0 — деактивация, 255 —
ожидание без ограничений) число 0 .. 255
299 Регистрировать секции число 0 — Нет
1 — Да
300 Включить отрезчик число 0 — Нет
1 — Да
322 Отрезать документы полностью число 0 — Нет
1 — Да
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
329 IP-порт (Wi-Fi) число 1 .. 65535
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
349 Режим включения интерфейсов число 0 — Следовать настройкам
1 — Включить все при следующей перезагрузке
2 — Включать все при каждой перезагрузке
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

АТОЛ 25Ф

Номер Описание Тип Возможные значения
0 Номер ККТ в магазине число 0 .. 255
2 Печатать названия секций число 0 — Не печатать
1 — Печатать
3 Печатать необнуляемую сумму приходов и расходов число 0 — Не печатать
1 — Печатать
4 Производить инкассацию число 0 — Нет
1 — Да
5 Расширенный X-отчет и Z-отчет число 0 — Нет
1 — Да
6 Печатать информацию о количестве чеков за смену по типам операций
число 0 — Не печатать
1 — Печатать
7 Автоматически печатать отчет по секциям перед X- и Z-отчетом число 0 —
Не печатать
1 — Печатать
8 Яркость печати ЧЛ число 1 .. 15
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
11 Пароль доступа строка Максимальная длина 4
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
13 Шрифт ЧЛ число 1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
14 Количество печатаемых строк после чека на ЧЛ число 0 .. 20
15 Печатать разделители в суточных отчетах число 0 — Не печатать
1 — Печатать
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
17 Печатать необнуляемый итог на начало смены в Z-отчете число 0 — Не
печатать
1 — Печатать
18 Печатать необнуляемый итог на начало смены в X-отчете число 0 — Не
печатать
1 — Печатать
19 Печатать текст командой «Печать строки» число 0 — Не печатать
1 — Печатать
20 Режим перехода на летнее/зимнее время число 0 — Не переходить
1 — Переходить, не оповещать
2 — Переходить, оповещать кассира
3 — Переходить, оповещать кассира и хост
21 Дата перехода на летнее время число
22 Дата перехода на зимнее время число
23 Количество символов в строке число 24 .. 64
24 Символ для разделителя строка Максимальная длина 1
25 Проверять время число 0 .. 99
26 Смещение области печати слева число 0 .. 24
27 Печатать налоги в Х- и Z-отчете и при регистрации число 0 — Не печатать
1 — Печатать
28 Минимальная яркость термокомпенсации на ЧЛ число 1 .. 15
29 Печатать на ЧЛ документ готовности к работе число 0 — Не печатать
1 — Печатать
30 Печатать на ЧЛ клише в служебных сообщениях число 0 — Не печатать
1 — Печатать
31 Печатать на ЧЛ сообщение о вводе даты-времени число 0 — Не печатать
1 — Печатать
32 Протокол работы ККТ число 0 — АТОЛ 2
1 — АТОЛ 3
33 PIN-код для Bluetooth строка Максимальная длина 8
34 Уровень коррекции ошибок QR-кода число 1 .. 4
35 Количество строк заголовка клише число 0 — 0
1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
8 — 8
9 — 9
10 — 10
11 — 11
12 — 12
13 — 13
14 — 14
15 — 15
16 — 16
17 — 17
18 — 18
19 — 19
20 — 20
99 — Старый формат печати
36 Расстояние от ТПГ до отрезного ножа число 0 .. 255
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
38 Звуковой сигнал при окончании бумаги и открытии крышки число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
40 Сохранять печатаемый документ в память число 0 — Не сохранять
1 — Сохранять только отчеты
2 — Сохранять все
41 Печатать нулевые налоги число 0 — Не печатать
1 — Печатать
42 Печать необнуляемой суммы возвратов приходов число 0 — Не печатать
1 — Печатать
43 Печать необнуляемой суммы возвратов расходов число 0 — Не печатать
1 — Печатать
44 Печатать количество отмененных чеков по типам число 0 — Не печатать
1 — Печатать
45 Не печатать блоки «приходы», «возвраты приходов», «расходы»,
«возвраты расходов» число 0 — Не печатать
1 — Печатать
46 Печатать нулевые суммы число 0 — Не печатать
1 — Печатать
47 Печатать номер ККМ в магазине число 0 — Не печатать
1 — Печатать
48 Печатать реквизиты чека на аннулированных чеках число 0 — Не печатать
1 — Печатать
49 Получать IP-адреса от DHCP (Ethernet) число 0 — Нет
1 — Да
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения
51 Шаблон чека число 1 — Шаблон 1
2 — Шаблон 2
52 Признак способа расчета по умолчанию число 1 — Предоплата 100%
2 — Предоплата
3 — Аванс
4 — Полный расчет
5 — Частичный расчет и кредит
6 — Передача в кредит
7 — Оплата кредита
53 Округлять сумму налога число 0 — На весь чек
1 — После каждой позиции
55 Пересчитывать суммы налогов после скидки на итог число 0 — Нет
1 — Да
56 Учет наличности число 0 — Отключен
1 — Включен
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать полное наименование
2 — Печатать краткое наименование
59 Не печатать Z-отчет при закрытии смены число 0 — Печатать
1 — Не печатать
60 Печатать необнуляемые суммы по способам расчета прихода и возврата
прихода число 0 — Не печатать
1 — Печатать
61 Печатать необнуляемые суммы по способам расчета расхода и возврата
расхода число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
63 Признак предмета расчета по умолчанию число 1 — Товар
2 — Подакцизный товар
3 — Работа
4 — Услуга
5 — Ставка азартной игры
6 — Выигрыш азартной игры
7 — Лотерейный билет
8 — Выигрыш лотереи
9 — Предоставление РИД
10 — Платеж
11 — Агентское вознаграждение
12 — Выплата
13 — Иной предмет расчета
14 — Имущественное право
15 — Внереализационный доход
16 — Иные платежи и взносы
17 — Торговый сбор
18 — Курортный сбор
19 — Залог
20 — Расход
21 — Взносы на ОПС ИП
22 — Взносы на ОПС
23 — Взносы на ОМС ИП
24 — Взносы на ОМС
25 — Взносы на ОСС
26 — Платеж казино
27 — Выдача денежных средств
30 — Подакцизный товар, не имеющий КМ
31 — Подакцизный товар, имеющий КМ
32 — Товар, не имеющий КМ, за исключением подакцизного
33 — Товар, имеющий КМ, за исключением подакцизного
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
66 Отрезать чек после завершения документа число 0 — Не отрезать
1 — Не полностью
2 — Полностью
67 Запретить отрезку чеков число 0 — Нет
1 — Да
68 Запретить отрезку отчетов число 0 — Нет
1 — Да
69 Отрезать ЧЛ после печати клише командой «Печать клише» число 0 — Нет
1 — Да
71 IP-адрес (Ethernet) строка Максимальная длина 15
72 Маска подсети (Ethernet) строка Максимальная длина 15
73 Шлюз по умолчанию (Ethernet) строка Максимальная длина 15
74 IP-порт (Ethernet) число 1 .. 65535
75 Расстояние от ножа отрезчика до гребенки число 0 .. 255
76 Выключение / перезагрузка ККТ число 0 — По кнопке
1 — По команде
2 — По кнопке и по команде
94 Пароль кассира 1 строка Максимальная длина 8
95 Пароль кассира 2 строка Максимальная длина 8
96 Пароль кассира 3 строка Максимальная длина 8
97 Пароль кассира 4 строка Максимальная длина 8
98 Пароль кассира 5 строка Максимальная длина 8
99 Пароль кассира 6 строка Максимальная длина 8
100 Пароль кассира 7 строка Максимальная длина 8
101 Пароль кассира 8 строка Максимальная длина 8
102 Пароль кассира 9 строка Максимальная длина 8
103 Пароль кассира 10 строка Максимальная длина 8
104 Пароль кассира 11 строка Максимальная длина 8
105 Пароль кассира 12 строка Максимальная длина 8
106 Пароль кассира 13 строка Максимальная длина 8
107 Пароль кассира 14 строка Максимальная длина 8
108 Пароль кассира 15 строка Максимальная длина 8
109 Пароль кассира 16 строка Максимальная длина 8
110 Пароль кассира 17 строка Максимальная длина 8
111 Пароль кассира 18 строка Максимальная длина 8
112 Пароль кассира 19 строка Максимальная длина 8
113 Пароль кассира 20 строка Максимальная длина 8
114 Пароль кассира 21 строка Максимальная длина 8
115 Пароль кассира 22 строка Максимальная длина 8
116 Пароль кассира 23 строка Максимальная длина 8
117 Пароль кассира 24 строка Максимальная длина 8
118 Пароль кассира 25 строка Максимальная длина 8
119 Пароль кассира 26 строка Максимальная длина 8
120 Пароль кассира 27 строка Максимальная длина 8
121 Пароль кассира 28 строка Максимальная длина 8
122 Имя кассира 1 строка Максимальная длина 64
123 Имя кассира 2 строка Максимальная длина 64
124 Имя кассира 3 строка Максимальная длина 64
125 Имя кассира 4 строка Максимальная длина 64
126 Имя кассира 5 строка Максимальная длина 64
127 Имя кассира 6 строка Максимальная длина 64
128 Имя кассира 7 строка Максимальная длина 64
129 Имя кассира 8 строка Максимальная длина 64
130 Имя кассира 9 строка Максимальная длина 64
131 Имя кассира 10 строка Максимальная длина 64
132 Имя кассира 11 строка Максимальная длина 64
133 Имя кассира 12 строка Максимальная длина 64
134 Имя кассира 13 строка Максимальная длина 64
135 Имя кассира 14 строка Максимальная длина 64
136 Имя кассира 15 строка Максимальная длина 64
137 Имя кассира 16 строка Максимальная длина 64
138 Имя кассира 17 строка Максимальная длина 64
139 Имя кассира 18 строка Максимальная длина 64
140 Имя кассира 19 строка Максимальная длина 64
141 Имя кассира 20 строка Максимальная длина 64
142 Имя кассира 21 строка Максимальная длина 64
143 Имя кассира 22 строка Максимальная длина 64
144 Имя кассира 23 строка Максимальная длина 64
145 Имя кассира 24 строка Максимальная длина 64
146 Имя кассира 25 строка Максимальная длина 64
147 Имя кассира 26 строка Максимальная длина 64
148 Имя кассира 27 строка Максимальная длина 64
149 Имя кассира 28 строка Максимальная длина 64
150 ИНН кассира 1 строка Максимальная длина 12
151 ИНН кассира 2 строка Максимальная длина 12
152 ИНН кассира 3 строка Максимальная длина 12
153 ИНН кассира 4 строка Максимальная длина 12
154 ИНН кассира 5 строка Максимальная длина 12
155 ИНН кассира 6 строка Максимальная длина 12
156 ИНН кассира 7 строка Максимальная длина 12
157 ИНН кассира 8 строка Максимальная длина 12
158 ИНН кассира 9 строка Максимальная длина 12
159 ИНН кассира 10 строка Максимальная длина 12
160 ИНН кассира 11 строка Максимальная длина 12
161 ИНН кассира 12 строка Максимальная длина 12
162 ИНН кассира 13 строка Максимальная длина 12
163 ИНН кассира 14 строка Максимальная длина 12
164 ИНН кассира 15 строка Максимальная длина 12
165 ИНН кассира 16 строка Максимальная длина 12
166 ИНН кассира 17 строка Максимальная длина 12
167 ИНН кассира 18 строка Максимальная длина 12
168 ИНН кассира 19 строка Максимальная длина 12
169 ИНН кассира 20 строка Максимальная длина 12
170 ИНН кассира 21 строка Максимальная длина 12
171 ИНН кассира 22 строка Максимальная длина 12
172 ИНН кассира 23 строка Максимальная длина 12
173 ИНН кассира 24 строка Максимальная длина 12
174 ИНН кассира 25 строка Максимальная длина 12
175 ИНН кассира 26 строка Максимальная длина 12
176 ИНН кассира 27 строка Максимальная длина 12
177 ИНН кассира 28 строка Максимальная длина 12
178 Пароль администратора строка Максимальная длина 8
179 Имя администратора строка Максимальная длина 64
180 ИНН администратора строка Максимальная длина 12
181 Пароль системного администратора строка Максимальная длина 8
182 Имя системного администратора строка Максимальная длина 64
183 ИНН системного администратора строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина 64
185 Строка клише 2 строка Максимальная длина 64
186 Строка клише 3 строка Максимальная длина 64
187 Строка клише 4 строка Максимальная длина 64
188 Строка клише 5 строка Максимальная длина 64
189 Строка клише 6 строка Максимальная длина 64
190 Строка клише 7 строка Максимальная длина 64
191 Строка клише 8 строка Максимальная длина 64
192 Строка клише 9 строка Максимальная длина 64
193 Строка клише 10 строка Максимальная длина 64
194 Строка клише 11 строка Максимальная длина 64
195 Строка клише 12 строка Максимальная длина 64
196 Строка клише 13 строка Максимальная длина 64
197 Строка клише 14 строка Максимальная длина 64
198 Строка клише 15 строка Максимальная длина 64
199 Строка клише 16 строка Максимальная длина 64
200 Строка клише 17 строка Максимальная длина 64
201 Строка клише 18 строка Максимальная длина 64
202 Строка клише 19 строка Максимальная длина 64
203 Строка клише 20 строка Максимальная длина 64
204 Наименование секции 1 строка Максимальная длина 64
205 Наименование секции 2 строка Максимальная длина 64
206 Наименование секции 3 строка Максимальная длина 64
207 Наименование секции 4 строка Максимальная длина 64
208 Наименование секции 5 строка Максимальная длина 64
209 Наименование секции 6 строка Максимальная длина 64
210 Наименование секции 7 строка Максимальная длина 64
211 Наименование секции 8 строка Максимальная длина 64
212 Наименование секции 9 строка Максимальная длина 64
213 Наименование секции 10 строка Максимальная длина 64
214 Наименование секции 11 строка Максимальная длина 64
215 Наименование секции 12 строка Максимальная длина 64
216 Наименование секции 13 строка Максимальная длина 64
217 Наименование секции 14 строка Максимальная длина 64
218 Наименование секции 15 строка Максимальная длина 64
219 Наименование секции 16 строка Максимальная длина 64
220 Номер налога 1 число 1 .. 6
221 Номер налога 2 число 1 .. 6
222 Номер налога 3 число 1 .. 6
223 Номер налога 4 число 1 .. 6
224 Номер налога 5 число 1 .. 6
225 Номер налога 6 число 1 .. 6
226 Номер налога 7 число 1 .. 6
227 Номер налога 8 число 1 .. 6
228 Номер налога 9 число 1 .. 6
229 Номер налога 10 число 1 .. 6
230 Номер налога 11 число 1 .. 6
231 Номер налога 12 число 1 .. 6
232 Номер налога 13 число 1 .. 6
233 Номер налога 14 число 1 .. 6
234 Номер налога 15 число 1 .. 6
235 Номер налога 16 число 1 .. 6
236 Скорость ККТ число 1200 — 1200 бод
2400 — 2400 бод
4800 — 4800 бод
9600 — 9600 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
238 Скорость подключенного устройства число 1200 — 1200 бод
2400 — 2400 бод
4800 — 4800 бод
9600 — 9600 бод
14400 — 14400 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
239 Канал обмена с ККТ число 0 — RS-232
4 — USB
5 — Bluetooth
6 — Ethernet
7 — Wi-Fi
240 Наименование способа расчета 2 строка Максимальная длина 64
241 Наименование способа расчета 3 строка Максимальная длина 64
242 Наименование способа расчета 4 строка Максимальная длина 64
243 Наименование способа расчета 5 строка Максимальная длина 64
244 Наименование способа расчета 6 строка Максимальная длина 64
245 Наименование способа расчета 7 строка Максимальная длина 64
246 Наименование способа расчета 8 строка Максимальная длина 64
247 Наименование способа расчета 9 строка Максимальная длина 64
248 Наименование способа расчета 10 строка Максимальная длина 64
249 Номер формы расчета 2 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
250 Номер формы расчета 3 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
251 Номер формы расчета 4 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
252 Номер формы расчета 5 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
265 Конфигурационная строка (GSM) строка Максимальная длина 32
266 Имя пользователя (GSM) строка Максимальная длина 32
267 Пароль (GSM) строка Максимальная длина 32
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 32
270 Пароль доступа к точке доступа строка Максимальная длина 32
271 Номер канала Wi-Fi в режиме точки доступа число 0 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
1 — WEP
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 1 .. 65535
275 DNS ОФД строка Максимальная длина 15
276 Канал обмена с ОФД число 1 — USB (EoU)
2 — Ethernet
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
277 Адрес сайта ФНС строка Максимальная длина 64
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
280 Интервал посылок диагностических сообщений, с. число 0 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 1 .. 5
282 Интервал опроса ФН при разрывах (в сек.) число 5 .. 120
301 Печатать на ЧЛ сообщение о полученном IP-адресе число 0 — Не печатать
1 — Печатать
305 Частота обмена с ФН, кбит/с число 50 .. 400
306 Передавать необязательные реквизиты в ОФД число 0 — Не передавать
1 — Передавать
307 Ожидание инициализации ФН после включения, с. число 5 .. 255
308 Ожидание обработки команды в ФН, с. число 10 .. 255
309 Размер чека в байтах число 0 .. 4294967295
310 Печатать пароль доступа к точке Wi-Fi число 0 — Не печатать
1 — Печатать
311 Блокировать ККТ при переполнении ЭЖ число 0 — Не блокировать
1 — Блокировать работу по протоколу
2 — Блокировать работу с ЛК
312 Работа со скидками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
313 Работа с надбавками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
330 Шрифт реквизитов в чеке число 1 .. 7
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
332 Печатать реквизит «Наименование ОФД» число 0 — Не печатать
1 — Печатать
333 Печатать реквизит «Адрес электронной почты отправителя» число 0 — Не
печатать
1 — Печатать
334 Работа с ЭЖ число 0 — Отключена
1 — Включена
345 Печатать реквизит «ИНН поставщика» число 0 — Не печатать
1 — Печатать

АТОЛ 27Ф

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
49 Получать IP-адреса от DHCP (Ethernet) число 0 — Нет
1 — Да
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения

Для работы данной настройки необходимо, чтобы настройка 292 Использовать
загружаемые шаблоны была отлична от 0
55 Пересчитывать суммы налогов после скидки на итог число 1 — Да
0 — Нет
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
71 IP-адрес (Ethernet) строка Максимальная длина 15
72 Маска подсети (Ethernet) строка Максимальная длина 15
73 Шлюз по умолчанию (Ethernet) строка Максимальная длина 15
74 IP-порт (Ethernet) число 1 .. 65535
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
236 Скорость ККТ число 4800 — 4800 бод
9600 — 9600 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
230400 — 230400 бод
460800 — 460800 бод
921600 — 921600 бод
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 64
270 Пароль доступа к точке доступа строка Максимальная длина 64
271 Номер канала Wi-Fi в режиме точки доступа число 1 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 1 — USB (EoU)
2 — Ethernet
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
283 Статичный DNS число 0 — Выключен
1 — Включен
284 Адрес DNS строка Максимальная длина 15
285 Ширина бумаги число 0 — По умолчанию
1 — 80мм
2 — 57мм
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
294 Использовать RS232 число 0 — Нет
1 — Да
295 Ожидание получения сетевых настроек по Ethernet, с. (0 —
деактивация, 255 — ожидание без ограничений) число 0 .. 255
296 Ожидание подключения по Wi-Fi, с. (0 — деактивация, 255 — ожидание
без ограничений) число 0 .. 255
297 Ожидание подключения по GSM, с. (0 — деактивация, 255 — ожидание без
ограничений) число 0 .. 255
298 Ожидание подключения по Bluetooth, с. (0 — деактивация, 255 —
ожидание без ограничений) число 0 .. 255
299 Регистрировать секции число 0 — Нет
1 — Да
300 Включить отрезчик число 0 — Нет
1 — Да
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
329 IP-порт (Wi-Fi) число 1 .. 65535
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
349 Режим включения интерфейсов число 0 — Следовать настройкам
1 — Включить все при следующей перезагрузке
2 — Включать все при каждой перезагрузке
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
380 Интерфейс ФН число 0 — По умолчанию
1 — I2C
2 — UART
381 Режим ДЯ число 0 — АТОЛ
1 — ШТРИХ
382 Заземление ДЯ число 0 — Выключено
1 — Включено
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

АТОЛ 30Ф (5.X)

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения

Для работы данной настройки необходимо, чтобы настройка 292 Использовать
загружаемые шаблоны была отлична от 0
55 Пересчитывать суммы налогов после скидки на итог число 1 — Да
0 — Нет
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 64
270 Пароль доступа к точке доступа строка Максимальная длина 64
271 Номер канала Wi-Fi в режиме точки доступа число 1 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 1 — USB (EoU)
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
296 Ожидание подключения по Wi-Fi, с. (0 — деактивация, 255 — ожидание
без ограничений) число 0 .. 255
297 Ожидание подключения по GSM, с. (0 — деактивация, 255 — ожидание без
ограничений) число 0 .. 255
298 Ожидание подключения по Bluetooth, с. (0 — деактивация, 255 —
ожидание без ограничений) число 0 .. 255
299 Регистрировать секции число 0 — Нет
1 — Да
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
329 IP-порт (Wi-Fi) число 1 .. 65535
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
349 Режим включения интерфейсов число 0 — Следовать настройкам
1 — Включить все при следующей перезагрузке
2 — Включать все при каждой перезагрузке
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

АТОЛ 30Ф

Номер Описание Тип Возможные значения
0 Номер ККТ в магазине число 0 .. 255
2 Печатать названия секций число 0 — Не печатать
1 — Печатать
3 Печатать необнуляемую сумму приходов и расходов число 0 — Не печатать
1 — Печатать
4 Производить инкассацию число 0 — Нет
1 — Да
5 Расширенный X-отчет и Z-отчет число 0 — Нет
1 — Да
6 Печатать информацию о количестве чеков за смену по типам операций
число 0 — Не печатать
1 — Печатать
7 Автоматически печатать отчет по секциям перед X- и Z-отчетом число 0 —
Не печатать
1 — Печатать
8 Яркость печати ЧЛ число 1 .. 15
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
11 Пароль доступа строка Максимальная длина 4
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
13 Шрифт ЧЛ число 1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
14 Количество печатаемых строк после чека на ЧЛ число 0 .. 20
15 Печатать разделители в суточных отчетах число 0 — Не печатать
1 — Печатать
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
17 Печатать необнуляемый итог на начало смены в Z-отчете число 0 — Не
печатать
1 — Печатать
18 Печатать необнуляемый итог на начало смены в X-отчете число 0 — Не
печатать
1 — Печатать
19 Печатать текст командой «Печать строки» число 0 — Не печатать
1 — Печатать
20 Режим перехода на летнее/зимнее время число 0 — Не переходить
1 — Переходить, не оповещать
2 — Переходить, оповещать кассира
3 — Переходить, оповещать кассира и хост
21 Дата перехода на летнее время число
22 Дата перехода на зимнее время число
23 Количество символов в строке число 24 .. 64
24 Символ для разделителя строка Максимальная длина 1
25 Проверять время число 0 .. 99
26 Смещение области печати слева число 0 .. 24
27 Печатать налоги в Х- и Z-отчете и при регистрации число 0 — Не печатать
1 — Печатать
28 Минимальная яркость термокомпенсации на ЧЛ число 1 .. 15
29 Печатать на ЧЛ документ готовности к работе число 0 — Не печатать
1 — Печатать
30 Печатать на ЧЛ клише в служебных сообщениях число 0 — Не печатать
1 — Печатать
31 Печатать на ЧЛ сообщение о вводе даты-времени число 0 — Не печатать
1 — Печатать
32 Протокол работы ККТ число 0 — АТОЛ 2
1 — АТОЛ 3
33 PIN-код для Bluetooth строка Максимальная длина 8
34 Уровень коррекции ошибок QR-кода число 1 .. 4
35 Количество строк заголовка клише число 0 — 0
1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
8 — 8
9 — 9
10 — 10
11 — 11
12 — 12
13 — 13
14 — 14
15 — 15
16 — 16
17 — 17
18 — 18
19 — 19
20 — 20
99 — Старый формат печати
36 Расстояние от ТПГ до отрезного ножа число 0 .. 255
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
38 Звуковой сигнал при окончании бумаги и открытии крышки число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
40 Сохранять печатаемый документ в память число 0 — Не сохранять
1 — Сохранять только отчеты
2 — Сохранять все
41 Печатать нулевые налоги число 0 — Не печатать
1 — Печатать
42 Печать необнуляемой суммы возвратов приходов число 0 — Не печатать
1 — Печатать
43 Печать необнуляемой суммы возвратов расходов число 0 — Не печатать
1 — Печатать
44 Печатать количество отмененных чеков по типам число 0 — Не печатать
1 — Печатать
45 Не печатать блоки «приходы», «возвраты приходов», «расходы»,
«возвраты расходов» число 0 — Не печатать
1 — Печатать
46 Печатать нулевые суммы число 0 — Не печатать
1 — Печатать
47 Печатать номер ККМ в магазине число 0 — Не печатать
1 — Печатать
48 Печатать реквизиты чека на аннулированных чеках число 0 — Не печатать
1 — Печатать
49 Получать IP-адреса от DHCP (Ethernet) число 0 — Нет
1 — Да
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения
51 Шаблон чека число 1 — Шаблон 1
2 — Шаблон 2
52 Признак способа расчета по умолчанию число 1 — Предоплата 100%
2 — Предоплата
3 — Аванс
4 — Полный расчет
5 — Частичный расчет и кредит
6 — Передача в кредит
7 — Оплата кредита
53 Округлять сумму налога число 0 — На весь чек
1 — После каждой позиции
55 Пересчитывать суммы налогов после скидки на итог число 0 — Нет
1 — Да
56 Учет наличности число 0 — Отключен
1 — Включен
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать полное наименование
2 — Печатать краткое наименование
59 Не печатать Z-отчет при закрытии смены число 0 — Печатать
1 — Не печатать
60 Печатать необнуляемые суммы по способам расчета прихода и возврата
прихода число 0 — Не печатать
1 — Печатать
61 Печатать необнуляемые суммы по способам расчета расхода и возврата
расхода число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
63 Признак предмета расчета по умолчанию число 1 — Товар
2 — Подакцизный товар
3 — Работа
4 — Услуга
5 — Ставка азартной игры
6 — Выигрыш азартной игры
7 — Лотерейный билет
8 — Выигрыш лотереи
9 — Предоставление РИД
10 — Платеж
11 — Агентское вознаграждение
12 — Выплата
13 — Иной предмет расчета
14 — Имущественное право
15 — Внереализационный доход
16 — Иные платежи и взносы
17 — Торговый сбор
18 — Курортный сбор
19 — Залог
20 — Расход
21 — Взносы на ОПС ИП
22 — Взносы на ОПС
23 — Взносы на ОМС ИП
24 — Взносы на ОМС
25 — Взносы на ОСС
26 — Платеж казино
27 — Выдача денежных средств
30 — Подакцизный товар, не имеющий КМ
31 — Подакцизный товар, имеющий КМ
32 — Товар, не имеющий КМ, за исключением подакцизного
33 — Товар, имеющий КМ, за исключением подакцизного
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
94 Пароль кассира 1 строка Максимальная длина 8
95 Пароль кассира 2 строка Максимальная длина 8
96 Пароль кассира 3 строка Максимальная длина 8
97 Пароль кассира 4 строка Максимальная длина 8
98 Пароль кассира 5 строка Максимальная длина 8
99 Пароль кассира 6 строка Максимальная длина 8
100 Пароль кассира 7 строка Максимальная длина 8
101 Пароль кассира 8 строка Максимальная длина 8
102 Пароль кассира 9 строка Максимальная длина 8
103 Пароль кассира 10 строка Максимальная длина 8
104 Пароль кассира 11 строка Максимальная длина 8
105 Пароль кассира 12 строка Максимальная длина 8
106 Пароль кассира 13 строка Максимальная длина 8
107 Пароль кассира 14 строка Максимальная длина 8
108 Пароль кассира 15 строка Максимальная длина 8
109 Пароль кассира 16 строка Максимальная длина 8
110 Пароль кассира 17 строка Максимальная длина 8
111 Пароль кассира 18 строка Максимальная длина 8
112 Пароль кассира 19 строка Максимальная длина 8
113 Пароль кассира 20 строка Максимальная длина 8
114 Пароль кассира 21 строка Максимальная длина 8
115 Пароль кассира 22 строка Максимальная длина 8
116 Пароль кассира 23 строка Максимальная длина 8
117 Пароль кассира 24 строка Максимальная длина 8
118 Пароль кассира 25 строка Максимальная длина 8
119 Пароль кассира 26 строка Максимальная длина 8
120 Пароль кассира 27 строка Максимальная длина 8
121 Пароль кассира 28 строка Максимальная длина 8
122 Имя кассира 1 строка Максимальная длина 42
123 Имя кассира 2 строка Максимальная длина 42
124 Имя кассира 3 строка Максимальная длина 42
125 Имя кассира 4 строка Максимальная длина 42
126 Имя кассира 5 строка Максимальная длина 42
127 Имя кассира 6 строка Максимальная длина 42
128 Имя кассира 7 строка Максимальная длина 42
129 Имя кассира 8 строка Максимальная длина 42
130 Имя кассира 9 строка Максимальная длина 42
131 Имя кассира 10 строка Максимальная длина 42
132 Имя кассира 11 строка Максимальная длина 42
133 Имя кассира 12 строка Максимальная длина 42
134 Имя кассира 13 строка Максимальная длина 42
135 Имя кассира 14 строка Максимальная длина 42
136 Имя кассира 15 строка Максимальная длина 42
137 Имя кассира 16 строка Максимальная длина 42
138 Имя кассира 17 строка Максимальная длина 42
139 Имя кассира 18 строка Максимальная длина 42
140 Имя кассира 19 строка Максимальная длина 42
141 Имя кассира 20 строка Максимальная длина 42
142 Имя кассира 21 строка Максимальная длина 42
143 Имя кассира 22 строка Максимальная длина 42
144 Имя кассира 23 строка Максимальная длина 42
145 Имя кассира 24 строка Максимальная длина 42
146 Имя кассира 25 строка Максимальная длина 42
147 Имя кассира 26 строка Максимальная длина 42
148 Имя кассира 27 строка Максимальная длина 42
149 Имя кассира 28 строка Максимальная длина 42
150 ИНН кассира 1 строка Максимальная длина 12
151 ИНН кассира 2 строка Максимальная длина 12
152 ИНН кассира 3 строка Максимальная длина 12
153 ИНН кассира 4 строка Максимальная длина 12
154 ИНН кассира 5 строка Максимальная длина 12
155 ИНН кассира 6 строка Максимальная длина 12
156 ИНН кассира 7 строка Максимальная длина 12
157 ИНН кассира 8 строка Максимальная длина 12
158 ИНН кассира 9 строка Максимальная длина 12
159 ИНН кассира 10 строка Максимальная длина 12
160 ИНН кассира 11 строка Максимальная длина 12
161 ИНН кассира 12 строка Максимальная длина 12
162 ИНН кассира 13 строка Максимальная длина 12
163 ИНН кассира 14 строка Максимальная длина 12
164 ИНН кассира 15 строка Максимальная длина 12
165 ИНН кассира 16 строка Максимальная длина 12
166 ИНН кассира 17 строка Максимальная длина 12
167 ИНН кассира 18 строка Максимальная длина 12
168 ИНН кассира 19 строка Максимальная длина 12
169 ИНН кассира 20 строка Максимальная длина 12
170 ИНН кассира 21 строка Максимальная длина 12
171 ИНН кассира 22 строка Максимальная длина 12
172 ИНН кассира 23 строка Максимальная длина 12
173 ИНН кассира 24 строка Максимальная длина 12
174 ИНН кассира 25 строка Максимальная длина 12
175 ИНН кассира 26 строка Максимальная длина 12
176 ИНН кассира 27 строка Максимальная длина 12
177 ИНН кассира 28 строка Максимальная длина 12
178 Пароль администратора строка Максимальная длина 8
179 Имя администратора строка Максимальная длина 42
180 ИНН администратора строка Максимальная длина 12
181 Пароль системного администратора строка Максимальная длина 8
182 Имя системного администратора строка Максимальная длина 42
183 ИНН системного администратора строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина 42
185 Строка клише 2 строка Максимальная длина 42
186 Строка клише 3 строка Максимальная длина 42
187 Строка клише 4 строка Максимальная длина 42
188 Строка клише 5 строка Максимальная длина 42
189 Строка клише 6 строка Максимальная длина 42
190 Строка клише 7 строка Максимальная длина 42
191 Строка клише 8 строка Максимальная длина 42
192 Строка клише 9 строка Максимальная длина 42
193 Строка клише 10 строка Максимальная длина 42
194 Строка клише 11 строка Максимальная длина 42
195 Строка клише 12 строка Максимальная длина 42
196 Строка клише 13 строка Максимальная длина 42
197 Строка клише 14 строка Максимальная длина 42
198 Строка клише 15 строка Максимальная длина 42
199 Строка клише 16 строка Максимальная длина 42
200 Строка клише 17 строка Максимальная длина 42
201 Строка клише 18 строка Максимальная длина 42
202 Строка клише 19 строка Максимальная длина 42
203 Строка клише 20 строка Максимальная длина 42
204 Наименование секции 1 строка Максимальная длина 42
205 Наименование секции 2 строка Максимальная длина 42
206 Наименование секции 3 строка Максимальная длина 42
207 Наименование секции 4 строка Максимальная длина 42
208 Наименование секции 5 строка Максимальная длина 42
209 Наименование секции 6 строка Максимальная длина 42
210 Наименование секции 7 строка Максимальная длина 42
211 Наименование секции 8 строка Максимальная длина 42
212 Наименование секции 9 строка Максимальная длина 42
213 Наименование секции 10 строка Максимальная длина 42
214 Наименование секции 11 строка Максимальная длина 42
215 Наименование секции 12 строка Максимальная длина 42
216 Наименование секции 13 строка Максимальная длина 42
217 Наименование секции 14 строка Максимальная длина 42
218 Наименование секции 15 строка Максимальная длина 42
219 Наименование секции 16 строка Максимальная длина 42
220 Номер налога 1 число 1 .. 6
221 Номер налога 2 число 1 .. 6
222 Номер налога 3 число 1 .. 6
223 Номер налога 4 число 1 .. 6
224 Номер налога 5 число 1 .. 6
225 Номер налога 6 число 1 .. 6
226 Номер налога 7 число 1 .. 6
227 Номер налога 8 число 1 .. 6
228 Номер налога 9 число 1 .. 6
229 Номер налога 10 число 1 .. 6
230 Номер налога 11 число 1 .. 6
231 Номер налога 12 число 1 .. 6
232 Номер налога 13 число 1 .. 6
233 Номер налога 14 число 1 .. 6
234 Номер налога 15 число 1 .. 6
235 Номер налога 16 число 1 .. 6
239 Канал обмена с ККТ число 4 — USB
5 — Bluetooth
7 — Wi-Fi
240 Наименование способа расчета 2 строка Максимальная длина 42
241 Наименование способа расчета 3 строка Максимальная длина 42
242 Наименование способа расчета 4 строка Максимальная длина 42
243 Наименование способа расчета 5 строка Максимальная длина 42
244 Наименование способа расчета 6 строка Максимальная длина 42
245 Наименование способа расчета 7 строка Максимальная длина 42
246 Наименование способа расчета 8 строка Максимальная длина 42
247 Наименование способа расчета 9 строка Максимальная длина 42
248 Наименование способа расчета 10 строка Максимальная длина 42
249 Номер формы расчета 2 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
250 Номер формы расчета 3 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
251 Номер формы расчета 4 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
252 Номер формы расчета 5 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
265 Конфигурационная строка (GSM) строка Максимальная длина 32
266 Имя пользователя (GSM) строка Максимальная длина 32
267 Пароль (GSM) строка Максимальная длина 32
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 32
270 Пароль доступа к точке доступа строка Максимальная длина 32
271 Номер канала Wi-Fi в режиме точки доступа число 0 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
1 — WEP
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 1 .. 65535
275 DNS ОФД строка Максимальная длина 15
276 Канал обмена с ОФД число 1 — USB (EoU)
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
277 Адрес сайта ФНС строка Максимальная длина 64
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
280 Интервал посылок диагностических сообщений, с. число 0 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 1 .. 5
282 Интервал опроса ФН при разрывах (в сек.) число 5 .. 120
301 Печатать на ЧЛ сообщение о полученном IP-адресе число 0 — Не печатать
1 — Печатать
305 Частота обмена с ФН, кбит/с число 50 .. 400
306 Передавать необязательные реквизиты в ОФД число 0 — Не передавать
1 — Передавать
307 Ожидание инициализации ФН после включения, с. число 5 .. 255
308 Ожидание обработки команды в ФН, с. число 10 .. 255
309 Размер чека в байтах число 0 .. 4294967295
310 Печатать пароль доступа к точке Wi-Fi число 0 — Не печатать
1 — Печатать
311 Блокировать ККТ при переполнении ЭЖ число 0 — Не блокировать
1 — Блокировать работу по протоколу
2 — Блокировать работу с ЛК
312 Работа со скидками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
313 Работа с надбавками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
330 Шрифт реквизитов в чеке число 1 .. 7
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
332 Печатать реквизит «Наименование ОФД» число 0 — Не печатать
1 — Печатать
333 Печатать реквизит «Адрес электронной почты отправителя» число 0 — Не
печатать
1 — Печатать
334 Работа с ЭЖ число 0 — Отключена
1 — Включена
345 Печатать реквизит «ИНН поставщика» число 0 — Не печатать
1 — Печатать

АТОЛ 42ФА

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
49 Получать IP-адреса от DHCP (Ethernet) число 0 — Нет
1 — Да
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения

Для работы данной настройки необходимо, чтобы настройка 292 Использовать
загружаемые шаблоны была отлична от 0
55 Пересчитывать суммы налогов после скидки на итог число 1 — Да
0 — Нет
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
71 IP-адрес (Ethernet) строка Максимальная длина 15
72 Маска подсети (Ethernet) строка Максимальная длина 15
73 Шлюз по умолчанию (Ethernet) строка Максимальная длина 15
74 IP-порт (Ethernet) число 1 .. 65535
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
236 Скорость ККТ число 4800 — 4800 бод
9600 — 9600 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
230400 — 230400 бод
460800 — 460800 бод
921600 — 921600 бод
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 64
270 Пароль доступа к точке доступа строка Максимальная длина 64
271 Номер канала Wi-Fi в режиме точки доступа число 1 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 1 — USB (EoU)
2 — Ethernet
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
283 Статичный DNS число 0 — Выключен
1 — Включен
284 Адрес DNS строка Максимальная длина 15
285 Ширина бумаги число 0 — По умолчанию
1 — 80мм
2 — 57мм
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
295 Ожидание получения сетевых настроек по Ethernet, с. (0 —
деактивация, 255 — ожидание без ограничений) число 0 .. 255
296 Ожидание подключения по Wi-Fi, с. (0 — деактивация, 255 — ожидание
без ограничений) число 0 .. 255
297 Ожидание подключения по GSM, с. (0 — деактивация, 255 — ожидание без
ограничений) число 0 .. 255
298 Ожидание подключения по Bluetooth, с. (0 — деактивация, 255 —
ожидание без ограничений) число 0 .. 255
299 Регистрировать секции число 0 — Нет
1 — Да
300 Включить отрезчик число 0 — Нет
1 — Да
322 Отрезать документы полностью число 0 — Нет
1 — Да
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
329 IP-порт (Wi-Fi) число 1 .. 65535
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
336 Выдвигать чек число 0 — Нет
10 — На 10 мм
20 — На 20 мм
30 — На 40 мм
337 Действия с чеком после отрезки число 0 — Проглотить
1 — Выдвинуть на заданное расстояние
2 — Выбросить из принтера
338 Действия с предыдущим чеком, если его не забрали число 0 — Проглотить
1 — Выбросить
339 Чек делает петлю число 0 — Нет
1 — Да
343 Модель подключенного принтера число 0 — Принтер не выбран
1 — CUSTOM VKP-80II
2 — CUSTOM VKP-80II SX
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
349 Режим включения интерфейсов число 0 — Следовать настройкам
1 — Включить все при следующей перезагрузке
2 — Включать все при каждой перезагрузке
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
374 Автозакрытие смены по времени число 0 — Отключено
1 — Включено
375 Автозакрытие смены по истечении 24 часов число 0 — Отключено
1 — Включено
376 Печать отчета при автозакрытии смены число 0 — Отключено
1 — Включено
377 Время автозакрытия смены строка Максимальная длина 4
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

АТОЛ 42ФС (5.X)

Номер Описание Тип Возможные значения
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
49 Получать IP-адреса от DHCP (Ethernet) число 0 — Нет
1 — Да
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения

Для работы данной настройки необходимо, чтобы настройка 292 Использовать
загружаемые шаблоны была отлична от 0
55 Пересчитывать суммы налогов после скидки на итог число 1 — Да
0 — Нет
71 IP-адрес (Ethernet) строка Максимальная длина 15
72 Маска подсети (Ethernet) строка Максимальная длина 15
73 Шлюз по умолчанию (Ethernet) строка Максимальная длина 15
74 IP-порт (Ethernet) число 1 .. 65535
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 2 — Ethernet
5 — EthernetOverTransport
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
283 Статичный DNS число 0 — Выключен
1 — Включен
284 Адрес DNS строка Максимальная длина 15
293 Скорость обмена с ФН число 0 .. 7
295 Ожидание получения сетевых настроек по Ethernet, с. (0 —
деактивация, 255 — ожидание без ограничений) число 0 .. 255
299 Регистрировать секции число 0 — Нет
1 — Да
349 Режим включения интерфейсов число 0 — Следовать настройкам
1 — Включить все при следующей перезагрузке
2 — Включать все при каждой перезагрузке
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

АТОЛ 42ФС

Номер Описание Тип Возможные значения
0 Номер ККТ в магазине число 0 .. 255
2 Печатать названия секций число 0 — Не печатать
1 — Печатать
3 Печатать необнуляемую сумму приходов и расходов число 0 — Не печатать
1 — Печатать
4 Производить инкассацию число 0 — Нет
1 — Да
5 Расширенный X-отчет и Z-отчет число 0 — Нет
1 — Да
6 Печатать информацию о количестве чеков за смену по типам операций
число 0 — Не печатать
1 — Печатать
7 Автоматически печатать отчет по секциям перед X- и Z-отчетом число 0 —
Не печатать
1 — Печатать
8 Яркость печати ЧЛ число 1 .. 15
11 Пароль доступа строка Максимальная длина 4
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
13 Шрифт ЧЛ число 1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
14 Количество печатаемых строк после чека на ЧЛ число 0 .. 20
15 Печатать разделители в суточных отчетах число 0 — Не печатать
1 — Печатать
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
19 Печатать текст командой «Печать строки» число 0 — Не печатать
1 — Печатать
20 Режим перехода на летнее/зимнее время число 0 — Не переходить
1 — Переходить, не оповещать
2 — Переходить, оповещать кассира
3 — Переходить, оповещать кассира и хост
21 Дата перехода на летнее время число
22 Дата перехода на зимнее время число
23 Количество символов в строке число 24 .. 57
24 Символ для разделителя строка Максимальная длина 1
25 Проверять время число 0 .. 99
26 Смещение области печати слева число 0 .. 24
27 Печатать налоги в Х- и Z-отчете и при регистрации число 0 — Не печатать
1 — Печатать
28 Минимальная яркость термокомпенсации на ЧЛ число 1 .. 15
29 Печатать на ЧЛ документ готовности к работе число 0 — Не печатать
1 — Печатать
30 Печатать на ЧЛ клише в служебных сообщениях число 0 — Не печатать
1 — Печатать
31 Печатать на ЧЛ сообщение о вводе даты-времени число 0 — Не печатать
1 — Печатать
32 Протокол работы ККТ число 0 — АТОЛ 2
1 — АТОЛ 3
34 Уровень коррекции ошибок QR-кода число 1 .. 4
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
38 Звуковой сигнал при окончании бумаги и открытии крышки число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
41 Печатать нулевые налоги число 0 — Не печатать
1 — Печатать
42 Печать необнуляемой суммы возвратов приходов число 0 — Не печатать
1 — Печатать
43 Печать необнуляемой суммы возвратов расходов число 0 — Не печатать
1 — Печатать
44 Печатать количество отмененных чеков по типам число 0 — Не печатать
1 — Печатать
45 Не печатать блоки «приходы», «возвраты приходов», «расходы»,
«возвраты расходов» число 0 — Не печатать
1 — Печатать
46 Печатать нулевые суммы число 0 — Не печатать
1 — Печатать
47 Печатать номер ККМ в магазине число 0 — Не печатать
1 — Печатать
48 Печатать реквизиты чека на аннулированных чеках число 0 — Не печатать
1 — Печатать
49 Получать IP-адреса от DHCP (Ethernet) число 0 — Нет
1 — Да
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения
51 Шаблон чека число 1 — Шаблон 1
2 — Шаблон 2
52 Признак способа расчета по умолчанию число 1 — Предоплата 100%
2 — Предоплата
3 — Аванс
4 — Полный расчет
5 — Частичный расчет и кредит
6 — Передача в кредит
7 — Оплата кредита
53 Округлять сумму налога число 0 — На весь чек
1 — После каждой позиции
55 Пересчитывать суммы налогов после скидки на итог число 0 — Нет
1 — Да
56 Учет наличности число 0 — Отключен
1 — Включен
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать полное наименование
2 — Печатать краткое наименование
59 Не печатать Z-отчет при закрытии смены число 0 — Печатать
1 — Не печатать
60 Печатать необнуляемые суммы по способам расчета прихода и возврата
прихода число 0 — Не печатать
1 — Печатать
61 Печатать необнуляемые суммы по способам расчета расхода и возврата
расхода число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
63 Признак предмета расчета по умолчанию число 1 — Товар
2 — Подакцизный товар
3 — Работа
4 — Услуга
5 — Ставка азартной игры
6 — Выигрыш азартной игры
7 — Лотерейный билет
8 — Выигрыш лотереи
9 — Предоставление РИД
10 — Платеж
11 — Агентское вознаграждение
12 — Выплата
13 — Иной предмет расчета
14 — Имущественное право
15 — Внереализационный доход
16 — Иные платежи и взносы
17 — Торговый сбор
18 — Курортный сбор
19 — Залог
20 — Расход
21 — Взносы на ОПС ИП
22 — Взносы на ОПС
23 — Взносы на ОМС ИП
24 — Взносы на ОМС
25 — Взносы на ОСС
26 — Платеж казино
27 — Выдача денежных средств
30 — Подакцизный товар, не имеющий КМ
31 — Подакцизный товар, имеющий КМ
32 — Товар, не имеющий КМ, за исключением подакцизного
33 — Товар, имеющий КМ, за исключением подакцизного
71 IP-адрес (Ethernet) строка Максимальная длина 15
72 Маска подсети (Ethernet) строка Максимальная длина 15
73 Шлюз по умолчанию (Ethernet) строка Максимальная длина 15
74 IP-порт (Ethernet) число 1 .. 65535
76 Выключение / перезагрузка ККТ число 0 — По кнопке
1 — По команде
2 — По кнопке и по команде
94 Пароль кассира 1 строка Максимальная длина 8
95 Пароль кассира 2 строка Максимальная длина 8
96 Пароль кассира 3 строка Максимальная длина 8
97 Пароль кассира 4 строка Максимальная длина 8
98 Пароль кассира 5 строка Максимальная длина 8
99 Пароль кассира 6 строка Максимальная длина 8
100 Пароль кассира 7 строка Максимальная длина 8
101 Пароль кассира 8 строка Максимальная длина 8
102 Пароль кассира 9 строка Максимальная длина 8
103 Пароль кассира 10 строка Максимальная длина 8
104 Пароль кассира 11 строка Максимальная длина 8
105 Пароль кассира 12 строка Максимальная длина 8
106 Пароль кассира 13 строка Максимальная длина 8
107 Пароль кассира 14 строка Максимальная длина 8
108 Пароль кассира 15 строка Максимальная длина 8
109 Пароль кассира 16 строка Максимальная длина 8
110 Пароль кассира 17 строка Максимальная длина 8
111 Пароль кассира 18 строка Максимальная длина 8
112 Пароль кассира 19 строка Максимальная длина 8
113 Пароль кассира 20 строка Максимальная длина 8
114 Пароль кассира 21 строка Максимальная длина 8
115 Пароль кассира 22 строка Максимальная длина 8
116 Пароль кассира 23 строка Максимальная длина 8
117 Пароль кассира 24 строка Максимальная длина 8
118 Пароль кассира 25 строка Максимальная длина 8
119 Пароль кассира 26 строка Максимальная длина 8
120 Пароль кассира 27 строка Максимальная длина 8
121 Пароль кассира 28 строка Максимальная длина 8
122 Имя кассира 1 строка Максимальная длина 57
123 Имя кассира 2 строка Максимальная длина 57
124 Имя кассира 3 строка Максимальная длина 57
125 Имя кассира 4 строка Максимальная длина 57
126 Имя кассира 5 строка Максимальная длина 57
127 Имя кассира 6 строка Максимальная длина 57
128 Имя кассира 7 строка Максимальная длина 57
129 Имя кассира 8 строка Максимальная длина 57
130 Имя кассира 9 строка Максимальная длина 57
131 Имя кассира 10 строка Максимальная длина 57
132 Имя кассира 11 строка Максимальная длина 57
133 Имя кассира 12 строка Максимальная длина 57
134 Имя кассира 13 строка Максимальная длина 57
135 Имя кассира 14 строка Максимальная длина 57
136 Имя кассира 15 строка Максимальная длина 57
137 Имя кассира 16 строка Максимальная длина 57
138 Имя кассира 17 строка Максимальная длина 57
139 Имя кассира 18 строка Максимальная длина 57
140 Имя кассира 19 строка Максимальная длина 57
141 Имя кассира 20 строка Максимальная длина 57
142 Имя кассира 21 строка Максимальная длина 57
143 Имя кассира 22 строка Максимальная длина 57
144 Имя кассира 23 строка Максимальная длина 57
145 Имя кассира 24 строка Максимальная длина 57
146 Имя кассира 25 строка Максимальная длина 57
147 Имя кассира 26 строка Максимальная длина 57
148 Имя кассира 27 строка Максимальная длина 57
149 Имя кассира 28 строка Максимальная длина 57
150 ИНН кассира 1 строка Максимальная длина 12
151 ИНН кассира 2 строка Максимальная длина 12
152 ИНН кассира 3 строка Максимальная длина 12
153 ИНН кассира 4 строка Максимальная длина 12
154 ИНН кассира 5 строка Максимальная длина 12
155 ИНН кассира 6 строка Максимальная длина 12
156 ИНН кассира 7 строка Максимальная длина 12
157 ИНН кассира 8 строка Максимальная длина 12
158 ИНН кассира 9 строка Максимальная длина 12
159 ИНН кассира 10 строка Максимальная длина 12
160 ИНН кассира 11 строка Максимальная длина 12
161 ИНН кассира 12 строка Максимальная длина 12
162 ИНН кассира 13 строка Максимальная длина 12
163 ИНН кассира 14 строка Максимальная длина 12
164 ИНН кассира 15 строка Максимальная длина 12
165 ИНН кассира 16 строка Максимальная длина 12
166 ИНН кассира 17 строка Максимальная длина 12
167 ИНН кассира 18 строка Максимальная длина 12
168 ИНН кассира 19 строка Максимальная длина 12
169 ИНН кассира 20 строка Максимальная длина 12
170 ИНН кассира 21 строка Максимальная длина 12
171 ИНН кассира 22 строка Максимальная длина 12
172 ИНН кассира 23 строка Максимальная длина 12
173 ИНН кассира 24 строка Максимальная длина 12
174 ИНН кассира 25 строка Максимальная длина 12
175 ИНН кассира 26 строка Максимальная длина 12
176 ИНН кассира 27 строка Максимальная длина 12
177 ИНН кассира 28 строка Максимальная длина 12
178 Пароль администратора строка Максимальная длина 8
179 Имя администратора строка Максимальная длина 57
180 ИНН администратора строка Максимальная длина 12
181 Пароль системного администратора строка Максимальная длина 8
182 Имя системного администратора строка Максимальная длина 57
183 ИНН системного администратора строка Максимальная длина 12
204 Наименование секции 1 строка Максимальная длина 57
205 Наименование секции 2 строка Максимальная длина 57
206 Наименование секции 3 строка Максимальная длина 57
207 Наименование секции 4 строка Максимальная длина 57
208 Наименование секции 5 строка Максимальная длина 57
209 Наименование секции 6 строка Максимальная длина 57
210 Наименование секции 7 строка Максимальная длина 57
211 Наименование секции 8 строка Максимальная длина 57
212 Наименование секции 9 строка Максимальная длина 57
213 Наименование секции 10 строка Максимальная длина 57
214 Наименование секции 11 строка Максимальная длина 57
215 Наименование секции 12 строка Максимальная длина 57
216 Наименование секции 13 строка Максимальная длина 57
217 Наименование секции 14 строка Максимальная длина 57
218 Наименование секции 15 строка Максимальная длина 57
219 Наименование секции 16 строка Максимальная длина 57
220 Номер налога 1 число 1 .. 6
221 Номер налога 2 число 1 .. 6
222 Номер налога 3 число 1 .. 6
223 Номер налога 4 число 1 .. 6
224 Номер налога 5 число 1 .. 6
225 Номер налога 6 число 1 .. 6
226 Номер налога 7 число 1 .. 6
227 Номер налога 8 число 1 .. 6
228 Номер налога 9 число 1 .. 6
229 Номер налога 10 число 1 .. 6
230 Номер налога 11 число 1 .. 6
231 Номер налога 12 число 1 .. 6
232 Номер налога 13 число 1 .. 6
233 Номер налога 14 число 1 .. 6
234 Номер налога 15 число 1 .. 6
235 Номер налога 16 число 1 .. 6
239 Канал обмена с ККТ число 4 — USB
6 — Ethernet
7 — Wi-Fi
240 Наименование способа расчета 2 строка Максимальная длина 57
241 Наименование способа расчета 3 строка Максимальная длина 57
242 Наименование способа расчета 4 строка Максимальная длина 57
243 Наименование способа расчета 5 строка Максимальная длина 57
244 Наименование способа расчета 6 строка Максимальная длина 57
245 Наименование способа расчета 7 строка Максимальная длина 57
246 Наименование способа расчета 8 строка Максимальная длина 57
247 Наименование способа расчета 9 строка Максимальная длина 57
248 Наименование способа расчета 10 строка Максимальная длина 57
249 Номер формы расчета 2 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
250 Номер формы расчета 3 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
251 Номер формы расчета 4 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
252 Номер формы расчета 5 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
265 Конфигурационная строка (GSM) строка Максимальная длина 32
266 Имя пользователя (GSM) строка Максимальная длина 32
267 Пароль (GSM) строка Максимальная длина 32
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 32
270 Пароль доступа к точке доступа строка Максимальная длина 32
271 Номер канала Wi-Fi в режиме точки доступа число 0 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
1 — WEP
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 1 .. 65535
275 DNS ОФД строка Максимальная длина 15
276 Канал обмена с ОФД число 1 — USB (EoU)
2 — Ethernet
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
277 Адрес сайта ФНС строка Максимальная длина 64
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
280 Интервал посылок диагностических сообщений, с. число 0 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 1 .. 5
282 Интервал опроса ФН при разрывах (в сек.) число 5 .. 120
301 Печатать на ЧЛ сообщение о полученном IP-адресе число 0 — Не печатать
1 — Печатать
305 Частота обмена с ФН, кбит/с число 50 .. 400
306 Передавать необязательные реквизиты в ОФД число 0 — Не передавать
1 — Передавать
307 Ожидание инициализации ФН после включения, с. число 5 .. 255
308 Ожидание обработки команды в ФН, с. число 10 .. 255
309 Размер чека в байтах число 0 .. 4294967295
311 Блокировать ККТ при переполнении ЭЖ число 0 — Не блокировать
1 — Блокировать работу по протоколу
2 — Блокировать работу с ЛК
312 Работа со скидками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
313 Работа с надбавками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
330 Шрифт реквизитов в чеке число 1 .. 7

АТОЛ 47ФА (5.X)

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
49 Получать IP-адреса от DHCP (Ethernet) число 0 — Нет
1 — Да
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения

Для работы данной настройки необходимо, чтобы настройка 292 Использовать
загружаемые шаблоны была отлична от 0
55 Пересчитывать суммы налогов после скидки на итог число 1 — Да
0 — Нет
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
71 IP-адрес (Ethernet) строка Максимальная длина 15
72 Маска подсети (Ethernet) строка Максимальная длина 15
73 Шлюз по умолчанию (Ethernet) строка Максимальная длина 15
74 IP-порт (Ethernet) число 1 .. 65535
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
236 Скорость ККТ число 4800 — 4800 бод
9600 — 9600 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
230400 — 230400 бод
460800 — 460800 бод
921600 — 921600 бод
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 64
270 Пароль доступа к точке доступа строка Максимальная длина 64
271 Номер канала Wi-Fi в режиме точки доступа число 1 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 1 — USB (EoU)
2 — Ethernet
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
283 Статичный DNS число 0 — Выключен
1 — Включен
284 Адрес DNS строка Максимальная длина 15
285 Ширина бумаги число 0 — По умолчанию
1 — 80мм
2 — 57мм
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
295 Ожидание получения сетевых настроек по Ethernet, с. (0 —
деактивация, 255 — ожидание без ограничений) число 0 .. 255
296 Ожидание подключения по Wi-Fi, с. (0 — деактивация, 255 — ожидание
без ограничений) число 0 .. 255
297 Ожидание подключения по GSM, с. (0 — деактивация, 255 — ожидание без
ограничений) число 0 .. 255
298 Ожидание подключения по Bluetooth, с. (0 — деактивация, 255 —
ожидание без ограничений) число 0 .. 255
299 Регистрировать секции число 0 — Нет
1 — Да
300 Включить отрезчик число 0 — Нет
1 — Да
322 Отрезать документы полностью число 0 — Нет
1 — Да
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
329 IP-порт (Wi-Fi) число 1 .. 65535
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
336 Выдвигать чек число 0 — Нет
10 — На 10 мм
20 — На 20 мм
30 — На 40 мм
337 Действия с чеком после отрезки число 0 — Проглотить
1 — Выдвинуть на заданное расстояние
2 — Выбросить из принтера
338 Действия с предыдущим чеком, если его не забрали число 0 — Проглотить
1 — Выбросить
339 Чек делает петлю число 0 — Нет
1 — Да
343 Модель подключенного принтера число 0 — Принтер не выбран
1 — CUSTOM VKP-80II
2 — CUSTOM VKP-80II SX
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
349 Режим включения интерфейсов число 0 — Следовать настройкам
1 — Включить все при следующей перезагрузке
2 — Включать все при каждой перезагрузке
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
374 Автозакрытие смены по времени число 0 — Отключено
1 — Включено
375 Автозакрытие смены по истечении 24 часов число 0 — Отключено
1 — Включено
376 Печать отчета при автозакрытии смены число 0 — Отключено
1 — Включено
377 Время автозакрытия смены строка Максимальная длина 4
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
380 Интерфейс ФН число 0 — По умолчанию
1 — I2C
2 — UART
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

АТОЛ 50Ф (5.X)

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения

Для работы данной настройки необходимо, чтобы настройка 292 Использовать
загружаемые шаблоны была отлична от 0
55 Пересчитывать суммы налогов после скидки на итог число 1 — Да
0 — Нет
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 64
270 Пароль доступа к точке доступа строка Максимальная длина 64
271 Номер канала Wi-Fi в режиме точки доступа число 1 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 1 — USB (EoU)
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
296 Ожидание подключения по Wi-Fi, с. (0 — деактивация, 255 — ожидание
без ограничений) число 0 .. 255
297 Ожидание подключения по GSM, с. (0 — деактивация, 255 — ожидание без
ограничений) число 0 .. 255
298 Ожидание подключения по Bluetooth, с. (0 — деактивация, 255 —
ожидание без ограничений) число 0 .. 255
299 Регистрировать секции число 0 — Нет
1 — Да
300 Включить отрезчик число 0 — Нет
1 — Да
322 Отрезать документы полностью число 0 — Нет
1 — Да
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
329 IP-порт (Wi-Fi) число 1 .. 65535
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
349 Режим включения интерфейсов число 0 — Следовать настройкам
1 — Включить все при следующей перезагрузке
2 — Включать все при каждой перезагрузке
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

АТОЛ 50Ф

Номер Описание Тип Возможные значения
0 Номер ККТ в магазине число 0 .. 255
2 Печатать названия секций число 0 — Не печатать
1 — Печатать
3 Печатать необнуляемую сумму приходов и расходов число 0 — Не печатать
1 — Печатать
4 Производить инкассацию число 0 — Нет
1 — Да
5 Расширенный X-отчет и Z-отчет число 0 — Нет
1 — Да
6 Печатать информацию о количестве чеков за смену по типам операций
число 0 — Не печатать
1 — Печатать
7 Автоматически печатать отчет по секциям перед X- и Z-отчетом число 0 —
Не печатать
1 — Печатать
8 Яркость печати ЧЛ число 1 .. 15
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
11 Пароль доступа строка Максимальная длина 4
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
13 Шрифт ЧЛ число 1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
14 Количество печатаемых строк после чека на ЧЛ число 0 .. 20
15 Печатать разделители в суточных отчетах число 0 — Не печатать
1 — Печатать
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
17 Печатать необнуляемый итог на начало смены в Z-отчете число 0 — Не
печатать
1 — Печатать
18 Печатать необнуляемый итог на начало смены в X-отчете число 0 — Не
печатать
1 — Печатать
19 Печатать текст командой «Печать строки» число 0 — Не печатать
1 — Печатать
20 Режим перехода на летнее/зимнее время число 0 — Не переходить
1 — Переходить, не оповещать
2 — Переходить, оповещать кассира
3 — Переходить, оповещать кассира и хост
21 Дата перехода на летнее время число
22 Дата перехода на зимнее время число
23 Количество символов в строке число 24 .. 64
24 Символ для разделителя строка Максимальная длина 1
25 Проверять время число 0 .. 99
26 Смещение области печати слева число 0 .. 24
27 Печатать налоги в Х- и Z-отчете и при регистрации число 0 — Не печатать
1 — Печатать
28 Минимальная яркость термокомпенсации на ЧЛ число 1 .. 15
29 Печатать на ЧЛ документ готовности к работе число 0 — Не печатать
1 — Печатать
30 Печатать на ЧЛ клише в служебных сообщениях число 0 — Не печатать
1 — Печатать
31 Печатать на ЧЛ сообщение о вводе даты-времени число 0 — Не печатать
1 — Печатать
32 Протокол работы ККТ число 0 — АТОЛ 2
1 — АТОЛ 3
33 PIN-код для Bluetooth строка Максимальная длина 8
34 Уровень коррекции ошибок QR-кода число 1 .. 4
35 Количество строк заголовка клише число 0 — 0
1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
8 — 8
9 — 9
10 — 10
11 — 11
12 — 12
13 — 13
14 — 14
15 — 15
16 — 16
17 — 17
18 — 18
19 — 19
20 — 20
99 — Старый формат печати
36 Расстояние от ТПГ до отрезного ножа число 0 .. 255
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
38 Звуковой сигнал при окончании бумаги и открытии крышки число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
40 Сохранять печатаемый документ в память число 0 — Не сохранять
1 — Сохранять только отчеты
2 — Сохранять все
41 Печатать нулевые налоги число 0 — Не печатать
1 — Печатать
42 Печать необнуляемой суммы возвратов приходов число 0 — Не печатать
1 — Печатать
43 Печать необнуляемой суммы возвратов расходов число 0 — Не печатать
1 — Печатать
44 Печатать количество отмененных чеков по типам число 0 — Не печатать
1 — Печатать
45 Не печатать блоки «приходы», «возвраты приходов», «расходы»,
«возвраты расходов» число 0 — Не печатать
1 — Печатать
46 Печатать нулевые суммы число 0 — Не печатать
1 — Печатать
47 Печатать номер ККМ в магазине число 0 — Не печатать
1 — Печатать
48 Печатать реквизиты чека на аннулированных чеках число 0 — Не печатать
1 — Печатать
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения
51 Шаблон чека число 1 — Шаблон 1
2 — Шаблон 2
52 Признак способа расчета по умолчанию число 1 — Предоплата 100%
2 — Предоплата
3 — Аванс
4 — Полный расчет
5 — Частичный расчет и кредит
6 — Передача в кредит
7 — Оплата кредита
53 Округлять сумму налога число 0 — На весь чек
1 — После каждой позиции
55 Пересчитывать суммы налогов после скидки на итог число 0 — Нет
1 — Да
56 Учет наличности число 0 — Отключен
1 — Включен
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать полное наименование
2 — Печатать краткое наименование
59 Не печатать Z-отчет при закрытии смены число 0 — Печатать
1 — Не печатать
60 Печатать необнуляемые суммы по способам расчета прихода и возврата
прихода число 0 — Не печатать
1 — Печатать
61 Печатать необнуляемые суммы по способам расчета расхода и возврата
расхода число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
63 Признак предмета расчета по умолчанию число 1 — Товар
2 — Подакцизный товар
3 — Работа
4 — Услуга
5 — Ставка азартной игры
6 — Выигрыш азартной игры
7 — Лотерейный билет
8 — Выигрыш лотереи
9 — Предоставление РИД
10 — Платеж
11 — Агентское вознаграждение
12 — Выплата
13 — Иной предмет расчета
14 — Имущественное право
15 — Внереализационный доход
16 — Иные платежи и взносы
17 — Торговый сбор
18 — Курортный сбор
19 — Залог
20 — Расход
21 — Взносы на ОПС ИП
22 — Взносы на ОПС
23 — Взносы на ОМС ИП
24 — Взносы на ОМС
25 — Взносы на ОСС
26 — Платеж казино
27 — Выдача денежных средств
30 — Подакцизный товар, не имеющий КМ
31 — Подакцизный товар, имеющий КМ
32 — Товар, не имеющий КМ, за исключением подакцизного
33 — Товар, имеющий КМ, за исключением подакцизного
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
66 Отрезать чек после завершения документа число 0 — Не отрезать
1 — Не полностью
2 — Полностью
67 Запретить отрезку чеков число 0 — Нет
1 — Да
68 Запретить отрезку отчетов число 0 — Нет
1 — Да
69 Отрезать ЧЛ после печати клише командой «Печать клише» число 0 — Нет
1 — Да
75 Расстояние от ножа отрезчика до гребенки число 0 .. 255
94 Пароль кассира 1 строка Максимальная длина 8
95 Пароль кассира 2 строка Максимальная длина 8
96 Пароль кассира 3 строка Максимальная длина 8
97 Пароль кассира 4 строка Максимальная длина 8
98 Пароль кассира 5 строка Максимальная длина 8
99 Пароль кассира 6 строка Максимальная длина 8
100 Пароль кассира 7 строка Максимальная длина 8
101 Пароль кассира 8 строка Максимальная длина 8
102 Пароль кассира 9 строка Максимальная длина 8
103 Пароль кассира 10 строка Максимальная длина 8
104 Пароль кассира 11 строка Максимальная длина 8
105 Пароль кассира 12 строка Максимальная длина 8
106 Пароль кассира 13 строка Максимальная длина 8
107 Пароль кассира 14 строка Максимальная длина 8
108 Пароль кассира 15 строка Максимальная длина 8
109 Пароль кассира 16 строка Максимальная длина 8
110 Пароль кассира 17 строка Максимальная длина 8
111 Пароль кассира 18 строка Максимальная длина 8
112 Пароль кассира 19 строка Максимальная длина 8
113 Пароль кассира 20 строка Максимальная длина 8
114 Пароль кассира 21 строка Максимальная длина 8
115 Пароль кассира 22 строка Максимальная длина 8
116 Пароль кассира 23 строка Максимальная длина 8
117 Пароль кассира 24 строка Максимальная длина 8
118 Пароль кассира 25 строка Максимальная длина 8
119 Пароль кассира 26 строка Максимальная длина 8
120 Пароль кассира 27 строка Максимальная длина 8
121 Пароль кассира 28 строка Максимальная длина 8
122 Имя кассира 1 строка Максимальная длина 48
123 Имя кассира 2 строка Максимальная длина 48
124 Имя кассира 3 строка Максимальная длина 48
125 Имя кассира 4 строка Максимальная длина 48
126 Имя кассира 5 строка Максимальная длина 48
127 Имя кассира 6 строка Максимальная длина 48
128 Имя кассира 7 строка Максимальная длина 48
129 Имя кассира 8 строка Максимальная длина 48
130 Имя кассира 9 строка Максимальная длина 48
131 Имя кассира 10 строка Максимальная длина 48
132 Имя кассира 11 строка Максимальная длина 48
133 Имя кассира 12 строка Максимальная длина 48
134 Имя кассира 13 строка Максимальная длина 48
135 Имя кассира 14 строка Максимальная длина 48
136 Имя кассира 15 строка Максимальная длина 48
137 Имя кассира 16 строка Максимальная длина 48
138 Имя кассира 17 строка Максимальная длина 48
139 Имя кассира 18 строка Максимальная длина 48
140 Имя кассира 19 строка Максимальная длина 48
141 Имя кассира 20 строка Максимальная длина 48
142 Имя кассира 21 строка Максимальная длина 48
143 Имя кассира 22 строка Максимальная длина 48
144 Имя кассира 23 строка Максимальная длина 48
145 Имя кассира 24 строка Максимальная длина 48
146 Имя кассира 25 строка Максимальная длина 48
147 Имя кассира 26 строка Максимальная длина 48
148 Имя кассира 27 строка Максимальная длина 48
149 Имя кассира 28 строка Максимальная длина 48
150 ИНН кассира 1 строка Максимальная длина 12
151 ИНН кассира 2 строка Максимальная длина 12
152 ИНН кассира 3 строка Максимальная длина 12
153 ИНН кассира 4 строка Максимальная длина 12
154 ИНН кассира 5 строка Максимальная длина 12
155 ИНН кассира 6 строка Максимальная длина 12
156 ИНН кассира 7 строка Максимальная длина 12
157 ИНН кассира 8 строка Максимальная длина 12
158 ИНН кассира 9 строка Максимальная длина 12
159 ИНН кассира 10 строка Максимальная длина 12
160 ИНН кассира 11 строка Максимальная длина 12
161 ИНН кассира 12 строка Максимальная длина 12
162 ИНН кассира 13 строка Максимальная длина 12
163 ИНН кассира 14 строка Максимальная длина 12
164 ИНН кассира 15 строка Максимальная длина 12
165 ИНН кассира 16 строка Максимальная длина 12
166 ИНН кассира 17 строка Максимальная длина 12
167 ИНН кассира 18 строка Максимальная длина 12
168 ИНН кассира 19 строка Максимальная длина 12
169 ИНН кассира 20 строка Максимальная длина 12
170 ИНН кассира 21 строка Максимальная длина 12
171 ИНН кассира 22 строка Максимальная длина 12
172 ИНН кассира 23 строка Максимальная длина 12
173 ИНН кассира 24 строка Максимальная длина 12
174 ИНН кассира 25 строка Максимальная длина 12
175 ИНН кассира 26 строка Максимальная длина 12
176 ИНН кассира 27 строка Максимальная длина 12
177 ИНН кассира 28 строка Максимальная длина 12
178 Пароль администратора строка Максимальная длина 8
179 Имя администратора строка Максимальная длина 48
180 ИНН администратора строка Максимальная длина 12
181 Пароль системного администратора строка Максимальная длина 8
182 Имя системного администратора строка Максимальная длина 48
183 ИНН системного администратора строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина 48
185 Строка клише 2 строка Максимальная длина 48
186 Строка клише 3 строка Максимальная длина 48
187 Строка клише 4 строка Максимальная длина 48
188 Строка клише 5 строка Максимальная длина 48
189 Строка клише 6 строка Максимальная длина 48
190 Строка клише 7 строка Максимальная длина 48
191 Строка клише 8 строка Максимальная длина 48
192 Строка клише 9 строка Максимальная длина 48
193 Строка клише 10 строка Максимальная длина 48
194 Строка клише 11 строка Максимальная длина 48
195 Строка клише 12 строка Максимальная длина 48
196 Строка клише 13 строка Максимальная длина 48
197 Строка клише 14 строка Максимальная длина 48
198 Строка клише 15 строка Максимальная длина 48
199 Строка клише 16 строка Максимальная длина 48
200 Строка клише 17 строка Максимальная длина 48
201 Строка клише 18 строка Максимальная длина 48
202 Строка клише 19 строка Максимальная длина 48
203 Строка клише 20 строка Максимальная длина 48
204 Наименование секции 1 строка Максимальная длина 48
205 Наименование секции 2 строка Максимальная длина 48
206 Наименование секции 3 строка Максимальная длина 48
207 Наименование секции 4 строка Максимальная длина 48
208 Наименование секции 5 строка Максимальная длина 48
209 Наименование секции 6 строка Максимальная длина 48
210 Наименование секции 7 строка Максимальная длина 48
211 Наименование секции 8 строка Максимальная длина 48
212 Наименование секции 9 строка Максимальная длина 48
213 Наименование секции 10 строка Максимальная длина 48
214 Наименование секции 11 строка Максимальная длина 48
215 Наименование секции 12 строка Максимальная длина 48
216 Наименование секции 13 строка Максимальная длина 48
217 Наименование секции 14 строка Максимальная длина 48
218 Наименование секции 15 строка Максимальная длина 48
219 Наименование секции 16 строка Максимальная длина 48
220 Номер налога 1 число 1 .. 6
221 Номер налога 2 число 1 .. 6
222 Номер налога 3 число 1 .. 6
223 Номер налога 4 число 1 .. 6
224 Номер налога 5 число 1 .. 6
225 Номер налога 6 число 1 .. 6
226 Номер налога 7 число 1 .. 6
227 Номер налога 8 число 1 .. 6
228 Номер налога 9 число 1 .. 6
229 Номер налога 10 число 1 .. 6
230 Номер налога 11 число 1 .. 6
231 Номер налога 12 число 1 .. 6
232 Номер налога 13 число 1 .. 6
233 Номер налога 14 число 1 .. 6
234 Номер налога 15 число 1 .. 6
235 Номер налога 16 число 1 .. 6
238 Скорость подключенного устройства число 1200 — 1200 бод
2400 — 2400 бод
4800 — 4800 бод
9600 — 9600 бод
14400 — 14400 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
239 Канал обмена с ККТ число 4 — USB
5 — Bluetooth
7 — Wi-Fi
240 Наименование способа расчета 2 строка Максимальная длина 48
241 Наименование способа расчета 3 строка Максимальная длина 48
242 Наименование способа расчета 4 строка Максимальная длина 48
243 Наименование способа расчета 5 строка Максимальная длина 48
244 Наименование способа расчета 6 строка Максимальная длина 48
245 Наименование способа расчета 7 строка Максимальная длина 48
246 Наименование способа расчета 8 строка Максимальная длина 48
247 Наименование способа расчета 9 строка Максимальная длина 48
248 Наименование способа расчета 10 строка Максимальная длина 48
249 Номер формы расчета 2 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
250 Номер формы расчета 3 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
251 Номер формы расчета 4 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
252 Номер формы расчета 5 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
265 Конфигурационная строка (GSM) строка Максимальная длина 32
266 Имя пользователя (GSM) строка Максимальная длина 32
267 Пароль (GSM) строка Максимальная длина 32
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 32
270 Пароль доступа к точке доступа строка Максимальная длина 32
271 Номер канала Wi-Fi в режиме точки доступа число 0 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
1 — WEP
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 1 .. 65535
275 DNS ОФД строка Максимальная длина 15
276 Канал обмена с ОФД число 1 — USB (EoU)
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
277 Адрес сайта ФНС строка Максимальная длина 64
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
280 Интервал посылок диагностических сообщений, с. число 0 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 1 .. 5
282 Интервал опроса ФН при разрывах (в сек.) число 5 .. 120
301 Печатать на ЧЛ сообщение о полученном IP-адресе число 0 — Не печатать
1 — Печатать
305 Частота обмена с ФН, кбит/с число 50 .. 400
306 Передавать необязательные реквизиты в ОФД число 0 — Не передавать
1 — Передавать
307 Ожидание инициализации ФН после включения, с. число 5 .. 255
308 Ожидание обработки команды в ФН, с. число 10 .. 255
309 Размер чека в байтах число 0 .. 4294967295
310 Печатать пароль доступа к точке Wi-Fi число 0 — Не печатать
1 — Печатать
311 Блокировать ККТ при переполнении ЭЖ число 0 — Не блокировать
1 — Блокировать работу по протоколу
2 — Блокировать работу с ЛК
312 Работа со скидками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
313 Работа с надбавками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
330 Шрифт реквизитов в чеке число 1 .. 7
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
332 Печатать реквизит «Наименование ОФД» число 0 — Не печатать
1 — Печатать
333 Печатать реквизит «Адрес электронной почты отправителя» число 0 — Не
печатать
1 — Печатать
334 Работа с ЭЖ число 0 — Отключена
1 — Включена
345 Печатать реквизит «ИНН поставщика» число 0 — Не печатать
1 — Печатать

АТОЛ 52Ф (5.X)

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
49 Получать IP-адреса от DHCP (Ethernet) число 0 — Нет
1 — Да
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения

Для работы данной настройки необходимо, чтобы настройка 292 Использовать
загружаемые шаблоны была отлична от 0
55 Пересчитывать суммы налогов после скидки на итог число 1 — Да
0 — Нет
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
71 IP-адрес (Ethernet) строка Максимальная длина 15
72 Маска подсети (Ethernet) строка Максимальная длина 15
73 Шлюз по умолчанию (Ethernet) строка Максимальная длина 15
74 IP-порт (Ethernet) число 1 .. 65535
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
236 Скорость ККТ число 4800 — 4800 бод
9600 — 9600 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
230400 — 230400 бод
460800 — 460800 бод
921600 — 921600 бод
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 64
270 Пароль доступа к точке доступа строка Максимальная длина 64
271 Номер канала Wi-Fi в режиме точки доступа число 1 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 1 — USB (EoU)
2 — Ethernet
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
283 Статичный DNS число 0 — Выключен
1 — Включен
284 Адрес DNS строка Максимальная длина 15
285 Ширина бумаги число 0 — По умолчанию
1 — 80мм
2 — 57мм
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
294 Использовать RS232 число 0 — Нет
1 — Да
295 Ожидание получения сетевых настроек по Ethernet, с. (0 —
деактивация, 255 — ожидание без ограничений) число 0 .. 255
296 Ожидание подключения по Wi-Fi, с. (0 — деактивация, 255 — ожидание
без ограничений) число 0 .. 255
297 Ожидание подключения по GSM, с. (0 — деактивация, 255 — ожидание без
ограничений) число 0 .. 255
298 Ожидание подключения по Bluetooth, с. (0 — деактивация, 255 —
ожидание без ограничений) число 0 .. 255
299 Регистрировать секции число 0 — Нет
1 — Да
300 Включить отрезчик число 0 — Нет
1 — Да
322 Отрезать документы полностью число 0 — Нет
1 — Да
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
329 IP-порт (Wi-Fi) число 1 .. 65535
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
349 Режим включения интерфейсов число 0 — Следовать настройкам
1 — Включить все при следующей перезагрузке
2 — Включать все при каждой перезагрузке
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

АТОЛ 52Ф

Номер Описание Тип Возможные значения
0 Номер ККТ в магазине число 0 .. 255
2 Печатать названия секций число 0 — Не печатать
1 — Печатать
3 Печатать необнуляемую сумму приходов и расходов число 0 — Не печатать
1 — Печатать
4 Производить инкассацию число 0 — Нет
1 — Да
5 Расширенный X-отчет и Z-отчет число 0 — Нет
1 — Да
6 Печатать информацию о количестве чеков за смену по типам операций
число 0 — Не печатать
1 — Печатать
7 Автоматически печатать отчет по секциям перед X- и Z-отчетом число 0 —
Не печатать
1 — Печатать
8 Яркость печати ЧЛ число 1 .. 15
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
11 Пароль доступа строка Максимальная длина 4
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
13 Шрифт ЧЛ число 1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
14 Количество печатаемых строк после чека на ЧЛ число 0 .. 20
15 Печатать разделители в суточных отчетах число 0 — Не печатать
1 — Печатать
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
17 Печатать необнуляемый итог на начало смены в Z-отчете число 0 — Не
печатать
1 — Печатать
18 Печатать необнуляемый итог на начало смены в X-отчете число 0 — Не
печатать
1 — Печатать
19 Печатать текст командой «Печать строки» число 0 — Не печатать
1 — Печатать
20 Режим перехода на летнее/зимнее время число 0 — Не переходить
1 — Переходить, не оповещать
2 — Переходить, оповещать кассира
3 — Переходить, оповещать кассира и хост
21 Дата перехода на летнее время число
22 Дата перехода на зимнее время число
23 Количество символов в строке число 24 .. 64
24 Символ для разделителя строка Максимальная длина 1
25 Проверять время число 0 .. 99
26 Смещение области печати слева число 0 .. 24
27 Печатать налоги в Х- и Z-отчете и при регистрации число 0 — Не печатать
1 — Печатать
28 Минимальная яркость термокомпенсации на ЧЛ число 1 .. 15
29 Печатать на ЧЛ документ готовности к работе число 0 — Не печатать
1 — Печатать
30 Печатать на ЧЛ клише в служебных сообщениях число 0 — Не печатать
1 — Печатать
31 Печатать на ЧЛ сообщение о вводе даты-времени число 0 — Не печатать
1 — Печатать
32 Протокол работы ККТ число 0 — АТОЛ 2
1 — АТОЛ 3
33 PIN-код для Bluetooth строка Максимальная длина 8
34 Уровень коррекции ошибок QR-кода число 1 .. 4
35 Количество строк заголовка клише число 0 — 0
1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
8 — 8
9 — 9
10 — 10
11 — 11
12 — 12
13 — 13
14 — 14
15 — 15
16 — 16
17 — 17
18 — 18
19 — 19
20 — 20
99 — Старый формат печати
36 Расстояние от ТПГ до отрезного ножа число 0 .. 255
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
38 Звуковой сигнал при окончании бумаги и открытии крышки число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
40 Сохранять печатаемый документ в память число 0 — Не сохранять
1 — Сохранять только отчеты
2 — Сохранять все
41 Печатать нулевые налоги число 0 — Не печатать
1 — Печатать
42 Печать необнуляемой суммы возвратов приходов число 0 — Не печатать
1 — Печатать
43 Печать необнуляемой суммы возвратов расходов число 0 — Не печатать
1 — Печатать
44 Печатать количество отмененных чеков по типам число 0 — Не печатать
1 — Печатать
45 Не печатать блоки «приходы», «возвраты приходов», «расходы»,
«возвраты расходов» число 0 — Не печатать
1 — Печатать
46 Печатать нулевые суммы число 0 — Не печатать
1 — Печатать
47 Печатать номер ККМ в магазине число 0 — Не печатать
1 — Печатать
48 Печатать реквизиты чека на аннулированных чеках число 0 — Не печатать
1 — Печатать
49 Получать IP-адреса от DHCP (Ethernet) число 0 — Нет
1 — Да
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения
51 Шаблон чека число 1 — Шаблон 1
2 — Шаблон 2
52 Признак способа расчета по умолчанию число 1 — Предоплата 100%
2 — Предоплата
3 — Аванс
4 — Полный расчет
5 — Частичный расчет и кредит
6 — Передача в кредит
7 — Оплата кредита
53 Округлять сумму налога число 0 — На весь чек
1 — После каждой позиции
55 Пересчитывать суммы налогов после скидки на итог число 0 — Нет
1 — Да
56 Учет наличности число 0 — Отключен
1 — Включен
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать полное наименование
2 — Печатать краткое наименование
59 Не печатать Z-отчет при закрытии смены число 0 — Печатать
1 — Не печатать
60 Печатать необнуляемые суммы по способам расчета прихода и возврата
прихода число 0 — Не печатать
1 — Печатать
61 Печатать необнуляемые суммы по способам расчета расхода и возврата
расхода число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
63 Признак предмета расчета по умолчанию число 1 — Товар
2 — Подакцизный товар
3 — Работа
4 — Услуга
5 — Ставка азартной игры
6 — Выигрыш азартной игры
7 — Лотерейный билет
8 — Выигрыш лотереи
9 — Предоставление РИД
10 — Платеж
11 — Агентское вознаграждение
12 — Выплата
13 — Иной предмет расчета
14 — Имущественное право
15 — Внереализационный доход
16 — Иные платежи и взносы
17 — Торговый сбор
18 — Курортный сбор
19 — Залог
20 — Расход
21 — Взносы на ОПС ИП
22 — Взносы на ОПС
23 — Взносы на ОМС ИП
24 — Взносы на ОМС
25 — Взносы на ОСС
26 — Платеж казино
27 — Выдача денежных средств
30 — Подакцизный товар, не имеющий КМ
31 — Подакцизный товар, имеющий КМ
32 — Товар, не имеющий КМ, за исключением подакцизного
33 — Товар, имеющий КМ, за исключением подакцизного
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
66 Отрезать чек после завершения документа число 0 — Не отрезать
1 — Не полностью
2 — Полностью
67 Запретить отрезку чеков число 0 — Нет
1 — Да
68 Запретить отрезку отчетов число 0 — Нет
1 — Да
69 Отрезать ЧЛ после печати клише командой «Печать клише» число 0 — Нет
1 — Да
71 IP-адрес (Ethernet) строка Максимальная длина 15
72 Маска подсети (Ethernet) строка Максимальная длина 15
73 Шлюз по умолчанию (Ethernet) строка Максимальная длина 15
74 IP-порт (Ethernet) число 1 .. 65535
75 Расстояние от ножа отрезчика до гребенки число 0 .. 255
94 Пароль кассира 1 строка Максимальная длина 8
95 Пароль кассира 2 строка Максимальная длина 8
96 Пароль кассира 3 строка Максимальная длина 8
97 Пароль кассира 4 строка Максимальная длина 8
98 Пароль кассира 5 строка Максимальная длина 8
99 Пароль кассира 6 строка Максимальная длина 8
100 Пароль кассира 7 строка Максимальная длина 8
101 Пароль кассира 8 строка Максимальная длина 8
102 Пароль кассира 9 строка Максимальная длина 8
103 Пароль кассира 10 строка Максимальная длина 8
104 Пароль кассира 11 строка Максимальная длина 8
105 Пароль кассира 12 строка Максимальная длина 8
106 Пароль кассира 13 строка Максимальная длина 8
107 Пароль кассира 14 строка Максимальная длина 8
108 Пароль кассира 15 строка Максимальная длина 8
109 Пароль кассира 16 строка Максимальная длина 8
110 Пароль кассира 17 строка Максимальная длина 8
111 Пароль кассира 18 строка Максимальная длина 8
112 Пароль кассира 19 строка Максимальная длина 8
113 Пароль кассира 20 строка Максимальная длина 8
114 Пароль кассира 21 строка Максимальная длина 8
115 Пароль кассира 22 строка Максимальная длина 8
116 Пароль кассира 23 строка Максимальная длина 8
117 Пароль кассира 24 строка Максимальная длина 8
118 Пароль кассира 25 строка Максимальная длина 8
119 Пароль кассира 26 строка Максимальная длина 8
120 Пароль кассира 27 строка Максимальная длина 8
121 Пароль кассира 28 строка Максимальная длина 8
122 Имя кассира 1 строка Максимальная длина 48
123 Имя кассира 2 строка Максимальная длина 48
124 Имя кассира 3 строка Максимальная длина 48
125 Имя кассира 4 строка Максимальная длина 48
126 Имя кассира 5 строка Максимальная длина 48
127 Имя кассира 6 строка Максимальная длина 48
128 Имя кассира 7 строка Максимальная длина 48
129 Имя кассира 8 строка Максимальная длина 48
130 Имя кассира 9 строка Максимальная длина 48
131 Имя кассира 10 строка Максимальная длина 48
132 Имя кассира 11 строка Максимальная длина 48
133 Имя кассира 12 строка Максимальная длина 48
134 Имя кассира 13 строка Максимальная длина 48
135 Имя кассира 14 строка Максимальная длина 48
136 Имя кассира 15 строка Максимальная длина 48
137 Имя кассира 16 строка Максимальная длина 48
138 Имя кассира 17 строка Максимальная длина 48
139 Имя кассира 18 строка Максимальная длина 48
140 Имя кассира 19 строка Максимальная длина 48
141 Имя кассира 20 строка Максимальная длина 48
142 Имя кассира 21 строка Максимальная длина 48
143 Имя кассира 22 строка Максимальная длина 48
144 Имя кассира 23 строка Максимальная длина 48
145 Имя кассира 24 строка Максимальная длина 48
146 Имя кассира 25 строка Максимальная длина 48
147 Имя кассира 26 строка Максимальная длина 48
148 Имя кассира 27 строка Максимальная длина 48
149 Имя кассира 28 строка Максимальная длина 48
150 ИНН кассира 1 строка Максимальная длина 12
151 ИНН кассира 2 строка Максимальная длина 12
152 ИНН кассира 3 строка Максимальная длина 12
153 ИНН кассира 4 строка Максимальная длина 12
154 ИНН кассира 5 строка Максимальная длина 12
155 ИНН кассира 6 строка Максимальная длина 12
156 ИНН кассира 7 строка Максимальная длина 12
157 ИНН кассира 8 строка Максимальная длина 12
158 ИНН кассира 9 строка Максимальная длина 12
159 ИНН кассира 10 строка Максимальная длина 12
160 ИНН кассира 11 строка Максимальная длина 12
161 ИНН кассира 12 строка Максимальная длина 12
162 ИНН кассира 13 строка Максимальная длина 12
163 ИНН кассира 14 строка Максимальная длина 12
164 ИНН кассира 15 строка Максимальная длина 12
165 ИНН кассира 16 строка Максимальная длина 12
166 ИНН кассира 17 строка Максимальная длина 12
167 ИНН кассира 18 строка Максимальная длина 12
168 ИНН кассира 19 строка Максимальная длина 12
169 ИНН кассира 20 строка Максимальная длина 12
170 ИНН кассира 21 строка Максимальная длина 12
171 ИНН кассира 22 строка Максимальная длина 12
172 ИНН кассира 23 строка Максимальная длина 12
173 ИНН кассира 24 строка Максимальная длина 12
174 ИНН кассира 25 строка Максимальная длина 12
175 ИНН кассира 26 строка Максимальная длина 12
176 ИНН кассира 27 строка Максимальная длина 12
177 ИНН кассира 28 строка Максимальная длина 12
178 Пароль администратора строка Максимальная длина 8
179 Имя администратора строка Максимальная длина 48
180 ИНН администратора строка Максимальная длина 12
181 Пароль системного администратора строка Максимальная длина 8
182 Имя системного администратора строка Максимальная длина 48
183 ИНН системного администратора строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина 48
185 Строка клише 2 строка Максимальная длина 48
186 Строка клише 3 строка Максимальная длина 48
187 Строка клише 4 строка Максимальная длина 48
188 Строка клише 5 строка Максимальная длина 48
189 Строка клише 6 строка Максимальная длина 48
190 Строка клише 7 строка Максимальная длина 48
191 Строка клише 8 строка Максимальная длина 48
192 Строка клише 9 строка Максимальная длина 48
193 Строка клише 10 строка Максимальная длина 48
194 Строка клише 11 строка Максимальная длина 48
195 Строка клише 12 строка Максимальная длина 48
196 Строка клише 13 строка Максимальная длина 48
197 Строка клише 14 строка Максимальная длина 48
198 Строка клише 15 строка Максимальная длина 48
199 Строка клише 16 строка Максимальная длина 48
200 Строка клише 17 строка Максимальная длина 48
201 Строка клише 18 строка Максимальная длина 48
202 Строка клише 19 строка Максимальная длина 48
203 Строка клише 20 строка Максимальная длина 48
204 Наименование секции 1 строка Максимальная длина 48
205 Наименование секции 2 строка Максимальная длина 48
206 Наименование секции 3 строка Максимальная длина 48
207 Наименование секции 4 строка Максимальная длина 48
208 Наименование секции 5 строка Максимальная длина 48
209 Наименование секции 6 строка Максимальная длина 48
210 Наименование секции 7 строка Максимальная длина 48
211 Наименование секции 8 строка Максимальная длина 48
212 Наименование секции 9 строка Максимальная длина 48
213 Наименование секции 10 строка Максимальная длина 48
214 Наименование секции 11 строка Максимальная длина 48
215 Наименование секции 12 строка Максимальная длина 48
216 Наименование секции 13 строка Максимальная длина 48
217 Наименование секции 14 строка Максимальная длина 48
218 Наименование секции 15 строка Максимальная длина 48
219 Наименование секции 16 строка Максимальная длина 48
220 Номер налога 1 число 1 .. 6
221 Номер налога 2 число 1 .. 6
222 Номер налога 3 число 1 .. 6
223 Номер налога 4 число 1 .. 6
224 Номер налога 5 число 1 .. 6
225 Номер налога 6 число 1 .. 6
226 Номер налога 7 число 1 .. 6
227 Номер налога 8 число 1 .. 6
228 Номер налога 9 число 1 .. 6
229 Номер налога 10 число 1 .. 6
230 Номер налога 11 число 1 .. 6
231 Номер налога 12 число 1 .. 6
232 Номер налога 13 число 1 .. 6
233 Номер налога 14 число 1 .. 6
234 Номер налога 15 число 1 .. 6
235 Номер налога 16 число 1 .. 6
236 Скорость ККТ число 1200 — 1200 бод
2400 — 2400 бод
4800 — 4800 бод
9600 — 9600 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
238 Скорость подключенного устройства число 1200 — 1200 бод
2400 — 2400 бод
4800 — 4800 бод
9600 — 9600 бод
14400 — 14400 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
239 Канал обмена с ККТ число 0 — RS-232
4 — USB
5 — Bluetooth
6 — Ethernet
7 — Wi-Fi
240 Наименование способа расчета 2 строка Максимальная длина 48
241 Наименование способа расчета 3 строка Максимальная длина 48
242 Наименование способа расчета 4 строка Максимальная длина 48
243 Наименование способа расчета 5 строка Максимальная длина 48
244 Наименование способа расчета 6 строка Максимальная длина 48
245 Наименование способа расчета 7 строка Максимальная длина 48
246 Наименование способа расчета 8 строка Максимальная длина 48
247 Наименование способа расчета 9 строка Максимальная длина 48
248 Наименование способа расчета 10 строка Максимальная длина 48
249 Номер формы расчета 2 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
250 Номер формы расчета 3 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
251 Номер формы расчета 4 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
252 Номер формы расчета 5 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
265 Конфигурационная строка (GSM) строка Максимальная длина 32
266 Имя пользователя (GSM) строка Максимальная длина 32
267 Пароль (GSM) строка Максимальная длина 32
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 32
270 Пароль доступа к точке доступа строка Максимальная длина 32
271 Номер канала Wi-Fi в режиме точки доступа число 0 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
1 — WEP
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 1 .. 65535
275 DNS ОФД строка Максимальная длина 15
276 Канал обмена с ОФД число 1 — USB (EoU)
2 — Ethernet
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
277 Адрес сайта ФНС строка Максимальная длина 64
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
280 Интервал посылок диагностических сообщений, с. число 0 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 1 .. 5
282 Интервал опроса ФН при разрывах (в сек.) число 5 .. 120
301 Печатать на ЧЛ сообщение о полученном IP-адресе число 0 — Не печатать
1 — Печатать
305 Частота обмена с ФН, кбит/с число 50 .. 400
306 Передавать необязательные реквизиты в ОФД число 0 — Не передавать
1 — Передавать
307 Ожидание инициализации ФН после включения, с. число 5 .. 255
308 Ожидание обработки команды в ФН, с. число 10 .. 255
309 Размер чека в байтах число 0 .. 4294967295
310 Печатать пароль доступа к точке Wi-Fi число 0 — Не печатать
1 — Печатать
311 Блокировать ККТ при переполнении ЭЖ число 0 — Не блокировать
1 — Блокировать работу по протоколу
2 — Блокировать работу с ЛК
312 Работа со скидками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
313 Работа с надбавками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
330 Шрифт реквизитов в чеке число 1 .. 7
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
332 Печатать реквизит «Наименование ОФД» число 0 — Не печатать
1 — Печатать
333 Печатать реквизит «Адрес электронной почты отправителя» число 0 — Не
печатать
1 — Печатать
334 Работа с ЭЖ число 0 — Отключена
1 — Включена
345 Печатать реквизит «ИНН поставщика» число 0 — Не печатать
1 — Печатать

АТОЛ 55Ф (5.X)

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
49 Получать IP-адреса от DHCP (Ethernet) число 0 — Нет
1 — Да
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения

Для работы данной настройки необходимо, чтобы настройка 292 Использовать
загружаемые шаблоны была отлична от 0
55 Пересчитывать суммы налогов после скидки на итог число 1 — Да
0 — Нет
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
71 IP-адрес (Ethernet) строка Максимальная длина 15
72 Маска подсети (Ethernet) строка Максимальная длина 15
73 Шлюз по умолчанию (Ethernet) строка Максимальная длина 15
74 IP-порт (Ethernet) число 1 .. 65535
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
236 Скорость ККТ число 4800 — 4800 бод
9600 — 9600 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
230400 — 230400 бод
460800 — 460800 бод
921600 — 921600 бод
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 64
270 Пароль доступа к точке доступа строка Максимальная длина 64
271 Номер канала Wi-Fi в режиме точки доступа число 1 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 1 — USB (EoU)
2 — Ethernet
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
283 Статичный DNS число 0 — Выключен
1 — Включен
284 Адрес DNS строка Максимальная длина 15
285 Ширина бумаги число 0 — По умолчанию
1 — 80мм
2 — 57мм
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
294 Использовать RS232 число 0 — Нет
1 — Да
295 Ожидание получения сетевых настроек по Ethernet, с. (0 —
деактивация, 255 — ожидание без ограничений) число 0 .. 255
296 Ожидание подключения по Wi-Fi, с. (0 — деактивация, 255 — ожидание
без ограничений) число 0 .. 255
297 Ожидание подключения по GSM, с. (0 — деактивация, 255 — ожидание без
ограничений) число 0 .. 255
298 Ожидание подключения по Bluetooth, с. (0 — деактивация, 255 —
ожидание без ограничений) число 0 .. 255
299 Регистрировать секции число 0 — Нет
1 — Да
300 Включить отрезчик число 0 — Нет
1 — Да
322 Отрезать документы полностью число 0 — Нет
1 — Да
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
329 IP-порт (Wi-Fi) число 1 .. 65535
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
349 Режим включения интерфейсов число 0 — Следовать настройкам
1 — Включить все при следующей перезагрузке
2 — Включать все при каждой перезагрузке
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
380 Интерфейс ФН число 0 — По умолчанию
1 — I2C
2 — UART
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

АТОЛ 55Ф

Номер Описание Тип Возможные значения
0 Номер ККТ в магазине число 0 .. 255
2 Печатать названия секций число 0 — Не печатать
1 — Печатать
3 Печатать необнуляемую сумму приходов и расходов число 0 — Не печатать
1 — Печатать
4 Производить инкассацию число 0 — Нет
1 — Да
5 Расширенный X-отчет и Z-отчет число 0 — Нет
1 — Да
6 Печатать информацию о количестве чеков за смену по типам операций
число 0 — Не печатать
1 — Печатать
7 Автоматически печатать отчет по секциям перед X- и Z-отчетом число 0 —
Не печатать
1 — Печатать
8 Яркость печати ЧЛ число 1 .. 15
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
11 Пароль доступа строка Максимальная длина 4
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
13 Шрифт ЧЛ число 1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
14 Количество печатаемых строк после чека на ЧЛ число 0 .. 20
15 Печатать разделители в суточных отчетах число 0 — Не печатать
1 — Печатать
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
17 Печатать необнуляемый итог на начало смены в Z-отчете число 0 — Не
печатать
1 — Печатать
18 Печатать необнуляемый итог на начало смены в X-отчете число 0 — Не
печатать
1 — Печатать
19 Печатать текст командой «Печать строки» число 0 — Не печатать
1 — Печатать
20 Режим перехода на летнее/зимнее время число 0 — Не переходить
1 — Переходить, не оповещать
2 — Переходить, оповещать кассира
3 — Переходить, оповещать кассира и хост
21 Дата перехода на летнее время число
22 Дата перехода на зимнее время число
23 Количество символов в строке число 24 .. 64
24 Символ для разделителя строка Максимальная длина 1
25 Проверять время число 0 .. 99
26 Смещение области печати слева число 0 .. 24
27 Печатать налоги в Х- и Z-отчете и при регистрации число 0 — Не печатать
1 — Печатать
28 Минимальная яркость термокомпенсации на ЧЛ число 1 .. 15
29 Печатать на ЧЛ документ готовности к работе число 0 — Не печатать
1 — Печатать
30 Печатать на ЧЛ клише в служебных сообщениях число 0 — Не печатать
1 — Печатать
31 Печатать на ЧЛ сообщение о вводе даты-времени число 0 — Не печатать
1 — Печатать
32 Протокол работы ККТ число 0 — АТОЛ 2
1 — АТОЛ 3
33 PIN-код для Bluetooth строка Максимальная длина 8
34 Уровень коррекции ошибок QR-кода число 1 .. 4
35 Количество строк заголовка клише число 0 — 0
1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
8 — 8
9 — 9
10 — 10
11 — 11
12 — 12
13 — 13
14 — 14
15 — 15
16 — 16
17 — 17
18 — 18
19 — 19
20 — 20
99 — Старый формат печати
36 Расстояние от ТПГ до отрезного ножа число 0 .. 255
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
38 Звуковой сигнал при окончании бумаги и открытии крышки число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
40 Сохранять печатаемый документ в память число 0 — Не сохранять
1 — Сохранять только отчеты
2 — Сохранять все
41 Печатать нулевые налоги число 0 — Не печатать
1 — Печатать
42 Печать необнуляемой суммы возвратов приходов число 0 — Не печатать
1 — Печатать
43 Печать необнуляемой суммы возвратов расходов число 0 — Не печатать
1 — Печатать
44 Печатать количество отмененных чеков по типам число 0 — Не печатать
1 — Печатать
45 Не печатать блоки «приходы», «возвраты приходов», «расходы»,
«возвраты расходов» число 0 — Не печатать
1 — Печатать
46 Печатать нулевые суммы число 0 — Не печатать
1 — Печатать
47 Печатать номер ККМ в магазине число 0 — Не печатать
1 — Печатать
48 Печатать реквизиты чека на аннулированных чеках число 0 — Не печатать
1 — Печатать
49 Получать IP-адреса от DHCP (Ethernet) число 0 — Нет
1 — Да
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения
51 Шаблон чека число 1 — Шаблон 1
2 — Шаблон 2
52 Признак способа расчета по умолчанию число 1 — Предоплата 100%
2 — Предоплата
3 — Аванс
4 — Полный расчет
5 — Частичный расчет и кредит
6 — Передача в кредит
7 — Оплата кредита
53 Округлять сумму налога число 0 — На весь чек
1 — После каждой позиции
55 Пересчитывать суммы налогов после скидки на итог число 0 — Нет
1 — Да
56 Учет наличности число 0 — Отключен
1 — Включен
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать полное наименование
2 — Печатать краткое наименование
59 Не печатать Z-отчет при закрытии смены число 0 — Печатать
1 — Не печатать
60 Печатать необнуляемые суммы по способам расчета прихода и возврата
прихода число 0 — Не печатать
1 — Печатать
61 Печатать необнуляемые суммы по способам расчета расхода и возврата
расхода число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
63 Признак предмета расчета по умолчанию число 1 — Товар
2 — Подакцизный товар
3 — Работа
4 — Услуга
5 — Ставка азартной игры
6 — Выигрыш азартной игры
7 — Лотерейный билет
8 — Выигрыш лотереи
9 — Предоставление РИД
10 — Платеж
11 — Агентское вознаграждение
12 — Выплата
13 — Иной предмет расчета
14 — Имущественное право
15 — Внереализационный доход
16 — Иные платежи и взносы
17 — Торговый сбор
18 — Курортный сбор
19 — Залог
20 — Расход
21 — Взносы на ОПС ИП
22 — Взносы на ОПС
23 — Взносы на ОМС ИП
24 — Взносы на ОМС
25 — Взносы на ОСС
26 — Платеж казино
27 — Выдача денежных средств
30 — Подакцизный товар, не имеющий КМ
31 — Подакцизный товар, имеющий КМ
32 — Товар, не имеющий КМ, за исключением подакцизного
33 — Товар, имеющий КМ, за исключением подакцизного
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
66 Отрезать чек после завершения документа число 0 — Не отрезать
1 — Не полностью
2 — Полностью
67 Запретить отрезку чеков число 0 — Нет
1 — Да
68 Запретить отрезку отчетов число 0 — Нет
1 — Да
69 Отрезать ЧЛ после печати клише командой «Печать клише» число 0 — Нет
1 — Да
71 IP-адрес (Ethernet) строка Максимальная длина 15
72 Маска подсети (Ethernet) строка Максимальная длина 15
73 Шлюз по умолчанию (Ethernet) строка Максимальная длина 15
74 IP-порт (Ethernet) число 1 .. 65535
75 Расстояние от ножа отрезчика до гребенки число 0 .. 255
94 Пароль кассира 1 строка Максимальная длина 8
95 Пароль кассира 2 строка Максимальная длина 8
96 Пароль кассира 3 строка Максимальная длина 8
97 Пароль кассира 4 строка Максимальная длина 8
98 Пароль кассира 5 строка Максимальная длина 8
99 Пароль кассира 6 строка Максимальная длина 8
100 Пароль кассира 7 строка Максимальная длина 8
101 Пароль кассира 8 строка Максимальная длина 8
102 Пароль кассира 9 строка Максимальная длина 8
103 Пароль кассира 10 строка Максимальная длина 8
104 Пароль кассира 11 строка Максимальная длина 8
105 Пароль кассира 12 строка Максимальная длина 8
106 Пароль кассира 13 строка Максимальная длина 8
107 Пароль кассира 14 строка Максимальная длина 8
108 Пароль кассира 15 строка Максимальная длина 8
109 Пароль кассира 16 строка Максимальная длина 8
110 Пароль кассира 17 строка Максимальная длина 8
111 Пароль кассира 18 строка Максимальная длина 8
112 Пароль кассира 19 строка Максимальная длина 8
113 Пароль кассира 20 строка Максимальная длина 8
114 Пароль кассира 21 строка Максимальная длина 8
115 Пароль кассира 22 строка Максимальная длина 8
116 Пароль кассира 23 строка Максимальная длина 8
117 Пароль кассира 24 строка Максимальная длина 8
118 Пароль кассира 25 строка Максимальная длина 8
119 Пароль кассира 26 строка Максимальная длина 8
120 Пароль кассира 27 строка Максимальная длина 8
121 Пароль кассира 28 строка Максимальная длина 8
122 Имя кассира 1 строка Максимальная длина 48
123 Имя кассира 2 строка Максимальная длина 48
124 Имя кассира 3 строка Максимальная длина 48
125 Имя кассира 4 строка Максимальная длина 48
126 Имя кассира 5 строка Максимальная длина 48
127 Имя кассира 6 строка Максимальная длина 48
128 Имя кассира 7 строка Максимальная длина 48
129 Имя кассира 8 строка Максимальная длина 48
130 Имя кассира 9 строка Максимальная длина 48
131 Имя кассира 10 строка Максимальная длина 48
132 Имя кассира 11 строка Максимальная длина 48
133 Имя кассира 12 строка Максимальная длина 48
134 Имя кассира 13 строка Максимальная длина 48
135 Имя кассира 14 строка Максимальная длина 48
136 Имя кассира 15 строка Максимальная длина 48
137 Имя кассира 16 строка Максимальная длина 48
138 Имя кассира 17 строка Максимальная длина 48
139 Имя кассира 18 строка Максимальная длина 48
140 Имя кассира 19 строка Максимальная длина 48
141 Имя кассира 20 строка Максимальная длина 48
142 Имя кассира 21 строка Максимальная длина 48
143 Имя кассира 22 строка Максимальная длина 48
144 Имя кассира 23 строка Максимальная длина 48
145 Имя кассира 24 строка Максимальная длина 48
146 Имя кассира 25 строка Максимальная длина 48
147 Имя кассира 26 строка Максимальная длина 48
148 Имя кассира 27 строка Максимальная длина 48
149 Имя кассира 28 строка Максимальная длина 48
150 ИНН кассира 1 строка Максимальная длина 12
151 ИНН кассира 2 строка Максимальная длина 12
152 ИНН кассира 3 строка Максимальная длина 12
153 ИНН кассира 4 строка Максимальная длина 12
154 ИНН кассира 5 строка Максимальная длина 12
155 ИНН кассира 6 строка Максимальная длина 12
156 ИНН кассира 7 строка Максимальная длина 12
157 ИНН кассира 8 строка Максимальная длина 12
158 ИНН кассира 9 строка Максимальная длина 12
159 ИНН кассира 10 строка Максимальная длина 12
160 ИНН кассира 11 строка Максимальная длина 12
161 ИНН кассира 12 строка Максимальная длина 12
162 ИНН кассира 13 строка Максимальная длина 12
163 ИНН кассира 14 строка Максимальная длина 12
164 ИНН кассира 15 строка Максимальная длина 12
165 ИНН кассира 16 строка Максимальная длина 12
166 ИНН кассира 17 строка Максимальная длина 12
167 ИНН кассира 18 строка Максимальная длина 12
168 ИНН кассира 19 строка Максимальная длина 12
169 ИНН кассира 20 строка Максимальная длина 12
170 ИНН кассира 21 строка Максимальная длина 12
171 ИНН кассира 22 строка Максимальная длина 12
172 ИНН кассира 23 строка Максимальная длина 12
173 ИНН кассира 24 строка Максимальная длина 12
174 ИНН кассира 25 строка Максимальная длина 12
175 ИНН кассира 26 строка Максимальная длина 12
176 ИНН кассира 27 строка Максимальная длина 12
177 ИНН кассира 28 строка Максимальная длина 12
178 Пароль администратора строка Максимальная длина 8
179 Имя администратора строка Максимальная длина 48
180 ИНН администратора строка Максимальная длина 12
181 Пароль системного администратора строка Максимальная длина 8
182 Имя системного администратора строка Максимальная длина 48
183 ИНН системного администратора строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина 48
185 Строка клише 2 строка Максимальная длина 48
186 Строка клише 3 строка Максимальная длина 48
187 Строка клише 4 строка Максимальная длина 48
188 Строка клише 5 строка Максимальная длина 48
189 Строка клише 6 строка Максимальная длина 48
190 Строка клише 7 строка Максимальная длина 48
191 Строка клише 8 строка Максимальная длина 48
192 Строка клише 9 строка Максимальная длина 48
193 Строка клише 10 строка Максимальная длина 48
194 Строка клише 11 строка Максимальная длина 48
195 Строка клише 12 строка Максимальная длина 48
196 Строка клише 13 строка Максимальная длина 48
197 Строка клише 14 строка Максимальная длина 48
198 Строка клише 15 строка Максимальная длина 48
199 Строка клише 16 строка Максимальная длина 48
200 Строка клише 17 строка Максимальная длина 48
201 Строка клише 18 строка Максимальная длина 48
202 Строка клише 19 строка Максимальная длина 48
203 Строка клише 20 строка Максимальная длина 48
204 Наименование секции 1 строка Максимальная длина 48
205 Наименование секции 2 строка Максимальная длина 48
206 Наименование секции 3 строка Максимальная длина 48
207 Наименование секции 4 строка Максимальная длина 48
208 Наименование секции 5 строка Максимальная длина 48
209 Наименование секции 6 строка Максимальная длина 48
210 Наименование секции 7 строка Максимальная длина 48
211 Наименование секции 8 строка Максимальная длина 48
212 Наименование секции 9 строка Максимальная длина 48
213 Наименование секции 10 строка Максимальная длина 48
214 Наименование секции 11 строка Максимальная длина 48
215 Наименование секции 12 строка Максимальная длина 48
216 Наименование секции 13 строка Максимальная длина 48
217 Наименование секции 14 строка Максимальная длина 48
218 Наименование секции 15 строка Максимальная длина 48
219 Наименование секции 16 строка Максимальная длина 48
220 Номер налога 1 число 1 .. 6
221 Номер налога 2 число 1 .. 6
222 Номер налога 3 число 1 .. 6
223 Номер налога 4 число 1 .. 6
224 Номер налога 5 число 1 .. 6
225 Номер налога 6 число 1 .. 6
226 Номер налога 7 число 1 .. 6
227 Номер налога 8 число 1 .. 6
228 Номер налога 9 число 1 .. 6
229 Номер налога 10 число 1 .. 6
230 Номер налога 11 число 1 .. 6
231 Номер налога 12 число 1 .. 6
232 Номер налога 13 число 1 .. 6
233 Номер налога 14 число 1 .. 6
234 Номер налога 15 число 1 .. 6
235 Номер налога 16 число 1 .. 6
236 Скорость ККТ число 1200 — 1200 бод
2400 — 2400 бод
4800 — 4800 бод
9600 — 9600 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
238 Скорость подключенного устройства число 1200 — 1200 бод
2400 — 2400 бод
4800 — 4800 бод
9600 — 9600 бод
14400 — 14400 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
239 Канал обмена с ККТ число 0 — RS-232
4 — USB
5 — Bluetooth
6 — Ethernet
7 — Wi-Fi
240 Наименование способа расчета 2 строка Максимальная длина 48
241 Наименование способа расчета 3 строка Максимальная длина 48
242 Наименование способа расчета 4 строка Максимальная длина 48
243 Наименование способа расчета 5 строка Максимальная длина 48
244 Наименование способа расчета 6 строка Максимальная длина 48
245 Наименование способа расчета 7 строка Максимальная длина 48
246 Наименование способа расчета 8 строка Максимальная длина 48
247 Наименование способа расчета 9 строка Максимальная длина 48
248 Наименование способа расчета 10 строка Максимальная длина 48
249 Номер формы расчета 2 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
250 Номер формы расчета 3 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
251 Номер формы расчета 4 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
252 Номер формы расчета 5 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
265 Конфигурационная строка (GSM) строка Максимальная длина 32
266 Имя пользователя (GSM) строка Максимальная длина 32
267 Пароль (GSM) строка Максимальная длина 32
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 32
270 Пароль доступа к точке доступа строка Максимальная длина 32
271 Номер канала Wi-Fi в режиме точки доступа число 0 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
1 — WEP
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 1 .. 65535
275 DNS ОФД строка Максимальная длина 15
276 Канал обмена с ОФД число 1 — USB (EoU)
2 — Ethernet
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
277 Адрес сайта ФНС строка Максимальная длина 64
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
280 Интервал посылок диагностических сообщений, с. число 0 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 1 .. 5
282 Интервал опроса ФН при разрывах (в сек.) число 5 .. 120
301 Печатать на ЧЛ сообщение о полученном IP-адресе число 0 — Не печатать
1 — Печатать
305 Частота обмена с ФН, кбит/с число 50 .. 400
306 Передавать необязательные реквизиты в ОФД число 0 — Не передавать
1 — Передавать
307 Ожидание инициализации ФН после включения, с. число 5 .. 255
308 Ожидание обработки команды в ФН, с. число 10 .. 255
309 Размер чека в байтах число 0 .. 4294967295
310 Печатать пароль доступа к точке Wi-Fi число 0 — Не печатать
1 — Печатать
311 Блокировать ККТ при переполнении ЭЖ число 0 — Не блокировать
1 — Блокировать работу по протоколу
2 — Блокировать работу с ЛК
312 Работа со скидками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
313 Работа с надбавками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
330 Шрифт реквизитов в чеке число 1 .. 7
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
332 Печатать реквизит «Наименование ОФД» число 0 — Не печатать
1 — Печатать
333 Печатать реквизит «Адрес электронной почты отправителя» число 0 — Не
печатать
1 — Печатать
334 Работа с ЭЖ число 0 — Отключена
1 — Включена
345 Печатать реквизит «ИНН поставщика» число 0 — Не печатать
1 — Печатать

АТОЛ 55 v2 Ф

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
49 Получать IP-адреса от DHCP (Ethernet) число 0 — Нет
1 — Да
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения

Для работы данной настройки необходимо, чтобы настройка 292 Использовать
загружаемые шаблоны была отлична от 0
55 Пересчитывать суммы налогов после скидки на итог число 1 — Да
0 — Нет
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
71 IP-адрес (Ethernet) строка Максимальная длина 15
72 Маска подсети (Ethernet) строка Максимальная длина 15
73 Шлюз по умолчанию (Ethernet) строка Максимальная длина 15
74 IP-порт (Ethernet) число 1 .. 65535
76 Выключение / перезагрузка ККТ число 1 — По команде
2 — По кнопке и по команде
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
236 Скорость ККТ число 4800 — 4800 бод
9600 — 9600 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
230400 — 230400 бод
460800 — 460800 бод
921600 — 921600 бод
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 64
270 Пароль доступа к точке доступа строка Максимальная длина 64
271 Номер канала Wi-Fi в режиме точки доступа число 1 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 1 — USB (EoU)
2 — Ethernet
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
283 Статичный DNS число 0 — Выключен
1 — Включен
284 Адрес DNS строка Максимальная длина 15
285 Ширина бумаги число 0 — По умолчанию
1 — 80мм
2 — 57мм
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
294 Использовать RS232 число 0 — Нет
1 — Да
295 Ожидание получения сетевых настроек по Ethernet, с. (0 —
деактивация, 255 — ожидание без ограничений) число 0 .. 255
296 Ожидание подключения по Wi-Fi, с. (0 — деактивация, 255 — ожидание
без ограничений) число 0 .. 255
297 Ожидание подключения по GSM, с. (0 — деактивация, 255 — ожидание без
ограничений) число 0 .. 255
298 Ожидание подключения по Bluetooth, с. (0 — деактивация, 255 —
ожидание без ограничений) число 0 .. 255
299 Регистрировать секции число 0 — Нет
1 — Да
300 Включить отрезчик число 0 — Нет
1 — Да
322 Отрезать документы полностью число 0 — Нет
1 — Да
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
329 IP-порт (Wi-Fi) число 1 .. 65535
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
349 Режим включения интерфейсов число 0 — Следовать настройкам
1 — Включить все при следующей перезагрузке
2 — Включать все при каждой перезагрузке
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
364 Цвет индикатора состояния «Включено» число 0 .. 16777215
365 Цвет индикатора состояния «Ошибка» число 0 .. 16777215
366 Цвет индикатора состояния «Нет бумаги» число 0 .. 16777215
367 Цвет индикатора состояния «Открыта крышка» число 0 .. 16777215
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
380 Интерфейс ФН число 0 — По умолчанию
1 — I2C
2 — UART
381 Режим ДЯ число 0 — АТОЛ
1 — ШТРИХ
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

АТОЛ 60Ф

Номер Описание Тип Возможные значения
0 Номер ККТ в магазине число 0 .. 255
2 Печатать названия секций число 0 — Не печатать
1 — Печатать
3 Печатать необнуляемую сумму приходов и расходов число 0 — Не печатать
1 — Печатать
4 Производить инкассацию число 0 — Нет
1 — Да
5 Расширенный X-отчет и Z-отчет число 0 — Нет
1 — Да
6 Печатать информацию о количестве чеков за смену по типам операций
число 0 — Не печатать
1 — Печатать
7 Автоматически печатать отчет по секциям перед X- и Z-отчетом число 0 —
Не печатать
1 — Печатать
8 Яркость печати ЧЛ число 1 .. 15
11 Пароль доступа строка Максимальная длина 4
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
13 Шрифт ЧЛ число 1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
14 Количество печатаемых строк после чека на ЧЛ число 0 .. 20
15 Печатать разделители в суточных отчетах число 0 — Не печатать
1 — Печатать
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
17 Печатать необнуляемый итог на начало смены в Z-отчете число 0 — Не
печатать
1 — Печатать
18 Печатать необнуляемый итог на начало смены в X-отчете число 0 — Не
печатать
1 — Печатать
19 Печатать текст командой «Печать строки» число 0 — Не печатать
1 — Печатать
20 Режим перехода на летнее/зимнее время число 0 — Не переходить
1 — Переходить, не оповещать
2 — Переходить, оповещать кассира
3 — Переходить, оповещать кассира и хост
21 Дата перехода на летнее время число
22 Дата перехода на зимнее время число
23 Количество символов в строке число 24 .. 42
24 Символ для разделителя строка Максимальная длина 1
25 Проверять время число 0 .. 99
26 Смещение области печати слева число 0 .. 24
27 Печатать налоги в Х- и Z-отчете и при регистрации число 0 — Не печатать
1 — Печатать
28 Минимальная яркость термокомпенсации на ЧЛ число 1 .. 15
29 Печатать на ЧЛ документ готовности к работе число 0 — Не печатать
1 — Печатать
30 Печатать на ЧЛ клише в служебных сообщениях число 0 — Не печатать
1 — Печатать
31 Печатать на ЧЛ сообщение о вводе даты-времени число 0 — Не печатать
1 — Печатать
32 Протокол работы ККТ число 0 — АТОЛ 2
1 — АТОЛ 3
33 PIN-код для Bluetooth строка Максимальная длина 8
34 Уровень коррекции ошибок QR-кода число 1 .. 4
35 Количество строк заголовка клише число 0 — 0
1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
8 — 8
9 — 9
10 — 10
11 — 11
12 — 12
13 — 13
14 — 14
15 — 15
16 — 16
17 — 17
18 — 18
19 — 19
20 — 20
99 — Старый формат печати
36 Расстояние от ТПГ до отрезного ножа число 0 .. 255
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
38 Звуковой сигнал при окончании бумаги и открытии крышки число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
40 Сохранять печатаемый документ в память число 0 — Не сохранять
1 — Сохранять только отчеты
2 — Сохранять все
41 Печатать нулевые налоги число 0 — Не печатать
1 — Печатать
42 Печать необнуляемой суммы возвратов приходов число 0 — Не печатать
1 — Печатать
43 Печать необнуляемой суммы возвратов расходов число 0 — Не печатать
1 — Печатать
44 Печатать количество отмененных чеков по типам число 0 — Не печатать
1 — Печатать
45 Не печатать блоки «приходы», «возвраты приходов», «расходы»,
«возвраты расходов» число 0 — Не печатать
1 — Печатать
46 Печатать нулевые суммы число 0 — Не печатать
1 — Печатать
47 Печатать номер ККМ в магазине число 0 — Не печатать
1 — Печатать
48 Печатать реквизиты чека на аннулированных чеках число 0 — Не печатать
1 — Печатать
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения
51 Шаблон чека число 1 — Шаблон 1
2 — Шаблон 2
52 Признак способа расчета по умолчанию число 1 — Предоплата 100%
2 — Предоплата
3 — Аванс
4 — Полный расчет
5 — Частичный расчет и кредит
6 — Передача в кредит
7 — Оплата кредита
53 Округлять сумму налога число 0 — На весь чек
1 — После каждой позиции
55 Пересчитывать суммы налогов после скидки на итог число 0 — Нет
1 — Да
56 Учет наличности число 0 — Отключен
1 — Включен
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать полное наименование
2 — Печатать краткое наименование
59 Не печатать Z-отчет при закрытии смены число 0 — Печатать
1 — Не печатать
60 Печатать необнуляемые суммы по способам расчета прихода и возврата
прихода число 0 — Не печатать
1 — Печатать
61 Печатать необнуляемые суммы по способам расчета расхода и возврата
расхода число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
63 Признак предмета расчета по умолчанию число 1 — Товар
2 — Подакцизный товар
3 — Работа
4 — Услуга
5 — Ставка азартной игры
6 — Выигрыш азартной игры
7 — Лотерейный билет
8 — Выигрыш лотереи
9 — Предоставление РИД
10 — Платеж
11 — Агентское вознаграждение
12 — Выплата
13 — Иной предмет расчета
14 — Имущественное право
15 — Внереализационный доход
16 — Иные платежи и взносы
17 — Торговый сбор
18 — Курортный сбор
19 — Залог
20 — Расход
21 — Взносы на ОПС ИП
22 — Взносы на ОПС
23 — Взносы на ОМС ИП
24 — Взносы на ОМС
25 — Взносы на ОСС
26 — Платеж казино
27 — Выдача денежных средств
30 — Подакцизный товар, не имеющий КМ
31 — Подакцизный товар, имеющий КМ
32 — Товар, не имеющий КМ, за исключением подакцизного
33 — Товар, имеющий КМ, за исключением подакцизного
64 Таймаут на выключение ККТ (минуты) число 0 .. 990
76 Выключение / перезагрузка ККТ число 0 — По кнопке
1 — По команде
2 — По кнопке и по команде
94 Пароль кассира 1 строка Максимальная длина 8
95 Пароль кассира 2 строка Максимальная длина 8
96 Пароль кассира 3 строка Максимальная длина 8
97 Пароль кассира 4 строка Максимальная длина 8
98 Пароль кассира 5 строка Максимальная длина 8
99 Пароль кассира 6 строка Максимальная длина 8
100 Пароль кассира 7 строка Максимальная длина 8
101 Пароль кассира 8 строка Максимальная длина 8
102 Пароль кассира 9 строка Максимальная длина 8
103 Пароль кассира 10 строка Максимальная длина 8
104 Пароль кассира 11 строка Максимальная длина 8
105 Пароль кассира 12 строка Максимальная длина 8
106 Пароль кассира 13 строка Максимальная длина 8
107 Пароль кассира 14 строка Максимальная длина 8
108 Пароль кассира 15 строка Максимальная длина 8
109 Пароль кассира 16 строка Максимальная длина 8
110 Пароль кассира 17 строка Максимальная длина 8
111 Пароль кассира 18 строка Максимальная длина 8
112 Пароль кассира 19 строка Максимальная длина 8
113 Пароль кассира 20 строка Максимальная длина 8
114 Пароль кассира 21 строка Максимальная длина 8
115 Пароль кассира 22 строка Максимальная длина 8
116 Пароль кассира 23 строка Максимальная длина 8
117 Пароль кассира 24 строка Максимальная длина 8
118 Пароль кассира 25 строка Максимальная длина 8
119 Пароль кассира 26 строка Максимальная длина 8
120 Пароль кассира 27 строка Максимальная длина 8
121 Пароль кассира 28 строка Максимальная длина 8
122 Имя кассира 1 строка Максимальная длина 42
123 Имя кассира 2 строка Максимальная длина 42
124 Имя кассира 3 строка Максимальная длина 42
125 Имя кассира 4 строка Максимальная длина 42
126 Имя кассира 5 строка Максимальная длина 42
127 Имя кассира 6 строка Максимальная длина 42
128 Имя кассира 7 строка Максимальная длина 42
129 Имя кассира 8 строка Максимальная длина 42
130 Имя кассира 9 строка Максимальная длина 42
131 Имя кассира 10 строка Максимальная длина 42
132 Имя кассира 11 строка Максимальная длина 42
133 Имя кассира 12 строка Максимальная длина 42
134 Имя кассира 13 строка Максимальная длина 42
135 Имя кассира 14 строка Максимальная длина 42
136 Имя кассира 15 строка Максимальная длина 42
137 Имя кассира 16 строка Максимальная длина 42
138 Имя кассира 17 строка Максимальная длина 42
139 Имя кассира 18 строка Максимальная длина 42
140 Имя кассира 19 строка Максимальная длина 42
141 Имя кассира 20 строка Максимальная длина 42
142 Имя кассира 21 строка Максимальная длина 42
143 Имя кассира 22 строка Максимальная длина 42
144 Имя кассира 23 строка Максимальная длина 42
145 Имя кассира 24 строка Максимальная длина 42
146 Имя кассира 25 строка Максимальная длина 42
147 Имя кассира 26 строка Максимальная длина 42
148 Имя кассира 27 строка Максимальная длина 42
149 Имя кассира 28 строка Максимальная длина 42
150 ИНН кассира 1 строка Максимальная длина 12
151 ИНН кассира 2 строка Максимальная длина 12
152 ИНН кассира 3 строка Максимальная длина 12
153 ИНН кассира 4 строка Максимальная длина 12
154 ИНН кассира 5 строка Максимальная длина 12
155 ИНН кассира 6 строка Максимальная длина 12
156 ИНН кассира 7 строка Максимальная длина 12
157 ИНН кассира 8 строка Максимальная длина 12
158 ИНН кассира 9 строка Максимальная длина 12
159 ИНН кассира 10 строка Максимальная длина 12
160 ИНН кассира 11 строка Максимальная длина 12
161 ИНН кассира 12 строка Максимальная длина 12
162 ИНН кассира 13 строка Максимальная длина 12
163 ИНН кассира 14 строка Максимальная длина 12
164 ИНН кассира 15 строка Максимальная длина 12
165 ИНН кассира 16 строка Максимальная длина 12
166 ИНН кассира 17 строка Максимальная длина 12
167 ИНН кассира 18 строка Максимальная длина 12
168 ИНН кассира 19 строка Максимальная длина 12
169 ИНН кассира 20 строка Максимальная длина 12
170 ИНН кассира 21 строка Максимальная длина 12
171 ИНН кассира 22 строка Максимальная длина 12
172 ИНН кассира 23 строка Максимальная длина 12
173 ИНН кассира 24 строка Максимальная длина 12
174 ИНН кассира 25 строка Максимальная длина 12
175 ИНН кассира 26 строка Максимальная длина 12
176 ИНН кассира 27 строка Максимальная длина 12
177 ИНН кассира 28 строка Максимальная длина 12
178 Пароль администратора строка Максимальная длина 8
179 Имя администратора строка Максимальная длина 42
180 ИНН администратора строка Максимальная длина 12
181 Пароль системного администратора строка Максимальная длина 8
182 Имя системного администратора строка Максимальная длина 42
183 ИНН системного администратора строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина 42
185 Строка клише 2 строка Максимальная длина 42
186 Строка клише 3 строка Максимальная длина 42
187 Строка клише 4 строка Максимальная длина 42
188 Строка клише 5 строка Максимальная длина 42
189 Строка клише 6 строка Максимальная длина 42
190 Строка клише 7 строка Максимальная длина 42
191 Строка клише 8 строка Максимальная длина 42
192 Строка клише 9 строка Максимальная длина 42
193 Строка клише 10 строка Максимальная длина 42
194 Строка клише 11 строка Максимальная длина 42
195 Строка клише 12 строка Максимальная длина 42
196 Строка клише 13 строка Максимальная длина 42
197 Строка клише 14 строка Максимальная длина 42
198 Строка клише 15 строка Максимальная длина 42
199 Строка клише 16 строка Максимальная длина 42
200 Строка клише 17 строка Максимальная длина 42
201 Строка клише 18 строка Максимальная длина 42
202 Строка клише 19 строка Максимальная длина 42
203 Строка клише 20 строка Максимальная длина 42
204 Наименование секции 1 строка Максимальная длина 42
205 Наименование секции 2 строка Максимальная длина 42
206 Наименование секции 3 строка Максимальная длина 42
207 Наименование секции 4 строка Максимальная длина 42
208 Наименование секции 5 строка Максимальная длина 42
209 Наименование секции 6 строка Максимальная длина 42
210 Наименование секции 7 строка Максимальная длина 42
211 Наименование секции 8 строка Максимальная длина 42
212 Наименование секции 9 строка Максимальная длина 42
213 Наименование секции 10 строка Максимальная длина 42
214 Наименование секции 11 строка Максимальная длина 42
215 Наименование секции 12 строка Максимальная длина 42
216 Наименование секции 13 строка Максимальная длина 42
217 Наименование секции 14 строка Максимальная длина 42
218 Наименование секции 15 строка Максимальная длина 42
219 Наименование секции 16 строка Максимальная длина 42
220 Номер налога 1 число 1 .. 6
221 Номер налога 2 число 1 .. 6
222 Номер налога 3 число 1 .. 6
223 Номер налога 4 число 1 .. 6
224 Номер налога 5 число 1 .. 6
225 Номер налога 6 число 1 .. 6
226 Номер налога 7 число 1 .. 6
227 Номер налога 8 число 1 .. 6
228 Номер налога 9 число 1 .. 6
229 Номер налога 10 число 1 .. 6
230 Номер налога 11 число 1 .. 6
231 Номер налога 12 число 1 .. 6
232 Номер налога 13 число 1 .. 6
233 Номер налога 14 число 1 .. 6
234 Номер налога 15 число 1 .. 6
235 Номер налога 16 число 1 .. 6
239 Канал обмена с ККТ число 4 — USB
5 — Bluetooth
7 — Wi-Fi
240 Наименование способа расчета 2 строка Максимальная длина 42
241 Наименование способа расчета 3 строка Максимальная длина 42
242 Наименование способа расчета 4 строка Максимальная длина 42
243 Наименование способа расчета 5 строка Максимальная длина 42
244 Наименование способа расчета 6 строка Максимальная длина 42
245 Наименование способа расчета 7 строка Максимальная длина 42
246 Наименование способа расчета 8 строка Максимальная длина 42
247 Наименование способа расчета 9 строка Максимальная длина 42
248 Наименование способа расчета 10 строка Максимальная длина 42
249 Номер формы расчета 2 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
250 Номер формы расчета 3 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
251 Номер формы расчета 4 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
252 Номер формы расчета 5 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
265 Конфигурационная строка (GSM) строка Максимальная длина 32
266 Имя пользователя (GSM) строка Максимальная длина 32
267 Пароль (GSM) строка Максимальная длина 32
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 32
270 Пароль доступа к точке доступа строка Максимальная длина 32
271 Номер канала Wi-Fi в режиме точки доступа число 0 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
1 — WEP
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 1 .. 65535
275 DNS ОФД строка Максимальная длина 15
276 Канал обмена с ОФД число 1 — USB (EoU)
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
277 Адрес сайта ФНС строка Максимальная длина 64
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
280 Интервал посылок диагностических сообщений, с. число 0 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 1 .. 5
282 Интервал опроса ФН при разрывах (в сек.) число 5 .. 120
301 Печатать на ЧЛ сообщение о полученном IP-адресе число 0 — Не печатать
1 — Печатать
305 Частота обмена с ФН, кбит/с число 50 .. 400
306 Передавать необязательные реквизиты в ОФД число 0 — Не передавать
1 — Передавать
307 Ожидание инициализации ФН после включения, с. число 5 .. 255
308 Ожидание обработки команды в ФН, с. число 10 .. 255
309 Размер чека в байтах число 0 .. 4294967295
310 Печатать пароль доступа к точке Wi-Fi число 0 — Не печатать
1 — Печатать
311 Блокировать ККТ при переполнении ЭЖ число 0 — Не блокировать
1 — Блокировать работу по протоколу
2 — Блокировать работу с ЛК
312 Работа со скидками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
313 Работа с надбавками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
330 Шрифт реквизитов в чеке число 1 .. 7
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
332 Печатать реквизит «Наименование ОФД» число 0 — Не печатать
1 — Печатать
333 Печатать реквизит «Адрес электронной почты отправителя» число 0 — Не
печатать
1 — Печатать
334 Работа с ЭЖ число 0 — Отключена
1 — Включена
345 Печатать реквизит «ИНН поставщика» число 0 — Не печатать
1 — Печатать

АТОЛ 77Ф (5.X)

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
49 Получать IP-адреса от DHCP (Ethernet) число 0 — Нет
1 — Да
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения

Для работы данной настройки необходимо, чтобы настройка 292 Использовать
загружаемые шаблоны была отлична от 0
55 Пересчитывать суммы налогов после скидки на итог число 1 — Да
0 — Нет
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
71 IP-адрес (Ethernet) строка Максимальная длина 15
72 Маска подсети (Ethernet) строка Максимальная длина 15
73 Шлюз по умолчанию (Ethernet) строка Максимальная длина 15
74 IP-порт (Ethernet) число 1 .. 65535
76 Выключение / перезагрузка ККТ число 1 — По команде
2 — По кнопке и по команде
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
236 Скорость ККТ число 4800 — 4800 бод
9600 — 9600 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
230400 — 230400 бод
460800 — 460800 бод
921600 — 921600 бод
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 64
270 Пароль доступа к точке доступа строка Максимальная длина 64
271 Номер канала Wi-Fi в режиме точки доступа число 1 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 1 — USB (EoU)
2 — Ethernet
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
283 Статичный DNS число 0 — Выключен
1 — Включен
284 Адрес DNS строка Максимальная длина 15
285 Ширина бумаги число 0 — По умолчанию
1 — 80мм
2 — 57мм
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
294 Использовать RS232 число 0 — Нет
1 — Да
295 Ожидание получения сетевых настроек по Ethernet, с. (0 —
деактивация, 255 — ожидание без ограничений) число 0 .. 255
296 Ожидание подключения по Wi-Fi, с. (0 — деактивация, 255 — ожидание
без ограничений) число 0 .. 255
297 Ожидание подключения по GSM, с. (0 — деактивация, 255 — ожидание без
ограничений) число 0 .. 255
298 Ожидание подключения по Bluetooth, с. (0 — деактивация, 255 —
ожидание без ограничений) число 0 .. 255
299 Регистрировать секции число 0 — Нет
1 — Да
300 Включить отрезчик число 0 — Нет
1 — Да
322 Отрезать документы полностью число 0 — Нет
1 — Да
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
329 IP-порт (Wi-Fi) число 1 .. 65535
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
349 Режим включения интерфейсов число 0 — Следовать настройкам
1 — Включить все при следующей перезагрузке
2 — Включать все при каждой перезагрузке
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

АТОЛ 77Ф

Номер Описание Тип Возможные значения
0 Номер ККТ в магазине число 0 .. 255
2 Печатать названия секций число 0 — Не печатать
1 — Печатать
3 Печатать необнуляемую сумму приходов и расходов число 0 — Не печатать
1 — Печатать
4 Производить инкассацию число 0 — Нет
1 — Да
5 Расширенный X-отчет и Z-отчет число 0 — Нет
1 — Да
6 Печатать информацию о количестве чеков за смену по типам операций
число 0 — Не печатать
1 — Печатать
7 Автоматически печатать отчет по секциям перед X- и Z-отчетом число 0 —
Не печатать
1 — Печатать
8 Яркость печати ЧЛ число 1 .. 15
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
11 Пароль доступа строка Максимальная длина 4
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
13 Шрифт ЧЛ число 1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
14 Количество печатаемых строк после чека на ЧЛ число 0 .. 20
15 Печатать разделители в суточных отчетах число 0 — Не печатать
1 — Печатать
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
17 Печатать необнуляемый итог на начало смены в Z-отчете число 0 — Не
печатать
1 — Печатать
18 Печатать необнуляемый итог на начало смены в X-отчете число 0 — Не
печатать
1 — Печатать
19 Печатать текст командой «Печать строки» число 0 — Не печатать
1 — Печатать
20 Режим перехода на летнее/зимнее время число 0 — Не переходить
1 — Переходить, не оповещать
2 — Переходить, оповещать кассира
3 — Переходить, оповещать кассира и хост
21 Дата перехода на летнее время число
22 Дата перехода на зимнее время число
23 Количество символов в строке число 24 .. 64
24 Символ для разделителя строка Максимальная длина 1
25 Проверять время число 0 .. 99
26 Смещение области печати слева число 0 .. 24
27 Печатать налоги в Х- и Z-отчете и при регистрации число 0 — Не печатать
1 — Печатать
28 Минимальная яркость термокомпенсации на ЧЛ число 1 .. 15
29 Печатать на ЧЛ документ готовности к работе число 0 — Не печатать
1 — Печатать
30 Печатать на ЧЛ клише в служебных сообщениях число 0 — Не печатать
1 — Печатать
31 Печатать на ЧЛ сообщение о вводе даты-времени число 0 — Не печатать
1 — Печатать
32 Протокол работы ККТ число 0 — АТОЛ 2
1 — АТОЛ 3
33 PIN-код для Bluetooth строка Максимальная длина 8
34 Уровень коррекции ошибок QR-кода число 1 .. 4
35 Количество строк заголовка клише число 0 — 0
1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
8 — 8
9 — 9
10 — 10
11 — 11
12 — 12
13 — 13
14 — 14
15 — 15
16 — 16
17 — 17
18 — 18
19 — 19
20 — 20
99 — Старый формат печати
36 Расстояние от ТПГ до отрезного ножа число 0 .. 255
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
38 Звуковой сигнал при окончании бумаги и открытии крышки число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
40 Сохранять печатаемый документ в память число 0 — Не сохранять
1 — Сохранять только отчеты
2 — Сохранять все
41 Печатать нулевые налоги число 0 — Не печатать
1 — Печатать
42 Печать необнуляемой суммы возвратов приходов число 0 — Не печатать
1 — Печатать
43 Печать необнуляемой суммы возвратов расходов число 0 — Не печатать
1 — Печатать
44 Печатать количество отмененных чеков по типам число 0 — Не печатать
1 — Печатать
45 Не печатать блоки «приходы», «возвраты приходов», «расходы»,
«возвраты расходов» число 0 — Не печатать
1 — Печатать
46 Печатать нулевые суммы число 0 — Не печатать
1 — Печатать
47 Печатать номер ККМ в магазине число 0 — Не печатать
1 — Печатать
48 Печатать реквизиты чека на аннулированных чеках число 0 — Не печатать
1 — Печатать
49 Получать IP-адреса от DHCP (Ethernet) число 0 — Нет
1 — Да
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения
51 Шаблон чека число 1 — Шаблон 1
2 — Шаблон 2
52 Признак способа расчета по умолчанию число 1 — Предоплата 100%
2 — Предоплата
3 — Аванс
4 — Полный расчет
5 — Частичный расчет и кредит
6 — Передача в кредит
7 — Оплата кредита
53 Округлять сумму налога число 0 — На весь чек
1 — После каждой позиции
55 Пересчитывать суммы налогов после скидки на итог число 0 — Нет
1 — Да
56 Учет наличности число 0 — Отключен
1 — Включен
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать полное наименование
2 — Печатать краткое наименование
59 Не печатать Z-отчет при закрытии смены число 0 — Печатать
1 — Не печатать
60 Печатать необнуляемые суммы по способам расчета прихода и возврата
прихода число 0 — Не печатать
1 — Печатать
61 Печатать необнуляемые суммы по способам расчета расхода и возврата
расхода число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
63 Признак предмета расчета по умолчанию число 1 — Товар
2 — Подакцизный товар
3 — Работа
4 — Услуга
5 — Ставка азартной игры
6 — Выигрыш азартной игры
7 — Лотерейный билет
8 — Выигрыш лотереи
9 — Предоставление РИД
10 — Платеж
11 — Агентское вознаграждение
12 — Выплата
13 — Иной предмет расчета
14 — Имущественное право
15 — Внереализационный доход
16 — Иные платежи и взносы
17 — Торговый сбор
18 — Курортный сбор
19 — Залог
20 — Расход
21 — Взносы на ОПС ИП
22 — Взносы на ОПС
23 — Взносы на ОМС ИП
24 — Взносы на ОМС
25 — Взносы на ОСС
26 — Платеж казино
27 — Выдача денежных средств
30 — Подакцизный товар, не имеющий КМ
31 — Подакцизный товар, имеющий КМ
32 — Товар, не имеющий КМ, за исключением подакцизного
33 — Товар, имеющий КМ, за исключением подакцизного
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
66 Отрезать чек после завершения документа число 0 — Не отрезать
1 — Не полностью
2 — Полностью
67 Запретить отрезку чеков число 0 — Нет
1 — Да
68 Запретить отрезку отчетов число 0 — Нет
1 — Да
69 Отрезать ЧЛ после печати клише командой «Печать клише» число 0 — Нет
1 — Да
71 IP-адрес (Ethernet) строка Максимальная длина 15
72 Маска подсети (Ethernet) строка Максимальная длина 15
73 Шлюз по умолчанию (Ethernet) строка Максимальная длина 15
74 IP-порт (Ethernet) число 1 .. 65535
75 Расстояние от ножа отрезчика до гребенки число 0 .. 255
76 Выключение / перезагрузка ККТ число 0 — По кнопке
1 — По команде
2 — По кнопке и по команде
94 Пароль кассира 1 строка Максимальная длина 8
95 Пароль кассира 2 строка Максимальная длина 8
96 Пароль кассира 3 строка Максимальная длина 8
97 Пароль кассира 4 строка Максимальная длина 8
98 Пароль кассира 5 строка Максимальная длина 8
99 Пароль кассира 6 строка Максимальная длина 8
100 Пароль кассира 7 строка Максимальная длина 8
101 Пароль кассира 8 строка Максимальная длина 8
102 Пароль кассира 9 строка Максимальная длина 8
103 Пароль кассира 10 строка Максимальная длина 8
104 Пароль кассира 11 строка Максимальная длина 8
105 Пароль кассира 12 строка Максимальная длина 8
106 Пароль кассира 13 строка Максимальная длина 8
107 Пароль кассира 14 строка Максимальная длина 8
108 Пароль кассира 15 строка Максимальная длина 8
109 Пароль кассира 16 строка Максимальная длина 8
110 Пароль кассира 17 строка Максимальная длина 8
111 Пароль кассира 18 строка Максимальная длина 8
112 Пароль кассира 19 строка Максимальная длина 8
113 Пароль кассира 20 строка Максимальная длина 8
114 Пароль кассира 21 строка Максимальная длина 8
115 Пароль кассира 22 строка Максимальная длина 8
116 Пароль кассира 23 строка Максимальная длина 8
117 Пароль кассира 24 строка Максимальная длина 8
118 Пароль кассира 25 строка Максимальная длина 8
119 Пароль кассира 26 строка Максимальная длина 8
120 Пароль кассира 27 строка Максимальная длина 8
121 Пароль кассира 28 строка Максимальная длина 8
122 Имя кассира 1 строка Максимальная длина 64
123 Имя кассира 2 строка Максимальная длина 64
124 Имя кассира 3 строка Максимальная длина 64
125 Имя кассира 4 строка Максимальная длина 64
126 Имя кассира 5 строка Максимальная длина 64
127 Имя кассира 6 строка Максимальная длина 64
128 Имя кассира 7 строка Максимальная длина 64
129 Имя кассира 8 строка Максимальная длина 64
130 Имя кассира 9 строка Максимальная длина 64
131 Имя кассира 10 строка Максимальная длина 64
132 Имя кассира 11 строка Максимальная длина 64
133 Имя кассира 12 строка Максимальная длина 64
134 Имя кассира 13 строка Максимальная длина 64
135 Имя кассира 14 строка Максимальная длина 64
136 Имя кассира 15 строка Максимальная длина 64
137 Имя кассира 16 строка Максимальная длина 64
138 Имя кассира 17 строка Максимальная длина 64
139 Имя кассира 18 строка Максимальная длина 64
140 Имя кассира 19 строка Максимальная длина 64
141 Имя кассира 20 строка Максимальная длина 64
142 Имя кассира 21 строка Максимальная длина 64
143 Имя кассира 22 строка Максимальная длина 64
144 Имя кассира 23 строка Максимальная длина 64
145 Имя кассира 24 строка Максимальная длина 64
146 Имя кассира 25 строка Максимальная длина 64
147 Имя кассира 26 строка Максимальная длина 64
148 Имя кассира 27 строка Максимальная длина 64
149 Имя кассира 28 строка Максимальная длина 64
150 ИНН кассира 1 строка Максимальная длина 12
151 ИНН кассира 2 строка Максимальная длина 12
152 ИНН кассира 3 строка Максимальная длина 12
153 ИНН кассира 4 строка Максимальная длина 12
154 ИНН кассира 5 строка Максимальная длина 12
155 ИНН кассира 6 строка Максимальная длина 12
156 ИНН кассира 7 строка Максимальная длина 12
157 ИНН кассира 8 строка Максимальная длина 12
158 ИНН кассира 9 строка Максимальная длина 12
159 ИНН кассира 10 строка Максимальная длина 12
160 ИНН кассира 11 строка Максимальная длина 12
161 ИНН кассира 12 строка Максимальная длина 12
162 ИНН кассира 13 строка Максимальная длина 12
163 ИНН кассира 14 строка Максимальная длина 12
164 ИНН кассира 15 строка Максимальная длина 12
165 ИНН кассира 16 строка Максимальная длина 12
166 ИНН кассира 17 строка Максимальная длина 12
167 ИНН кассира 18 строка Максимальная длина 12
168 ИНН кассира 19 строка Максимальная длина 12
169 ИНН кассира 20 строка Максимальная длина 12
170 ИНН кассира 21 строка Максимальная длина 12
171 ИНН кассира 22 строка Максимальная длина 12
172 ИНН кассира 23 строка Максимальная длина 12
173 ИНН кассира 24 строка Максимальная длина 12
174 ИНН кассира 25 строка Максимальная длина 12
175 ИНН кассира 26 строка Максимальная длина 12
176 ИНН кассира 27 строка Максимальная длина 12
177 ИНН кассира 28 строка Максимальная длина 12
178 Пароль администратора строка Максимальная длина 8
179 Имя администратора строка Максимальная длина 64
180 ИНН администратора строка Максимальная длина 12
181 Пароль системного администратора строка Максимальная длина 8
182 Имя системного администратора строка Максимальная длина 64
183 ИНН системного администратора строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина 64
185 Строка клише 2 строка Максимальная длина 64
186 Строка клише 3 строка Максимальная длина 64
187 Строка клише 4 строка Максимальная длина 64
188 Строка клише 5 строка Максимальная длина 64
189 Строка клише 6 строка Максимальная длина 64
190 Строка клише 7 строка Максимальная длина 64
191 Строка клише 8 строка Максимальная длина 64
192 Строка клише 9 строка Максимальная длина 64
193 Строка клише 10 строка Максимальная длина 64
194 Строка клише 11 строка Максимальная длина 64
195 Строка клише 12 строка Максимальная длина 64
196 Строка клише 13 строка Максимальная длина 64
197 Строка клише 14 строка Максимальная длина 64
198 Строка клише 15 строка Максимальная длина 64
199 Строка клише 16 строка Максимальная длина 64
200 Строка клише 17 строка Максимальная длина 64
201 Строка клише 18 строка Максимальная длина 64
202 Строка клише 19 строка Максимальная длина 64
203 Строка клише 20 строка Максимальная длина 64
204 Наименование секции 1 строка Максимальная длина 64
205 Наименование секции 2 строка Максимальная длина 64
206 Наименование секции 3 строка Максимальная длина 64
207 Наименование секции 4 строка Максимальная длина 64
208 Наименование секции 5 строка Максимальная длина 64
209 Наименование секции 6 строка Максимальная длина 64
210 Наименование секции 7 строка Максимальная длина 64
211 Наименование секции 8 строка Максимальная длина 64
212 Наименование секции 9 строка Максимальная длина 64
213 Наименование секции 10 строка Максимальная длина 64
214 Наименование секции 11 строка Максимальная длина 64
215 Наименование секции 12 строка Максимальная длина 64
216 Наименование секции 13 строка Максимальная длина 64
217 Наименование секции 14 строка Максимальная длина 64
218 Наименование секции 15 строка Максимальная длина 64
219 Наименование секции 16 строка Максимальная длина 64
220 Номер налога 1 число 1 .. 6
221 Номер налога 2 число 1 .. 6
222 Номер налога 3 число 1 .. 6
223 Номер налога 4 число 1 .. 6
224 Номер налога 5 число 1 .. 6
225 Номер налога 6 число 1 .. 6
226 Номер налога 7 число 1 .. 6
227 Номер налога 8 число 1 .. 6
228 Номер налога 9 число 1 .. 6
229 Номер налога 10 число 1 .. 6
230 Номер налога 11 число 1 .. 6
231 Номер налога 12 число 1 .. 6
232 Номер налога 13 число 1 .. 6
233 Номер налога 14 число 1 .. 6
234 Номер налога 15 число 1 .. 6
235 Номер налога 16 число 1 .. 6
236 Скорость ККТ число 1200 — 1200 бод
2400 — 2400 бод
4800 — 4800 бод
9600 — 9600 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
238 Скорость подключенного устройства число 1200 — 1200 бод
2400 — 2400 бод
4800 — 4800 бод
9600 — 9600 бод
14400 — 14400 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
239 Канал обмена с ККТ число 0 — RS-232
4 — USB
5 — Bluetooth
6 — Ethernet
7 — Wi-Fi
240 Наименование способа расчета 2 строка Максимальная длина 64
241 Наименование способа расчета 3 строка Максимальная длина 64
242 Наименование способа расчета 4 строка Максимальная длина 64
243 Наименование способа расчета 5 строка Максимальная длина 64
244 Наименование способа расчета 6 строка Максимальная длина 64
245 Наименование способа расчета 7 строка Максимальная длина 64
246 Наименование способа расчета 8 строка Максимальная длина 64
247 Наименование способа расчета 9 строка Максимальная длина 64
248 Наименование способа расчета 10 строка Максимальная длина 64
249 Номер формы расчета 2 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
250 Номер формы расчета 3 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
251 Номер формы расчета 4 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
252 Номер формы расчета 5 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
258 Ограничение скорости печати для шрифта 1 число 0 — 140 мм/с
1 — 180 мм/с
2 — 220 мм/с
3 — 260 мм/с
4 — 300 мм/с
259 Ограничение скорости печати для шрифта 2 число 0 — 140 мм/с
1 — 180 мм/с
2 — 220 мм/с
3 — 260 мм/с
4 — 300 мм/с
260 Ограничение скорости печати для шрифта 3 число 0 — 140 мм/с
1 — 180 мм/с
2 — 220 мм/с
3 — 260 мм/с
4 — 300 мм/с
261 Ограничение скорости печати для шрифта 4 число 0 — 140 мм/с
1 — 180 мм/с
2 — 220 мм/с
3 — 260 мм/с
4 — 300 мм/с
262 Ограничение скорости печати для шрифта 5 число 0 — 140 мм/с
1 — 180 мм/с
2 — 220 мм/с
3 — 260 мм/с
4 — 300 мм/с
263 Ограничение скорости печати для шрифта 6 число 0 — 140 мм/с
1 — 180 мм/с
2 — 220 мм/с
3 — 260 мм/с
4 — 300 мм/с
264 Ограничение скорости печати графики число 0 — 140 мм/с
1 — 180 мм/с
2 — 220 мм/с
3 — 260 мм/с
4 — 300 мм/с
265 Конфигурационная строка (GSM) строка Максимальная длина 32
266 Имя пользователя (GSM) строка Максимальная длина 32
267 Пароль (GSM) строка Максимальная длина 32
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 32
270 Пароль доступа к точке доступа строка Максимальная длина 32
271 Номер канала Wi-Fi в режиме точки доступа число 0 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
1 — WEP
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 1 .. 65535
275 DNS ОФД строка Максимальная длина 15
276 Канал обмена с ОФД число 1 — USB (EoU)
2 — Ethernet
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
277 Адрес сайта ФНС строка Максимальная длина 64
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
280 Интервал посылок диагностических сообщений, с. число 0 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 1 .. 5
282 Интервал опроса ФН при разрывах (в сек.) число 5 .. 120
301 Печатать на ЧЛ сообщение о полученном IP-адресе число 0 — Не печатать
1 — Печатать
305 Частота обмена с ФН, кбит/с число 50 .. 400
306 Передавать необязательные реквизиты в ОФД число 0 — Не передавать
1 — Передавать
307 Ожидание инициализации ФН после включения, с. число 5 .. 255
308 Ожидание обработки команды в ФН, с. число 10 .. 255
309 Размер чека в байтах число 0 .. 4294967295
310 Печатать пароль доступа к точке Wi-Fi число 0 — Не печатать
1 — Печатать
311 Блокировать ККТ при переполнении ЭЖ число 0 — Не блокировать
1 — Блокировать работу по протоколу
2 — Блокировать работу с ЛК
312 Работа со скидками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
313 Работа с надбавками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
330 Шрифт реквизитов в чеке число 1 .. 7
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
332 Печатать реквизит «Наименование ОФД» число 0 — Не печатать
1 — Печатать
333 Печатать реквизит «Адрес электронной почты отправителя» число 0 — Не
печатать
1 — Печатать
334 Работа с ЭЖ число 0 — Отключена
1 — Включена
345 Печатать реквизит «ИНН поставщика» число 0 — Не печатать
1 — Печатать

АТОЛ 90Ф

Номер Описание Тип Возможные значения
0 Номер ККТ в магазине число 0 .. 99
1 Разрешение способа расчета 2 число 0 — Запрещено
1 — Разрешено
2 Печатать названия секций число 0 — Не печатать
1 — Печатать
8 Яркость печати ЧЛ число 1 .. 15
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
13 Шрифт ЧЛ число 1 — 1
2 — 2
3 — 3
4 — 4
14 Количество печатаемых строк после чека на ЧЛ число 0 .. 6
15 Печатать разделители в суточных отчетах число 0 — Не печатать
1 — Печатать
23 Количество символов в строке число 24 .. 32
25 Проверять время число 0 .. 99
26 Смещение области печати слева число 0 .. 8
27 Печатать налоги в Х- и Z-отчете и при регистрации число 0 — Не печатать
1 — Печатать
32 Протокол работы ККТ число 0 — АТОЛ 2
1 — АТОЛ 3
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
41 Печатать нулевые налоги число 0 — Не печатать
1 — Печатать
42 Печать необнуляемой суммы возвратов приходов число 0 — Не печатать
1 — Печатать
43 Печать необнуляемой суммы возвратов расходов число 0 — Не печатать
1 — Печатать
44 Печатать количество отмененных чеков по типам число 0 — Не печатать
1 — Печатать
45 Не печатать блоки «приходы», «возвраты приходов», «расходы»,
«возвраты расходов» число 0 — Не печатать
1 — Печатать
46 Печатать нулевые суммы число 0 — Не печатать
1 — Печатать
47 Печатать номер ККМ в магазине число 0 — Не печатать
1 — Печатать
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения
56 Учет наличности число 0 — Минимум
1 — Максимум
59 Не печатать Z-отчет при закрытии смены число 0 — Печатать
1 — Не печатать
60 Печатать необнуляемые суммы по способам расчета прихода и возврата
прихода число 0 — Не печатать
1 — Печатать
61 Печатать необнуляемые суммы по способам расчета расхода и возврата
расхода число 0 — Не печатать
1 — Печатать
77 Порядок ввода сумм число 0 — С копеек
1 — С рублей
79 Разрядность вводимых сумм число 1 .. 8
80 Работа со скидками/надбавками число 0 — Скидки запрещены
1 — Разрешены скидки на весь чек
2 — Разрешены скидки на позицию
3 — Разрешены все скидки
82 Печать названия товара число 0 — Запрещено
1 — Разрешено
83 Автоматический вход в режим «РЕГИСТРАЦИЯ» число 0 — Запрещено
1 — Разрешено с оператором 1
2 — Разрешено с оператором 2
3 — Разрешено с оператором 3
4 — Разрешено с оператором 4
5 — Разрешено с оператором 5
6 — Разрешено с оператором 6
7 — Разрешено с оператором 7
8 — Разрешено с оператором 8
84 Автоматическая печать «пробного чека» при входе в режим
«РЕГИСТРАЦИЯ» число 0 — Нет
1 — Да
85 Сбрасывать дисплей в «0.00» по завершении чека число 0 — Нет
1 — Да
86 «Пробный чек» по клавише [ПС] число 0 — Нет
1 — Да
87 Двойная высота итоговой суммы число 0 — Нет
1 — Да
88 Двойная ширина итоговой суммы число 0 — Нет
1 — Да
89 Параметры открытия смены в режиме «РЕГИСТРАЦИЯ» число 0 — Только
клавишей [ИТ] без печати документа «Открытие смены»
1 — Только клавишей [ИТ] с печатью документа «Открытие смены»
2 — Автоматически и клавишей [ИТ] и без печати документа «Открытие смены»
3 — Автоматически и клавишей [ИТ] и с печатью документа «Открытие смены»
90 Звуковая индикация нажатия на кнопки число 0 — Нет
1 — Да
93 Работа с ЕГАИС число 0 — Выключено
1 — Включено
94 Пароль кассира 1 строка Максимальная длина 8
95 Пароль кассира 2 строка Максимальная длина 8
96 Пароль кассира 3 строка Максимальная длина 8
97 Пароль кассира 4 строка Максимальная длина 8
98 Пароль кассира 5 строка Максимальная длина 8
99 Пароль кассира 6 строка Максимальная длина 8
100 Пароль кассира 7 строка Максимальная длина 8
101 Пароль кассира 8 строка Максимальная длина 8
122 Имя кассира 1 строка Максимальная длина 32
123 Имя кассира 2 строка Максимальная длина 32
124 Имя кассира 3 строка Максимальная длина 32
125 Имя кассира 4 строка Максимальная длина 32
126 Имя кассира 5 строка Максимальная длина 32
127 Имя кассира 6 строка Максимальная длина 32
128 Имя кассира 7 строка Максимальная длина 32
129 Имя кассира 8 строка Максимальная длина 32
150 ИНН кассира 1 строка Максимальная длина 12
151 ИНН кассира 2 строка Максимальная длина 12
152 ИНН кассира 3 строка Максимальная длина 12
153 ИНН кассира 4 строка Максимальная длина 12
154 ИНН кассира 5 строка Максимальная длина 12
155 ИНН кассира 6 строка Максимальная длина 12
156 ИНН кассира 7 строка Максимальная длина 12
157 ИНН кассира 8 строка Максимальная длина 12
178 Пароль администратора строка Максимальная длина 8
179 Имя администратора строка Максимальная длина 32
180 ИНН администратора строка Максимальная длина 12
181 Пароль системного администратора строка Максимальная длина 8
182 Имя системного администратора строка Максимальная длина 32
183 ИНН системного администратора строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина 32
185 Строка клише 2 строка Максимальная длина 32
186 Строка клише 3 строка Максимальная длина 32
187 Строка клише 4 строка Максимальная длина 32
188 Строка клише 5 строка Максимальная длина 32
189 Строка клише 6 строка Максимальная длина 32
204 Наименование секции 1 строка Максимальная длина 32
205 Наименование секции 2 строка Максимальная длина 32
206 Наименование секции 3 строка Максимальная длина 32
207 Наименование секции 4 строка Максимальная длина 32
208 Наименование секции 5 строка Максимальная длина 32
209 Наименование секции 6 строка Максимальная длина 32
210 Наименование секции 7 строка Максимальная длина 32
211 Наименование секции 8 строка Максимальная длина 32
212 Наименование секции 9 строка Максимальная длина 32
213 Наименование секции 10 строка Максимальная длина 32
214 Наименование секции 11 строка Максимальная длина 32
215 Наименование секции 12 строка Максимальная длина 32
216 Наименование секции 13 строка Максимальная длина 32
217 Наименование секции 14 строка Максимальная длина 32
218 Наименование секции 15 строка Максимальная длина 32
219 Наименование секции 16 строка Максимальная длина 32
220 Номер налога 1 число 1 .. 6
221 Номер налога 2 число 1 .. 6
222 Номер налога 3 число 1 .. 6
223 Номер налога 4 число 1 .. 6
224 Номер налога 5 число 1 .. 6
225 Номер налога 6 число 1 .. 6
226 Номер налога 7 число 1 .. 6
227 Номер налога 8 число 1 .. 6
228 Номер налога 9 число 1 .. 6
229 Номер налога 10 число 1 .. 6
230 Номер налога 11 число 1 .. 6
231 Номер налога 12 число 1 .. 6
232 Номер налога 13 число 1 .. 6
233 Номер налога 14 число 1 .. 6
234 Номер налога 15 число 1 .. 6
235 Номер налога 16 число 1 .. 6
265 Конфигурационная строка (GSM) строка Максимальная длина 32
266 Имя пользователя (GSM) строка Максимальная длина 32
267 Пароль (GSM) строка Максимальная длина 32
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 32
270 Пароль доступа к точке доступа строка Максимальная длина 32
271 Номер канала Wi-Fi в режиме точки доступа число 0 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
1 — WEP
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 1 .. 65535
275 DNS ОФД строка Максимальная длина 15
276 Канал обмена с ОФД число 1 — USB (EoU)
3 — Wi-Fi
4 — GSM-модем
277 Адрес сайта ФНС строка Максимальная длина 64
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
280 Интервал посылок диагностических сообщений, с. число 0 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 1 .. 5
282 Интервал опроса ФН при разрывах (в сек.) число 5 .. 120
288 ИНН организации строка Максимальная длина 12
289 КПП организации строка Максимальная длина 10
290 Адрес предприятия торговли строка Максимальная длина 64
291 Наименование предприятия торговли строка Максимальная длина 64
303 Время перехода в режим энергосбережения число 0 .. 99
312 Работа со скидками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
313 Работа с надбавками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
330 Шрифт реквизитов в чеке число 1 .. 4
345 Печатать реквизит «ИНН поставщика» число 0 — Не печатать
1 — Печатать
346 Передавать код товара в реквизите «Наименование предмета расчета»
число 0 — Не передавать
1 — Передавать

АТОЛ 91Ф (5.X)

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
49 Получать IP-адреса от DHCP (Ethernet) число 0 — Нет
1 — Да
50 Система налогообложения по умолчанию число 1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения
52 Признак способа расчета по умолчанию число 1 — Предоплата 100%
2 — Предоплата
3 — Аванс
4 — Полный расчет
5 — Частичный расчет и кредит
6 — Передача в кредит
7 — Оплата кредита
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
63 Признак предмета расчета по умолчанию число 1 — Товар
2 — Подакцизный товар
3 — Работа
4 — Услуга
5 — Ставка азартной игры
6 — Выигрыш азартной игры
7 — Лотерейный билет
8 — Выигрыш лотереи
9 — Предоставление РИД
10 — Платеж
11 — Агентское вознаграждение
12 — Выплата
13 — Иной предмет расчета
14 — Имущественное право
15 — Внереализационный доход
16 — Иные платежи и взносы
17 — Торговый сбор
18 — Курортный сбор
19 — Залог
20 — Расход
21 — Взносы на ОПС ИП
22 — Взносы на ОПС
23 — Взносы на ОМС ИП
24 — Взносы на ОМС
25 — Взносы на ОСС
26 — Платеж казино
27 — Выдача денежных средств
30 — Подакцизный товар, не имеющий КМ
31 — Подакцизный товар, имеющий КМ
32 — Товар, не имеющий КМ, за исключением подакцизного
33 — Товар, имеющий КМ, за исключением подакцизного
71 IP-адрес (Ethernet) строка Максимальная длина 15
72 Маска подсети (Ethernet) строка Максимальная длина 15
73 Шлюз по умолчанию (Ethernet) строка Максимальная длина 15
74 IP-порт (Ethernet) число 1 .. 65535
76 Выключение / перезагрузка ККТ число 1 — По команде
2 — По кнопке и по команде
79 Разрядность вводимых сумм число 1 .. 12
80 Работа со скидками/надбавками число 0 — Скидки запрещены
1 — Разрешены скидки на весь чек
2 — Разрешены скидки на позицию
3 — Разрешены все скидки
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 64
270 Пароль доступа к точке доступа строка Максимальная длина 64
271 Номер канала Wi-Fi в режиме точки доступа число 1 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 2 — Ethernet
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
283 Статичный DNS число 0 — Выключен
1 — Включен
284 Адрес DNS строка Максимальная длина 15
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
295 Ожидание получения сетевых настроек по Ethernet, с. (0 —
деактивация, 255 — ожидание без ограничений) число 0 .. 255
296 Ожидание подключения по Wi-Fi, с. (0 — деактивация, 255 — ожидание
без ограничений) число 0 .. 255
297 Ожидание подключения по GSM, с. (0 — деактивация, 255 — ожидание без
ограничений) число 0 .. 255
298 Ожидание подключения по Bluetooth, с. (0 — деактивация, 255 —
ожидание без ограничений) число 0 .. 255
299 Регистрировать секции число 0 — Нет
1 — Да
314 Вести журнал товаров число 0 — Не вести
1 — Вести
315 Очищать журнал товаров число 0 — При закрытии смены
1 — При открытии смены
317 Тип чека по умолчанию число 1 — Приход
2 — Возврат прихода
3 — Расход
4 — Возврат расхода
318 Запрашивать абонентский номер клиента число 0 — Не запрашивать
1 — Запрашивать
319 Способ расчета по умолчанию число 1 — Наличными
2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
329 IP-порт (Wi-Fi) число 1 .. 65535
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
346 Передавать код товара в реквизите «Наименование предмета расчета»
число 0 — Не передавать
1 — Передавать
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
349 Режим включения интерфейсов число 0 — Следовать настройкам
1 — Включить все при следующей перезагрузке
2 — Включать все при каждой перезагрузке
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
351 Звуковой сигнал при нажатии кнопок на матричной клавиатуре число 1 — Да
0 — Нет
352 Звуковой сигнал при нажатии кнопок на USB клавиатуре число 1 — Да
0 — Нет
353 Яркость дисплея число 0 .. 100
354 Контрастность дисплея число 0 .. 100
355 Режим ФР число 1 — Включен
0 — Выключен
358 Пользователь по умолчанию число 0 .. 32
359 Автовход пользователя по умолчанию число 1 — Включен
0 — Выключен
360 Записывать ШК из базы товаров в реквизит 1162 число 1 — Да
0 — Нет
361 Использовать банковский терминал число 0 — Нет
1 — Да
362 Использовать электронные весы число 0 — Нет
1 — Да
363 Разрешить ввод количества вручную при работе с весами число 0 — Нет
1 — Да
368 Ставка НДС по умолчанию число 0 — Не выбрана
1 — НДС 20%
2 — НДС 10%
3 — НДС расч. 20/120
4 — НДС 10/110
5 — НДС 0%
6 — Без НДС
369 Секция по умолчанию число 1 .. 5
370 Таймаут на выключение подсветки дисплея, сек. число 0 .. 65535
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
384 Печать чека с абонентским номером клиента число 0 — Печатать
1 — Не печатать
2 — Запрашивать печать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

АТОЛ 91Ф

Номер Описание Тип Возможные значения
0 Номер ККТ в магазине число 0 .. 255
2 Печатать названия секций число 0 — Не печатать
1 — Печатать
3 Печатать необнуляемую сумму приходов и расходов число 0 — Не печатать
1 — Печатать
4 Производить инкассацию число 0 — Нет
1 — Да
5 Расширенный X-отчет и Z-отчет число 0 — Нет
1 — Да
6 Печатать информацию о количестве чеков за смену по типам операций
число 0 — Не печатать
1 — Печатать
7 Автоматически печатать отчет по секциям перед X- и Z-отчетом число 0 —
Не печатать
1 — Печатать
8 Яркость печати ЧЛ число 1 .. 15
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
11 Пароль доступа строка Максимальная длина 4
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
13 Шрифт ЧЛ число 1 — 1
2 — 2
3 — 3
4 — 4
14 Количество печатаемых строк после чека на ЧЛ число 0 .. 20
15 Печатать разделители в суточных отчетах число 0 — Не печатать
1 — Печатать
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
17 Печатать необнуляемый итог на начало смены в Z-отчете число 0 — Не
печатать
1 — Печатать
18 Печатать необнуляемый итог на начало смены в X-отчете число 0 — Не
печатать
1 — Печатать
19 Печатать текст командой «Печать строки» число 0 — Не печатать
1 — Печатать
20 Режим перехода на летнее/зимнее время число 0 — Не переходить
1 — Переходить, не оповещать
2 — Переходить, оповещать кассира
3 — Переходить, оповещать кассира и хост
21 Дата перехода на летнее время число
22 Дата перехода на зимнее время число
23 Количество символов в строке число 24 .. 42
24 Символ для разделителя строка Максимальная длина 1
25 Проверять время число 0 .. 99
26 Смещение области печати слева число 0 .. 8
27 Печатать налоги в Х- и Z-отчете и при регистрации число 0 — Не печатать
1 — Печатать
28 Минимальная яркость термокомпенсации на ЧЛ число 1 .. 15
29 Печатать на ЧЛ документ готовности к работе число 0 — Не печатать
1 — Печатать
30 Печатать на ЧЛ клише в служебных сообщениях число 0 — Не печатать
1 — Печатать
31 Печатать на ЧЛ сообщение о вводе даты-времени число 0 — Не печатать
1 — Печатать
32 Протокол работы ККТ число 0 — АТОЛ 2
1 — АТОЛ 3
33 PIN-код для Bluetooth строка Максимальная длина 8
34 Уровень коррекции ошибок QR-кода число 1 .. 4
35 Количество строк заголовка клише число 0 — 0
1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
8 — 8
9 — 9
10 — 10
11 — 11
12 — 12
13 — 13
14 — 14
15 — 15
16 — 16
17 — 17
18 — 18
19 — 19
20 — 20
99 — Старый формат печати
36 Расстояние от ТПГ до отрезного ножа число 0 .. 255
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
38 Звуковой сигнал при окончании бумаги и открытии крышки число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
40 Сохранять печатаемый документ в память число 0 — Не сохранять
1 — Сохранять только отчеты
2 — Сохранять все
41 Печатать нулевые налоги число 0 — Не печатать
1 — Печатать
42 Печать необнуляемой суммы возвратов приходов число 0 — Не печатать
1 — Печатать
43 Печать необнуляемой суммы возвратов расходов число 0 — Не печатать
1 — Печатать
44 Печатать количество отмененных чеков по типам число 0 — Не печатать
1 — Печатать
45 Не печатать блоки «приходы», «возвраты приходов», «расходы»,
«возвраты расходов» число 0 — Не печатать
1 — Печатать
46 Печатать нулевые суммы число 0 — Не печатать
1 — Печатать
47 Печатать номер ККМ в магазине число 0 — Не печатать
1 — Печатать
48 Печатать реквизиты чека на аннулированных чеках число 0 — Не печатать
1 — Печатать
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения
51 Шаблон чека число 1 — Шаблон 1
2 — Шаблон 2
52 Признак способа расчета по умолчанию число 1 — Предоплата 100%
2 — Предоплата
3 — Аванс
4 — Полный расчет
5 — Частичный расчет и кредит
6 — Передача в кредит
7 — Оплата кредита
53 Округлять сумму налога число 0 — На весь чек
1 — После каждой позиции
55 Пересчитывать суммы налогов после скидки на итог число 0 — Нет
1 — Да
56 Учет наличности число 0 — Отключен
1 — Включен
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать полное наименование
2 — Печатать краткое наименование
59 Не печатать Z-отчет при закрытии смены число 0 — Печатать
1 — Не печатать
60 Печатать необнуляемые суммы по способам расчета прихода и возврата
прихода число 0 — Не печатать
1 — Печатать
61 Печатать необнуляемые суммы по способам расчета расхода и возврата
расхода число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
63 Признак предмета расчета по умолчанию число 1 — Товар
2 — Подакцизный товар
3 — Работа
4 — Услуга
5 — Ставка азартной игры
6 — Выигрыш азартной игры
7 — Лотерейный билет
8 — Выигрыш лотереи
9 — Предоставление РИД
10 — Платеж
11 — Агентское вознаграждение
12 — Выплата
13 — Иной предмет расчета
14 — Имущественное право
15 — Внереализационный доход
16 — Иные платежи и взносы
17 — Торговый сбор
18 — Курортный сбор
19 — Залог
20 — Расход
21 — Взносы на ОПС ИП
22 — Взносы на ОПС
23 — Взносы на ОМС ИП
24 — Взносы на ОМС
25 — Взносы на ОСС
26 — Платеж казино
27 — Выдача денежных средств
30 — Подакцизный товар, не имеющий КМ
31 — Подакцизный товар, имеющий КМ
32 — Товар, не имеющий КМ, за исключением подакцизного
33 — Товар, имеющий КМ, за исключением подакцизного
71 IP-адрес (Ethernet) строка Максимальная длина 15
72 Маска подсети (Ethernet) строка Максимальная длина 15
73 Шлюз по умолчанию (Ethernet) строка Максимальная длина 15
74 IP-порт (Ethernet) число 1 .. 65535
76 Выключение / перезагрузка ККТ число 0 — По кнопке
1 — Не используется
2 — По кнопке и по команде
79 Разрядность вводимых сумм число 1 .. 8
94 Пароль кассира 1 строка Максимальная длина 8
95 Пароль кассира 2 строка Максимальная длина 8
96 Пароль кассира 3 строка Максимальная длина 8
97 Пароль кассира 4 строка Максимальная длина 8
98 Пароль кассира 5 строка Максимальная длина 8
99 Пароль кассира 6 строка Максимальная длина 8
100 Пароль кассира 7 строка Максимальная длина 8
101 Пароль кассира 8 строка Максимальная длина 8
102 Пароль кассира 9 строка Максимальная длина 8
103 Пароль кассира 10 строка Максимальная длина 8
104 Пароль кассира 11 строка Максимальная длина 8
105 Пароль кассира 12 строка Максимальная длина 8
106 Пароль кассира 13 строка Максимальная длина 8
107 Пароль кассира 14 строка Максимальная длина 8
108 Пароль кассира 15 строка Максимальная длина 8
109 Пароль кассира 16 строка Максимальная длина 8
110 Пароль кассира 17 строка Максимальная длина 8
111 Пароль кассира 18 строка Максимальная длина 8
112 Пароль кассира 19 строка Максимальная длина 8
113 Пароль кассира 20 строка Максимальная длина 8
114 Пароль кассира 21 строка Максимальная длина 8
115 Пароль кассира 22 строка Максимальная длина 8
116 Пароль кассира 23 строка Максимальная длина 8
117 Пароль кассира 24 строка Максимальная длина 8
118 Пароль кассира 25 строка Максимальная длина 8
119 Пароль кассира 26 строка Максимальная длина 8
120 Пароль кассира 27 строка Максимальная длина 8
121 Пароль кассира 28 строка Максимальная длина 8
122 Имя кассира 1 строка Максимальная длина 32
123 Имя кассира 2 строка Максимальная длина 32
124 Имя кассира 3 строка Максимальная длина 32
125 Имя кассира 4 строка Максимальная длина 32
126 Имя кассира 5 строка Максимальная длина 32
127 Имя кассира 6 строка Максимальная длина 32
128 Имя кассира 7 строка Максимальная длина 32
129 Имя кассира 8 строка Максимальная длина 32
130 Имя кассира 9 строка Максимальная длина 32
131 Имя кассира 10 строка Максимальная длина 32
132 Имя кассира 11 строка Максимальная длина 32
133 Имя кассира 12 строка Максимальная длина 32
134 Имя кассира 13 строка Максимальная длина 32
135 Имя кассира 14 строка Максимальная длина 32
136 Имя кассира 15 строка Максимальная длина 32
137 Имя кассира 16 строка Максимальная длина 32
138 Имя кассира 17 строка Максимальная длина 32
139 Имя кассира 18 строка Максимальная длина 32
140 Имя кассира 19 строка Максимальная длина 32
141 Имя кассира 20 строка Максимальная длина 32
142 Имя кассира 21 строка Максимальная длина 32
143 Имя кассира 22 строка Максимальная длина 32
144 Имя кассира 23 строка Максимальная длина 32
145 Имя кассира 24 строка Максимальная длина 32
146 Имя кассира 25 строка Максимальная длина 32
147 Имя кассира 26 строка Максимальная длина 32
148 Имя кассира 27 строка Максимальная длина 32
149 Имя кассира 28 строка Максимальная длина 32
150 ИНН кассира 1 строка Максимальная длина 12
151 ИНН кассира 2 строка Максимальная длина 12
152 ИНН кассира 3 строка Максимальная длина 12
153 ИНН кассира 4 строка Максимальная длина 12
154 ИНН кассира 5 строка Максимальная длина 12
155 ИНН кассира 6 строка Максимальная длина 12
156 ИНН кассира 7 строка Максимальная длина 12
157 ИНН кассира 8 строка Максимальная длина 12
158 ИНН кассира 9 строка Максимальная длина 12
159 ИНН кассира 10 строка Максимальная длина 12
160 ИНН кассира 11 строка Максимальная длина 12
161 ИНН кассира 12 строка Максимальная длина 12
162 ИНН кассира 13 строка Максимальная длина 12
163 ИНН кассира 14 строка Максимальная длина 12
164 ИНН кассира 15 строка Максимальная длина 12
165 ИНН кассира 16 строка Максимальная длина 12
166 ИНН кассира 17 строка Максимальная длина 12
167 ИНН кассира 18 строка Максимальная длина 12
168 ИНН кассира 19 строка Максимальная длина 12
169 ИНН кассира 20 строка Максимальная длина 12
170 ИНН кассира 21 строка Максимальная длина 12
171 ИНН кассира 22 строка Максимальная длина 12
172 ИНН кассира 23 строка Максимальная длина 12
173 ИНН кассира 24 строка Максимальная длина 12
174 ИНН кассира 25 строка Максимальная длина 12
175 ИНН кассира 26 строка Максимальная длина 12
176 ИНН кассира 27 строка Максимальная длина 12
177 ИНН кассира 28 строка Максимальная длина 12
178 Пароль администратора строка Максимальная длина 8
179 Имя администратора строка Максимальная длина 32
180 ИНН администратора строка Максимальная длина 12
181 Пароль системного администратора строка Максимальная длина 8
182 Имя системного администратора строка Максимальная длина 32
183 ИНН системного администратора строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина 32
185 Строка клише 2 строка Максимальная длина 32
186 Строка клише 3 строка Максимальная длина 32
187 Строка клише 4 строка Максимальная длина 32
188 Строка клише 5 строка Максимальная длина 32
189 Строка клише 6 строка Максимальная длина 32
190 Строка клише 7 строка Максимальная длина 32
191 Строка клише 8 строка Максимальная длина 32
192 Строка клише 9 строка Максимальная длина 32
193 Строка клише 10 строка Максимальная длина 32
194 Строка клише 11 строка Максимальная длина 32
195 Строка клише 12 строка Максимальная длина 32
196 Строка клише 13 строка Максимальная длина 32
197 Строка клише 14 строка Максимальная длина 32
198 Строка клише 15 строка Максимальная длина 32
199 Строка клише 16 строка Максимальная длина 32
200 Строка клише 17 строка Максимальная длина 32
201 Строка клише 18 строка Максимальная длина 32
202 Строка клише 19 строка Максимальная длина 32
203 Строка клише 20 строка Максимальная длина 32
204 Наименование секции 1 строка Максимальная длина 32
205 Наименование секции 2 строка Максимальная длина 32
206 Наименование секции 3 строка Максимальная длина 32
207 Наименование секции 4 строка Максимальная длина 32
208 Наименование секции 5 строка Максимальная длина 32
209 Наименование секции 6 строка Максимальная длина 32
210 Наименование секции 7 строка Максимальная длина 32
211 Наименование секции 8 строка Максимальная длина 32
212 Наименование секции 9 строка Максимальная длина 32
213 Наименование секции 10 строка Максимальная длина 32
214 Наименование секции 11 строка Максимальная длина 32
215 Наименование секции 12 строка Максимальная длина 32
216 Наименование секции 13 строка Максимальная длина 32
217 Наименование секции 14 строка Максимальная длина 32
218 Наименование секции 15 строка Максимальная длина 32
219 Наименование секции 16 строка Максимальная длина 32
220 Номер налога 1 число 1 .. 6
221 Номер налога 2 число 1 .. 6
222 Номер налога 3 число 1 .. 6
223 Номер налога 4 число 1 .. 6
224 Номер налога 5 число 1 .. 6
225 Номер налога 6 число 1 .. 6
226 Номер налога 7 число 1 .. 6
227 Номер налога 8 число 1 .. 6
228 Номер налога 9 число 1 .. 6
229 Номер налога 10 число 1 .. 6
230 Номер налога 11 число 1 .. 6
231 Номер налога 12 число 1 .. 6
232 Номер налога 13 число 1 .. 6
233 Номер налога 14 число 1 .. 6
234 Номер налога 15 число 1 .. 6
235 Номер налога 16 число 1 .. 6
239 Канал обмена с ККТ число 4 — USB
5 — Bluetooth
6 — Ethernet
7 — Wi-Fi
240 Наименование способа расчета 2 строка Максимальная длина 42
241 Наименование способа расчета 3 строка Максимальная длина 42
242 Наименование способа расчета 4 строка Максимальная длина 42
243 Наименование способа расчета 5 строка Максимальная длина 42
244 Наименование способа расчета 6 строка Максимальная длина 42
245 Наименование способа расчета 7 строка Максимальная длина 42
246 Наименование способа расчета 8 строка Максимальная длина 42
247 Наименование способа расчета 9 строка Максимальная длина 42
248 Наименование способа расчета 10 строка Максимальная длина 42
249 Номер формы расчета 2 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
250 Номер формы расчета 3 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
251 Номер формы расчета 4 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
252 Номер формы расчета 5 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
265 Конфигурационная строка (GSM) строка Максимальная длина 32
266 Имя пользователя (GSM) строка Максимальная длина 32
267 Пароль (GSM) строка Максимальная длина 32
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 32
270 Пароль доступа к точке доступа строка Максимальная длина 32
271 Номер канала Wi-Fi в режиме точки доступа число 0 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
1 — WEP
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 1 .. 65535
275 DNS ОФД строка Максимальная длина 15
276 Канал обмена с ОФД число 1 — USB (EoU)
2 — Ethernet
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
277 Адрес сайта ФНС строка Максимальная длина 64
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
280 Интервал посылок диагностических сообщений, с. число 0 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 1 .. 5
282 Интервал опроса ФН при разрывах (в сек.) число 5 .. 120
301 Печатать на ЧЛ сообщение о полученном IP-адресе число 0 — Не печатать
1 — Печатать
302 Печатать остатка ФН в отчете число 0 — Не печатать
1 — Печатать
303 Время перехода в режим энергосбережения число 0 .. 99
304 Автоматический вход в режим «Оформления кассовых чеков» число 0 —
Запрещено
1 — Разрешено с оператором 1
2 — Разрешено с оператором 2
3 — Разрешено с оператором 3
4 — Разрешено с оператором 4
5 — Разрешено с оператором 5
6 — Разрешено с оператором 6
7 — Разрешено с оператором 7
8 — Разрешено с оператором 8
9 — Разрешено с оператором 9
10 — Разрешено с оператором 10
11 — Разрешено с оператором 11
12 — Разрешено с оператором 12
13 — Разрешено с оператором 13
14 — Разрешено с оператором 14
15 — Разрешено с оператором 15
16 — Разрешено с оператором 16
17 — Разрешено с оператором 17
18 — Разрешено с оператором 18
19 — Разрешено с оператором 19
20 — Разрешено с оператором 20
21 — Разрешено с оператором 21
22 — Разрешено с оператором 22
23 — Разрешено с оператором 23
24 — Разрешено с оператором 24
25 — Разрешено с оператором 25
26 — Разрешено с оператором 26
27 — Разрешено с оператором 27
28 — Разрешено с оператором 28
305 Частота обмена с ФН, кбит/с число 50 .. 400
306 Передавать необязательные реквизиты в ОФД число 0 — Не передавать
1 — Передавать
307 Ожидание инициализации ФН после включения, с. число 5 .. 255
308 Ожидание обработки команды в ФН, с. число 10 .. 255
309 Размер чека в байтах число 0 .. 4294967295
310 Печатать пароль доступа к точке Wi-Fi число 0 — Не печатать
1 — Печатать
311 Блокировать ККТ при переполнении ЭЖ число 0 — Не блокировать
1 — Блокировать работу по протоколу
2 — Блокировать работу с ЛК
312 Работа со скидками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
313 Работа с надбавками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
314 Вести журнал товаров число 0 — Не вести
1 — Вести
315 Очищать журнал товаров число 0 — При закрытии смены
1 — При открытии смены
316 Таймаут на выключение подсветки дисплея, мин. число 0 .. 60
317 Тип чека по умолчанию число 1 — Приход
2 — Расход
3 — Возврат прихода
4 — Возврат расхода
318 Запрашивать абонентский номер клиента число 0 — Не запрашивать
1 — Запрашивать
319 Способ расчета по умолчанию число 1 — Способ расчета 1
2 — Способ расчета 2
3 — Способ расчета 3
4 — Способ расчета 4
5 — Способ расчета 5
320 Единица измерения по умолчанию число 0 .. 16
321 Поставщик по умолчанию число 0 .. 16
323 Работать как ФР число 0 — Нет
1 — Да
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
330 Шрифт реквизитов в чеке число 1 .. 4
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
332 Печатать реквизит «Наименование ОФД» число 0 — Не печатать
1 — Печатать
333 Печатать реквизит «Адрес электронной почты отправителя» число 0 — Не
печатать
1 — Печатать
334 Работа с ЭЖ число 0 — Отключена
1 — Включена
345 Печатать реквизит «ИНН поставщика» число 0 — Не печатать
1 — Печатать
353 Яркость дисплея число 1 .. 10
354 Контрастность дисплея число 1 .. 10
368 Ставка НДС по умолчанию число 0 — Не выбрана
1 — НДС 20%
2 — НДС 10%
3 — НДС расч. 20/120
4 — НДС 10/110
5 — НДС 0%
6 — Без НДС
369 Секция по умолчанию число 0 .. 16

АТОЛ 92Ф (5.X)

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
49 Получать IP-адреса от DHCP (Ethernet) число 0 — Нет
1 — Да
50 Система налогообложения по умолчанию число 1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения
52 Признак способа расчета по умолчанию число 1 — Предоплата 100%
2 — Предоплата
3 — Аванс
4 — Полный расчет
5 — Частичный расчет и кредит
6 — Передача в кредит
7 — Оплата кредита
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
63 Признак предмета расчета по умолчанию число 1 — Товар
2 — Подакцизный товар
3 — Работа
4 — Услуга
5 — Ставка азартной игры
6 — Выигрыш азартной игры
7 — Лотерейный билет
8 — Выигрыш лотереи
9 — Предоставление РИД
10 — Платеж
11 — Агентское вознаграждение
12 — Выплата
13 — Иной предмет расчета
14 — Имущественное право
15 — Внереализационный доход
16 — Иные платежи и взносы
17 — Торговый сбор
18 — Курортный сбор
19 — Залог
20 — Расход
21 — Взносы на ОПС ИП
22 — Взносы на ОПС
23 — Взносы на ОМС ИП
24 — Взносы на ОМС
25 — Взносы на ОСС
26 — Платеж казино
27 — Выдача денежных средств
30 — Подакцизный товар, не имеющий КМ
31 — Подакцизный товар, имеющий КМ
32 — Товар, не имеющий КМ, за исключением подакцизного
33 — Товар, имеющий КМ, за исключением подакцизного
71 IP-адрес (Ethernet) строка Максимальная длина 15
72 Маска подсети (Ethernet) строка Максимальная длина 15
73 Шлюз по умолчанию (Ethernet) строка Максимальная длина 15
74 IP-порт (Ethernet) число 1 .. 65535
76 Выключение / перезагрузка ККТ число 1 — По команде
2 — По кнопке и по команде
79 Разрядность вводимых сумм число 1 .. 12
80 Работа со скидками/надбавками число 0 — Скидки запрещены
1 — Разрешены скидки на весь чек
2 — Разрешены скидки на позицию
3 — Разрешены все скидки
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 64
270 Пароль доступа к точке доступа строка Максимальная длина 64
271 Номер канала Wi-Fi в режиме точки доступа число 1 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 2 — Ethernet
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
283 Статичный DNS число 0 — Выключен
1 — Включен
284 Адрес DNS строка Максимальная длина 15
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
295 Ожидание получения сетевых настроек по Ethernet, с. (0 —
деактивация, 255 — ожидание без ограничений) число 0 .. 255
296 Ожидание подключения по Wi-Fi, с. (0 — деактивация, 255 — ожидание
без ограничений) число 0 .. 255
297 Ожидание подключения по GSM, с. (0 — деактивация, 255 — ожидание без
ограничений) число 0 .. 255
298 Ожидание подключения по Bluetooth, с. (0 — деактивация, 255 —
ожидание без ограничений) число 0 .. 255
299 Регистрировать секции число 0 — Нет
1 — Да
314 Вести журнал товаров число 0 — Не вести
1 — Вести
315 Очищать журнал товаров число 0 — При закрытии смены
1 — При открытии смены
317 Тип чека по умолчанию число 1 — Приход
2 — Возврат прихода
3 — Расход
4 — Возврат расхода
318 Запрашивать абонентский номер клиента число 0 — Не запрашивать
1 — Запрашивать
319 Способ расчета по умолчанию число 1 — Наличными
2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
329 IP-порт (Wi-Fi) число 1 .. 65535
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
346 Передавать код товара в реквизите «Наименование предмета расчета»
число 0 — Не передавать
1 — Передавать
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
349 Режим включения интерфейсов число 0 — Следовать настройкам
1 — Включить все при следующей перезагрузке
2 — Включать все при каждой перезагрузке
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
351 Звуковой сигнал при нажатии кнопок на матричной клавиатуре число 1 — Да
0 — Нет
352 Звуковой сигнал при нажатии кнопок на USB клавиатуре число 1 — Да
0 — Нет
353 Яркость дисплея число 0 .. 100
354 Контрастность дисплея число 0 .. 100
355 Режим ФР число 1 — Включен
0 — Выключен
358 Пользователь по умолчанию число 0 .. 32
359 Автовход пользователя по умолчанию число 1 — Включен
0 — Выключен
360 Записывать ШК из базы товаров в реквизит 1162 число 1 — Да
0 — Нет
361 Использовать банковский терминал число 0 — Нет
1 — Да
362 Использовать электронные весы число 0 — Нет
1 — Да
363 Разрешить ввод количества вручную при работе с весами число 0 — Нет
1 — Да
368 Ставка НДС по умолчанию число 0 — Не выбрана
1 — НДС 20%
2 — НДС 10%
3 — НДС расч. 20/120
4 — НДС 10/110
5 — НДС 0%
6 — Без НДС
369 Секция по умолчанию число 1 .. 5
370 Таймаут на выключение подсветки дисплея, сек. число 0 .. 65535
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
384 Печать чека с абонентским номером клиента число 0 — Печатать
1 — Не печатать
2 — Запрашивать печать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

АТОЛ 92Ф

Номер Описание Тип Возможные значения
0 Номер ККТ в магазине число 0 .. 255
2 Печатать названия секций число 0 — Не печатать
1 — Печатать
3 Печатать необнуляемую сумму приходов и расходов число 0 — Не печатать
1 — Печатать
4 Производить инкассацию число 0 — Нет
1 — Да
5 Расширенный X-отчет и Z-отчет число 0 — Нет
1 — Да
6 Печатать информацию о количестве чеков за смену по типам операций
число 0 — Не печатать
1 — Печатать
7 Автоматически печатать отчет по секциям перед X- и Z-отчетом число 0 —
Не печатать
1 — Печатать
8 Яркость печати ЧЛ число 1 .. 15
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
11 Пароль доступа строка Максимальная длина 4
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
13 Шрифт ЧЛ число 1 — 1
2 — 2
3 — 3
4 — 4
14 Количество печатаемых строк после чека на ЧЛ число 0 .. 20
15 Печатать разделители в суточных отчетах число 0 — Не печатать
1 — Печатать
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
17 Печатать необнуляемый итог на начало смены в Z-отчете число 0 — Не
печатать
1 — Печатать
18 Печатать необнуляемый итог на начало смены в X-отчете число 0 — Не
печатать
1 — Печатать
19 Печатать текст командой «Печать строки» число 0 — Не печатать
1 — Печатать
20 Режим перехода на летнее/зимнее время число 0 — Не переходить
1 — Переходить, не оповещать
2 — Переходить, оповещать кассира
3 — Переходить, оповещать кассира и хост
21 Дата перехода на летнее время число
22 Дата перехода на зимнее время число
23 Количество символов в строке число 24 .. 42
24 Символ для разделителя строка Максимальная длина 1
25 Проверять время число 0 .. 99
26 Смещение области печати слева число 0 .. 8
27 Печатать налоги в Х- и Z-отчете и при регистрации число 0 — Не печатать
1 — Печатать
28 Минимальная яркость термокомпенсации на ЧЛ число 1 .. 15
29 Печатать на ЧЛ документ готовности к работе число 0 — Не печатать
1 — Печатать
30 Печатать на ЧЛ клише в служебных сообщениях число 0 — Не печатать
1 — Печатать
31 Печатать на ЧЛ сообщение о вводе даты-времени число 0 — Не печатать
1 — Печатать
32 Протокол работы ККТ число 0 — АТОЛ 2
1 — АТОЛ 3
33 PIN-код для Bluetooth строка Максимальная длина 8
34 Уровень коррекции ошибок QR-кода число 1 .. 4
35 Количество строк заголовка клише число 0 — 0
1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
8 — 8
9 — 9
10 — 10
11 — 11
12 — 12
13 — 13
14 — 14
15 — 15
16 — 16
17 — 17
18 — 18
19 — 19
20 — 20
99 — Старый формат печати
36 Расстояние от ТПГ до отрезного ножа число 0 .. 255
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
38 Звуковой сигнал при окончании бумаги и открытии крышки число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
40 Сохранять печатаемый документ в память число 0 — Не сохранять
1 — Сохранять только отчеты
2 — Сохранять все
41 Печатать нулевые налоги число 0 — Не печатать
1 — Печатать
42 Печать необнуляемой суммы возвратов приходов число 0 — Не печатать
1 — Печатать
43 Печать необнуляемой суммы возвратов расходов число 0 — Не печатать
1 — Печатать
44 Печатать количество отмененных чеков по типам число 0 — Не печатать
1 — Печатать
45 Не печатать блоки «приходы», «возвраты приходов», «расходы»,
«возвраты расходов» число 0 — Не печатать
1 — Печатать
46 Печатать нулевые суммы число 0 — Не печатать
1 — Печатать
47 Печатать номер ККМ в магазине число 0 — Не печатать
1 — Печатать
48 Печатать реквизиты чека на аннулированных чеках число 0 — Не печатать
1 — Печатать
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения
51 Шаблон чека число 1 — Шаблон 1
2 — Шаблон 2
52 Признак способа расчета по умолчанию число 1 — Предоплата 100%
2 — Предоплата
3 — Аванс
4 — Полный расчет
5 — Частичный расчет и кредит
6 — Передача в кредит
7 — Оплата кредита
53 Округлять сумму налога число 0 — На весь чек
1 — После каждой позиции
55 Пересчитывать суммы налогов после скидки на итог число 0 — Нет
1 — Да
56 Учет наличности число 0 — Отключен
1 — Включен
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать полное наименование
2 — Печатать краткое наименование
59 Не печатать Z-отчет при закрытии смены число 0 — Печатать
1 — Не печатать
60 Печатать необнуляемые суммы по способам расчета прихода и возврата
прихода число 0 — Не печатать
1 — Печатать
61 Печатать необнуляемые суммы по способам расчета расхода и возврата
расхода число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
63 Признак предмета расчета по умолчанию число 1 — Товар
2 — Подакцизный товар
3 — Работа
4 — Услуга
5 — Ставка азартной игры
6 — Выигрыш азартной игры
7 — Лотерейный билет
8 — Выигрыш лотереи
9 — Предоставление РИД
10 — Платеж
11 — Агентское вознаграждение
12 — Выплата
13 — Иной предмет расчета
14 — Имущественное право
15 — Внереализационный доход
16 — Иные платежи и взносы
17 — Торговый сбор
18 — Курортный сбор
19 — Залог
20 — Расход
21 — Взносы на ОПС ИП
22 — Взносы на ОПС
23 — Взносы на ОМС ИП
24 — Взносы на ОМС
25 — Взносы на ОСС
26 — Платеж казино
27 — Выдача денежных средств
30 — Подакцизный товар, не имеющий КМ
31 — Подакцизный товар, имеющий КМ
32 — Товар, не имеющий КМ, за исключением подакцизного
33 — Товар, имеющий КМ, за исключением подакцизного
71 IP-адрес (Ethernet) строка Максимальная длина 15
72 Маска подсети (Ethernet) строка Максимальная длина 15
73 Шлюз по умолчанию (Ethernet) строка Максимальная длина 15
74 IP-порт (Ethernet) число 1 .. 65535
76 Выключение / перезагрузка ККТ число 0 — По кнопке
1 — Не используется
2 — По кнопке и по команде
79 Разрядность вводимых сумм число 1 .. 8
94 Пароль кассира 1 строка Максимальная длина 8
95 Пароль кассира 2 строка Максимальная длина 8
96 Пароль кассира 3 строка Максимальная длина 8
97 Пароль кассира 4 строка Максимальная длина 8
98 Пароль кассира 5 строка Максимальная длина 8
99 Пароль кассира 6 строка Максимальная длина 8
100 Пароль кассира 7 строка Максимальная длина 8
101 Пароль кассира 8 строка Максимальная длина 8
102 Пароль кассира 9 строка Максимальная длина 8
103 Пароль кассира 10 строка Максимальная длина 8
104 Пароль кассира 11 строка Максимальная длина 8
105 Пароль кассира 12 строка Максимальная длина 8
106 Пароль кассира 13 строка Максимальная длина 8
107 Пароль кассира 14 строка Максимальная длина 8
108 Пароль кассира 15 строка Максимальная длина 8
109 Пароль кассира 16 строка Максимальная длина 8
110 Пароль кассира 17 строка Максимальная длина 8
111 Пароль кассира 18 строка Максимальная длина 8
112 Пароль кассира 19 строка Максимальная длина 8
113 Пароль кассира 20 строка Максимальная длина 8
114 Пароль кассира 21 строка Максимальная длина 8
115 Пароль кассира 22 строка Максимальная длина 8
116 Пароль кассира 23 строка Максимальная длина 8
117 Пароль кассира 24 строка Максимальная длина 8
118 Пароль кассира 25 строка Максимальная длина 8
119 Пароль кассира 26 строка Максимальная длина 8
120 Пароль кассира 27 строка Максимальная длина 8
121 Пароль кассира 28 строка Максимальная длина 8
122 Имя кассира 1 строка Максимальная длина 32
123 Имя кассира 2 строка Максимальная длина 32
124 Имя кассира 3 строка Максимальная длина 32
125 Имя кассира 4 строка Максимальная длина 32
126 Имя кассира 5 строка Максимальная длина 32
127 Имя кассира 6 строка Максимальная длина 32
128 Имя кассира 7 строка Максимальная длина 32
129 Имя кассира 8 строка Максимальная длина 32
130 Имя кассира 9 строка Максимальная длина 32
131 Имя кассира 10 строка Максимальная длина 32
132 Имя кассира 11 строка Максимальная длина 32
133 Имя кассира 12 строка Максимальная длина 32
134 Имя кассира 13 строка Максимальная длина 32
135 Имя кассира 14 строка Максимальная длина 32
136 Имя кассира 15 строка Максимальная длина 32
137 Имя кассира 16 строка Максимальная длина 32
138 Имя кассира 17 строка Максимальная длина 32
139 Имя кассира 18 строка Максимальная длина 32
140 Имя кассира 19 строка Максимальная длина 32
141 Имя кассира 20 строка Максимальная длина 32
142 Имя кассира 21 строка Максимальная длина 32
143 Имя кассира 22 строка Максимальная длина 32
144 Имя кассира 23 строка Максимальная длина 32
145 Имя кассира 24 строка Максимальная длина 32
146 Имя кассира 25 строка Максимальная длина 32
147 Имя кассира 26 строка Максимальная длина 32
148 Имя кассира 27 строка Максимальная длина 32
149 Имя кассира 28 строка Максимальная длина 32
150 ИНН кассира 1 строка Максимальная длина 12
151 ИНН кассира 2 строка Максимальная длина 12
152 ИНН кассира 3 строка Максимальная длина 12
153 ИНН кассира 4 строка Максимальная длина 12
154 ИНН кассира 5 строка Максимальная длина 12
155 ИНН кассира 6 строка Максимальная длина 12
156 ИНН кассира 7 строка Максимальная длина 12
157 ИНН кассира 8 строка Максимальная длина 12
158 ИНН кассира 9 строка Максимальная длина 12
159 ИНН кассира 10 строка Максимальная длина 12
160 ИНН кассира 11 строка Максимальная длина 12
161 ИНН кассира 12 строка Максимальная длина 12
162 ИНН кассира 13 строка Максимальная длина 12
163 ИНН кассира 14 строка Максимальная длина 12
164 ИНН кассира 15 строка Максимальная длина 12
165 ИНН кассира 16 строка Максимальная длина 12
166 ИНН кассира 17 строка Максимальная длина 12
167 ИНН кассира 18 строка Максимальная длина 12
168 ИНН кассира 19 строка Максимальная длина 12
169 ИНН кассира 20 строка Максимальная длина 12
170 ИНН кассира 21 строка Максимальная длина 12
171 ИНН кассира 22 строка Максимальная длина 12
172 ИНН кассира 23 строка Максимальная длина 12
173 ИНН кассира 24 строка Максимальная длина 12
174 ИНН кассира 25 строка Максимальная длина 12
175 ИНН кассира 26 строка Максимальная длина 12
176 ИНН кассира 27 строка Максимальная длина 12
177 ИНН кассира 28 строка Максимальная длина 12
178 Пароль администратора строка Максимальная длина 8
179 Имя администратора строка Максимальная длина 32
180 ИНН администратора строка Максимальная длина 12
181 Пароль системного администратора строка Максимальная длина 8
182 Имя системного администратора строка Максимальная длина 32
183 ИНН системного администратора строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина 32
185 Строка клише 2 строка Максимальная длина 32
186 Строка клише 3 строка Максимальная длина 32
187 Строка клише 4 строка Максимальная длина 32
188 Строка клише 5 строка Максимальная длина 32
189 Строка клише 6 строка Максимальная длина 32
190 Строка клише 7 строка Максимальная длина 32
191 Строка клише 8 строка Максимальная длина 32
192 Строка клише 9 строка Максимальная длина 32
193 Строка клише 10 строка Максимальная длина 32
194 Строка клише 11 строка Максимальная длина 32
195 Строка клише 12 строка Максимальная длина 32
196 Строка клише 13 строка Максимальная длина 32
197 Строка клише 14 строка Максимальная длина 32
198 Строка клише 15 строка Максимальная длина 32
199 Строка клише 16 строка Максимальная длина 32
200 Строка клише 17 строка Максимальная длина 32
201 Строка клише 18 строка Максимальная длина 32
202 Строка клише 19 строка Максимальная длина 32
203 Строка клише 20 строка Максимальная длина 32
204 Наименование секции 1 строка Максимальная длина 32
205 Наименование секции 2 строка Максимальная длина 32
206 Наименование секции 3 строка Максимальная длина 32
207 Наименование секции 4 строка Максимальная длина 32
208 Наименование секции 5 строка Максимальная длина 32
209 Наименование секции 6 строка Максимальная длина 32
210 Наименование секции 7 строка Максимальная длина 32
211 Наименование секции 8 строка Максимальная длина 32
212 Наименование секции 9 строка Максимальная длина 32
213 Наименование секции 10 строка Максимальная длина 32
214 Наименование секции 11 строка Максимальная длина 32
215 Наименование секции 12 строка Максимальная длина 32
216 Наименование секции 13 строка Максимальная длина 32
217 Наименование секции 14 строка Максимальная длина 32
218 Наименование секции 15 строка Максимальная длина 32
219 Наименование секции 16 строка Максимальная длина 32
220 Номер налога 1 число 1 .. 6
221 Номер налога 2 число 1 .. 6
222 Номер налога 3 число 1 .. 6
223 Номер налога 4 число 1 .. 6
224 Номер налога 5 число 1 .. 6
225 Номер налога 6 число 1 .. 6
226 Номер налога 7 число 1 .. 6
227 Номер налога 8 число 1 .. 6
228 Номер налога 9 число 1 .. 6
229 Номер налога 10 число 1 .. 6
230 Номер налога 11 число 1 .. 6
231 Номер налога 12 число 1 .. 6
232 Номер налога 13 число 1 .. 6
233 Номер налога 14 число 1 .. 6
234 Номер налога 15 число 1 .. 6
235 Номер налога 16 число 1 .. 6
239 Канал обмена с ККТ число 4 — USB
5 — Bluetooth
6 — Ethernet
7 — Wi-Fi
240 Наименование способа расчета 2 строка Максимальная длина 42
241 Наименование способа расчета 3 строка Максимальная длина 42
242 Наименование способа расчета 4 строка Максимальная длина 42
243 Наименование способа расчета 5 строка Максимальная длина 42
244 Наименование способа расчета 6 строка Максимальная длина 42
245 Наименование способа расчета 7 строка Максимальная длина 42
246 Наименование способа расчета 8 строка Максимальная длина 42
247 Наименование способа расчета 9 строка Максимальная длина 42
248 Наименование способа расчета 10 строка Максимальная длина 42
249 Номер формы расчета 2 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
250 Номер формы расчета 3 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
251 Номер формы расчета 4 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
252 Номер формы расчета 5 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
265 Конфигурационная строка (GSM) строка Максимальная длина 32
266 Имя пользователя (GSM) строка Максимальная длина 32
267 Пароль (GSM) строка Максимальная длина 32
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 32
270 Пароль доступа к точке доступа строка Максимальная длина 32
271 Номер канала Wi-Fi в режиме точки доступа число 0 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
1 — WEP
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 1 .. 65535
275 DNS ОФД строка Максимальная длина 15
276 Канал обмена с ОФД число 1 — USB (EoU)
2 — Ethernet
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
277 Адрес сайта ФНС строка Максимальная длина 64
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
280 Интервал посылок диагностических сообщений, с. число 0 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 1 .. 5
282 Интервал опроса ФН при разрывах (в сек.) число 5 .. 120
301 Печатать на ЧЛ сообщение о полученном IP-адресе число 0 — Не печатать
1 — Печатать
302 Печатать остатка ФН в отчете число 0 — Не печатать
1 — Печатать
303 Время перехода в режим энергосбережения число 0 .. 99
304 Автоматический вход в режим «Оформления кассовых чеков» число 0 —
Запрещено
1 — Разрешено с оператором 1
2 — Разрешено с оператором 2
3 — Разрешено с оператором 3
4 — Разрешено с оператором 4
5 — Разрешено с оператором 5
6 — Разрешено с оператором 6
7 — Разрешено с оператором 7
8 — Разрешено с оператором 8
9 — Разрешено с оператором 9
10 — Разрешено с оператором 10
11 — Разрешено с оператором 11
12 — Разрешено с оператором 12
13 — Разрешено с оператором 13
14 — Разрешено с оператором 14
15 — Разрешено с оператором 15
16 — Разрешено с оператором 16
17 — Разрешено с оператором 17
18 — Разрешено с оператором 18
19 — Разрешено с оператором 19
20 — Разрешено с оператором 20
21 — Разрешено с оператором 21
22 — Разрешено с оператором 22
23 — Разрешено с оператором 23
24 — Разрешено с оператором 24
25 — Разрешено с оператором 25
26 — Разрешено с оператором 26
27 — Разрешено с оператором 27
28 — Разрешено с оператором 28
305 Частота обмена с ФН, кбит/с число 50 .. 400
306 Передавать необязательные реквизиты в ОФД число 0 — Не передавать
1 — Передавать
307 Ожидание инициализации ФН после включения, с. число 5 .. 255
308 Ожидание обработки команды в ФН, с. число 10 .. 255
309 Размер чека в байтах число 0 .. 4294967295
310 Печатать пароль доступа к точке Wi-Fi число 0 — Не печатать
1 — Печатать
311 Блокировать ККТ при переполнении ЭЖ число 0 — Не блокировать
1 — Блокировать работу по протоколу
2 — Блокировать работу с ЛК
312 Работа со скидками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
313 Работа с надбавками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
314 Вести журнал товаров число 0 — Не вести
1 — Вести
315 Очищать журнал товаров число 0 — При закрытии смены
1 — При открытии смены
316 Таймаут на выключение подсветки дисплея, мин. число 0 .. 60
317 Тип чека по умолчанию число 1 — Приход
2 — Расход
3 — Возврат прихода
4 — Возврат расхода
318 Запрашивать абонентский номер клиента число 0 — Не запрашивать
1 — Запрашивать
319 Способ расчета по умолчанию число 1 — Способ расчета 1
2 — Способ расчета 2
3 — Способ расчета 3
4 — Способ расчета 4
5 — Способ расчета 5
320 Единица измерения по умолчанию число 0 .. 16
321 Поставщик по умолчанию число 0 .. 16
323 Работать как ФР число 0 — Нет
1 — Да
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
330 Шрифт реквизитов в чеке число 1 .. 4
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
332 Печатать реквизит «Наименование ОФД» число 0 — Не печатать
1 — Печатать
333 Печатать реквизит «Адрес электронной почты отправителя» число 0 — Не
печатать
1 — Печатать
334 Работа с ЭЖ число 0 — Отключена
1 — Включена
345 Печатать реквизит «ИНН поставщика» число 0 — Не печатать
1 — Печатать
353 Яркость дисплея число 1 .. 10
354 Контрастность дисплея число 1 .. 10
368 Ставка НДС по умолчанию число 0 — Не выбрана
1 — НДС 20%
2 — НДС 10%
3 — НДС расч. 20/120
4 — НДС 10/110
5 — НДС 0%
6 — Без НДС
369 Секция по умолчанию число 0 .. 16

АТОЛ ПТ-5Ф

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения

Для работы данной настройки необходимо, чтобы настройка 292 Использовать
загружаемые шаблоны была отлична от 0
55 Пересчитывать суммы налогов после скидки на итог число 1 — Да
0 — Нет
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 5 — EthernetOverTransport
276 Канал обмена с ОФД число 5 — EthernetOverTransport
6 — TCP/IP стек ОС
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
299 Регистрировать секции число 0 — Нет
1 — Да
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

АТОЛ Sigma 10 (5.X)

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения

Для работы данной настройки необходимо, чтобы настройка 292 Использовать
загружаемые шаблоны была отлична от 0
55 Пересчитывать суммы налогов после скидки на итог число 1 — Да
0 — Нет
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
236 Скорость ККТ число 4800 — 4800 бод
9600 — 9600 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
230400 — 230400 бод
460800 — 460800 бод
921600 — 921600 бод
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 5 — EthernetOverTransport
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
299 Регистрировать секции число 0 — Нет
1 — Да
300 Включить отрезчик число 0 — Нет
1 — Да
322 Отрезать документы полностью число 0 — Нет
1 — Да
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

АТОЛ Sigma 10

Номер Описание Тип Возможные значения
0 Номер ККТ в магазине число 0 .. 255
2 Печатать названия секций число 0 — Не печатать
1 — Печатать
3 Печатать необнуляемую сумму приходов и расходов число 0 — Не печатать
1 — Печатать
4 Производить инкассацию число 0 — Нет
1 — Да
5 Расширенный X-отчет и Z-отчет число 0 — Нет
1 — Да
6 Печатать информацию о количестве чеков за смену по типам операций
число 0 — Не печатать
1 — Печатать
7 Автоматически печатать отчет по секциям перед X- и Z-отчетом число 0 —
Не печатать
1 — Печатать
8 Яркость печати ЧЛ число 1 .. 15
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
11 Пароль доступа строка Максимальная длина 4
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
13 Шрифт ЧЛ число 1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
14 Количество печатаемых строк после чека на ЧЛ число 0 .. 20
15 Печатать разделители в суточных отчетах число 0 — Не печатать
1 — Печатать
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
17 Печатать необнуляемый итог на начало смены в Z-отчете число 0 — Не
печатать
1 — Печатать
18 Печатать необнуляемый итог на начало смены в X-отчете число 0 — Не
печатать
1 — Печатать
19 Печатать текст командой «Печать строки» число 0 — Не печатать
1 — Печатать
20 Режим перехода на летнее/зимнее время число 0 — Не переходить
1 — Переходить, не оповещать
2 — Переходить, оповещать кассира
3 — Переходить, оповещать кассира и хост
21 Дата перехода на летнее время число
22 Дата перехода на зимнее время число
23 Количество символов в строке число 24 .. 64
24 Символ для разделителя строка Максимальная длина 1
25 Проверять время число 0 .. 99
26 Смещение области печати слева число 0 .. 24
27 Печатать налоги в Х- и Z-отчете и при регистрации число 0 — Не печатать
1 — Печатать
28 Минимальная яркость термокомпенсации на ЧЛ число 1 .. 15
29 Печатать на ЧЛ документ готовности к работе число 0 — Не печатать
1 — Печатать
30 Печатать на ЧЛ клише в служебных сообщениях число 0 — Не печатать
1 — Печатать
31 Печатать на ЧЛ сообщение о вводе даты-времени число 0 — Не печатать
1 — Печатать
32 Протокол работы ККТ число 0 — АТОЛ 2
1 — АТОЛ 3
34 Уровень коррекции ошибок QR-кода число 1 .. 4
35 Количество строк заголовка клише число 0 — 0
1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
8 — 8
9 — 9
10 — 10
11 — 11
12 — 12
13 — 13
14 — 14
15 — 15
16 — 16
17 — 17
18 — 18
19 — 19
20 — 20
99 — Старый формат печати
36 Расстояние от ТПГ до отрезного ножа число 0 .. 255
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
38 Звуковой сигнал при окончании бумаги и открытии крышки число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
40 Сохранять печатаемый документ в память число 0 — Не сохранять
1 — Сохранять только отчеты
2 — Сохранять все
41 Печатать нулевые налоги число 0 — Не печатать
1 — Печатать
42 Печать необнуляемой суммы возвратов приходов число 0 — Не печатать
1 — Печатать
43 Печать необнуляемой суммы возвратов расходов число 0 — Не печатать
1 — Печатать
44 Печатать количество отмененных чеков по типам число 0 — Не печатать
1 — Печатать
45 Не печатать блоки «приходы», «возвраты приходов», «расходы»,
«возвраты расходов» число 0 — Не печатать
1 — Печатать
46 Печатать нулевые суммы число 0 — Не печатать
1 — Печатать
47 Печатать номер ККМ в магазине число 0 — Не печатать
1 — Печатать
48 Печатать реквизиты чека на аннулированных чеках число 0 — Не печатать
1 — Печатать
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения
51 Шаблон чека число 1 — Шаблон 1
2 — Шаблон 2
52 Признак способа расчета по умолчанию число 1 — Предоплата 100%
2 — Предоплата
3 — Аванс
4 — Полный расчет
5 — Частичный расчет и кредит
6 — Передача в кредит
7 — Оплата кредита
53 Округлять сумму налога число 0 — На весь чек
1 — После каждой позиции
55 Пересчитывать суммы налогов после скидки на итог число 0 — Нет
1 — Да
56 Учет наличности число 0 — Отключен
1 — Включен
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать полное наименование
2 — Печатать краткое наименование
59 Не печатать Z-отчет при закрытии смены число 0 — Печатать
1 — Не печатать
60 Печатать необнуляемые суммы по способам расчета прихода и возврата
прихода число 0 — Не печатать
1 — Печатать
61 Печатать необнуляемые суммы по способам расчета расхода и возврата
расхода число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
63 Признак предмета расчета по умолчанию число 1 — Товар
2 — Подакцизный товар
3 — Работа
4 — Услуга
5 — Ставка азартной игры
6 — Выигрыш азартной игры
7 — Лотерейный билет
8 — Выигрыш лотереи
9 — Предоставление РИД
10 — Платеж
11 — Агентское вознаграждение
12 — Выплата
13 — Иной предмет расчета
14 — Имущественное право
15 — Внереализационный доход
16 — Иные платежи и взносы
17 — Торговый сбор
18 — Курортный сбор
19 — Залог
20 — Расход
21 — Взносы на ОПС ИП
22 — Взносы на ОПС
23 — Взносы на ОМС ИП
24 — Взносы на ОМС
25 — Взносы на ОСС
26 — Платеж казино
27 — Выдача денежных средств
30 — Подакцизный товар, не имеющий КМ
31 — Подакцизный товар, имеющий КМ
32 — Товар, не имеющий КМ, за исключением подакцизного
33 — Товар, имеющий КМ, за исключением подакцизного
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
66 Отрезать чек после завершения документа число 0 — Не отрезать
1 — Не полностью
2 — Полностью
67 Запретить отрезку чеков число 0 — Нет
1 — Да
68 Запретить отрезку отчетов число 0 — Нет
1 — Да
69 Отрезать ЧЛ после печати клише командой «Печать клише» число 0 — Нет
1 — Да
75 Расстояние от ножа отрезчика до гребенки число 0 .. 255
94 Пароль кассира 1 строка Максимальная длина 8
95 Пароль кассира 2 строка Максимальная длина 8
96 Пароль кассира 3 строка Максимальная длина 8
97 Пароль кассира 4 строка Максимальная длина 8
98 Пароль кассира 5 строка Максимальная длина 8
99 Пароль кассира 6 строка Максимальная длина 8
100 Пароль кассира 7 строка Максимальная длина 8
101 Пароль кассира 8 строка Максимальная длина 8
102 Пароль кассира 9 строка Максимальная длина 8
103 Пароль кассира 10 строка Максимальная длина 8
104 Пароль кассира 11 строка Максимальная длина 8
105 Пароль кассира 12 строка Максимальная длина 8
106 Пароль кассира 13 строка Максимальная длина 8
107 Пароль кассира 14 строка Максимальная длина 8
108 Пароль кассира 15 строка Максимальная длина 8
109 Пароль кассира 16 строка Максимальная длина 8
110 Пароль кассира 17 строка Максимальная длина 8
111 Пароль кассира 18 строка Максимальная длина 8
112 Пароль кассира 19 строка Максимальная длина 8
113 Пароль кассира 20 строка Максимальная длина 8
114 Пароль кассира 21 строка Максимальная длина 8
115 Пароль кассира 22 строка Максимальная длина 8
116 Пароль кассира 23 строка Максимальная длина 8
117 Пароль кассира 24 строка Максимальная длина 8
118 Пароль кассира 25 строка Максимальная длина 8
119 Пароль кассира 26 строка Максимальная длина 8
120 Пароль кассира 27 строка Максимальная длина 8
121 Пароль кассира 28 строка Максимальная длина 8
122 Имя кассира 1 строка Максимальная длина 48
123 Имя кассира 2 строка Максимальная длина 48
124 Имя кассира 3 строка Максимальная длина 48
125 Имя кассира 4 строка Максимальная длина 48
126 Имя кассира 5 строка Максимальная длина 48
127 Имя кассира 6 строка Максимальная длина 48
128 Имя кассира 7 строка Максимальная длина 48
129 Имя кассира 8 строка Максимальная длина 48
130 Имя кассира 9 строка Максимальная длина 48
131 Имя кассира 10 строка Максимальная длина 48
132 Имя кассира 11 строка Максимальная длина 48
133 Имя кассира 12 строка Максимальная длина 48
134 Имя кассира 13 строка Максимальная длина 48
135 Имя кассира 14 строка Максимальная длина 48
136 Имя кассира 15 строка Максимальная длина 48
137 Имя кассира 16 строка Максимальная длина 48
138 Имя кассира 17 строка Максимальная длина 48
139 Имя кассира 18 строка Максимальная длина 48
140 Имя кассира 19 строка Максимальная длина 48
141 Имя кассира 20 строка Максимальная длина 48
142 Имя кассира 21 строка Максимальная длина 48
143 Имя кассира 22 строка Максимальная длина 48
144 Имя кассира 23 строка Максимальная длина 48
145 Имя кассира 24 строка Максимальная длина 48
146 Имя кассира 25 строка Максимальная длина 48
147 Имя кассира 26 строка Максимальная длина 48
148 Имя кассира 27 строка Максимальная длина 48
149 Имя кассира 28 строка Максимальная длина 48
150 ИНН кассира 1 строка Максимальная длина 12
151 ИНН кассира 2 строка Максимальная длина 12
152 ИНН кассира 3 строка Максимальная длина 12
153 ИНН кассира 4 строка Максимальная длина 12
154 ИНН кассира 5 строка Максимальная длина 12
155 ИНН кассира 6 строка Максимальная длина 12
156 ИНН кассира 7 строка Максимальная длина 12
157 ИНН кассира 8 строка Максимальная длина 12
158 ИНН кассира 9 строка Максимальная длина 12
159 ИНН кассира 10 строка Максимальная длина 12
160 ИНН кассира 11 строка Максимальная длина 12
161 ИНН кассира 12 строка Максимальная длина 12
162 ИНН кассира 13 строка Максимальная длина 12
163 ИНН кассира 14 строка Максимальная длина 12
164 ИНН кассира 15 строка Максимальная длина 12
165 ИНН кассира 16 строка Максимальная длина 12
166 ИНН кассира 17 строка Максимальная длина 12
167 ИНН кассира 18 строка Максимальная длина 12
168 ИНН кассира 19 строка Максимальная длина 12
169 ИНН кассира 20 строка Максимальная длина 12
170 ИНН кассира 21 строка Максимальная длина 12
171 ИНН кассира 22 строка Максимальная длина 12
172 ИНН кассира 23 строка Максимальная длина 12
173 ИНН кассира 24 строка Максимальная длина 12
174 ИНН кассира 25 строка Максимальная длина 12
175 ИНН кассира 26 строка Максимальная длина 12
176 ИНН кассира 27 строка Максимальная длина 12
177 ИНН кассира 28 строка Максимальная длина 12
178 Пароль администратора строка Максимальная длина 8
179 Имя администратора строка Максимальная длина 48
180 ИНН администратора строка Максимальная длина 12
181 Пароль системного администратора строка Максимальная длина 8
182 Имя системного администратора строка Максимальная длина 48
183 ИНН системного администратора строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина 48
185 Строка клише 2 строка Максимальная длина 48
186 Строка клише 3 строка Максимальная длина 48
187 Строка клише 4 строка Максимальная длина 48
188 Строка клише 5 строка Максимальная длина 48
189 Строка клише 6 строка Максимальная длина 48
190 Строка клише 7 строка Максимальная длина 48
191 Строка клише 8 строка Максимальная длина 48
192 Строка клише 9 строка Максимальная длина 48
193 Строка клише 10 строка Максимальная длина 48
194 Строка клише 11 строка Максимальная длина 48
195 Строка клише 12 строка Максимальная длина 48
196 Строка клише 13 строка Максимальная длина 48
197 Строка клише 14 строка Максимальная длина 48
198 Строка клише 15 строка Максимальная длина 48
199 Строка клише 16 строка Максимальная длина 48
200 Строка клише 17 строка Максимальная длина 48
201 Строка клише 18 строка Максимальная длина 48
202 Строка клише 19 строка Максимальная длина 48
203 Строка клише 20 строка Максимальная длина 48
204 Наименование секции 1 строка Максимальная длина 48
205 Наименование секции 2 строка Максимальная длина 48
206 Наименование секции 3 строка Максимальная длина 48
207 Наименование секции 4 строка Максимальная длина 48
208 Наименование секции 5 строка Максимальная длина 48
209 Наименование секции 6 строка Максимальная длина 48
210 Наименование секции 7 строка Максимальная длина 48
211 Наименование секции 8 строка Максимальная длина 48
212 Наименование секции 9 строка Максимальная длина 48
213 Наименование секции 10 строка Максимальная длина 48
214 Наименование секции 11 строка Максимальная длина 48
215 Наименование секции 12 строка Максимальная длина 48
216 Наименование секции 13 строка Максимальная длина 48
217 Наименование секции 14 строка Максимальная длина 48
218 Наименование секции 15 строка Максимальная длина 48
219 Наименование секции 16 строка Максимальная длина 48
220 Номер налога 1 число 1 .. 6
221 Номер налога 2 число 1 .. 6
222 Номер налога 3 число 1 .. 6
223 Номер налога 4 число 1 .. 6
224 Номер налога 5 число 1 .. 6
225 Номер налога 6 число 1 .. 6
226 Номер налога 7 число 1 .. 6
227 Номер налога 8 число 1 .. 6
228 Номер налога 9 число 1 .. 6
229 Номер налога 10 число 1 .. 6
230 Номер налога 11 число 1 .. 6
231 Номер налога 12 число 1 .. 6
232 Номер налога 13 число 1 .. 6
233 Номер налога 14 число 1 .. 6
234 Номер налога 15 число 1 .. 6
235 Номер налога 16 число 1 .. 6
236 Скорость ККТ число 1200 — 1200 бод
2400 — 2400 бод
4800 — 4800 бод
9600 — 9600 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
230400 — 230400 бод
460800 — 460800 бод
921600 — 921600 бод
240 Наименование способа расчета 2 строка Максимальная длина 48
241 Наименование способа расчета 3 строка Максимальная длина 48
242 Наименование способа расчета 4 строка Максимальная длина 48
243 Наименование способа расчета 5 строка Максимальная длина 48
244 Наименование способа расчета 6 строка Максимальная длина 48
245 Наименование способа расчета 7 строка Максимальная длина 48
246 Наименование способа расчета 8 строка Максимальная длина 48
247 Наименование способа расчета 9 строка Максимальная длина 48
248 Наименование способа расчета 10 строка Максимальная длина 48
249 Номер формы расчета 2 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
250 Номер формы расчета 3 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
251 Номер формы расчета 4 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
252 Номер формы расчета 5 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 1 .. 65535
275 DNS ОФД строка Максимальная длина 15
276 Канал обмена с ОФД число 5 — EthernetOverTransport
277 Адрес сайта ФНС строка Максимальная длина 64
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
280 Интервал посылок диагностических сообщений, с. число 0 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 1 .. 5
282 Интервал опроса ФН при разрывах (в сек.) число 5 .. 120
305 Частота обмена с ФН, кбит/с число 50 .. 400
306 Передавать необязательные реквизиты в ОФД число 0 — Не передавать
1 — Передавать
307 Ожидание инициализации ФН после включения, с. число 5 .. 255
308 Ожидание обработки команды в ФН, с. число 10 .. 255
309 Размер чека в байтах число 0 .. 4294967295
310 Печатать пароль доступа к точке Wi-Fi число 0 — Не печатать
1 — Печатать
311 Блокировать ККТ при переполнении ЭЖ число 0 — Не блокировать
1 — Блокировать работу по протоколу
2 — Блокировать работу с ЛК
312 Работа со скидками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
313 Работа с надбавками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
330 Шрифт реквизитов в чеке число 1 .. 7
332 Печатать реквизит «Наименование ОФД» число 0 — Не печатать
1 — Печатать
333 Печатать реквизит «Адрес электронной почты отправителя» число 0 — Не
печатать
1 — Печатать
334 Работа с ЭЖ число 0 — Отключена
1 — Включена
345 Печатать реквизит «ИНН поставщика» число 0 — Не печатать
1 — Печатать

АТОЛ Sigma 7Ф

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения

Для работы данной настройки необходимо, чтобы настройка 292 Использовать
загружаемые шаблоны была отлична от 0
55 Пересчитывать суммы налогов после скидки на итог число 1 — Да
0 — Нет
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
236 Скорость ККТ число 4800 — 4800 бод
9600 — 9600 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
230400 — 230400 бод
460800 — 460800 бод
921600 — 921600 бод
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 5 — EthernetOverTransport
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
299 Регистрировать секции число 0 — Нет
1 — Да
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

АТОЛ Sigma 8Ф

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
9 Открывать ДЯ при закрытии чека число 0 — Нет
1 — Да
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения

Для работы данной настройки необходимо, чтобы настройка 292 Использовать
загружаемые шаблоны была отлична от 0
55 Пересчитывать суммы налогов после скидки на итог число 1 — Да
0 — Нет
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
65 Не открывать ДЯ при отсутствии наличного способа расчета в чеке
число 0 — Открывать
1 — Не открывать
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
236 Скорость ККТ число 4800 — 4800 бод
9600 — 9600 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
230400 — 230400 бод
460800 — 460800 бод
921600 — 921600 бод
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 5 — EthernetOverTransport
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
299 Регистрировать секции число 0 — Нет
1 — Да
300 Включить отрезчик число 0 — Нет
1 — Да
322 Отрезать документы полностью число 0 — Нет
1 — Да
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

Казначей ФА (5.X)

Номер Описание Тип Возможные значения
4 Производить инкассацию число 0 — По умолчанию
1 — Да
8 Яркость печати ЧЛ число 0 .. 100
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
39 Звуковой сигнал при включении число 0 — Нет
1 — Да
46 Печатать нулевые суммы число 0 — Не печатать
1 — По умолчанию
49 Получать IP-адреса от DHCP (Ethernet) число 0 — Нет
1 — Да
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения

Для работы данной настройки необходимо, чтобы настройка 292 Использовать
загружаемые шаблоны была отлична от 0
55 Пересчитывать суммы налогов после скидки на итог число 1 — Да
0 — Нет
56 Учет наличности число 0 — Отключен
1 — По умолчанию
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
71 IP-адрес (Ethernet) строка Максимальная длина 15
72 Маска подсети (Ethernet) строка Максимальная длина 15
73 Шлюз по умолчанию (Ethernet) строка Максимальная длина 15
74 IP-порт (Ethernet) число 1 .. 65535
182 Имя кассира по умолчанию строка Максимальная длина 64
183 ИНН кассира по умолчанию строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина, общая для всех символов во
всех строках клише, включая спецсимволы 250
185 Строка клише 2 строка
186 Строка клише 3 строка
187 Строка клише 4 строка
188 Строка клише 5 строка
189 Строка клише 6 строка
190 Строка клише 7 строка
191 Строка клише 8 строка
192 Строка клише 9 строка
193 Строка клише 10 строка
236 Скорость ККТ число 4800 — 4800 бод
9600 — 9600 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
230400 — 230400 бод
460800 — 460800 бод
921600 — 921600 бод
244 Наименование способа расчета 6 строка Максимальная длина 15
245 Наименование способа расчета 7 строка Максимальная длина 15
246 Наименование способа расчета 8 строка Максимальная длина 15
247 Наименование способа расчета 9 строка Максимальная длина 15
248 Наименование способа расчета 10 строка Максимальная длина 15
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 64
270 Пароль доступа к точке доступа строка Максимальная длина 64
271 Номер канала Wi-Fi в режиме точки доступа число 1 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 0 .. 65535
276 Канал обмена с ОФД число 1 — USB (EoU)
2 — Ethernet
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 0 .. 5
283 Статичный DNS число 0 — Выключен
1 — Включен
284 Адрес DNS строка Максимальная длина 15
285 Ширина бумаги число 0 — По умолчанию
1 — 80мм
2 — 57мм
286 Приоритет качества печати перед скоростью число 0 — Нет
1 — Да
292 Использовать загружаемые шаблоны число 0 — Нет
1 — Да (блокировать работу без них)
2 — Да (не блокировать работу без них)
293 Скорость обмена с ФН число 0 .. 7
295 Ожидание получения сетевых настроек по Ethernet, с. (0 —
деактивация, 255 — ожидание без ограничений) число 0 .. 255
296 Ожидание подключения по Wi-Fi, с. (0 — деактивация, 255 — ожидание
без ограничений) число 0 .. 255
297 Ожидание подключения по GSM, с. (0 — деактивация, 255 — ожидание без
ограничений) число 0 .. 255
298 Ожидание подключения по Bluetooth, с. (0 — деактивация, 255 —
ожидание без ограничений) число 0 .. 255
299 Регистрировать секции число 0 — Нет
1 — Да
300 Включить отрезчик число 0 — Нет
1 — Да
322 Отрезать документы полностью число 0 — Нет
1 — Да
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
329 IP-порт (Wi-Fi) число 1 .. 65535
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
336 Выдвигать чек число 0 — Нет
10 — На 10 мм
20 — На 20 мм
30 — На 40 мм
337 Действия с чеком после отрезки число 0 — Проглотить
1 — Выдвинуть на заданное расстояние
2 — Выбросить из принтера
338 Действия с предыдущим чеком, если его не забрали число 0 — Проглотить
1 — Выбросить
339 Чек делает петлю число 0 — Нет
1 — Да
343 Модель подключенного принтера число 0 — Принтер не выбран
1 — CUSTOM VKP-80II
2 — CUSTOM VKP-80II SX
347 Шрифт для чеков число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
348 Шрифт для X- и Z-отчетов и отчетов по секциям число 255 — По умолчанию
0 — 0
1 — 1
2 — 2
3 — 3
349 Режим включения интерфейсов число 0 — Следовать настройкам
1 — Включить все при следующей перезагрузке
2 — Включать все при каждой перезагрузке
350 Останавливать отправку документов в ОФД при открытом документе
число 1 — Да
0 — Нет
372 Передавать реквизит Сумма НДС за товар число 0 — Не передавать
1 — Передавать
373 Флаги разрешённых хостовых каналов число 0 .. 15
374 Автозакрытие смены по времени число 0 — Отключено
1 — Включено
375 Автозакрытие смены по истечении 24 часов число 0 — Отключено
1 — Включено
376 Печать отчета при автозакрытии смены число 0 — Отключено
1 — Включено
377 Время автозакрытия смены строка Максимальная длина 4
378 Печатать пользовательское название секции в чеке число 0 — Не печатать
1 — Печатать
379 Печать НДС не облагается число 0 — Печатать
1 — Не печатать
383 Печать чека диагностики при отсутствии ошибок число 0 — Не печатать
1 — Печатать
385 Передавать реквизит Наименование пользователя число 0 — Не передавать
1 — Передавать
386 Компенсация промотки число 0 .. 24
387 Блокировка потоков при чтении документа из ФН число 0 — Не блокировать
1 — Блокировать
1000 Адрес ИСМ строка Максимальная длина 64
1001 Порт ИСМ число 0 .. 65535
1002 Адрес ОКП строка Максимальная длина 64
1003 Порт ОКП число 0 .. 65535
1004 Количество повторов при проверке КМ число 0 .. 10
1005 Время открытия соединения при проверке КМ число 0 .. 60
1006 Время ожидания ответа при проверке КМ число 0 .. 180
1007 Время задержки перед повтором при проверке КМ число 0 .. 30
1008 Время открытого соединения при проверке КМ число 0 .. 300
1009 Наименование секций пользователя 1 строка Максимальная длина 15
1010 Наименование секций пользователя 2 строка Максимальная длина 15
1011 Наименование секций пользователя 3 строка Максимальная длина 15
1012 Наименование секций пользователя 4 строка Максимальная длина 15
1013 Наименование секций пользователя 5 строка Максимальная длина 15

Казначей ФА

Номер Описание Тип Возможные значения
0 Номер ККТ в магазине число 0 .. 255
2 Печатать названия секций число 0 — Не печатать
1 — Печатать
3 Печатать необнуляемую сумму приходов и расходов число 0 — Не печатать
1 — Печатать
4 Производить инкассацию число 0 — Нет
1 — Да
5 Расширенный X-отчет и Z-отчет число 0 — Нет
1 — Да
6 Печатать информацию о количестве чеков за смену по типам операций
число 0 — Не печатать
1 — Печатать
7 Автоматически печатать отчет по секциям перед X- и Z-отчетом число 0 —
Не печатать
1 — Печатать
8 Яркость печати ЧЛ число 1 .. 15
11 Пароль доступа строка Максимальная длина 4
12 Межстрочный интервал ЧЛ (в пикселях) число 0 .. 15
13 Шрифт ЧЛ число 1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
14 Количество печатаемых строк после чека на ЧЛ число 0 .. 20
15 Печатать разделители в суточных отчетах число 0 — Не печатать
1 — Печатать
16 Печатать номер секции число 0 — Не печатать
1 — Печатать
17 Печатать необнуляемый итог на начало смены в Z-отчете число 0 — Не
печатать
1 — Печатать
18 Печатать необнуляемый итог на начало смены в X-отчете число 0 — Не
печатать
1 — Печатать
19 Печатать текст командой «Печать строки» число 0 — Не печатать
1 — Печатать
20 Режим перехода на летнее/зимнее время число 0 — Не переходить
1 — Переходить, не оповещать
2 — Переходить, оповещать кассира
3 — Переходить, оповещать кассира и хост
21 Дата перехода на летнее время число
22 Дата перехода на зимнее время число
23 Количество символов в строке число 24 .. 57
24 Символ для разделителя строка Максимальная длина 1
25 Проверять время число 0 .. 99
26 Смещение области печати слева число 0 .. 24
27 Печатать налоги в Х- и Z-отчете и при регистрации число 0 — Не печатать
1 — Печатать
28 Минимальная яркость термокомпенсации на ЧЛ число 1 .. 15
29 Печатать на ЧЛ документ готовности к работе число 0 — Не печатать
1 — Печатать
30 Печатать на ЧЛ клише в служебных сообщениях число 0 — Не печатать
1 — Печатать
31 Печатать на ЧЛ сообщение о вводе даты-времени число 0 — Не печатать
1 — Печатать
32 Протокол работы ККТ число 0 — АТОЛ 2
1 — АТОЛ 3
33 PIN-код для Bluetooth строка Максимальная длина 8
34 Уровень коррекции ошибок QR-кода число 1 .. 4
35 Количество строк заголовка клише число 0 — 0
1 — 1
2 — 2
3 — 3
4 — 4
5 — 5
6 — 6
7 — 7
8 — 8
9 — 9
10 — 10
11 — 11
12 — 12
13 — 13
14 — 14
15 — 15
16 — 16
17 — 17
18 — 18
19 — 19
20 — 20
99 — Старый формат печати
36 Расстояние от ТПГ до отрезного ножа число 0 .. 255
37 Звуковой сигнал при ошибке число 0 — Нет
1 — Да
40 Сохранять печатаемый документ в память число 0 — Не сохранять
1 — Сохранять только отчеты
2 — Сохранять все
41 Печатать нулевые налоги число 0 — Не печатать
1 — Печатать
42 Печать необнуляемой суммы возвратов приходов число 0 — Не печатать
1 — Печатать
43 Печать необнуляемой суммы возвратов расходов число 0 — Не печатать
1 — Печатать
44 Печатать количество отмененных чеков по типам число 0 — Не печатать
1 — Печатать
45 Не печатать блоки «приходы», «возвраты приходов», «расходы»,
«возвраты расходов» число 0 — Не печатать
1 — Печатать
46 Печатать нулевые суммы число 0 — Не печатать
1 — Печатать
47 Печатать номер ККМ в магазине число 0 — Не печатать
1 — Печатать
48 Печатать реквизиты чека на аннулированных чеках число 0 — Не печатать
1 — Печатать
49 Получать IP-адреса от DHCP (Ethernet) число 0 — Нет
1 — Да
50 Система налогообложения по умолчанию число 0 — Не выбрана
1 — Традиционная СНО
2 — Упрощенная СНО (Доход)
4 — Упрощенная СНО (Доход минус Расход)
16 — Единый сельскохозяйственный налог
32 — Патентная система налогообложения
51 Шаблон чека число 1 — Шаблон 1
2 — Шаблон 2
52 Признак способа расчета по умолчанию число 1 — Предоплата 100%
2 — Предоплата
3 — Аванс
4 — Полный расчет
5 — Частичный расчет и кредит
6 — Передача в кредит
7 — Оплата кредита
53 Округлять сумму налога число 0 — На весь чек
1 — После каждой позиции
55 Пересчитывать суммы налогов после скидки на итог число 0 — Нет
1 — Да
56 Учет наличности число 0 — Отключен
1 — Включен
57 Печатать признак способа расчета число 0 — Не печатать
1 — Печатать
58 Печатать признак предмета расчета число 0 — Не печатать
1 — Печатать полное наименование
2 — Печатать краткое наименование
59 Не печатать Z-отчет при закрытии смены число 0 — Печатать
1 — Не печатать
60 Печатать необнуляемые суммы по способам расчета прихода и возврата
прихода число 0 — Не печатать
1 — Печатать
61 Печатать необнуляемые суммы по способам расчета расхода и возврата
расхода число 0 — Не печатать
1 — Печатать
62 Не печатать клише автоматически при закрытии чека число 0 — Печатать
1 — Не печатать
63 Признак предмета расчета по умолчанию число 1 — Товар
2 — Подакцизный товар
3 — Работа
4 — Услуга
5 — Ставка азартной игры
6 — Выигрыш азартной игры
7 — Лотерейный билет
8 — Выигрыш лотереи
9 — Предоставление РИД
10 — Платеж
11 — Агентское вознаграждение
12 — Выплата
13 — Иной предмет расчета
14 — Имущественное право
15 — Внереализационный доход
16 — Иные платежи и взносы
17 — Торговый сбор
18 — Курортный сбор
19 — Залог
20 — Расход
21 — Взносы на ОПС ИП
22 — Взносы на ОПС
23 — Взносы на ОМС ИП
24 — Взносы на ОМС
25 — Взносы на ОСС
26 — Платеж казино
27 — Выдача денежных средств
30 — Подакцизный товар, не имеющий КМ
31 — Подакцизный товар, имеющий КМ
32 — Товар, не имеющий КМ, за исключением подакцизного
33 — Товар, имеющий КМ, за исключением подакцизного
66 Отрезать чек после завершения документа число 0 — Не отрезать
1 — Не полностью
2 — Полностью
67 Запретить отрезку чеков число 0 — Нет
1 — Да
68 Запретить отрезку отчетов число 0 — Нет
1 — Да
69 Отрезать ЧЛ после печати клише командой «Печать клише» число 0 — Нет
1 — Да
71 IP-адрес (Ethernet) строка Максимальная длина 15
72 Маска подсети (Ethernet) строка Максимальная длина 15
73 Шлюз по умолчанию (Ethernet) строка Максимальная длина 15
74 IP-порт (Ethernet) число 1 .. 65535
75 Расстояние от ножа отрезчика до гребенки число 0 .. 255
76 Выключение / перезагрузка ККТ число 0 — Отключением кабеля USB
1 — По команде
94 Пароль кассира 1 строка Максимальная длина 8
95 Пароль кассира 2 строка Максимальная длина 8
96 Пароль кассира 3 строка Максимальная длина 8
97 Пароль кассира 4 строка Максимальная длина 8
98 Пароль кассира 5 строка Максимальная длина 8
99 Пароль кассира 6 строка Максимальная длина 8
100 Пароль кассира 7 строка Максимальная длина 8
101 Пароль кассира 8 строка Максимальная длина 8
102 Пароль кассира 9 строка Максимальная длина 8
103 Пароль кассира 10 строка Максимальная длина 8
104 Пароль кассира 11 строка Максимальная длина 8
105 Пароль кассира 12 строка Максимальная длина 8
106 Пароль кассира 13 строка Максимальная длина 8
107 Пароль кассира 14 строка Максимальная длина 8
108 Пароль кассира 15 строка Максимальная длина 8
109 Пароль кассира 16 строка Максимальная длина 8
110 Пароль кассира 17 строка Максимальная длина 8
111 Пароль кассира 18 строка Максимальная длина 8
112 Пароль кассира 19 строка Максимальная длина 8
113 Пароль кассира 20 строка Максимальная длина 8
114 Пароль кассира 21 строка Максимальная длина 8
115 Пароль кассира 22 строка Максимальная длина 8
116 Пароль кассира 23 строка Максимальная длина 8
117 Пароль кассира 24 строка Максимальная длина 8
118 Пароль кассира 25 строка Максимальная длина 8
119 Пароль кассира 26 строка Максимальная длина 8
120 Пароль кассира 27 строка Максимальная длина 8
121 Пароль кассира 28 строка Максимальная длина 8
122 Имя кассира 1 строка Максимальная длина 57
123 Имя кассира 2 строка Максимальная длина 57
124 Имя кассира 3 строка Максимальная длина 57
125 Имя кассира 4 строка Максимальная длина 57
126 Имя кассира 5 строка Максимальная длина 57
127 Имя кассира 6 строка Максимальная длина 57
128 Имя кассира 7 строка Максимальная длина 57
129 Имя кассира 8 строка Максимальная длина 57
130 Имя кассира 9 строка Максимальная длина 57
131 Имя кассира 10 строка Максимальная длина 57
132 Имя кассира 11 строка Максимальная длина 57
133 Имя кассира 12 строка Максимальная длина 57
134 Имя кассира 13 строка Максимальная длина 57
135 Имя кассира 14 строка Максимальная длина 57
136 Имя кассира 15 строка Максимальная длина 57
137 Имя кассира 16 строка Максимальная длина 57
138 Имя кассира 17 строка Максимальная длина 57
139 Имя кассира 18 строка Максимальная длина 57
140 Имя кассира 19 строка Максимальная длина 57
141 Имя кассира 20 строка Максимальная длина 57
142 Имя кассира 21 строка Максимальная длина 57
143 Имя кассира 22 строка Максимальная длина 57
144 Имя кассира 23 строка Максимальная длина 57
145 Имя кассира 24 строка Максимальная длина 57
146 Имя кассира 25 строка Максимальная длина 57
147 Имя кассира 26 строка Максимальная длина 57
148 Имя кассира 27 строка Максимальная длина 57
149 Имя кассира 28 строка Максимальная длина 57
150 ИНН кассира 1 строка Максимальная длина 12
151 ИНН кассира 2 строка Максимальная длина 12
152 ИНН кассира 3 строка Максимальная длина 12
153 ИНН кассира 4 строка Максимальная длина 12
154 ИНН кассира 5 строка Максимальная длина 12
155 ИНН кассира 6 строка Максимальная длина 12
156 ИНН кассира 7 строка Максимальная длина 12
157 ИНН кассира 8 строка Максимальная длина 12
158 ИНН кассира 9 строка Максимальная длина 12
159 ИНН кассира 10 строка Максимальная длина 12
160 ИНН кассира 11 строка Максимальная длина 12
161 ИНН кассира 12 строка Максимальная длина 12
162 ИНН кассира 13 строка Максимальная длина 12
163 ИНН кассира 14 строка Максимальная длина 12
164 ИНН кассира 15 строка Максимальная длина 12
165 ИНН кассира 16 строка Максимальная длина 12
166 ИНН кассира 17 строка Максимальная длина 12
167 ИНН кассира 18 строка Максимальная длина 12
168 ИНН кассира 19 строка Максимальная длина 12
169 ИНН кассира 20 строка Максимальная длина 12
170 ИНН кассира 21 строка Максимальная длина 12
171 ИНН кассира 22 строка Максимальная длина 12
172 ИНН кассира 23 строка Максимальная длина 12
173 ИНН кассира 24 строка Максимальная длина 12
174 ИНН кассира 25 строка Максимальная длина 12
175 ИНН кассира 26 строка Максимальная длина 12
176 ИНН кассира 27 строка Максимальная длина 12
177 ИНН кассира 28 строка Максимальная длина 12
178 Пароль администратора строка Максимальная длина 8
179 Имя администратора строка Максимальная длина 57
180 ИНН администратора строка Максимальная длина 12
181 Пароль системного администратора строка Максимальная длина 8
182 Имя системного администратора строка Максимальная длина 57
183 ИНН системного администратора строка Максимальная длина 12
184 Строка клише 1 строка Максимальная длина 57
185 Строка клише 2 строка Максимальная длина 57
186 Строка клише 3 строка Максимальная длина 57
187 Строка клише 4 строка Максимальная длина 57
188 Строка клише 5 строка Максимальная длина 57
189 Строка клише 6 строка Максимальная длина 57
190 Строка клише 7 строка Максимальная длина 57
191 Строка клише 8 строка Максимальная длина 57
192 Строка клише 9 строка Максимальная длина 57
193 Строка клише 10 строка Максимальная длина 57
194 Строка клише 11 строка Максимальная длина 57
195 Строка клише 12 строка Максимальная длина 57
196 Строка клише 13 строка Максимальная длина 57
197 Строка клише 14 строка Максимальная длина 57
198 Строка клише 15 строка Максимальная длина 57
199 Строка клише 16 строка Максимальная длина 57
200 Строка клише 17 строка Максимальная длина 57
201 Строка клише 18 строка Максимальная длина 57
202 Строка клише 19 строка Максимальная длина 57
203 Строка клише 20 строка Максимальная длина 57
204 Наименование секции 1 строка Максимальная длина 57
205 Наименование секции 2 строка Максимальная длина 57
206 Наименование секции 3 строка Максимальная длина 57
207 Наименование секции 4 строка Максимальная длина 57
208 Наименование секции 5 строка Максимальная длина 57
209 Наименование секции 6 строка Максимальная длина 57
210 Наименование секции 7 строка Максимальная длина 57
211 Наименование секции 8 строка Максимальная длина 57
212 Наименование секции 9 строка Максимальная длина 57
213 Наименование секции 10 строка Максимальная длина 57
214 Наименование секции 11 строка Максимальная длина 57
215 Наименование секции 12 строка Максимальная длина 57
216 Наименование секции 13 строка Максимальная длина 57
217 Наименование секции 14 строка Максимальная длина 57
218 Наименование секции 15 строка Максимальная длина 57
219 Наименование секции 16 строка Максимальная длина 57
236 Скорость ККТ число 1200 — 1200 бод
2400 — 2400 бод
4800 — 4800 бод
9600 — 9600 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
238 Скорость подключенного устройства число 1200 — 1200 бод
2400 — 2400 бод
4800 — 4800 бод
9600 — 9600 бод
14400 — 14400 бод
19200 — 19200 бод
38400 — 38400 бод
57600 — 57600 бод
115200 — 115200 бод
239 Канал обмена с ККТ число 0 — RS-232
4 — USB
6 — Ethernet
7 — Wi-Fi
240 Наименование способа расчета 2 строка Максимальная длина 57
241 Наименование способа расчета 3 строка Максимальная длина 57
242 Наименование способа расчета 4 строка Максимальная длина 57
243 Наименование способа расчета 5 строка Максимальная длина 57
244 Наименование способа расчета 6 строка Максимальная длина 57
245 Наименование способа расчета 7 строка Максимальная длина 57
246 Наименование способа расчета 8 строка Максимальная длина 57
247 Наименование способа расчета 9 строка Максимальная длина 57
248 Наименование способа расчета 10 строка Максимальная длина 57
249 Номер формы расчета 2 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
250 Номер формы расчета 3 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
251 Номер формы расчета 4 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
252 Номер формы расчета 5 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
253 Номер формы расчета 6 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
254 Номер формы расчета 7 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
255 Номер формы расчета 8 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
256 Номер формы расчета 9 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
257 Номер формы расчета 10 число 2 — Безналичными
3 — Предварительная оплата (аванс)
4 — Последующая оплата (кредит)
5 — Иная форма оплаты (встречное предоставление)
265 Конфигурационная строка (GSM) строка Максимальная длина 32
266 Имя пользователя (GSM) строка Максимальная длина 32
267 Пароль (GSM) строка Максимальная длина 32
268 Режим Wi-Fi число 0 — Клиент
1 — Точка доступа
269 Имя точки доступа для работы по Wi-Fi строка Максимальная длина 32
270 Пароль доступа к точке доступа строка Максимальная длина 32
271 Номер канала Wi-Fi в режиме точки доступа число 0 .. 13
272 Тип шифрования Wi-Fi число 0 — Open
1 — WEP
2 — WPA
3 — WPA2
4 — WPA/WPA2
273 Адрес ОФД строка Максимальная длина 64
274 Порт ОФД число 1 .. 65535
275 DNS ОФД строка Максимальная длина 15
276 Канал обмена с ОФД число 1 — USB (EoU)
2 — Ethernet
3 — Wi-Fi
4 — GSM-модем
5 — EthernetOverTransport
277 Адрес сайта ФНС строка Максимальная длина 64
278 Адрес личного кабинета строка Максимальная длина 64
279 IP-порт личного кабинета число 1 .. 65535
280 Интервал посылок диагностических сообщений, с. число 0 .. 65535
281 Интервал ожидания квитанции ОФД (в мин.) число 1 .. 5
282 Интервал опроса ФН при разрывах (в сек.) число 5 .. 120
305 Частота обмена с ФН, кбит/с число 50 .. 400
306 Передавать необязательные реквизиты в ОФД число 0 — Не передавать
1 — Передавать
307 Ожидание инициализации ФН после включения, с. число 5 .. 255
308 Ожидание обработки команды в ФН, с. число 10 .. 255
309 Размер чека в байтах число 0 .. 4294967295
310 Печатать пароль доступа к точке Wi-Fi число 0 — Не печатать
1 — Печатать
311 Блокировать ККТ при переполнении ЭЖ число 0 — Не блокировать
1 — Блокировать работу по протоколу
2 — Блокировать работу с ЛК
312 Работа со скидками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
313 Работа с надбавками число 0 — Запрещены
1 — Разрешены на весь чек
2 — Разрешены на позицию
3 — Разрешены все
325 Получение IP-адреса от DHCP (Wi-Fi) число 0 — Отключено
1 — Включено
326 IP-адрес (Wi-Fi) строка Максимальная длина 15
327 Маска подсети (Wi-Fi) строка Максимальная длина 15
328 Шлюз по умолчанию (Wi-Fi) строка Максимальная длина 15
330 Шрифт реквизитов в чеке число 1 .. 7
331 Сопряжение по Bluetooth число 0 — Запрещено
1 — Разрешено
332 Печатать реквизит «Наименование ОФД» число 0 — Не печатать
1 — Печатать
333 Печатать реквизит «Адрес электронной почты отправителя» число 0 — Не
печатать
1 — Печатать
334 Работа с ЭЖ число 0 — Отключена
1 — Включена
335 Автоматически печатать копию Z-отчета после печати Z-отчета число 0

  • Не печатать
    1 — Печатать
    336 Выдвигать чек число 0 — Нет
    10 — На 10 мм
    20 — На 20 мм
    30 — На 40 мм
    337 Действия с чеком после отрезки число 0 — Проглотить
    1 — Выдвинуть на заданное расстояние
    2 — Выбросить из принтера
    338 Действия с предыдущим чеком, если его не забрали число 0 — Проглотить
    1 — Выбросить
    339 Чек делает петлю число 0 — Нет
    1 — Да
    340 Обнулять счетчик чеков при закрытии смены число 0 — Нет
    1 — Да
    341 Перенос строк при печати число 0 — Печатать на разных строках
    1 — Переносить, если не умещается
    2 — Обрезать, если не умещается
    342 Таймаут на выключение периферии число 0 .. 99
    343 Модель подключенного принтера число 1 — АТОЛ
    2 — CUSTOM VKP-80II
    3 — CITIZEN PPU-700 (II)
    4 — CITIZEN CT-S2000
    5 — CUSTOM TG2480
    6 — EPSON
    7 — MEMORY
    8 — CUSTOM VKP-80II SX
    9 — SNBC BT-T080R
    10 — SNBC BK-T680
    11 — SNBC BT-T056
    12 — REXOD RX-831-V80H
    344 Выдвигать суточные отчеты число 0 — Нет
    1 — Да
    345 Печатать реквизит «ИНН поставщика» число 0 — Не печатать
    1 — Печатать Android Service Пример задания

|{
«type»: «closeShift»,
«operator»: {
«name»: «Иванов»,
«vatin»: «123654789507»
}
}
|

Пример ответа

|{
«result»: {
«error»: 0,
«description»: «Ошибок нет»
},
«data»: {
«fiscalParams» : {
«fiscalDocumentDateTime» : «2017.07.25 13:12:00»,
«fiscalDocumentNumber» : 69,
«fiscalDocumentSign» : «1138986989»,
«fnNumber» : «9999078900000961»,
«registrationNumber» : «0000000001002292»,
«shiftNumber» : 11,
«receiptsCount» : 3,
«fnsUrl»: «www.nalog.gov.ru»
},
«warnings»: {}
}
}
|

Пример ошибки выполнения

|{
«result»: {
«error»: 73,
«description»: «Смена закрыта — операция невозможна»
},
«data»: {}
}
|

Данный сервис позволяет не интегрировать в свое приложение драйвер ККТ,
а пользоваться механизмами Android для обмена с ККТ.

Поддерживаются следующие способы обмена с сервисом:

  • Intent;
  • AIDL-сервис.

В обоих случая передаваемые и принимаемые данные выглядят одинаково. В
передаваемых данных содержится JSON-задание <#json-tasks>. В ответе на
задание содержатся два поля:

  • result, в которое записывается ошибка выполнения, если она была;
  • data, в которое записывается результат операции в случае успешного
    выполнения (описание результатов; приведено в описании каждого JSON-
    задания). Использование через Intent Формирование Intent

|Intent intent = new Intent();
intent.setAction(«ru.atol.drivers10.service.PROCESS_TASK»);
intent.putExtra(«PARAM_REQUEST», «{\n» +
» \»type\»: \»closeShift\»,\n» +
» \»operator\»: {\n» +
» \»name\»: \»Иванов\»,\n» +
» \»vatin\»: \»123654789507\»\n» +
» }\n» +
«}»);
startActivityForResult(intent, 1);
|

Для отправки задания в ККТ нужно сформировать Intent и в параметр
PARAM_REQUEST записать JSON с заданием.

Прием ответа

|@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,
data.getStringExtra(«PARAM_RESULT»),
Toast.LENGTH_LONG).show();
}
});
}
|

Для приема ответа нужно из данных результата считать параметр
PARAM_RESULT.

Использование через AIDL-сервис

Пример вызова сервиса

|private IFptrService fptrServiceBinder;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Intent intent = new Intent();
intent.setAction("ru.atol.drivers10.service.SERVICE");
intent.setPackage("ru.atol.drivers10.service");
bindService(intent, serviceConnection, BIND_AUTO_CREATE);

}

private final ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
fptrServiceBinder = null;
}

@Override
public void onServiceConnected(ComponentName name, IBinder service) {
    fptrServiceBinder = IFptrService.Stub.asInterface(service);

    try {
        String result = fptrServiceBinder.processJson("{\n" +
                "    \"type\": \"closeShift\",\n" +
                "    \"operator\": {\n" +
                "       \"name\": \"Иванов\",\n" +
                "       \"vatin\": \"123654789507\"\n" +
                "    }\n" +
                "}");
        Toast.makeText(MainActivity.this,
                result,
                Toast.LENGTH_LONG).show();
    } catch (RemoteException e) {
        e.printStackTrace();
    }
}

};
|

Работа с подобными сервисами на Android описана в руководствах Google
https://developer.android.com/guide/components/aidl. Нужно добавить в
каталог /src/main/aidl/ru/atol/drivers10/service/ проекта файл с
описанием интерфейса сервиса (/IFptrService.aidl/) и подключиться к
сервису через bindService(). Для выполнения JSON-заданий используется
метод IFptrService.processJson().

Получение версий

Версия сервиса

|private IFptrService fptrServiceBinder;

Log.d(«AtolDriver», String.format(«Версия \»АТОЛ. Драйвер ККТ\» — %s», fptrServiceBinder.getServiceVersion()));
|

Версия драйвера

|private IFptrService fptrServiceBinder;

Log.d(«AtolDriver», String.format(«Версия драйвера ККТ — %s», fptrServiceBinder.getDriverVersion()));
|

Метод /getServiceVersion()/ возвращает версию приложения /АТОЛ.
Драйвер ККТ/.

Метод /getDriverVersion()/ возвращает версию используемого приложением
драйвера ККТ.

Оповещения о событиях

BroadcastReceiver

|public class DriverEventsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, intent.getAction(), Toast.LENGTH_LONG).show();
}
}

DriverEventsReceiver receiver = new DriverEventsReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(«ru.atol.drivers10.service.EVENT_SHIFT_OPENED»);
intentFilter.addAction(«ru.atol.drivers10.service.EVENT_SHIFT_CLOSED»);
registerReceiver(receiver, intentFilter);
|

Сервис оповещает о событиях, происходящих с ККТ, с помощью Broadcast Intent.

На данный момент поддерживаются следующие типы событий:

Intent Action Описание Дополнительные параметры
ru.atol.drivers10.service.EVENT_SHIFT_OPENED Смена была открыта.
Сервис отслеживает JSON-запросы, проходящие через него, и следит за тем,
как они меняют состояние смены. Нет
ru.atol.drivers10.service.EVENT_SHIFT_CLOSED Смена была закрыта.
Сервис отслеживает JSON-запросы, проходящие через него, и следит за тем,
как они меняют состояние смены. Нет

Логирование

Логи приложения хранятся в каталоге //storage/emulated/0/Android/data/
ru.atol.drivers10.service/files/.

Настройка

Если в главном окне приложения выключить настройку Активировать драйвер, то сервис не будет подключаться к ККТ.

Для настройки связи с ККТ нужно зайти в главное окно приложения и нажать
на Настройки связи с ККТ.

Для настройки параметров ККТ нужно зайти в главное окно приложения и
нажать на Параметры ККТ.

Сервер удалённого подключения

Сервер удалённого подключения предназначен для обеспечения скоростного
доступа к ККТ на больших расстояниях и медленных каналах связи, где
проброс COM-портов или прямое подключение по TPC/IP к ККТ работает
нестабильно (например, в терминальной сессии Windows). Сервер использует
порт 19524.

Сервер доступен для:

  • Windows XP (x86, x64) и выше или Windows Server 2008 R2 (x86, x64) и
    выше
  • Linux (x86, x64, arm, arm64) с ядром 2.6.23 и выше (для arm
    минимальная версия ядра — 3.1)

Сервер разрабатывался для использования в следующих схемах:

*

ККТ подключена к ПК, за которым работает пользователь, а ПО
находится на стороне ПК-сервера Rpc device on client

*

ККТ подключена к серверу, а ПО находится на ПК пользователя (будь то
мобильное или стационарное устройство) Rpc device on server

Для организации удалённого доступа необходимо:

  • установить и запустить сервер удалённого подключения и драйвер на /
    ПК №1/
  • подключить ККТ к /ПК №1/ любым доступным способом (предпочтительней
    проводные каналы связи RS232 и USB)
  • в драйвере на /ПК №2/ указать настройки подключения к ККТ, учитывая,
    что она подключена к /ПК №1/
  • помимо стандартных настроек, задать адрес сервера
    (LIBFPTR_SETTING_REMOTE_SERVER_ADDR) и таймаут подключения к
    серверу (LIBFPTR_SETTING_REMOTE_SERVER_CONNECTION_TIMEOUT)
  • выполнить подключение в драйвере

Частным случаем является ситуация, когда /ПК №1/ и /ПК №2/ — одно и тоже
устройство.

Далее ПО может работать с ККТ в обычном режиме.

Таймаут подключения

Отдельная настройка таймаута подключения к серверу регулирует:

  • время ожидания ответа от сервера на команду подключения
  • время ожидания освобождения устройства от другого клиента

Т.к. к устройству единовременно может быть подключен только один клиент,
другие клиенты будут получать ошибку, что устройство занято. Этот
таймаут определяет, сколько клиент будет пытаться захватывать устройство
и не возвращать ошибку подключения в ПО.

Специальные методы


  Запрос информации о сервере

Запрос информации о сервере

|libfptr_get_remote_server_info(fptr);

std::vector str(1024);
int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_RPC_SERVER_VERSION, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_RPC_SERVER_VERSION, &str[0], str.size());
}
std::wstring serverVersion = std::wstring(&str[0]);

int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_RPC_DRIVER_VERSION, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_RPC_DRIVER_VERSION, &str[0], str.size());
}
std::wstring driverVersion = std::wstring(&str[0]);

int size = libfptr_get_param_str(fptr, LIBFPTR_PARAM_RPC_SERVER_OS, &str[0], str.size());
if (size > str.size())
{
str.resize(size);
libfptr_get_param_str(fptr, LIBFPTR_PARAM_RPC_SERVER_OS, &str[0], str.size());
}
std::wstring os = std::wstring(&str[0]);
|

|fptr.getRemoteServerInfo()

serverVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_RPC_SERVER_VERSION)
driverVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_RPC_DRIVER_VERSION)
os = fptr.getParamString(IFptr.LIBFPTR_PARAM_RPC_SERVER_OS)
|

|fptr.getRemoteServerInfo();

String serverVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_RPC_SERVER_VERSION);
String driverVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_RPC_DRIVER_VERSION);
String os = fptr.getParamString(IFptr.LIBFPTR_PARAM_RPC_SERVER_OS);
|

|fptr.getRemoteServerInfo();

String serverVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_RPC_SERVER_VERSION);
String driverVersion = fptr.getParamString(IFptr.LIBFPTR_PARAM_RPC_DRIVER_VERSION);
String os = fptr.getParamString(IFptr.LIBFPTR_PARAM_RPC_SERVER_OS);
|

|[fptr getRemoteServerInfo];

NSString *serverVersion = [fptr getParamString:LIBFPTR_PARAM_RPC_SERVER_VERSION];
NSString *driverVersion = [fptr getParamString:LIBFPTR_PARAM_RPC_DRIVER_VERSION];
NSString *os = [fptr getParamString:LIBFPTR_PARAM_RPC_SERVER_OS];
|

|fptr.getRemoteServerInfo();

String serverVersion = fptr.getParamString(Constants.LIBFPTR_PARAM_RPC_SERVER_VERSION);
String driverVersion = fptr.getParamString(Constants.LIBFPTR_PARAM_RPC_DRIVER_VERSION);
String os = fptr.getParamString(Constants.LIBFPTR_PARAM_RPC_SERVER_OS);
|

|var
serverVersion, driverVersion, os: String;
begin
fptr.getRemoteServerInfo;

serverVersion := fptr.getParamString(fptr.LIBFPTR_PARAM_RPC_SERVER_VERSION);
driverVersion := fptr.getParamString(fptr.LIBFPTR_PARAM_RPC_DRIVER_VERSION);
os := fptr.getParamString(fptr.LIBFPTR_PARAM_RPC_SERVER_OS);

end;
|

|fptr.GetRemoteServerInfo()

serverVersion := fptr.GetParamString(fptr10.LIBFPTR_PARAM_RPC_SERVER_VERSION)
driverVersion := fptr.GetParamString(fptr10.LIBFPTR_PARAM_RPC_DRIVER_VERSION)
os := fptr.GetParamString(fptr10.LIBFPTR_PARAM_RPC_SERVER_OS)
|

|Fptr.getRemoteServerInfo();

serverVersion = Fptr.getParamString(Fptr.LIBFPTR_PARAM_RPC_SERVER_VERSION);
driverVersion = Fptr.getParamString(Fptr.LIBFPTR_PARAM_RPC_DRIVER_VERSION);
os = Fptr.getParamString(Fptr.LIBFPTR_PARAM_RPC_SERVER_OS);
|

Для запроса информации о сервере удалённых подключений нужно вызвать
метод /getRemoteServerInfo()/.

Результатом этого запроса будет следующая информация:

Параметр Описание Тип
LIBFPTR_PARAM_RPC_SERVER_VERSION Версия сервера string
LIBFPTR_PARAM_RPC_DRIVER_VERSION Версия драйвера, подключённого к
серверу string
LIBFPTR_PARAM_RPC_SERVER_OS Тип ОС string

Параметр LIBFPTR_PARAM_RPC_SERVER_OS заполнен всегда и может принимать
следующие значения:

  • linux
  • windows
  • macOS
  • iOS
  • android

Если вызвать этот метод у объекта драйвера, не настроенного на сервер,
поля LIBFPTR_PARAM_RPC_SERVER_VERSION и
LIBFPTR_PARAM_RPC_DRIVER_VERSION всегда будут пустыми, а поле
LIBFPTR_PARAM_RPC_SERVER_OS будет отражать локальную ОС, на которой
драйвер используется.

Вызов метода не требует подключения к серверу (может работать до вызова
метода /open()/), но настройка LIBFPTR_SETTING_REMOTE_SERVER_ADDR
должна быть задана.

Отправка статистики

Периодически драйвер отсылает на сервер АТОЛ зашифрованную статистику об
использовании. Она нужна для анализа использования драйвера на различных
платформах.

Состав отправляемых данных различается для разных операционных систем,
но полный список такой:

  • заводской номер ККТ
  • текущие дата и время
  • информация об ОС и платформе:
    o идентификатор ПК/планшета/смартфона
    o тип, версия и архитектура ОС
  • информация о драйвере
    o версия
    o информация о сборке
  • информация о приложении
    o командная строка запуска
    o название приложения
    o название компании разработчика
    o версия

В случае возникновения проблем c использованием библиотеки OpenSSL на OC
Linux драйвер предоставляет возможность указать явно расположение
библиотек libssl и libcrypto. Для этого пользователю нужно задать
переменные среды с названиями DTO10_LIBSSL_PATH_ENV и
DTO10_LIBCRYPTO_PATH_ENV и указать значения полных путей к библиотекам
(например, //lib/i386-linux-gnu/libssl.1.0.1.so/).

Пользовательское соглашение

ПРАВИЛА ИСПОЛЬЗОВАНИЯ

Правила регулируют отношения по использованию программ для ЭВМ –
программных платформ для контрольно-кассовой техники под названиями
«Платформа ККТ 2.5» и «Платформы ККТ 5.0» и «Fiscal Platform 6», а также
программного обеспечения для рабочих станций конечных пользователей
контрольно-кассовой техники под названием «Драйвер контрольно-кассовой
техники v.10 (ДККТ 10)», «АТОЛ Connect» и «АТОЛ Connect
Ассистент» (далее совместно упоминающиеся как «Программы для ЭВМ», а по
отдельности – «Программа для ЭВМ»).

Обладателем исключительного права на Программы для ЭВМ «Платформа ККТ
2.5», «Платформы ККТ 5.0» и «Драйвер контрольно-кассовой техники v.10
(ДККТ 10)» является Общество с ограниченной ответственностью
«АТОЛ» (ОГРН 1165010050590).

Обладателем исключительного права на Программы для ЭВМ «Fiscal Platform
6», «АТОЛ Connect» и «АТОЛ Connect Ассистент» является Общество с
ограниченной ответственностью «ЦРИ» (ОГРН 1117746904758).

Настоящие Правила распространяются на всех лиц, правомерно обладающих
экземпляром соответствующей Программы для ЭВМ (далее – Пользователь).

Пользователь путем инсталляции «Платформы ККТ 2.5», «Платформы ККТ 5.0»,
«Fiscal Platform 6» в память устройства ККТ и/или инсталляции «АТОЛ
Connect Ассистент» и/или «Драйвера контрольно-кассовой техники v.10
(ДККТ 10)» и/или отдельных компонентов ДДКТ 10, входящих в состав
дистрибутива ДККТ 10, в память устройства, управляющего работой ККТ,
соглашается с настоящими Правилами.

ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ

Контрольно-кассовая техника (ККТ) – электронные вычислительные машины,
иные компьютерные устройства и их комплексы, обеспечивающие запись и
хранение фискальных данных в фискальных накопителях, формирующие
фискальные документы, обеспечивающие передачу фискальных документов в
налоговые органы через оператора фискальных данных и печать фискальных
документов на бумажных носителях в соответствии с правилами,
установленными законодательством Российской Федерации о применении
контрольно-кассовой техники.

Модели ККТ – модели контрольно-кассовой техники АТОЛ 1Ф, АТОЛ 11Ф,
АТОЛ 15Ф, АТОЛ 20Ф, АТОЛ FPrint-22ПТК, АТОЛ 22v2Ф, АТОЛ 25Ф, АТОЛ 27Ф,
АТОЛ 30Ф, АТОЛ 50Ф, АТОЛ 52Ф, АТОЛ 55Ф, АТОЛ 60Ф, АТОЛ 77Ф, АТОЛ 90Ф,
АТОЛ 91Ф, АТОЛ 92Ф и АТОЛ 91Ф лайт, АТОЛ 150Ф.

Устройство – электронная вычислительная машина, управляющая работой
ККТ, в качестве которой может использоваться любой персональный
компьютер, мобильное устройство или специализированный POS-терминал, с
установленным программным обеспечением, в котором реализована поддержка
данной модели ККТ. Требования к техническим характеристикам управляющего
устройства определяются установленным на нем программным обеспечением.

Платформа ККТ 2.5 – программная платформа для контрольно-кассовой
техники, представляющая собой внутреннее программное обеспечение
микропроцессоров блоков управления каждой из Моделей ККТ в
скомпилированном виде и драйвер для подключения каждой из Моделей ККТ к
Устройству.

Платформа ККТ 5.0 – программная платформа для контрольно-кассовой
техники, представляющая собой внутреннее программное обеспечение
микропроцессоров блоков управления каждой из Моделей ККТ в
скомпилированном виде и драйвер для подключения каждой из Моделей ККТ к
Устройству.

«Fiscal Platform 6» – программная платформа для контрольно-кассовой
техники, представляющая собой внутреннее программное обеспечение
микропроцессоров блоков управления каждой из Моделей ККТ в
скомпилированном виде и драйвер для подключения каждой из Моделей ККТ к
Устройству.

Драйвер контрольно-кассовой техники v.10 (ДККТ 10) – программное
обеспечение для подключения Моделей ККТ к Устройству. Под программным
обеспечением подразумевается интеграционный компонент, предоставляющий
удобный программный интерфейс для работы с контрольно-кассовой техникой
для самых популярных программных и аппаратных платформ и языков
программирования (в том числе, операционные системы Linux, Windows,
Android и iOS, архитектуры i386, amd64 и arm). Пользователь вправе
использовать для подключения Моделей ККТ к Устройству как ДККТ 10 в
целом, так и отдельные компоненты, входящие в состав дистрибутива ДККТ 10.

АТОЛ Connect – программа для ЭВМ, обеспечивающая удаленное управление,
мониторинг работы контрольно-кассовой техники и удаленное обновление
внутреннего программного обеспечения контрольно-кассовой техники.

АТОЛ Connect Ассистент – программное обеспечение для дистанционного
подключения Моделей ККТ к АТОЛ Connect. Под программным обеспечением
подразумевается сервисный компонент, предоставляющий удобный программный
интерфейс для дистанционной инсталляции платформ в память устройства ККТ
посредством установки на Устройство и дистанционного подключения к АТОЛ
Connect, а также проведения дистанционных сервисных операций.

Базовая функциональность Программ для ЭВМ обеспечивает соответствие
Программ для ЭВМ обязательным требованиям Федерального закона от
22.05.2003 № 54-ФЗ «О применении контрольно-кассовой техники при
осуществлении наличных денежных расчетов и (или) расчетов с
использованием платежных карт» (в редакции Федерального закона от
03.07.2016 № 290-ФЗ «О внесении изменений в Федеральный закон «О
применении контрольно-кассовой техники при осуществлении наличных
денежных расчетов и (или) расчетов с использованием платежных карт» и
отдельные законодательные акты Российской Федерации»), а также
соответствие требованиям всех связанных с ним подзаконных актов.

Расширенная функциональность Программ для ЭВМ обеспечивает возможность
использования Программ для ЭВМ способами, не доступными для Базовой
функциональности. Расширенная функциональность Программ для ЭВМ
предоставляется за дополнительную плату и возможна к реализации во всех
Моделях ККТ.

УСЛОВИЯ ИСПОЛЬЗОВАНИЯ

При использовании Программ для ЭВМ Пользователь обязан соблюдать
положения действующего законодательства Российской Федерации,
международных норм о защите интеллектуальных прав и настоящих Правил.

Пользователь имеет право установить и использовать Программу для ЭВМ на
одном устройстве ККТ в один момент времени.

Пользователь обязуется не допускать нарушений исключительного права
Правообладателя на Программы для ЭВМ, в частности, не совершать и не
допускать совершения третьими лицами (в том числе, уполномоченными
Пользователем на выполнение пусконаладочных работ в отношении ККТ)
следующих действий без специального письменного разрешения Правообладателя:

  • распространять Программы для ЭВМ или их отдельные компоненты;
  • вносить какие-либо изменения в код Программы для ЭВМ, содержимое баз
    данных и других наборов данных, в которых система хранит информацию,
    за исключением тех изменений, которые вносятся штатными средствами,
    входящими в состав Программы для ЭВМ и описанными в сопроводительной
    документации;
  • доступ к информационной базе Программы для ЭВМ и построение систем
    на основе Программы для ЭВМ с помощью средств и технологических
    решений, не предусмотренных в сопроводительной документации;
  • совершать действия, результатом которых является устранение или
    снижение эффективности технических средств защиты авторских прав,
    применяемых Правообладателем, включая применение программных и
    технических средств «мультиплексирования», средств, изменяющих
    алгоритм работы программных или аппаратных средств защиты Программы
    для ЭВМ (в том числе, кодов защиты), а также использовать Программы
    для ЭВМ с устраненными или измененными без разрешения
    Правообладателя средствами защиты;
  • восстанавливать исходный код, декомпилировать и/или деассемблировать
    программную часть системы, за исключением тех случаев и лишь в той
    степени, в какой такая деятельность специально разрешена действующим
    законодательством.

В случае нарушения Пользователем настоящих Правил Правообладатель по
своему усмотрению вправе применять в отношении нарушителя технические и
юридические способы защиты своих интеллектуальных прав. Правообладатель
не несет ответственности за корректную работу Программ для ЭВМ в случае
несанкционированного (неразрешенного Правообладателем) использования
Программ для ЭВМ.

Использование Программ для ЭВМ способами, предусмотренными Расширенной
функциональностью, предлагается по принципу «Как есть» («AS IS»).
Никаких гарантий, как устных, так и письменных не прилагается и не
предусматривается. Правообладатель не дает гарантии, что все ошибки
Программ для ЭВМ были устранены, соответственно Правообладатель не несет
никакой ответственности за последствия использования Программ для ЭВМ,
включая, но не ограничиваясь любым ущербом оборудованию, компьютерам,
мобильным устройствам, программному обеспечению Пользователя, вызванным
или связанным с использованием Программ для ЭВМ, а также за любые
финансовые потери, понесенные Пользователем в результате использования
Программ для ЭВМ. Никто не ответственен за потерю данных, убытки, ущерб,
включая случайный или косвенный, упущенную выгоду, потерю доходов или
любые другие потери, связанные с использованием Программ для ЭВМ.

Пользователь понимает и соглашается с тем, что Программы для ЭВМ могут
отправлять на серверы Правообладателя техническую, метрическую (в том
числе, для мониторинга состояния ККТ, выявления ошибок, определения
количества часов наработки ККТ), учетную, а также иную информацию,
позволяющую агрегировать результаты и формировать аналитические отчеты о
состоянии парка ККТ на основе данных о всех процессах, исполняемых ККТ.

СРОК ДЕЙСТВИЯ

Настоящие Правила действуют в течение всего срока эксплуатации
Пользователем Программ для ЭВМ и/или нахождения у него экземпляров
Программ для ЭВМ.

Правила использования разработчиками ПО

ТЕРМИНЫ

Контрольно-кассовая техника (ККТ) – электронные вычислительные машины,
иные компьютерные устройства и их комплексы, обеспечивающие запись и
хранение фискальных данных в фискальных накопителях, формирующие
фискальные документы, обеспечивающие передачу фискальных документов в
налоговые органы через оператора фискальных данных и печать фискальных
документов на бумажных носителях в соответствии с правилами,
установленными законодательством Российской Федерации о применении
контрольно-кассовой техники.

Модели ККТ – модели контрольно-кассовой техники АТОЛ 1Ф, АТОЛ 11Ф,
АТОЛ 15Ф, АТОЛ 20Ф, АТОЛ FPrint-22ПТК, АТОЛ 22v2Ф, АТОЛ 25Ф, АТОЛ 27Ф,
АТОЛ 30Ф, АТОЛ 50Ф, АТОЛ 52Ф, АТОЛ 55Ф, АТОЛ 60Ф, АТОЛ 77Ф, АТОЛ 90Ф,
АТОЛ 91Ф, АТОЛ 92Ф и АТОЛ 91Ф лайт, АТОЛ 150Ф.

Драйвер контрольно-кассовой техники v.10 (ДККТ 10) – программное
обеспечение для подключения Моделей ККТ к Устройству. Под программным
обеспечением подразумевается интеграционный компонент, предоставляющий
удобный программный интерфейс для работы с контрольно-кассовой техникой
для самых популярных программных и аппаратных платформ и языков
программирования (в том числе, операционные системы Linux, Windows,
Android и iOS, архитектуры i386, amd64 и arm).

Устройство – электронная вычислительная машина, управляющая работой
ККТ, в качестве которой может использоваться любой персональный
компьютер, мобильное устройство или специализированный POS-терминал, с
установленным программным обеспечением, в котором реализована поддержка
ДККТ 10. Требования к техническим характеристикам управляющего
устройства определяются установленным на нем программным обеспечением.

ОБЩИЕ ПОЛОЖЕНИЯ

Правила регулируют отношения по использованию программы для ЭВМ под
наименованием «Драйвер контрольно-кассовой техники v.10 (ДККТ 10)
» (далее – «Программа»), обладателем исключительного права на которую
является Общество с ограниченной ответственностью «АТОЛ», ОГРН
1165010050590 (далее – Правообладатель).

Правила распространяются на разработчиков программного обеспечения
(далее – Разработчик), создающих на основе и/или с использованием
Программы собственные программные продукты для Устройств, управляющих
работой ККТ (далее – Продукт).

Правила размещаются на сайте в информационно-телекоммуникационной сети
«Интернет» по адресам integration.atol.ru, fs.atol.ru и в инсталляторе
Программы.

Разработчик с момента скачивания Программы и/или отдельных компонентов
Программы, входящих в состав дистрибутива Программы, с сайта fs.atol.ru,
соглашается с настоящими Правилами.

УСЛОВИЯ ИСПОЛЬЗОВАНИЯ ПРОГРАММЫ

Разработчик вправе использовать Программу на условиях простой
(неисключительной) лицензии безвозмездно. Правообладатель вправе в любой
момент изменять Правила и условия использования Программы Разработчиком.

Целью использования Программы Разработчиком является обеспечение
интеграции Продукта, создаваемого Разработчиком, с Моделью ККТ и/или
внутренним программным обеспечением контрольно-кассовой техники.

Разработчик вправе использовать как Программу в целом, так и отдельные
компоненты, входящие в состав дистрибутива Программы.

При использовании Программы Разработчик обязан соблюдать положения
действующего законодательства Российской Федерации, международных норм о
защите интеллектуальных прав и настоящих Правил.

Разработчик понимает и соглашается с тем, что Программа может отправлять
на серверы Правообладателя техническую, метрическую (в том числе, для
мониторинга состояния ККТ, выявления ошибок, определения количества
часов наработки ККТ), учетную, а также иную информацию, позволяющую
агрегировать результаты и формировать аналитические отчеты о состоянии
парка ККТ на основе данных о всех процессах, исполняемых ККТ.

Разработчик обязуется при распространении и реализации созданного им
Продукта получить согласие конечных пользователей Продукта на сбор
соответствующей информации, в том числе, путем размещения ссылки на
пользовательское соглашение ООО «АТОЛ» http://integration.atol.ru/eula/
в пользовательском соглашении (правилах и т.д.), относящемся к
использованию Продукта Разработчика конечными пользователями.

СРОК ДЕЙСТВИЯ

Настоящие Правила действуют в течение всего срока эксплуатации конечными
пользователями Продуктов, созданных Разработчиком, и/или нахождения у
Разработчика экземпляра Программы.

C++ (C-API) <#> C++ <#> Python <#> Java <#> Android <#> ObjC <#> C# <#>
Delphi <#> Go <#> Duktape <#>