// @ts-ignore export interface Settings { AccessPassword: string AutoDisableBluetooth: boolean AutoEnableBluetooth: boolean AutoReconnect: boolean BaudRate: Baudrate Bits: Bits ComFile: string DocumentsJournalPath: string IPAddress: string IPPort: number InvertCashDrawerStatus: boolean LibraryPath: string MACAddress: string Model: Model OfdChannel: OfdChannel Parity: Parity Port: Port RemoteServerAddr: string RemoteServerConnectionTimeout: number ScriptsPath: string StopBits: Stopbits UsbDevicePath: string UseDocumentsJournal: boolean UserPassword: string } export interface LastDocument { documentNumber: number fiscalSign: string date: { year: number month: number day: number hour: number minute: number second: number } } export interface DeviceInfo { configurationVersion: string ecrFfdVersion: string fnFfdVersion: string firmwareVersion: string model: Model modelName: string receiptLineLength: number receiptLineLengthPx: number serial: string } export declare class Fptr10 { create(): void isOpened(): boolean destroy(): void getSettings(): Settings setSettings(settings: Settings): boolean open(): boolean close(): boolean processJson(json: unknown): any processJsonAsync(json: unknown, cb: (error: any, result: any) => void): void fnReport(type: number): any findLastDocument(): LastDocument } export enum Port { LIBFPTR_PORT_COM = 0, LIBFPTR_PORT_USB, LIBFPTR_PORT_TCPIP, LIBFPTR_PORT_BLUETOOTH, } export enum Error { LIBFPTR_OK = 0, LIBFPTR_ERROR_CONNECTION_DISABLED, LIBFPTR_ERROR_NO_CONNECTION, LIBFPTR_ERROR_PORT_BUSY, LIBFPTR_ERROR_PORT_NOT_AVAILABLE, LIBFPTR_ERROR_INCORRECT_DATA, LIBFPTR_ERROR_INTERNAL, LIBFPTR_ERROR_UNSUPPORTED_CAST, LIBFPTR_ERROR_NO_REQUIRED_PARAM, LIBFPTR_ERROR_INVALID_SETTINGS, LIBFPTR_ERROR_NOT_CONFIGURED, LIBFPTR_ERROR_NOT_SUPPORTED, LIBFPTR_ERROR_INVALID_MODE, LIBFPTR_ERROR_INVALID_PARAM, LIBFPTR_ERROR_NOT_LOADED, LIBFPTR_ERROR_UNKNOWN, LIBFPTR_ERROR_INVALID_SUM, LIBFPTR_ERROR_INVALID_QUANTITY, LIBFPTR_ERROR_CASH_COUNTER_OVERFLOW, LIBFPTR_ERROR_LAST_OPERATION_STORNO_DENIED, LIBFPTR_ERROR_STORNO_BY_CODE_DENIED, LIBFPTR_ERROR_LAST_OPERATION_NOT_REPEATABLE, LIBFPTR_ERROR_DISCOUNT_NOT_REPEATABLE, LIBFPTR_ERROR_DISCOUNT_DENIED, LIBFPTR_ERROR_INVALID_COMMODITY_CODE, LIBFPTR_ERROR_INVALID_COMMODITY_BARCODE, LIBFPTR_ERROR_INVALID_COMMAND_FORMAT, LIBFPTR_ERROR_INVALID_COMMAND_LENGTH, LIBFPTR_ERROR_BLOCKED_IN_DATE_INPUT_MODE, LIBFPTR_ERROR_NEED_DATE_ACCEPT, LIBFPTR_ERROR_NO_MORE_DATA, LIBFPTR_ERROR_NO_ACCEPT_OR_CANCEL, LIBFPTR_ERROR_BLOCKED_BY_REPORT_INTERRUPTION, LIBFPTR_ERROR_DISABLE_CASH_CONTROL_DENIED, LIBFPTR_ERROR_MODE_BLOCKED, LIBFPTR_ERROR_CHECK_DATE_TIME, LIBFPTR_ERROR_DATE_TIME_LESS_THAN_FS, LIBFPTR_ERROR_CLOSE_ARCHIVE_DENIED, LIBFPTR_ERROR_COMMODITY_NOT_FOUND, LIBFPTR_ERROR_WEIGHT_BARCODE_WITH_INVALID_QUANTITY, LIBFPTR_ERROR_RECEIPT_BUFFER_OVERFLOW, LIBFPTR_ERROR_QUANTITY_TOO_FEW, LIBFPTR_ERROR_STORNO_TOO_MUCH, LIBFPTR_ERROR_BLOCKED_COMMODITY_NOT_FOUND, LIBFPTR_ERROR_NO_PAPER, LIBFPTR_ERROR_COVER_OPENED, LIBFPTR_ERROR_PRINTER_FAULT, LIBFPTR_ERROR_MECHANICAL_FAULT, LIBFPTR_ERROR_INVALID_RECEIPT_TYPE, LIBFPTR_ERROR_INVALID_UNIT_TYPE, LIBFPTR_ERROR_NO_MEMORY, LIBFPTR_ERROR_PICTURE_NOT_FOUND, LIBFPTR_ERROR_NONCACH_PAYMENTS_TOO_MUCH, LIBFPTR_ERROR_RETURN_DENIED, LIBFPTR_ERROR_PAYMENTS_OVERFLOW, LIBFPTR_ERROR_BUSY, LIBFPTR_ERROR_GSM, LIBFPTR_ERROR_INVALID_DISCOUNT, LIBFPTR_ERROR_OPERATION_AFTER_DISCOUNT_DENIED, LIBFPTR_ERROR_INVALID_DEPARTMENT, LIBFPTR_ERROR_INVALID_PAYMENT_TYPE, LIBFPTR_ERROR_MULTIPLICATION_OVERFLOW, LIBFPTR_ERROR_DENIED_BY_SETTINGS, LIBFPTR_ERROR_TOTAL_OVERFLOW, LIBFPTR_ERROR_DENIED_IN_ANNULATION_RECEIPT, LIBFPTR_ERROR_JOURNAL_OVERFLOW, LIBFPTR_ERROR_NOT_FULLY_PAID, LIBFPTR_ERROR_DENIED_IN_RETURN_RECEIPT, LIBFPTR_ERROR_SHIFT_EXPIRED, LIBFPTR_ERROR_DENIED_IN_SELL_RECEIPT, LIBFPTR_ERROR_FISCAL_MEMORY_OVERFLOW, LIBFPTR_ERROR_INVALID_PASSWORD, LIBFPTR_ERROR_JOURNAL_BUSY, LIBFPTR_ERROR_DENIED_IN_CLOSED_SHIFT, LIBFPTR_ERROR_INVALID_TABLE_NUMBER, LIBFPTR_ERROR_INVALID_ROW_NUMBER, LIBFPTR_ERROR_INVALID_FIELD_NUMBER, LIBFPTR_ERROR_INVALID_DATE_TIME, LIBFPTR_ERROR_INVALID_STORNO_SUM, LIBFPTR_ERROR_CHANGE_CALCULATION, LIBFPTR_ERROR_NO_CASH, LIBFPTR_ERROR_DENIED_IN_CLOSED_RECEIPT, LIBFPTR_ERROR_DENIED_IN_OPENED_RECEIPT, LIBFPTR_ERROR_DENIED_IN_OPENED_SHIFT, LIBFPTR_ERROR_SERIAL_NUMBER_ALREADY_ENTERED, LIBFPTR_ERROR_TOO_MUCH_REREGISTRATIONS, LIBFPTR_ERROR_INVALID_SHIFT_NUMBER, LIBFPTR_ERROR_INVALID_SERIAL_NUMBER, LIBFPTR_ERROR_INVALID_RNM_VATIN, LIBFPTR_ERROR_FISCAL_PRINTER_NOT_ACTIVATED, LIBFPTR_ERROR_SERIAL_NUMBER_NOT_ENTERED, LIBFPTR_ERROR_NO_MORE_REPORTS, LIBFPTR_ERROR_MODE_NOT_ACTIVATED, LIBFPTR_ERROR_RECORD_NOT_FOUND_IN_JOURNAL, LIBFPTR_ERROR_INVALID_LICENSE, LIBFPTR_ERROR_NEED_FULL_RESET, LIBFPTR_ERROR_DENIED_BY_LICENSE, LIBFPTR_ERROR_DISCOUNT_CANCELLATION_DENIED, LIBFPTR_ERROR_CLOSE_RECEIPT_DENIED, LIBFPTR_ERROR_INVALID_ROUTE_NUMBER, LIBFPTR_ERROR_INVALID_START_ZONE_NUMBER, LIBFPTR_ERROR_INVALID_END_ZONE_NUMBER, LIBFPTR_ERROR_INVALID_RATE_TYPE, LIBFPTR_ERROR_INVALID_RATE, LIBFPTR_ERROR_FISCAL_MODULE_EXCHANGE, LIBFPTR_ERROR_NEED_TECHNICAL_SUPPORT, LIBFPTR_ERROR_SHIFT_NUMBERS_DID_NOT_MATCH, LIBFPTR_ERROR_DEVICE_NOT_FOUND, LIBFPTR_ERROR_EXTERNAL_DEVICE_CONNECTION, LIBFPTR_ERROR_DISPENSER_INVALID_STATE, LIBFPTR_ERROR_INVALID_POSITIONS_COUNT, LIBFPTR_ERROR_DISPENSER_INVALID_NUMBER, LIBFPTR_ERROR_INVALID_DIVIDER, LIBFPTR_ERROR_FN_ACTIVATION_DENIED, LIBFPTR_ERROR_PRINTER_OVERHEAT, LIBFPTR_ERROR_FN_EXCHANGE, LIBFPTR_ERROR_FN_INVALID_FORMAT, LIBFPTR_ERROR_FN_INVALID_STATE, LIBFPTR_ERROR_FN_FAULT, LIBFPTR_ERROR_FN_CRYPTO_FAULT, LIBFPTR_ERROR_FN_EXPIRED, LIBFPTR_ERROR_FN_OVERFLOW, LIBFPTR_ERROR_FN_INVALID_DATE_TIME, LIBFPTR_ERROR_FN_NO_MORE_DATA, LIBFPTR_ERROR_FN_TOTAL_OVERFLOW, LIBFPTR_ERROR_BUFFER_OVERFLOW, LIBFPTR_ERROR_PRINT_SECOND_COPY_DENIED, LIBFPTR_ERROR_NEED_RESET_JOURNAL, LIBFPTR_ERROR_TAX_SUM_TOO_MUCH, LIBFPTR_ERROR_TAX_ON_LAST_OPERATION_DENIED, LIBFPTR_ERROR_INVALID_FN_NUMBER, LIBFPTR_ERROR_TAX_CANCEL_DENIED, LIBFPTR_ERROR_LOW_BATTERY, LIBFPTR_ERROR_FN_INVALID_COMMAND, LIBFPTR_ERROR_FN_COMMAND_OVERFLOW, LIBFPTR_ERROR_FN_NO_TRANSPORT_CONNECTION, LIBFPTR_ERROR_FN_CRYPTO_HAS_EXPIRED, LIBFPTR_ERROR_FN_RESOURCE_HAS_EXPIRED, LIBFPTR_ERROR_INVALID_MESSAGE_FROM_OFD, LIBFPTR_ERROR_FN_HAS_NOT_SEND_DOCUMENTS, LIBFPTR_ERROR_FN_TIMEOUT, LIBFPTR_ERROR_FN_SHIFT_EXPIRED, LIBFPTR_ERROR_FN_INVALID_TIME_DIFFERENCE, LIBFPTR_ERROR_INVALID_TAXATION_TYPE, LIBFPTR_ERROR_INVALID_TAX_TYPE, LIBFPTR_ERROR_INVALID_COMMODITY_PAYMENT_TYPE, LIBFPTR_ERROR_INVALID_COMMODITY_CODE_TYPE, LIBFPTR_ERROR_EXCISABLE_COMMODITY_DENIED, LIBFPTR_ERROR_FISCAL_PROPERTY_WRITE, LIBFPTR_ERROR_INVALID_COUNTER_TYPE, LIBFPTR_ERROR_CUTTER_FAULT, LIBFPTR_ERROR_REPORT_INTERRUPTED, LIBFPTR_ERROR_INVALID_LEFT_MARGIN, LIBFPTR_ERROR_INVALID_ALIGNMENT, LIBFPTR_ERROR_INVALID_TAX_MODE, LIBFPTR_ERROR_FILE_NOT_FOUND, LIBFPTR_ERROR_PICTURE_TOO_BIG, LIBFPTR_ERROR_INVALID_BARCODE_PARAMS, LIBFPTR_ERROR_FISCAL_PROPERTY_DENIED, LIBFPTR_ERROR_FN_INTERFACE, LIBFPTR_ERROR_DATA_DUPLICATE, LIBFPTR_ERROR_NO_REQUIRED_FISCAL_PROPERTY, LIBFPTR_ERROR_FN_READ_DOCUMENT, LIBFPTR_ERROR_FLOAT_OVERFLOW, LIBFPTR_ERROR_INVALID_SETTING_VALUE, LIBFPTR_ERROR_HARD_FAULT, LIBFPTR_ERROR_FN_NOT_FOUND, LIBFPTR_ERROR_INVALID_AGENT_FISCAL_PROPERTY, LIBFPTR_ERROR_INVALID_FISCAL_PROPERTY_VALUE_1002_1056, LIBFPTR_ERROR_INVALID_FISCAL_PROPERTY_VALUE_1002_1017, LIBFPTR_ERROR_SCRIPT, LIBFPTR_ERROR_INVALID_USER_MEMORY_INDEX, LIBFPTR_ERROR_NO_ACTIVE_OPERATOR, LIBFPTR_ERROR_REGISTRATION_REPORT_INTERRUPTED, LIBFPTR_ERROR_CLOSE_FN_REPORT_INTERRUPTED, LIBFPTR_ERROR_OPEN_SHIFT_REPORT_INTERRUPTED, LIBFPTR_ERROR_OFD_EXCHANGE_REPORT_INTERRUPTED, LIBFPTR_ERROR_CLOSE_RECEIPT_INTERRUPTED, LIBFPTR_ERROR_FN_QUERY_INTERRUPTED, LIBFPTR_ERROR_RTC_FAULT, LIBFPTR_ERROR_MEMORY_FAULT, LIBFPTR_ERROR_CHIP_FAULT, LIBFPTR_ERROR_TEMPLATES_CORRUPTED, LIBFPTR_ERROR_INVALID_MAC_ADDRESS, LIBFPTR_ERROR_INVALID_SCRIPT_NUMBER, LIBFPTR_ERROR_SCRIPTS_FAULT, LIBFPTR_ERROR_INVALID_SCRIPTS_VERSION, LIBFPTR_ERROR_INVALID_CLICHE_FORMAT, LIBFPTR_ERROR_WAIT_FOR_REBOOT, LIBFPTR_ERROR_NO_LICENSE, LIBFPTR_ERROR_INVALID_FFD_VERSION, LIBFPTR_ERROR_CHANGE_SETTING_DENIED, LIBFPTR_ERROR_INVALID_NOMENCLATURE_TYPE, LIBFPTR_ERROR_INVALID_GTIN, LIBFPTR_ERROR_NEGATIVE_MATH_RESULT, LIBFPTR_ERROR_FISCAL_PROPERTIES_COMBINATION, LIBFPTR_ERROR_OPERATOR_LOGIN, LIBFPTR_ERROR_INVALID_INTERNET_CHANNEL, LIBFPTR_ERROR_DATETIME_NOT_SYNCRONIZED, LIBFPTR_ERROR_JOURNAL, LIBFPTR_ERROR_DENIED_IN_OPENED_DOC, LIBFPTR_ERROR_DENIED_IN_CLOSED_DOC, LIBFPTR_ERROR_LICENSE_MEMORY_OVERFLOW, LIBFPTR_ERROR_NEED_CANCEL_DOCUMENT, LIBFPTR_ERROR_REGISTERS_NOT_INITIALIZED, LIBFPTR_ERROR_TOTAL_REQUIRED, LIBFPTR_ERROR_SETTINGS_FAULT, LIBFPTR_ERROR_COUNTERS_FAULT, LIBFPTR_ERROR_USER_MEMORY_FAULT, LIBFPTR_ERROR_SERVICE_COUNTERS_FAULT, LIBFPTR_ERROR_ATTRIBUTES_FAULT, LIBFPTR_ERROR_ALREADY_IN_UPDATE_MODE, LIBFPTR_ERROR_INVALID_FIRMWARE, LIBFPTR_ERROR_INVALID_CHANNEL, LIBFPTR_ERROR_INTERFACE_DOWN, LIBFPTR_ERROR_INVALID_FISCAL_PROPERTY_VALUE_1212_1030, LIBFPTR_ERROR_INVALID_FISCAL_PROPERTY_VALUE_1214, LIBFPTR_ERROR_INVALID_FISCAL_PROPERTY_VALUE_1212, LIBFPTR_ERROR_SYNC_TIME, LIBFPTR_ERROR_VAT18_VAT20_IN_RECEIPT, LIBFPTR_ERROR_PICTURE_NOT_CLOSED, LIBFPTR_ERROR_INTERFACE_BUSY, LIBFPTR_ERROR_INVALID_PICTURE_NUMBER, LIBFPTR_ERROR_INVALID_CONTAINER, LIBFPTR_ERROR_ARCHIVE_CLOSED, LIBFPTR_ERROR_NEED_REGISTRATION, LIBFPTR_ERROR_DENIED_DURING_UPDATE, LIBFPTR_ERROR_INVALID_TOTAL, LIBFPTR_ERROR_MARKING_CODE_CONFLICT, LIBFPTR_ERROR_INVALID_RECORDS_ID, LIBFPTR_ERROR_INVALID_SIGNATURE, LIBFPTR_ERROR_INVALID_EXCISE_SUM, LIBFPTR_ERROR_NO_DOCUMENTS_FOUND_IN_JOURNAL, LIBFPTR_ERROR_INVALID_SCRIPT_TYPE, LIBFPTR_ERROR_INVALID_SCRIPT_NAME, LIBFPTR_ERROR_INVALID_POSITIONS_COUNT_WITH_1162, LIBFPTR_ERROR_INVALID_UC_COUNTER, LIBFPTR_ERROR_INVALID_UC_TAG, LIBFPTR_ERROR_INVALID_UC_IDX, LIBFPTR_ERROR_INVALID_UC_SIZE, LIBFPTR_ERROR_INVALID_UC_CONFIG, LIBFPTR_ERROR_CONNECTION_LOST, LIBFPTR_ERROR_UNIVERSAL_COUNTERS_FAULT, LIBFPTR_ERROR_INVALID_TAX_SUM, LIBFPTR_ERROR_INVALID_MARKING_CODE_TYPE, LIBFPTR_ERROR_LICENSE_HARD_FAULT, LIBFPTR_ERROR_LICENSE_INVALID_SIGN, LIBFPTR_ERROR_LICENSE_INVALID_SERIAL, LIBFPTR_ERROR_LICENSE_INVALID_TIME, LIBFPTR_ERROR_DOCUMENT_CANCELED, LIBFPTR_ERROR_INVALID_SCRIPT_PARAMS, LIBFPTR_ERROR_CLICHE_TOO_LONG, LIBFPTR_ERROR_COMMODITIES_TABLE_FAULT, LIBFPTR_ERROR_COMMODITIES_TABLE, LIBFPTR_ERROR_COMMODITIES_TABLE_INVALID_TAG, LIBFPTR_ERROR_COMMODITIES_TABLE_INVALID_TAG_SIZE, LIBFPTR_ERROR_COMMODITIES_TABLE_NO_TAG_DATA, LIBFPTR_ERROR_COMMODITIES_TABLE_NO_FREE_MEMORY, LIBFPTR_ERROR_INVALID_CACHE, LIBFPTR_ERROR_SCHEDULER_NOT_READY, LIBFPTR_ERROR_SCHEDULER_INVALID_TASK, LIBFPTR_ERROR_MINIPOS_NO_POSITION_PAYMENT, LIBFPTR_ERROR_MINIPOS_COMMAND_TIME_OUT, LIBFPTR_ERROR_MINIPOS_MODE_FR_DISABLED, LIBFPTR_ERROR_ENTRY_NOT_FOUND_IN_OTP, LIBFPTR_ERROR_EXCISABLE_COMMODITY_WITHOUT_EXCISE, LIBFPTR_ERROR_BARCODE_TYPE_NOT_SUPPORTED, LIBFPTR_ERROR_OVERLAY_DATA_OVERFLOW, LIBFPTR_ERROR_INVALID_MODULE_ADDRESS, LIBFPTR_ERROR_ECR_MODEL_NOT_SUPPORTED, LIBFPTR_ERROR_BASE_MARKING = 400, LIBFPTR_ERROR_MARKING_CODE_VALIDATION_IN_PROGRESS, LIBFPTR_ERROR_NO_CONNECTION_WITH_SERVER, LIBFPTR_ERROR_MARKING_CODE_VALIDATION_CANCELED, LIBFPTR_ERROR_INVALID_MARKING_CODE_STATUS, LIBFPTR_ERROR_INVALID_GS1, LIBFPTR_ERROR_MARKING_WORK_DENIED, LIBFPTR_ERROR_MARKING_WORK_TEMPORARY_BLOCKED, LIBFPTR_ERROR_MARKS_OVERFLOW, LIBFPTR_ERROR_INVALID_MARKING_CODE, LIBFPTR_ERROR_INVALID_STATE, LIBFPTR_ERROR_OFD_EXCHANGE, LIBFPTR_ERROR_INVALID_MEASUREMENT_UNIT, LIBFPTR_ERROR_OPERATION_DENIED_IN_CURRENT_FFD, LIBFPTR_ERROR_MARKING_OPERATION_DENIED, LIBFPTR_ERROR_NO_DATA_TO_SEND, LIBFPTR_ERROR_NO_MARKED_POSITION, LIBFPTR_ERROR_HAS_NOT_SEND_NOTICES, LIBFPTR_ERROR_UPDATE_KEYS_REQUIRED, LIBFPTR_ERROR_UPDATE_KEYS_SERVICE, LIBFPTR_ERROR_MARK_NOT_CHECKED, LIBFPTR_ERROR_MARK_CHECK_TIMEOUT_EXPIRED, LIBFPTR_ERROR_NO_MARKING_CODE_IN_TABLE, LIBFPTR_ERROR_CHEKING_MARK_IN_PROGRESS, LIBFPTR_ERROR_INVALID_SERVER_ADDRESS, LIBFPTR_ERROR_UPDATE_KEYS_TIMEOUT, LIBFPTR_ERROR_PROPERTY_FOR_MARKING_POSITION_ONLY, LIBFPTR_ERROR_MARKING_END = 499, LIBFPTR_ERROR_BASE_WEB = 500, LIBFPTR_ERROR_RECEIPT_PARSE_ERROR, LIBFPTR_ERROR_INTERRUPTED_BY_PREVIOUS_ERRORS, LIBFPTR_ERROR_DRIVER_SCRIPT_ERROR, LIBFPTR_ERROR_VALIDATE_FUNC_NOT_FOUND, LIBFPTR_ERROR_WEB_FAIL, LIBFPTR_ERROR_WEB_END = 599, LIBFPTR_ERROR_BASE_RPC = 600, LIBFPTR_ERROR_RCP_SERVER_BUSY, LIBFPTR_ERROR_RCP_SERVER_VERSION, LIBFPTR_ERROR_RCP_SERVER_EXCHANGE, LIBFPTR_ERROR_RPC_END = 699, LIBFPTR_ERROR_USERS_SCRIPTS_BASE = 1000, LIBFPTR_ERROR_USERS_SCRIPTS_END = 1999, } // @ts-ignore export const ErrorCodes = { 0: «Ошибок нет», 1: «Соединение не установлено», 2: «Нет связи», 3: «Порт занят», 4: «Порт недоступен», 5: «Некорректные данные от устройства», 6: «Внутренняя ошибка библиотеки», 7: «Неподдерживаемое преобразование типа параметра», 8: «Не найден обязательный параметр», 9: «Некорректные настройки», 10: «Драйвер не настроен», 11: «Не поддерживается в данной версии (драйвера или ККТ)», 12: «Не поддерживается в данном режиме», 13: «Нeкорректное значение параметра», 14: «Не удалось загрузить библиотеку», 15: «Неизвестная ошибка», 16: «Неверная цена (сумма)», 17: «Неверное количество», 18: «Переполнение счетчика наличности», 19: «Невозможно сторно последней операции», 20: «Сторно по коду невозможно», 21: «Невозможен повтор последней операции», 22: «Повторная скидка на операцию невозможна», 23: «Невозможно начислить скидку/надбавку», 24: «Неверный код товара», 25: «Неверный штрихкод товара», 26: «Неверный формат команды», 27: «Неверная длина», 28: «ККТ заблокирована в режиме ввода даты», 29: «Требуется подтверждение ввода даты», 30: «Нет больше данных», 31: «Нет подтверждения или отмены продажи», 32: «Отчет о закрытии смены прерван», 33: «Отключение контроля наличности невозможно (не настроены необходимые типы оплаты)», 34: «Вход в режим заблокирован», 35: «Проверьте дату и время», 36: «Переданные дата/время меньше даты/времени последнего фискального документа», 37: «Невозможно закрыть архив», 38: «Товар не найден», 39: «Весовой штрихкод с количеством <> 1.000», 40: «Переполнение буфера чека», 41: «Недостаточное количество товара», 42: «Сторнируемое количество больше проданного», 43: «Товар не найден», 44: «Нет бумаги», 45: «Открыта крышка», 46: «Нет связи с принтером чеков», 47: «Механическая ошибка печатающего устройства», 48: «Неверный тип чека», 49: «Недопустимое целевое устройство», 50: «Нет места в массиве картинок/штрихкодов», 51: «Неверный номер картинки/штрихкода (картинка/штрихкод отсутствует)», 52: «Сумма не наличных платежей превышает сумму чека», 53: «Накопление меньше суммы возврата или аннулирования», 54: «Переполнение суммы платежей», 55: «Предыдущая операция незавершена», 56: «Ошибка GSM- модуля», 57: «Неверная величина скидки / надбавки», 58: «Операция после скидки / надбавки невозможна», 59: «Неверная секция», 60: «Неверный вид оплаты», 61: «Переполнение при умножении», 62: «Операция запрещена в таблице настроек», 63: «Переполнение итога чека», 64: «Открыт чек аннулирования – операция невозможна», 65: «Переполнение буфера ЭЖ», 66: «Чек оплачен не полностью», 67: «Открыт чек возврата – операция невозможна», 68: «Смена превысила 24 часа», 69: «Открыт чек продажи – операция невозможна», 70: «Переполнение ФП», 71: «Неверный пароль», 72: «Идет обработка ЭЖ», 73: «Смена закрыта — операция невозможна», 74: «Неверный номер таблицы», 75: «Неверный номер ряда», 76: «Неверный номер поля», 77: «Неверная дата и/или время», 78: «Неверная сумма сторно», 79: «Подсчет суммы сдачи невозможен», 80: «В ККТ нет денег для выплаты», 81: «Чек закрыт – операция невозможна», 82: «Чек открыт – операция невозможна», 83: «Смена открыта, операция невозможна», 84: «Серийный номер / MAC- адрес уже задан», 85: «Исчерпан лимит перерегистраций», 86: «Неверный номер смены», 87: «Недопустимый серийный номер ККТ», 88: «Недопустимый РНМ и/или ИНН», 89: «ККТ не зарегистрирована», 90: «Не задан серийный номер», 91: «Нет отчетов», 92: «Режим не активизирован», 93: «Данные документа отсутствуют», 94: «Некорректный код защиты / лицензия или номер», 95: «Требуется выполнение общего гашения», 96: «Команда не разрешена введенными кодами защиты / лицензиями ККТ», 97: «Невозможна отмена скидки/надбавки», 98: «Невозможно закрыть чек данным типом оплаты», 99: «Неверный номер маршрута», 100: «Неверный номер начальной зоны», 101: «Неверный номер конечной зоны», 102: «Неверный тип тарифа», 103: «Неверный тариф», 104: «Ошибка обмена с фискальным модулем», 105: «Необходимо провести профилактические работы», 106: «Неверные номера смен в ККТ и ФН», 107: «Нет устройства, обрабатывающего данную команду», 108: «Нет связи с внешним устройством», 109: «Ошибочное состояние ТРК», 110: «Недопустимое кол- во позиций в чеке», 111: «Ошибочный номер ТРК», 112: «Неверный делитель», 113: «Активация данного ФН в составе данной ККТ невозможна», 114: «Перегрев головки принтера», 115: «Ошибка обмена с ФН на уровне интерфейса I2C», 116: «Ошибка формата передачи ФН», 117: «Неверное состояние ФН», 118: «Неисправимая ошибка ФН», 119: «Ошибка КС ФН», 120: «Закончен срок эксплуатации ФН», 121: «Архив ФН переполнен», 122: «В ФН переданы неверная дата или время», 123: «В ФН нет запрошенных данных», 124: «Переполнение ФН (итог чека / смены)», 125: «Буфер переполнен», 126: «Невозможно напечатать вторую фискальную копию», 127: «Требуется гашение ЭЖ», 128: «Некорректная сумма налога», 129: «Начисление налога на последнюю операцию невозможно», 130: «Неверный номер ФН», 131: «Сумма сторно налога больше суммы зарегистрированного налога данного типа», 132: «Операция невозможна, недостаточно питания», 133: «Некорректное значение параметров команды ФН», 134: «Превышение размеров TLV данных ФН», 135: «Нет транспортного соединения ФН», 136: «Исчерпан ресурс КС ФН», 137: «Ресурс хранения ФД исчерпан», 138: «Сообщение от ОФД не может быть принято ФН», 139: «В ФН есть неотправленные ФД», 140: «Исчерпан ресурс ожидания передачи сообщения в ФН», 141: «Продолжительность смены ФН более 24 часов», 142: «Неверная разница во времени между двумя операциями ФН», 143: «Некорректная СНО», 144: «Недопустимый номер ставки налога», 145: «Недопустимый тип оплаты товара», 146: «Недопустимый тип кода товара», 147: «Недопустима регистрация подакцизного товара», 148: «Ошибка программирования реквизита», 149: «Неверный тип счетчика», 150: «Ошибка отрезчика», 151: «Снятие отчета прервалось», 152: «Недопустимое значение отступа слева», 153: «Недопустимое значение выравнивания», 154: «Недопустимое значение режима работы с налогом», 155: «Файл не найден или неверный формат», 156: «Размер картинки слишком большой», 157: «Не удалось сформировать штрихкод», 158: «Неразрешенные реквизиты», 159: «Ошибка интерфейса ФН», 160: «Дублирование данных», 161: «Не указаны обязательные реквизиты», 162: «Ошибка чтения документа из ФН», 163: «Переполнение чисел с плавающей точкой», 164: «Неверное значение параметра ККТ», 165: «Внутренняя ошибка ККТ», 166: «ФН не найден», 167: «Невозможно записать реквизит агента», 168: «Недопустимое сочетания реквизитов 1002 и 1056», 169: «Недопустимое сочетания реквизитов 1002 и 1017», 170: «Ошибка скриптового движка ККТ», 171: «Неверный номер пользовательской ячейки памяти», 172: «Кассир не зарегистрирован», 173: «Отчет о регистрации ККТ прерван», 174: «Отчет о закрытии ФН прерван», 175: «Отчет об открытии смены прерван», 176: «Отчет о состоянии расчетов прерван», 177: «Закрытие чека прервано», 178: «Получение документа из ФН прервано», 179: «Сбой часов», 180: «Сбой памяти», 181: «Сбой микросхемы», 182: «Ошибка шаблонов документов», 183: «Недопустимое значение MAC- адреса», 184: «Неверный тип (номер) шаблона», 185: «Загруженные шаблоны повреждены или отсутствуют», 186: «Несовместимая версия загруженных шаблонов», 187: «Ошибка в формате клише», 188: «Требуется перезагрузка ККТ», 189: «Подходящие лицензии не найдены», 190: «Неверная версия ФФД», 191: «Параметр доступен только для чтения», 192: «Неверный тип кода товара», 193: «Неверное значение GTIN», 194: «Отрицательный результат математической операции», 195: «Недопустимое сочетание реквизитов», 196: «Ошибка регистрации кассира», 197: «Данный канал Интернет отсутствует в ККТ», 198: «Дата и время не синхронизированы», 199: «Ошибка электронного журнала», 200: «Документ открыт — операция невозможна», 201: «Документ закрыт — операция невозможна», 202: «Нет места для сохранения лицензий», 203: «Произошла критичная ошибка, документ необходимо отменить», 204: «Регистры ККТ еще не инициализированы», 205: «Требуется регистрация итога», 206: «Сбой таблицы настроек», 207: «Сбой счетчиков и регистров ККТ», 208: «Сбой пользовательской памяти», 209: «Сбой сервисных регистров», 210: «Сбой реквизитов ККТ», 211: «ККТ уже в режиме обновления конфигурации», 212: «Конфигурация не прошла проверку», 213: «Аппаратный канал отсутствует, выключен или ещё не проинициализирован», 214: «Сетевой интерфейс не подключен, или на нём не получен IP-адрес», 215: «Недопустимое сочетание реквизитов 1212 и 1030», 216: «Некорректный признак способа расчета», 217: «Некорректный признак предмета расчета», 218: «Ошибка синхронизации времени», 219: «В одном чеке одновременно не может быть позиций с НДС 18% (18/118) и НДС 20% (20/120)», 220: «Картинка не закрыта», 221: «Сетевой интерфейс занят», 222: «Неверный номер картинки», 223: «Ошибка проверки контейнера», 224: «Архив ФН закрыт», 225: «Нужно выполнить регистрацию / перерегистрацию», 226: «Операция невозможна, идет обновление ПО ККТ», 227: «Неверный итог чека», 228: «Запрещена одновременная передача КМ и реквизита 1162», 229: «Набор записей по заданному идентификатору не найден», 230: «Ошибка цифровой подписи», 231: «Некорректная сумма акциза», 232: «Заданный диапазон документов не найден в БД документов», 233: «Неподдерживаемый тип скрипта», 234: «Некорректный идентификатор скрипта», 235: «Кол-во позиций с реквизитом 1162 в автономном режиме превысило разрешенный лимит», 236: «Универсальный счетчик с заданными параметрами недоступен», 237: «Неподдерживаемый тег для универсальных счетчиков», 238: «Некорректный индекс для универсальных счетчиков», 239: «Неверный размер универсального счетчика», 240: «Неверная конфигурация универсальных счетчиков», 241: «Соединение с ККТ потеряно», 242: «Ошибка универсальных счетчиков», 243: «Некорректная сумма налога», 244: «Некорректное значение типа кода маркировки», 245: «Аппаратная ошибка при сохранении лицензии», 246: «Подпись лицензии некорректна», 247: «Лицензия не подходит для данной ККТ», 248: «Срок действия лицензии истёк», 249: «Документ был отменен», 250: «Некорректные параметры скрипта», 251: «Длина клише превышает максимальное значение», 252: «Ошибка таблицы товаров», 253: «Общая ошибка таблицы товаров», 254: «Некорректный тег для таблицы товаров», 255: «Некорректный размер тега для таблицы товаров», 256: «Нет данных по тегу в таблице товаров», 257: «Нет места в динамической области памяти таблицы товаров», 258: «Ошибка чтения/записи данных кеша», 259: «Функции планировщика заданий не доступны», 260: «Неизвестный тип задания планировщика», 261: «Отсутствует позиция оплаты», 262: «Таймаут выполнения команды истек», 263: «Режим ФР выключен», 264: «Не найдена запись в OTP», 265: «Подакцизный товар без акциза зарегистрирован в чеке», 401: «Процедура проверки КМ уже запущена», 402: «Ошибка соединения с сервером», 403: «Процедура проверки КМ прервана», 404: «Некорректное значение статуса КМ», 405: «Неверный код GS1», 406: «Запрещена работа с маркированным товарами», 407: «Работа с маркированными товарами временно заблокирована», 408: «Переполнена таблица хранения КМ», 409: «Некорректный код маркировки», 410: «Неверное состояние», 411: «Ошибка обмена с сервером ОФД или ИСМ», 412: «Некорректное значение единиц измерения», 413: «Операция не разрешена в данной версии ФФД», 414: «Операция не разрешена, при регистрации не был установлен признак ТМТ», 415: «Нет данных для отправки», 416: «Нет маркированных позиций в чеке», 417: «Имеются неотправленные уведомления», 418: «Требуется повторное проведение процедуры обновления ключей», 419: «Ошибка сервиса обновления ключей проверки КМ», 420: «КМ не проверен в ФН», 421: «Истёк таймаут проверки КМ», 422: «Данный КМ отсутствует в таблице», 501: «Ошибка парсинга чека / запроса», 502: «Выполнение прервано из-за предыдущих ошибок», 503: «Ошибка скрипта драйвера», 504: «Функция проверки задания не найдена», 505: «Выполняется проверка КМ», } as const export enum Param { LIBFPTR_PARAM_FIRST = 65536, LIBFPTR_PARAM_TEXT = LIBFPTR_PARAM_FIRST, LIBFPTR_PARAM_TEXT_WRAP, LIBFPTR_PARAM_ALIGNMENT, LIBFPTR_PARAM_FONT, LIBFPTR_PARAM_FONT_DOUBLE_WIDTH, LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT, LIBFPTR_PARAM_LINESPACING, LIBFPTR_PARAM_BRIGHTNESS, LIBFPTR_PARAM_MODEL, LIBFPTR_PARAM_RECEIPT_TYPE, LIBFPTR_PARAM_REPORT_TYPE, LIBFPTR_PARAM_MODE, LIBFPTR_PARAM_EXTERNAL_DEVICE_TYPE, LIBFPTR_PARAM_EXTERNAL_DEVICE_DATA, LIBFPTR_PARAM_FREQUENCY, LIBFPTR_PARAM_DURATION, LIBFPTR_PARAM_CUT_TYPE, LIBFPTR_PARAM_DRAWER_ON_TIMEOUT, LIBFPTR_PARAM_DRAWER_OFF_TIMEOUT, LIBFPTR_PARAM_DRAWER_ON_QUANTITY, LIBFPTR_PARAM_TIMEOUT_ENQ, LIBFPTR_PARAM_COMMAND_BUFFER, LIBFPTR_PARAM_ANSWER_BUFFER, LIBFPTR_PARAM_SERIAL_NUMBER, LIBFPTR_PARAM_MANUFACTURER_CODE, LIBFPTR_PARAM_NO_NEED_ANSWER, LIBFPTR_PARAM_INFO_DISCOUNT_SUM, LIBFPTR_PARAM_USE_ONLY_TAX_TYPE, LIBFPTR_PARAM_PAYMENT_TYPE, LIBFPTR_PARAM_PAYMENT_SUM, LIBFPTR_PARAM_REMAINDER, LIBFPTR_PARAM_CHANGE, LIBFPTR_PARAM_DEPARTMENT, LIBFPTR_PARAM_TAX_TYPE, LIBFPTR_PARAM_TAX_SUM, LIBFPTR_PARAM_TAX_MODE, LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY, LIBFPTR_PARAM_USER_PASSWORD, LIBFPTR_PARAM_SCALE, LIBFPTR_PARAM_LEFT_MARGIN, LIBFPTR_PARAM_BARCODE, LIBFPTR_PARAM_BARCODE_TYPE, LIBFPTR_PARAM_BARCODE_PRINT_TEXT, LIBFPTR_PARAM_BARCODE_VERSION, LIBFPTR_PARAM_BARCODE_CORRECTION, LIBFPTR_PARAM_BARCODE_COLUMNS, LIBFPTR_PARAM_BARCODE_INVERT, LIBFPTR_PARAM_HEIGHT, LIBFPTR_PARAM_WIDTH, LIBFPTR_PARAM_FILENAME, LIBFPTR_PARAM_PICTURE_NUMBER, LIBFPTR_PARAM_DATA_TYPE, LIBFPTR_PARAM_OPERATOR_ID, LIBFPTR_PARAM_LOGICAL_NUMBER, LIBFPTR_PARAM_DATE_TIME, LIBFPTR_PARAM_FISCAL, LIBFPTR_PARAM_SHIFT_STATE, LIBFPTR_PARAM_CASHDRAWER_OPENED, LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT, LIBFPTR_PARAM_COVER_OPENED, LIBFPTR_PARAM_SUBMODE, LIBFPTR_PARAM_RECEIPT_NUMBER, LIBFPTR_PARAM_DOCUMENT_NUMBER, LIBFPTR_PARAM_SHIFT_NUMBER, LIBFPTR_PARAM_RECEIPT_SUM, LIBFPTR_PARAM_RECEIPT_LINE_LENGTH, LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX, LIBFPTR_PARAM_MODEL_NAME, LIBFPTR_PARAM_UNIT_VERSION, LIBFPTR_PARAM_PRINTER_CONNECTION_LOST, LIBFPTR_PARAM_PRINTER_ERROR, LIBFPTR_PARAM_CUT_ERROR, LIBFPTR_PARAM_PRINTER_OVERHEAT, LIBFPTR_PARAM_UNIT_TYPE, LIBFPTR_PARAM_LICENSE_NUMBER, LIBFPTR_PARAM_LICENSE_ENTERED, LIBFPTR_PARAM_LICENSE, LIBFPTR_PARAM_SUM, LIBFPTR_PARAM_COUNT, LIBFPTR_PARAM_COUNTER_TYPE, LIBFPTR_PARAM_STEP_COUNTER_TYPE, LIBFPTR_PARAM_ERROR_TAG_NUMBER, LIBFPTR_PARAM_TABLE, LIBFPTR_PARAM_ROW, LIBFPTR_PARAM_FIELD, LIBFPTR_PARAM_FIELD_VALUE, LIBFPTR_PARAM_FN_DATA_TYPE, LIBFPTR_PARAM_TAG_NUMBER, LIBFPTR_PARAM_TAG_VALUE, LIBFPTR_PARAM_DOCUMENTS_COUNT, LIBFPTR_PARAM_FISCAL_SIGN, LIBFPTR_PARAM_DEVICE_FFD_VERSION, LIBFPTR_PARAM_FN_FFD_VERSION, LIBFPTR_PARAM_FFD_VERSION, LIBFPTR_PARAM_CHECK_SUM, LIBFPTR_PARAM_COMMODITY_NAME, LIBFPTR_PARAM_PRICE, LIBFPTR_PARAM_QUANTITY, LIBFPTR_PARAM_POSITION_SUM, LIBFPTR_PARAM_FN_TYPE, LIBFPTR_PARAM_FN_VERSION, LIBFPTR_PARAM_REGISTRATIONS_REMAIN, LIBFPTR_PARAM_REGISTRATIONS_COUNT, LIBFPTR_PARAM_NO_ERROR_IF_NOT_SUPPORTED, LIBFPTR_PARAM_OFD_EXCHANGE_STATUS, LIBFPTR_PARAM_FN_ERROR_DATA, LIBFPTR_PARAM_FN_ERROR_CODE, LIBFPTR_PARAM_ENVD_MODE, LIBFPTR_PARAM_DOCUMENT_CLOSED, LIBFPTR_PARAM_JSON_DATA, LIBFPTR_PARAM_COMMAND_SUBSYSTEM, LIBFPTR_PARAM_FN_OPERATION_TYPE, LIBFPTR_PARAM_FN_STATE, LIBFPTR_PARAM_ENVD_MODE_ENABLED, LIBFPTR_PARAM_SETTING_ID, LIBFPTR_PARAM_SETTING_VALUE, LIBFPTR_PARAM_MAPPING_KEY, LIBFPTR_PARAM_MAPPING_VALUE, LIBFPTR_PARAM_COMMODITY_PIECE, LIBFPTR_PARAM_POWER_SOURCE_TYPE, LIBFPTR_PARAM_BATTERY_CHARGE, LIBFPTR_PARAM_VOLTAGE, LIBFPTR_PARAM_USE_BATTERY, LIBFPTR_PARAM_BATTERY_CHARGING, LIBFPTR_PARAM_CAN_PRINT_WHILE_ON_BATTERY, LIBFPTR_PARAM_MAC_ADDRESS, LIBFPTR_PARAM_FN_FISCAL, LIBFPTR_PARAM_NETWORK_ERROR, LIBFPTR_PARAM_OFD_ERROR, LIBFPTR_PARAM_FN_ERROR, LIBFPTR_PARAM_COMMAND_CODE, LIBFPTR_PARAM_PRINTER_TEMPERATURE, LIBFPTR_PARAM_RECORDS_TYPE, LIBFPTR_PARAM_OFD_FISCAL_SIGN, LIBFPTR_PARAM_HAS_OFD_TICKET, LIBFPTR_PARAM_NO_SERIAL_NUMBER, LIBFPTR_PARAM_RTC_FAULT, LIBFPTR_PARAM_SETTINGS_FAULT, LIBFPTR_PARAM_COUNTERS_FAULT, LIBFPTR_PARAM_USER_MEMORY_FAULT, LIBFPTR_PARAM_SERVICE_COUNTERS_FAULT, LIBFPTR_PARAM_ATTRIBUTES_FAULT, LIBFPTR_PARAM_FN_FAULT, LIBFPTR_PARAM_INVALID_FN, LIBFPTR_PARAM_HARD_FAULT, LIBFPTR_PARAM_MEMORY_MANAGER_FAULT, LIBFPTR_PARAM_SCRIPTS_FAULT, LIBFPTR_PARAM_FULL_RESET, LIBFPTR_PARAM_WAIT_FOR_REBOOT, LIBFPTR_PARAM_SCALE_PERCENT, LIBFPTR_PARAM_FN_NEED_REPLACEMENT, LIBFPTR_PARAM_FN_RESOURCE_EXHAUSTED, LIBFPTR_PARAM_FN_MEMORY_OVERFLOW, LIBFPTR_PARAM_FN_OFD_TIMEOUT, LIBFPTR_PARAM_FN_CRITICAL_ERROR, LIBFPTR_PARAM_OFD_MESSAGE_READ, LIBFPTR_PARAM_DEVICE_MIN_FFD_VERSION, LIBFPTR_PARAM_DEVICE_MAX_FFD_VERSION, LIBFPTR_PARAM_DEVICE_UPTIME, LIBFPTR_PARAM_NOMENCLATURE_TYPE, LIBFPTR_PARAM_GTIN, LIBFPTR_PARAM_FN_DOCUMENT_TYPE, LIBFPTR_PARAM_NETWORK_ERROR_TEXT, LIBFPTR_PARAM_FN_ERROR_TEXT, LIBFPTR_PARAM_OFD_ERROR_TEXT, LIBFPTR_PARAM_USER_SCRIPT_ID, LIBFPTR_PARAM_USER_SCRIPT_PARAMETER, LIBFPTR_PARAM_USER_MEMORY_OPERATION, LIBFPTR_PARAM_USER_MEMORY_DATA, LIBFPTR_PARAM_USER_MEMORY_STRING, LIBFPTR_PARAM_USER_MEMORY_ADDRESS, LIBFPTR_PARAM_FN_PRESENT, LIBFPTR_PARAM_BLOCKED, LIBFPTR_PARAM_DOCUMENT_PRINTED, LIBFPTR_PARAM_DISCOUNT_SUM, LIBFPTR_PARAM_SURCHARGE_SUM, LIBFPTR_PARAM_LK_USER_CODE, LIBFPTR_PARAM_LICENSE_COUNT, LIBFPTR_PARAM_DEFER, LIBFPTR_PARAM_CAP_54FZ, LIBFPTR_PARAM_CAP_MANUAL_CLICHE_CONTROL, LIBFPTR_PARAM_CAP_PAYMENTS_COUNT, LIBFPTR_PARAM_FIRMWARE_CHUNK_SIZE, LIBFPTR_PARAM_FIRMWARE_CHUNK_DATA, LIBFPTR_PARAM_FN_FLAGS, LIBFPTR_PARAM_PRINT_FOOTER, LIBFPTR_PARAM_PUBLIC_KEY, LIBFPTR_PARAM_MAGIC_NUMBER, LIBFPTR_PARAM_SIGN, LIBFPTR_PARAM_SOFT_NAME, LIBFPTR_PARAM_SESSION_CODE, LIBFPTR_PARAM_ETHERNET_CONFIG_TIMEOUT, LIBFPTR_PARAM_ETHERNET_DHCP, LIBFPTR_PARAM_ETHERNET_IP, LIBFPTR_PARAM_ETHERNET_MASK, LIBFPTR_PARAM_ETHERNET_GATEWAY, LIBFPTR_PARAM_ETHERNET_PORT, LIBFPTR_PARAM_ETHERNET_DNS_IP, LIBFPTR_PARAM_ETHERNET_DNS_STATIC, LIBFPTR_PARAM_STORE_IN_JOURNAL, LIBFPTR_PARAM_NEW_PLATFORM, LIBFPTR_PARAM_UNIT_RELEASE_VERSION, LIBFPTR_PARAM_USE_VAT18, LIBFPTR_PARAM_TAG_NAME, LIBFPTR_PARAM_TAG_TYPE, LIBFPTR_PARAM_TAG_IS_COMPLEX, LIBFPTR_PARAM_TAG_IS_REPEATABLE, LIBFPTR_PARAM_SHIFT_AUTO_OPENED, LIBFPTR_PARAM_CONTAINER_FIRMWARE_VERSION, LIBFPTR_PARAM_CONTAINER_CONFIGURATION_VERSION, LIBFPTR_PARAM_CONTAINER_BOOTLOADER_VERSION, LIBFPTR_PARAM_CONTAINER_SCRIPTS_VERSION, LIBFPTR_PARAM_PAPER_NEAR_END, LIBFPTR_PARAM_REPORT_ELECTRONICALLY, LIBFPTR_PARAM_ACTIVATION_METHOD, LIBFPTR_PARAM_KEYS, LIBFPTR_PARAM_UIN, LIBFPTR_PARAM_VERSION, LIBFPTR_PARAM_PUBLIC_KEY_SIGN, LIBFPTR_PARAM_CAP_DISABLE_PRINT_REPORTS, LIBFPTR_PARAM_REGISTRATION_NUMBER, LIBFPTR_PARAM_PIXEL_BUFFER, LIBFPTR_PARAM_REPEAT_NUMBER, LIBFPTR_PARAM_FIELD_TYPE, LIBFPTR_PARAM_MARKING_CODE, LIBFPTR_PARAM_CONTAINER_DIRECT_BOOT_VERSION, LIBFPTR_PARAM_SCRIPT_NAME, LIBFPTR_PARAM_SCRIPT_HASH, LIBFPTR_PARAM_RECORDS_ID, LIBFPTR_PARAM_USER_SCRIPT_RESULT_1, LIBFPTR_PARAM_USER_SCRIPT_RESULT_2, LIBFPTR_PARAM_USER_SCRIPT_RESULT_3, LIBFPTR_PARAM_USER_SCRIPT_RESULT_4, LIBFPTR_PARAM_USER_SCRIPT_RESULT_5, LIBFPTR_PARAM_IS_USER_SCRIPT, LIBFPTR_PARAM_DOCUMENT_NUMBER_END, LIBFPTR_PARAM_SHIFT_NUMBER_END, LIBFPTR_PARAM_SCRIPT_CODE, LIBFPTR_PARAM_SCRIPT_RESULT, LIBFPTR_PARAM_SCRIPT_TYPE, LIBFPTR_PARAM_WIFI_CONFIG_TIMEOUT, LIBFPTR_PARAM_WIFI_DHCP, LIBFPTR_PARAM_WIFI_IP, LIBFPTR_PARAM_WIFI_MASK, LIBFPTR_PARAM_WIFI_GATEWAY, LIBFPTR_PARAM_WIFI_PORT, LIBFPTR_PARAM_UC_VERSION, LIBFPTR_PARAM_UC_AVAILABLE_MEMORY, LIBFPTR_PARAM_UC_USED_MEMORY_BY_SUMS, LIBFPTR_PARAM_UC_USED_MEMORY_BY_QUANTITIES, LIBFPTR_PARAM_UC_LAYER_1, LIBFPTR_PARAM_UC_FLAGS_1, LIBFPTR_PARAM_UC_MASK_1, LIBFPTR_PARAM_UC_LAYER_VALUE_1, LIBFPTR_PARAM_UC_LAYER_2, LIBFPTR_PARAM_UC_FLAGS_2, LIBFPTR_PARAM_UC_MASK_2, LIBFPTR_PARAM_UC_LAYER_VALUE_2, LIBFPTR_PARAM_UC_LAYER_3, LIBFPTR_PARAM_UC_FLAGS_3, LIBFPTR_PARAM_UC_MASK_3, LIBFPTR_PARAM_UC_LAYER_VALUE_3, LIBFPTR_PARAM_UC_LAYER_4, LIBFPTR_PARAM_UC_FLAGS_4, LIBFPTR_PARAM_UC_MASK_4, LIBFPTR_PARAM_UC_LAYER_VALUE_4, LIBFPTR_PARAM_RECEIPTS_COUNT, LIBFPTR_PARAM_PAYMENTS_SUM_CASH, LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY, LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID, LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT, LIBFPTR_PARAM_PAYMENTS_SUM_OTHER, LIBFPTR_PARAM_TAXES_SUM_VAT20, LIBFPTR_PARAM_TAXES_SUM_VAT120, LIBFPTR_PARAM_TAXES_SUM_VAT10, LIBFPTR_PARAM_TAXES_SUM_VAT110, LIBFPTR_PARAM_TAXES_SUM_VAT0, LIBFPTR_PARAM_TAXES_SUM_NO, LIBFPTR_PARAM_CORRECTIONS_COUNT, LIBFPTR_PARAM_CORRECTIONS_SUM, LIBFPTR_PARAM_FN_COUNTERS_TYPE, LIBFPTR_PARAM_FN_DAYS_REMAIN, LIBFPTR_PARAM_FREE_MEMORY, LIBFPTR_PARAM_FN_MAX_FFD_VERSION, LIBFPTR_PARAM_RECEIPTS_SUM, LIBFPTR_PARAM_LICENSE_NAME, LIBFPTR_PARAM_UNIVERSAL_COUNTERS_FAULT, LIBFPTR_PARAM_USE_LICENSES, LIBFPTR_PARAM_LICENSE_VALID_FROM, LIBFPTR_PARAM_LICENSE_VALID_UNTIL, LIBFPTR_PARAM_MARKING_CODE_TYPE, LIBFPTR_PARAM_SETTING_NAME, LIBFPTR_PARAM_SETTING_TYPE, LIBFPTR_PARAM_FONT_WIDTH, LIBFPTR_PARAM_REMOTE_CALL, LIBFPTR_PARAM_SCRIPT_PARAMS, LIBFPTR_PARAM_IGNORE_EMPTY, LIBFPTR_PARAM_METHOD_DATA, LIBFPTR_PARAM_METHOD_RESULT, LIBFPTR_PARAM_RPC_SERVER_OS, LIBFPTR_PARAM_RPC_SERVER_VERSION, LIBFPTR_PARAM_RPC_DRIVER_VERSION, LIBFPTR_PARAM_LOCKED, LIBFPTR_PARAM_BOUND, LIBFPTR_PARAM_COMMODITIES_TABLE_FAULT, LIBFPTR_PARAM_HAS_ADDITIONAL_DATA, LIBFPTR_PARAM_FISCAL_SIGN_ARCHIVE, LIBFPTR_PARAM_COMMAND_GROUP, LIBFPTR_PARAM_ERROR_CODE, LIBFPTR_PARAM_MARKING_WAIT_FOR_VALIDATION_RESULT, LIBFPTR_PARAM_MARKING_CODE_STATUS, LIBFPTR_PARAM_MARKING_CODE_VALIDATION_RESULT, LIBFPTR_PARAM_MARKING_CODE_OFFLINE_VALIDATION_ERROR, LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR, LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY, LIBFPTR_PARAM_MEASUREMENT_UNIT, LIBFPTR_PARAM_MARKING_PROCESSING_MODE, LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY, LIBFPTR_PARAM_PRODUCT_CODE, LIBFPTR_PARAM_TRADE_MARKED_PRODUCTS, LIBFPTR_PARAM_INSURANCE_ACTIVITY, LIBFPTR_PARAM_PAWN_SHOP_ACTIVITY, LIBFPTR_PARAM_TLV_LIST, LIBFPTR_PARAM_CHECK_MARKING_SERVER_READY, LIBFPTR_PARAM_MARKING_SERVER_RESPONSE_TIME, LIBFPTR_PARAM_MARKING_SERVER_ERROR_CODE, LIBFPTR_PARAM_MARKING_SERVER_ERROR_DESCRIPTION, LIBFPTR_PARAM_ISM_ERROR, LIBFPTR_PARAM_ISM_ERROR_TEXT, LIBFPTR_PARAM_MARKING_MODE_CHECKING_STATUS, LIBFPTR_PARAM_MARK_CHECKING_COUNT, LIBFPTR_PARAM_MARK_SOLD_COUNT, LIBFPTR_PARAM_NOTICE_IS_BEGIN, LIBFPTR_PARAM_NOTICE_FREE_MEMORY, LIBFPTR_PARAM_NOTICE_COUNT, LIBFPTR_PARAM_MARKING_NOT_SEND_TO_SERVER, LIBFPTR_PARAM_DOCUMENT_TYPE, LIBFPTR_PARAM_PRINT_REPORT, LIBFPTR_PARAM_FN_EXECUTION, LIBFPTR_PARAM_MCU_SN, LIBFPTR_PARAM_MCU_PART_ID, LIBFPTR_PARAM_MCU_PART_NAME, LIBFPTR_PARAM_IS_REQUEST_SENT, LIBFPTR_PARAM_FN_CHECK_MARK_TIME, LIBFPTR_PARAM_SENDING_MARK_TIME, LIBFPTR_PARAM_MARKING_SERVER_EXCHANGE_TIME, LIBFPTR_PARAM_FULL_SENDING_MARK_TIME, LIBFPTR_PARAM_MARK_CHECKING_STATUS_IN_CASH, LIBFPTR_PARAM_MARK_CHECKING_TYPE_IN_CASH, LIBFPTR_PARAM_MARK_CHECKING_STAGE_IN_CASH, LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT, LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR_DESCRIPTION, LIBFPTR_PARAM_FN_CONTAINS_KEYS_UPDATER_SERVER_URI, LIBFPTR_PARAM_MARKING_CODE_CLEAR, LIBFPTR_PARAM_MODULE_ADDRESS, LIBFPTR_PARAM_SEGMENT_ADDRESS, LIBFPTR_PARAM_LAST_SUCCESSFUL_OKP, LIBFPTR_PARAM_FN_SERIAL_NUMBER, LIBFPTR_PARAM_ECR_REGISTRATION_NUMBER, LIBFPTR_PARAM_OFD_VATIN, LIBFPTR_PARAM_FNS_URL, LIBFPTR_PARAM_MACHINE_NUMBER, LIBFPTR_PARAM_MARKING_PRODUCT_ID, LIBFPTR_PARAM_TIMEOUT, LIBFPTR_PARAM_PRINT_UPDATE_FNM_KEYS_REPORT, LIBFPTR_PARAM_FN_KEYS_UPDATER_SERVER_URI, LIBFPTR_PARAM_DOCUMENT_ELECTRONICALLY, LIBFPTR_PARAM_LAST } export enum Model { LIBFPTR_MODEL_UNKNOWN = 0, LIBFPTR_MODEL_ATOL_AUTO = 500, LIBFPTR_MODEL_ATOL_11F = 67, LIBFPTR_MODEL_ATOL_15F = 78, LIBFPTR_MODEL_ATOL_20F = 81, LIBFPTR_MODEL_ATOL_22F = 63, LIBFPTR_MODEL_ATOL_25F = 57, LIBFPTR_MODEL_ATOL_27F = 87, LIBFPTR_MODEL_ATOL_30F = 61, LIBFPTR_MODEL_ATOL_42FS = 77, LIBFPTR_MODEL_ATOL_47FA = 48, LIBFPTR_MODEL_ATOL_50F = 80, LIBFPTR_MODEL_ATOL_52F = 64, LIBFPTR_MODEL_ATOL_55F = 62, LIBFPTR_MODEL_ATOL_60F = 75, LIBFPTR_MODEL_ATOL_77F = 69, LIBFPTR_MODEL_ATOL_90F = 72, LIBFPTR_MODEL_ATOL_91F = 82, LIBFPTR_MODEL_ATOL_92F = 84, LIBFPTR_MODEL_ATOL_SIGMA_10 = 86, LIBFPTR_MODEL_ATOL_SIGMA_7F = 90, LIBFPTR_MODEL_ATOL_SIGMA_8F = 91, LIBFPTR_MODEL_ATOL_PT_5F = 89, LIBFPTR_MODEL_KAZNACHEY_FA = 76, LIBFPTR_MODEL_ATOL_1F = 93, LIBFPTR_MODEL_ATOL_22v2F = 95, } export enum Baudrate { LIBFPTR_PORT_BR_1200 = 1200, LIBFPTR_PORT_BR_2400 = 2400, LIBFPTR_PORT_BR_4800 = 4800, LIBFPTR_PORT_BR_9600 = 9600, LIBFPTR_PORT_BR_19200 = 19200, LIBFPTR_PORT_BR_38400 = 38400, LIBFPTR_PORT_BR_57600 = 57600, LIBFPTR_PORT_BR_115200 = 115200, LIBFPTR_PORT_BR_230400 = 230400, LIBFPTR_PORT_BR_460800 = 460800, LIBFPTR_PORT_BR_921600 = 921600, } export enum Bits { LIBFPTR_PORT_BITS_7 = 7, LIBFPTR_PORT_BITS_8 = 8, } export enum Parity { LIBFPTR_PORT_PARITY_NO = 0, LIBFPTR_PORT_PARITY_ODD, LIBFPTR_PORT_PARITY_EVEN, LIBFPTR_PORT_PARITY_MARK, LIBFPTR_PORT_PARITY_SPACE, } export enum Stopbits { LIBFPTR_PORT_SB_1 = 0, LIBFPTR_PORT_SB_1_5, LIBFPTR_PORT_SB_2 } export enum BarcodeType { LIBFPTR_BT_EAN_8 = 0, LIBFPTR_BT_EAN_13, LIBFPTR_BT_UPC_A, LIBFPTR_BT_UPC_E, LIBFPTR_BT_CODE_39, LIBFPTR_BT_CODE_93, LIBFPTR_BT_CODE_128, LIBFPTR_BT_CODABAR, LIBFPTR_BT_ITF, LIBFPTR_BT_ITF_14, LIBFPTR_BT_GS1_128, LIBFPTR_BT_QR, LIBFPTR_BT_PDF417, LIBFPTR_BT_AZTEC, LIBFPTR_BT_CODE_39_EXTENDED, } export enum BarcodeCorrection { LIBFPTR_BC_DEFAULT = 0, LIBFPTR_BC_0, LIBFPTR_BC_1, LIBFPTR_BC_2, LIBFPTR_BC_3, LIBFPTR_BC_4, LIBFPTR_BC_5, LIBFPTR_BC_6, LIBFPTR_BC_7, LIBFPTR_BC_8, } export enum TaxMode { LIBFPTR_TM_POSITION = 0, LIBFPTR_TM_UNIT, } export enum StepCounterType { LIBFPTR_SCT_OVERALL = 0, LIBFPTR_SCT_FORWARD, } export enum CounterType { LIBFPTR_CT_ROLLUP = 0, LIBFPTR_CT_RESETTABLE, } export enum ShiftState { LIBFPTR_SS_CLOSED = 0, LIBFPTR_SS_OPENED, LIBFPTR_SS_EXPIRED, } export enum CutType { LIBFPTR_CT_FULL = 0, LIBFPTR_CT_PART, } export enum Alignment { LIBFPTR_ALIGNMENT_LEFT = 0, LIBFPTR_ALIGNMENT_CENTER, LIBFPTR_ALIGNMENT_RIGHT, } export enum TextWrap { LIBFPTR_TW_NONE = 0, LIBFPTR_TW_WORDS, LIBFPTR_TW_CHARS, } export enum FnType { LIBFPTR_FNT_DEBUG = 0, LIBFPTR_FNT_RELEASE, LIBFPTR_FNT_UNKNOWN, } export enum FnState { LIBFPTR_FNS_INITIAL = 0, LIBFPTR_FNS_CONFIGURED = 1, LIBFPTR_FNS_FISCAL_MODE = 3, LIBFPTR_FNS_POSTFISCAL_MODE = 7, LIBFPTR_FNS_ACCESS_ARCHIVE = 15, } export enum ReceiptType { LIBFPTR_RT_CLOSED = 0, LIBFPTR_RT_SELL = 1, LIBFPTR_RT_SELL_RETURN = 2, LIBFPTR_RT_SELL_CORRECTION = 7, LIBFPTR_RT_SELL_RETURN_CORRECTION = 8, LIBFPTR_RT_BUY = 4, LIBFPTR_RT_BUY_RETURN = 5, LIBFPTR_RT_BUY_CORRECTION = 9, LIBFPTR_RT_BUY_RETURN_CORRECTION = 10, } export enum ReportType { LIBFPTR_RT_CLOSE_SHIFT = 0, LIBFPTR_RT_X, LIBFPTR_RT_LAST_DOCUMENT, LIBFPTR_RT_OFD_EXCHANGE_STATUS, LIBFPTR_RT_KKT_DEMO, LIBFPTR_RT_KKT_INFO, LIBFPTR_RT_OFD_TEST, LIBFPTR_RT_FN_DOC_BY_NUMBER, LIBFPTR_RT_QUANTITY, LIBFPTR_RT_DEPARTMENTS, LIBFPTR_RT_OPERATORS, LIBFPTR_RT_HOURS, LIBFPTR_RT_FN_REGISTRATIONS, LIBFPTR_RT_FN_SHIFT_TOTAL_COUNTERS, LIBFPTR_RT_FN_TOTAL_COUNTERS, LIBFPTR_RT_FN_NOT_SENT_DOCUMENTS_COUNTERS, LIBFPTR_RT_COMMODITIES_BY_TAXATION_TYPES, LIBFPTR_RT_COMMODITIES_BY_DEPARTMENTS, LIBFPTR_RT_COMMODITIES_BY_SUMS, LIBFPTR_RT_START_SERVICE, LIBFPTR_RT_DISCOUNTS, LIBFPTR_RT_JOURNAL_DOCUMENT_BY_NUMBERS, LIBFPTR_RT_JOURNAL_DOCUMENT_BY_SHIFTS, LIBFPTR_RT_CLOSE_SHIFT_REPORTS } export enum PaymentType { LIBFPTR_PT_CASH = 0, LIBFPTR_PT_ELECTRONICALLY, LIBFPTR_PT_PREPAID, LIBFPTR_PT_CREDIT, LIBFPTR_PT_OTHER, LIBFPTR_PT_6, LIBFPTR_PT_7, LIBFPTR_PT_8, LIBFPTR_PT_9, LIBFPTR_PT_10 } export enum TaxType { LIBFPTR_TAX_DEPARTMENT = 0, LIBFPTR_TAX_VAT18 = 1, LIBFPTR_TAX_VAT10, LIBFPTR_TAX_VAT118, LIBFPTR_TAX_VAT110, LIBFPTR_TAX_VAT0, LIBFPTR_TAX_NO, LIBFPTR_TAX_VAT20, LIBFPTR_TAX_VAT120, LIBFPTR_TAX_INVALID, } export enum ExternalDeviceType { LIBFPTR_EXTERNAL_DEVICE_DISPLAY = 0, LIBFPTR_EXTERNAL_DEVICE_PINPAD, LIBFPTR_EXTERNAL_DEVICE_MODEM, LIBFPTR_EXTERNAL_DEVICE_BARCODE_SCANNER, } export enum KktDataType { LIBFPTR_DT_STATUS = 0, LIBFPTR_DT_CASH_SUM, LIBFPTR_DT_UNIT_VERSION, LIBFPTR_DT_PICTURE_INFO, LIBFPTR_DT_LICENSE_ACTIVATED, LIBFPTR_DT_REGISTRATIONS_SUM, LIBFPTR_DT_REGISTRATIONS_COUNT, LIBFPTR_DT_PAYMENT_SUM, LIBFPTR_DT_CASHIN_SUM, LIBFPTR_DT_CASHIN_COUNT, LIBFPTR_DT_CASHOUT_SUM, LIBFPTR_DT_CASHOUT_COUNT, LIBFPTR_DT_REVENUE, LIBFPTR_DT_DATE_TIME, LIBFPTR_DT_SHIFT_STATE, LIBFPTR_DT_RECEIPT_STATE, LIBFPTR_DT_SERIAL_NUMBER, LIBFPTR_DT_MODEL_INFO, LIBFPTR_DT_RECEIPT_LINE_LENGTH, LIBFPTR_DT_CUTTER_RESOURCE, LIBFPTR_DT_STEP_RESOURCE, LIBFPTR_DT_TERMAL_RESOURCE, LIBFPTR_DT_ENVD_MODE, LIBFPTR_DT_SHIFT_TAX_SUM, LIBFPTR_DT_RECEIPT_TAX_SUM, LIBFPTR_DT_NON_NULLABLE_SUM, LIBFPTR_DT_RECEIPT_COUNT, LIBFPTR_DT_CANCELLATION_COUNT_ALL, LIBFPTR_DT_CANCELLATION_SUM, LIBFPTR_DT_CANCELLATION_SUM_ALL, LIBFPTR_DT_POWER_SOURCE_STATE, LIBFPTR_DT_CANCELLATION_COUNT, LIBFPTR_DT_NON_NULLABLE_SUM_BY_PAYMENTS, LIBFPTR_DT_PRINTER_TEMPERATURE, LIBFPTR_DT_FATAL_STATUS, LIBFPTR_DT_MAC_ADDRESS, LIBFPTR_DT_DEVICE_UPTIME, LIBFPTR_DT_RECEIPT_BYTE_COUNT, LIBFPTR_DT_DISCOUNT_AND_SURCHARGE_SUM, LIBFPTR_DT_LK_USER_CODE, LIBFPTR_DT_LAST_SENT_OFD_DOCUMENT_DATE_TIME, LIBFPTR_DT_SHORT_STATUS, LIBFPTR_DT_PICTURES_ARRAY_INFO, LIBFPTR_DT_ETHERNET_INFO, LIBFPTR_DT_SCRIPTS_INFO, LIBFPTR_DT_SHIFT_TOTALS, LIBFPTR_DT_WIFI_INFO, LIBFPTR_DT_FONT_INFO, LIBFPTR_DT_SOFTLOCK_STATUS, LIBFPTR_DT_LAST_SENT_ISM_NOTICE_DATE_TIME, LIBFPTR_DT_MCU_INFO, LIBFPTR_DT_MODULE_ADDRESS, LIBFPTR_DT_CACHE_REQUISITES, } export enum FnDataType { LIBFPTR_FNDT_TAG_VALUE, LIBFPTR_FNDT_OFD_EXCHANGE_STATUS, LIBFPTR_FNDT_FN_INFO, LIBFPTR_FNDT_LAST_REGISTRATION, LIBFPTR_FNDT_LAST_RECEIPT, LIBFPTR_FNDT_LAST_DOCUMENT, LIBFPTR_FNDT_SHIFT, LIBFPTR_FNDT_FFD_VERSIONS, LIBFPTR_FNDT_VALIDITY, LIBFPTR_FNDT_REG_INFO, LIBFPTR_FNDT_DOCUMENTS_COUNT_IN_SHIFT, LIBFPTR_FNDT_ERRORS, LIBFPTR_FNDT_TICKET_BY_DOC_NUMBER, LIBFPTR_FNDT_DOCUMENT_BY_NUMBER, LIBFPTR_FNDT_REGISTRATION_TLV, LIBFPTR_FNDT_ERROR_DETAIL, LIBFPTR_FNDT_VALIDITY_DAYS, LIBFPTR_FNDT_FREE_MEMORY, LIBFPTR_FNDT_TOTALS, LIBFPTR_FNDT_ISM_ERRORS, LIBFPTR_FNDT_ISM_EXCHANGE_STATUS, LIBFPTR_FNDT_MARKING_MODE_STATUS, LIBFPTR_FNDT_CHECK_MARK_TIME } export enum FfdVersion { LIBFPTR_FFD_UNKNOWN = 0, LIBFPTR_FFD_1_0 = 100, LIBFPTR_FFD_1_0_5 = 105, LIBFPTR_FFD_1_1 = 110, LIBFPTR_FFD_1_2 = 120 } export enum TaxationType { LIBFPTR_TT_DEFAULT = 0x00, LIBFPTR_TT_OSN = 0x01, LIBFPTR_TT_USN_INCOME = 0x02, LIBFPTR_TT_USN_INCOME_OUTCOME = 0x04, LIBFPTR_TT_ENVD = 0x08, LIBFPTR_TT_ESN = 0x10, LIBFPTR_TT_PATENT = 0x20, } export enum UnitType { LIBFPTR_UT_FIRMWARE, LIBFPTR_UT_CONFIGURATION, LIBFPTR_UT_TEMPLATES, LIBFPTR_UT_CONTROL_UNIT, LIBFPTR_UT_BOOT, } export enum FnOperationType { LIBFPTR_FNOP_REGISTRATION = 0, LIBFPTR_FNOP_CHANGE_FN, LIBFPTR_FNOP_CHANGE_PARAMETERS, LIBFPTR_FNOP_CLOSE_ARCHIVE, } export enum AgentType { LIBFPTR_AT_NONE = 0x00, LIBFPTR_AT_BANK_PAYING_AGENT = 0x01, LIBFPTR_AT_BANK_PAYING_SUBAGENT = 0x02, LIBFPTR_AT_PAYING_AGENT = 0x04, LIBFPTR_AT_PAYING_SUBAGENT = 0x08, LIBFPTR_AT_ATTORNEY = 0x10, LIBFPTR_AT_COMMISSION_AGENT = 0x20, LIBFPTR_AT_ANOTHER = 0x40, } export enum OfdChannel { LIBFPTR_OFD_CHANNEL_NONE = 0, LIBFPTR_OFD_CHANNEL_USB, LIBFPTR_OFD_CHANNEL_PROTO, LIBFPTR_OFD_CHANNEL_AUTO = 2, // LIBFPTR_OFD_CHANNEL_PROTO } export enum PowerSourceType { LIBFPTR_PST_POWER_SUPPLY = 0, LIBFPTR_PST_RTC_BATTERY, LIBFPTR_PST_BATTERY } export enum RecordsType { LIBFPTR_RT_LAST_DOCUMENT_LINES, LIBFPTR_RT_FN_DOCUMENT_TLVS, LIBFPTR_RT_EXEC_USER_SCRIPT, LIBFPTR_RT_FIRMWARE, LIBFPTR_RT_LICENSES, LIBFPTR_RT_FN_REGISTRATION_TLVS, LIBFPTR_RT_PARSE_COMPLEX_ATTR, LIBFPTR_RT_FN_SUM_COUNTERS, LIBFPTR_RT_FN_QUANTITY_COUNTERS, LIBFPTR_RT_FN_UNSENT_DOCS_COUNTERS, LIBFPTR_RT_SETTINGS, LIBFPTR_RT_RUN_COMMAND, } export enum NomenclatureType { LIBFPTR_NT_FURS = 0, LIBFPTR_NT_MEDICINES, LIBFPTR_NT_TOBACCO, LIBFPTR_NT_SHOES, } export enum FnDocumentType { LIBFPTR_FN_DOC_REGISTRATION = 1, LIBFPTR_FN_DOC_OPEN_SHIFT = 2, LIBFPTR_FN_DOC_RECEIPT = 3, LIBFPTR_FN_DOC_BSO = 4, LIBFPTR_FN_DOC_CLOSE_SHIFT = 5, LIBFPTR_FN_DOC_CLOSE_FN = 6, LIBFPTR_FN_DOC_OPERATOR_CONFIRMATION = 7, LIBFPTR_FN_DOC_REREGISTRATION = 11, LIBFPTR_FN_DOC_EXCHANGE_STATUS = 21, LIBFPTR_FN_DOC_CORRECTION = 31, LIBFPTR_FN_DOC_BSO_CORRECTION = 41, } export enum LogLevel { LIBFPTR_LOG_ERROR = 0, LIBFPTR_LOG_WARN, LIBFPTR_LOG_INFO, LIBFPTR_LOG_DEBUG } export enum UserMemoryOperation { LIBFPTR_UMO_GET_SIZE = 0, LIBFPTR_UMO_READ_DATA, LIBFPTR_UMO_WRITE_DATA, LIBFPTR_UMO_READ_STRING, LIBFPTR_UMO_WRITE_STRING, LIBFPTR_UMO_COMMIT, } export enum GuiParent { LIBFPTR_GUI_PARENT_NATIVE = 0, LIBFPTR_GUI_PARENT_QT, } export enum DeferType { LIBFPTR_DEFER_NONE = 0, LIBFPTR_DEFER_PRE, LIBFPTR_DEFER_POST, LIBFPTR_DEFER_OVERLAY } export enum TagType { LIBFPTR_TAG_TYPE_STLV = 0, LIBFPTR_TAG_TYPE_STRING, LIBFPTR_TAG_TYPE_ARRAY, LIBFPTR_TAG_TYPE_FVLN, LIBFPTR_TAG_TYPE_BITS, LIBFPTR_TAG_TYPE_BYTE, LIBFPTR_TAG_TYPE_VLN, LIBFPTR_TAG_TYPE_UINT_16, LIBFPTR_TAG_TYPE_UINT_32, LIBFPTR_TAG_TYPE_UNIX_TIME, LIBFPTR_TAG_TYPE_BOOL } export enum FieldType { LIBFPTR_FT_BYTE_ARRAY = 0, LIBFPTR_FT_BIN, LIBFPTR_FT_BCD, LIBFPTR_FT_STRING, LIBFPTR_FT_STRING_NULL_TERM, } export enum ScriptType { LIBFPTR_SCRIPT_EXECUTABLE = 0, LIBFPTR_SCRIPT_JSON, LIBFPTR_SCRIPT_SETTINGS, LIBFPTR_SCRIPT_LIBRARY, } export enum UcLayer { LIBFPTR_UCL_UNUSED = 0, LIBFPTR_UCL_RECEIPT_TYPE, LIBFPTR_UCL_TAXATION_TYPE, LIBFPTR_UCL_TAX_TYPE, LIBFPTR_UCL_PRODUCT_TYPE, LIBFPTR_UCL_PAYMENT_METHOD, LIBFPTR_UCL_USER_3, LIBFPTR_UCL_USER_4, LIBFPTR_UCL_USER_5, LIBFPTR_UCL_USER_6, } export enum UcFlag { LIBFPTR_UCF_CALC_SUMS = 1, LIBFPTR_UCF_CALC_QUANTITIES = 2, LIBFPTR_UCF_CALC_SUMS_OTHERS = 4, LIBFPTR_UCF_CALC_QUANTITIES_OTHERS = 8, } export enum FnCounterType { LIBFPTR_FNCT_SHIFT = 0, LIBFPTR_FNCT_NON_NULLABLE } export enum MarkingCodeType { LIBFPTR_MCT_OTHER = 0, LIBFPTR_MCT_EGAIS_20, LIBFPTR_MCT_EGAIS_30, } export enum MarkingCodeType12 { LIBFPTR_MCT12_AUTO = 256, LIBFPTR_MCT12_UNKNOWN = 0, LIBFPTR_MCT12_SHORT, LIBFPTR_MCT12_88_CHECK, LIBFPTR_MCT12_44_NO_CHECK, LIBFPTR_MCT12_44_CHECK, LIBFPTR_MCT12_4_NO_CHECK, } export enum MarkingEstimatedStatus { LIBFPTR_MES_PIECE_SOLD = 1, LIBFPTR_MES_DRY_FOR_SALE, LIBFPTR_MES_PIECE_RETURN, LIBFPTR_MES_DRY_RETURN, LIBFPTR_MES_UNCHANGED = 255 } export enum ItemUnits { LIBFPTR_IU_PIECE = 0, LIBFPTR_IU_GRAM = 10, LIBFPTR_IU_KILOGRAM, LIBFPTR_IU_TON, LIBFPTR_IU_CENTIMETER = 20, LIBFPTR_IU_DECIMETER, LIBFPTR_IU_METER, LIBFPTR_IU_SQUARE_CENTIMETER = 30, LIBFPTR_IU_SQUARE_DECIMETER, LIBFPTR_IU_SQUARE_METER, LIBFPTR_IU_MILLILITER = 40, LIBFPTR_IU_LITER, LIBFPTR_IU_CUBIC_METER, LIBFPTR_IU_KILOWATT_HOUR = 50, LIBFPTR_IU_GKAL, LIBFPTR_IU_DAY = 70, LIBFPTR_IU_HOUR, LIBFPTR_IU_MINUTE, LIBFPTR_IU_SECOND, LIBFPTR_IU_KILOBYTE = 80, LIBFPTR_IU_MEGABYTE, LIBFPTR_IU_GIGABYTE, LIBFPTR_IU_TERABYTE, LIBFPTR_IU_OTHER = 255 } export enum MarkOperatorItemStatus { LIBFPTR_OIS_ESTIMATED_STATUS_CORRECT = 1, LIBFPTR_OIS_ESTIMATED_STATUS_INCORRECT, LIBFPTR_OIS_SALE_STOPPED } export enum MarkOperatorResponseResult { LIBFPTR_ORR_CORRECT = 0, LIBFPTR_ORR_INCORRECT, LIBFPTR_ORR_UNRECOGNIZED } export enum FnCheckErrorReason { LIBFPTR_CER_CHECKED = 0, LIBFPTR_CER_TYPE_INCORRECT, LIBFPTR_CER_NO_KEYS, LIBFPTR_CER_NO_GS1, LIBFPTR_CER_OTHER } export enum SettingType { LIBFPTR_ST_NUMBER = 0, LIBFPTR_ST_STRING, LIBFPTR_ST_BOOL } export enum FirmwareType { LIBFPTR_FWT_FIRMWARE = 0, LIBFPTR_FWT_SCRIPTS = 2, } export enum MarkingModeCheckingStatus { LIBFPTR_MCS_BLOCK = 0, LIBFPTR_MCS_NO_MARK_FOR_CHECK, LIBFPTR_MCS_MARK_RECEIVE_B1, LIBFPTR_MCS_MARK_STATE_QUERY_B5, LIBFPTR_MCS_MARK_STATE_ANSWER_B6 } export enum NoticeFreeMemory { LIBFPTR_NFM_LESS_50_PERCENT = 0, LIBFPTR_NFM_FROM_50_TO_80_PERCENT, LIBFPTR_NFM_FROM_80_TO_90_PERCENT, LIBFPTR_NFM_MORE_90_PERCENT, LIBFPTR_NFM_OUT_OF_MEMORY } export enum DocumentType { LIBFPTR_DT_CLOSED = 0, LIBFPTR_DT_RECEIPT_SELL = 1, LIBFPTR_DT_RECEIPT_SELL_RETURN = 2, LIBFPTR_DT_RECEIPT_BUY = 3, LIBFPTR_DT_RECEIPT_BUY_RETURN = 4, LIBFPTR_DT_OPEN_SHIFT = 5, LIBFPTR_DT_CLOSE_SHIFT = 6, LIBFPTR_DT_REGISTRATION = 7, LIBFPTR_DT_CLOSE_ARCHIVE = 8, LIBFPTR_DT_OFD_EXCHANGE_STATUS = 11, LIBFPTR_DT_RECEIPT_SELL_CORRECTION = 12, LIBFPTR_DT_RECEIPT_SELL_RETURN_CORRECTION = 13, LIBFPTR_DT_RECEIPT_BUY_CORRECTION = 14, LIBFPTR_DT_RECEIPT_BUY_RETURN_CORRECTION = 15, LIBFPTR_DT_DOCUMENT_SERVICE = 20, LIBFPTR_DT_DOCUMENT_COPY = 21 } export enum MarkCheckingStatusInCash { LIBFPTR_MCS_NOT_EXECUTED = 0, LIBFPTR_MCS_EXECUTED, LIBFPTR_MCS_IS_OVER, LIBFPTR_MCS_RESULT_IS_RECIEVED } export enum MarkCheckingTypeInCash { LIBFPTR_MCT_AUTONOMOUS = 0, LIBFPTR_MCT_WAIT_FOR_RESULT, LIBFPTR_MCT_RESULT_NOT_WAIT, LIBFPTR_MCT_QUERY_NOT_SEND } export enum MarkCheckingStageInCash { LIBFPTR_MCST_WAITING_FOR_TASK = 0, 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 } export enum SilentReboot { LIBFPTR_SILENT_REBOOT_NO = 0, LIBFPTR_SILENT_REBOOT_AFTER_SESSION_CLOSE, LIBFPTR_SILENT_REBOOT_BEFORE_SESSION_OPEN }
0
Ошибок нет
–1
Нет связи
- Интерфейсный кабель не подключен или неисправен.
- Скорость порта ПК не соответствует установленной скорости в ККМ
- Проверить кабель.
- Обратиться в сервисную службу
–3
Порт недоступен
- Порт занят другим приложением.
- Данный порт отсутсвует в ПК
–4
Ключ защиты не найден
Драйвер не смог найти ключ защиты
Установить ключ защиты
–5
Работа драйвера прервана пользователем
–6
Недопустимое значение
При попытке установить значение в свойство (подробнее см. «Приложение 4. Ошибки параметров»)
Свойство не может принимать устанавливаемое значение
–7
Невозможно добавить устройство
Количесво ЛУ превышает допустимое значение
Удалить лишние ЛУ
–8
Невозможно удалить устройство
При попытке удалить последнее ЛУ
–9
Логическое устройство не найдено
При попытке выбрать ЛУ с несуществующим номером
Выбрать ЛУ с существующим номером
–10
Неверная последовательность команд
При выполнении методов требующих определенной последовательности нарушена последовательность
Проверить последовательность вызываемых методов
–11
Устройство не включено
Установить DeviceEnabled равным TRUE
–12
Не поддерживается в данной версии оборудования
Вызываемый метод нельзя выполнить на данной ККМ
–13
Драйвер не смог загрузить необходимые модули
Зарегистрировать используемые модули
–14
Порт занят приложением: (<имя ПК><описание приложения–клиента><описание драйвера>)
Если драйвер определил, что порт занят одним из драйверов семейства «АТОЛ: Драйверы торгового оборудования», то возвращается данная ошибка (<имя ПК> – имя ПК, на котором запущено клиентское приложение, <описание драйвера> – описание драйвера, занявшего порт)
- Воспользоваться поиском оборудования для определения порта, к которому подключена ККМ.
- Установить другой порт
–15
Некорректные данные от устройства
Ошибка обмена с ККМ на нижнем уровне
Повторить команду
–16
Не поддерживается в данном режиме устройства
Вызываемый метод не может быть выполнен в данном режиме
Перейти в нужный режим
–17
Нет больше элементов отчета
При снятии отчетов закончились элементы отчета
–19
Нет доступа к ключу реестра
Изменить права доступа к соответствующему ключу реестра
–199
Описание ошибки недоступно
При возникновении ошибки, не имеющей описания, или ошибки оборудования
–3800
В ККМ нет денег для выплаты
Недостаточно денег при выплате
Выполнить внесение
–3801
Чек закрыт – операция невозможна
При выполнении операции требующей предварительного открытия чека
Открыть чек
–3802
Чек открыт – операция невозможна
При выполнении операции требующей предварительного закрытия чека
Закрыть чек
–3803
Неверная цена (сумма)
Сумма регистрации превышает максимально возможное значение
Проверить значение свойства Price и Quantity
–3804
Неверное количество
В ККМ передано неверное количество
–3805
Нулевая цена
В ККМ передано неверная цена
–3807
Нет бумаги
В ККМ закончилась бумага
Вставить бумагу
–3808
Процесс ввода пароля
В ККМ находится в режиме ввода пароля
- Ввести пароль.
- Выйти из режима ввода пароля
–3809
Недопустимый ИНН
Введенный ИНН неверен
Ввести правильный ИНН
–3810
Накопление меньше суммы возврата или аннулирования
Сумма возврата или аннулирования больше накопленной суммы
- Произвести возврат или аннулирование без контроля наличности.
- Произвести внесение
–3811
Производится печать
Подождать пока печать не закончится
–3813
Неверная величина скидки/надбавки
Установить правильное значение скидки
–3814
Операция после скидки/надбавки невозможна
При попытке вызова метода после начисленной скидки/надбавки на чек
Отменить скидку/надбавку
–3815
Неверная секция
В ККМ передано неверный номер секции
Указать правильный номер секции
–3816
Неверный вид оплаты
В ККМ передан неверный тип оплаты
Установить правильный номер оплаты
–3817
Переполнение при умножении
При перемножении количества на цену происходит переполнение
–3818
Операция запрещена в таблице настроек
Разрешить операцию в таблице настроек
–3819
Переполнение итога чека
–3820
Переполнение контрольной ленты
Снять контрольную ленту
–3821
Открыт чек возврата – операция невозможна
При выполнении некоторых недопустимых методов при открытом чеке возврата
Закрыть чек
–3822
Смена превысила 24 часа
Открытая смена превысила 24 часа
Закрыть смену
–3823
Скидка запрещена в таблице
Разрешить скидку в таблице настроек
–3824
Аннулирование и возврат в одном чеке
При попытке произвести аннулирование в чеке возврата или наоборот
Отменить чек
–3825
Неверный пароль
Введен неверный пароль
Ввести верный пароль
–3826
Не переполнен буфер контрольной ленты
При попытке снятия контрольной ленты до момента ее переполнения
–3827
Идет печать контрольной ленты
Подождать, пока печать КЛ не закончится
–3828
Смена закрыта — операция невозможна
При попытке снятия повторного отчета с гашением
–3829
Идет печать отчета
Подождать, пока не закончится снятие отчета
–3830
Неверная дата
При установке неверной даты
Установить верную дату
–3831
Неверное время
При установке неверного времени
Установить верное время
–3832
Сумма чека меньше суммы сторно
При регистрации сторно на сумму, больше суммы чека
–3833
Контрольная лента обработана без ошибок
–3834
Недопустимый РНМ
Введенный РНМ неверен
Ввести правильный РНМ
–3835
Вносимая сумма меньше суммы чека
Сумма оплаты меньше суммы чека
Внести сумму больше или равную сумме чека
–3836
Начисление сдачи невозможно
На данный тип оплаты начисление сдачи невозможно
–3837
Смена открыта, операция невозможна
При вызове метода, требующего закрытой смены
Закрыть смену
–3838
Отчет закончен
–3839
Неверный номер таблицы
Указать верный номер таблицы
–3840
Неверный номер ряда
Указать верный номер ряда
–3841
Неверный номер поля
Указать верный номер поля
–3842
ККМ заблокирована. Необходимо вызвать фискальный отчет или выполнить вход в режим доступа к ФП с указанием правильного пароля администратора
Выполнить вход в режим доступа к ФП с указанием правильного пароля администратора
–3843
Заводской номер уже задан
При повторном вводе заводского номера
–3844
Исчерпан лимит перерегистраций
Ошибка при попытке перерегистрации ККМ после четырех перерегистраций
–3845
Ошибка фискальной памяти
Обратитесь в сервисную службу
–3846
Запись фискальной памяти повреждена
Обратитесь в сервисную службу
–3847
Неверная смена
Неверный номер смены в диапазоне при снятии фискальных отчетов
Произвести запрос диапазонов и указать верные значения
–3848
Неверный тип отчета
Указать верный номер типа отчета
–3850
Недопустимый заводской номер ККМ
Обратитесь в сервисную службу
–3851
ККМ не фискализирована
Обратитесь в сервисную службу
–3852
Не задан заводской номер
Обратитесь в сервисную службу
–3853
Нет отчетов
–3854
Режим не активизирован
–3855
Нет указанного чека в КЛ
Указать верный номер чека
–3857
Некорректный код или номер кода защиты
При вводе кода защиты
Обратитесь в сервисную службу
–3859
Код защиты не введен
Обратитесь в сервисную службу
–3860
Режим не поддерживается
Попытка перейти в неподдерживаемый данной ККМ режим
–3862
Повторная скидка/надбавка на операцию невозможна
Попытка начислить повторно скидку/надбавку
–3863
Скидка/надбавка на предыдущую операцию невозможна
При начислении скидки/надбавки на сторно
–3864
Открыт чек аннулирования – операция невозможна
Вызываемая операция не может быть выполнена при открытом чеке аннулирования
- Закрыть чек.
- Отменить чек
–3865
Открыт чек продажи – операция невозможна
Вызываемая операция не может быть выполнена при открытом чеке продажи
- Закрыть чек.
- Отменить чек
–3866
Требуется выполнение общего гашения
Выполнить общее гашение
–3867
Нет устройства, обрабатывающего данную команду
–3868
Нет связи с внешним устройством
–3869
Неверный диапазон записей
Значение в свойстве LastRecord меньше чем в FirstRecord
Установить верные значения свойств LastRecord и FirstRecord
–3870
Команда не разрешена введенными кодами защиты
Ввести код защиты
–3871
Невозможна отмена скидки/надбавки.
–3872
Невозможно закрыть чек данным типом оплаты (в чеке присутствуют операции без контроля наличных)
- Закрыть чек типом оплаты «Наличные»
- Отменить чек
–3873
Нет связи с принтером чеков
Обратитесь в сервисную службу
–3877
Неверный номер маршрута
Указать верны номер маршрута
–3878
Неверный номер начальной зоны
Указать верный номер начальной зоны
–3879
Неверный номер конечной зоны
Указать верный номер конечной зоны
–3880
Неверный тип тарифа
Указать верный тип тарифа
–3881
Неверный тариф
Указать верный тариф
–3882
Нет заказа с таким номером
Указать верный номер заказа
–3883
Снятие отчета прервалось
Возобновить снятие отчета
–3887
Неверный штрихкод товара
Указать/считать верный ШК
–3892
ККМ заблокирована после попытки ввода даты, меньшей чем дата последней записи в ФП
Если введена дата меньше даты последней записи в ФП
Ввести дату больше даты последней записи в ФП
–3893
Требуется подтверждение ввода даты
Подтвердить ввод даты
–3894
Отчет с гашением прерван. Вход в режим невозможен
Снять отчет с гашением
–3895
Неверная длина
При выполнении команды по нижнему уровню
Проверить написание команды
–3896
Сумма не наличных оплат превышает сумму чека
При оплате чека.
Оплата не наличными типами оплаты не должна превышать сумму чека
–3897
Чек оплачен не полностью
Оплатить чек
–3898
Неверный номер картинки/штрихкода
- При удалении.
- При печати и др.
Запросить массив картинок/штрихкодов и ввести правильный номер картинки/штрихкода
–3899
Невозможно открыть файл или формат некорректный
- При добавлении картинки из файла.
- При печати картинки из файла
Возможно печать только растровых монохромных картинок
–3900
Сумма сторно больше, чем было получено данным типом оплаты
При сторнировании оплаты сумма оплаты превышает сумму платежей
Проверить правильность ввода суммы сторно оплаты
–3901
Неверный номер регистра
Указан неверный номер регистра при запросе регистра
Ввести верный номер регистра
–3902
Недопустимое целевое устройство
Устройство, указанное в свойстве UnitType отсутствует в подключенной модели ККМ
–3903
Неверный параметр регистра
При запросе регистра неверно указаны его параметры
Проверить параметры ввода запрашиваемого регистра
–3904
Недостаточно памяти
В ККМ недостаточно свободной памяти для загрузки картинки
–3905
Неверный формат или значение
Проверить формат вводимых значений
–3906
Переполнение суммы платежей
Уменьшите значение свойства Summ
–3907
Ошибка обмена с фискальным модулем
Обратитесь в сервисную службу
–3908
Переполнение ФП
Обратитесь в сервисную службу
–3909
Ошибка печатающего устройства
Обратитесь в сервисную службу
–3910
Ошибка интерфейса ЭКЛЗ/ФН
Обратитесь в сервисную службу
–3911
Ошибка формата передачи параметров ЭКЛЗ/ФН
Обратитесь в сервисную службу
–3912
Неверное состояние ЭКЛЗ/ФН
Обратитесь в сервисную службу
–3913
Неисправимая ошибка ЭКЛЗ/ФН
Обратитесь в сервисную службу
–3914
Авария крипто–процессора ЭКЛЗ/ФН
Обратитесь в сервисную службу
–3915
Исчерпан временной ресурс ЭКЛЗ/ФН
Обратитесь в сервисную службу
–3916
ЭКЛЗ/ФН переполнено
Обратитесь в сервисную службу
–3917
В ЭКЛЗ/ФН переданы неверная дата или время
Ввести верные дату и время
–3918
В ЭКЛЗ/ФН нет запрошенных данных
–3919
Переполнение итога чека в ЭКЛЗ/ФН
Обратитесь в сервисную службу
–3920
Исчерпан лимит активизаций ЭКЛЗ/ФН
Обратитесь в сервисную службу
–3921
Проверьте дату и время
Обратитесь в сервисную службу
–3922
Дата и/или время в ККМ меньше чем в ЭКЛЗ/ФН/ФП
Обратитесь в сервисную службу
–3923
Невозможно закрыть архив ЭКЛЗ/ФН
Обратитесь в сервисную службу
–3924
Необходимо провести профилактические работы
Обратитесь в сервисную службу
–3925
Неверный номер ЭКЛЗ/ФН
Указать верный номер
–3926
Предыдущая операция не завершена
Завершить предыдущую операцию
–3927
Переполнение сменного итога
–3928
Активизация данной ЭКЛЗ/ФН в составе данной ККМ невозможна
Обратитесь в сервисную службу для установки и последующей активизации нового экзкмпляра ЭКЛЗ
–3929
Переполнение счетчика наличности
–3930
Переполнение буфера чека
–3931
Размер картинки слишком большой.
Картинка не помещается на ленте.
Изменить параметры картинки
–3932
Неверный тип чека
Указать верный тип чека
–3933
Вход в режим заблокирован
Обратитесь в сервисную службу
–3934
Неверные номера смен в ККМ и ЭКЛЗ/ФН
Обратитесь в сервисную службу
–3935
ЭКЛЗ/ФН отсутствует
Обратитесь в сервисную службу
–3936
Итоги чека ККМ и ЭКЛЗ/ФН не совпадают
Обратитесь в сервисную службу
–3937
ККМ находится в режиме ввода даты или времени
Остановка часов
Установить дату и время
–3938
Переполнение буфера отложенного документа
–3939
Невозможно напечатать второй фискальный оттиск
–3940
Буфер переполнен’
–3941
Требуется гашение ЭЖ
Выполнить гашение ЭЖ
–3942
Перегрев головки принтера
Отключить ККТ
–3943
Ошибка отрезчика
Обратиться в сервисную службу
–3944
Буфер принтера ПД пустой
–3945
Буфер принтера ПД переполнен
–3946
Карта физически отсутствует в картоприемнике
Установить карту в картоприемник
–3947
Неверный PIN код
Ввести верный PIN-код
–3948
Ячейка защищена от записи
–3949
Невозможно сторно последней операции
–3950
Сторно по коду невозможно
–3951
Невозможен повтор последней операции
–3952
Неверный код товара
Ввести верный код товара
–3953
Нет подтверждения или отмены продажи
Выполнить подтверждение продажи или отменить продажу
–3954
Отключение контроля наличности невозможно (не настроены необходимые типы оплаты)
Настроить типы оплаты и повторно отключить контроль наличности
–3955
Товар не найден
–3956
Весовой штрих-код с количеством ≠ 1.000
–3957
Переполнение буфера чека
–3958
Недостаточное количество товара
Указать верное количество
–3959
Сторнируемое количество больше проданного
Указать верное количество операции сторно
–3960
Заблокированный товар не найден в буфере чека
–3961
Данный товар не продавался в чеке, сторно невозможно
–3962
Memo Plus 3 заблокировано с ПК
–3963
Ошибка контрольной суммы таблицы настроек Memo Plus 3
–3964
Идет обработка контрольной ленты
–3965
Недопустимый пароль
Ввести верный пароль
–3966
Ошибочное состояние ТРК
–3967
Невозможно напечатать вторую фискальную копию
–3968
Ошибка питания
Ошибка возникает в автономных ККМ при недостаточности питания
Зарядить аккумулятор
–3969
Сумма налога больше суммы регистраций по чеку и/или итога
Указать верную сумму налога
–3970
Начисление налога на последнюю операцию невозможно
–3971
Операция невозможна, недостаточно питания
Зарядить аккумулятор
–3972
Недопустимый порядок реквизитов чека
Указать реквизиты в правильном порядке
–3973
Недопустимый идентификатор накопителя фискальной памяти
–3974
Ошибка записи в накопитель фискальной памяти
–3975
Накопитель фискальной памяти не пуст
–3976
Данные в накопителе фискальной памяти разрушены
Обратиться в сервисную службу для замены накопителя фискальной памяти
–3977
Команда в режиме принтера игнорируется
–3978
Отсутствует код оператора
Ввести код оператора
–3979
Не определен тип документа
–3980
Несовпадение заводского номера ПФП/ККМ
–3981
Данные заводской регистрации ККМ в накопителе фискальной памяти разрушены
Обратиться в сервисную службу для замены накопителя фискальной памяти
–3982
Слишком много товара в чеке
Отменить последнюю позицию и закрыть чек или отменить весь чек
–3983
Неверный формат документа
–3984
Перезапись текста документа
–3985
Слишком много параметров документа
–3986
Недопустимый параметр документа
Ввести верный параметр документа
–3987
Недопустимое значение параметра документа
Вввести верное значение параметра документа
–3988
Описание несуществующего объекта
–3989
Документ не был завершен
Завершить документ
–3990
Описание товара или операции не полно
Дополнить описание товара и завершить действие
–3991
Вложенные прерывания
–3992
Неверный байт подтверждения приема данных
–3993
Несовпадение контрольной суммы ОЗУ
–3994
Несовпадение контрольной суммы накопителя фискальной памяти
–3995
Порт данных неисправен
Обратиться в сервисную службу
–3996
Нулевые координаты для обязательного реквизита
–3997
Недопустимая длина запроса
Подать запрос верной длины
–3998
Разрядность числа больше допустимой
Указать число с верной разрядностью
–3999
Переполнение
–4000
Нет числа
Ввести число
–4002
Ошибка передачи
Проверить интерфейс обмена, устранить неполадку и повторить передачу
–4003
Не все параметры ККМ запрограммированы
Запрограммировать недостающие параметры ККТ
–4004
Сбой памяти
Обратиться в сервисную службу
–4005
Принтер выключен
Включить принтер
–4006
Превышено время ожидания готовности принтера
Проверить подключение и исправность принтера, при обнаружении неполадки устранить ее
–4007
Данные учтены в ЭКЛЗ/ФН и ФП, но возникли проблемы печати документа при завершении чека
Обратиться в сервисную службу
–4008
Требуется повторить последнюю команду
Повторно выполнить последнюю команду
–4009
ФР ожидает готовности (ПУ), код 247
–4010
SD карта не готова
Дождаться готовности карты, при обнаружении ее поломки, заменить SD карту
–4011
Требуется пароль доступа
Не указан пароль доступа, требующийся для работы ККМ
Указать пароль доступа
–4012
Достигнут конец каталога
Ошибка возникает при чтении SD-карты
–4013
Ошибка GSM модуля
Обратиться в сервисную службу
–4014
Нет данных в буфере ККТ
–4015
Некорректное значение параметров команды ФН
Повторно подать команду с верными параметрами ФН
–4016
Превышение размеров TLV данных ФН
–4017
Нет транспортного соединения ФН
Настроить соединение с ФН
–4018
Исчерпан ресурс КС ФН
Обратиться в сервисную службу для замены ФН
–4019
Исчерпан ресурс хранения ФН
Обратиться в сервисную службу для замены ФН
–4020
Сообщение от ОФД не может быть принято ФН
Сбой связи с ОФД
Настроить интерфейс обмена с ОФД.
Сбой в работе сервера ОФД
После устрания неполадок сервера ОФД повторно запустить работу по обмену данными ККТ–ОФД
Поврежден фискальный накопитель
Обратиться в сервисную службу для замены ФН
–4021
В ФН есть неотправленные ФД
Проверить параметры связи с ОФД, дождать отправки документов ОФД
–4022
В текущем состоянии документа команда не допустима
–4023
Нет документа для повтора
–4024
Ожидание команды продолжения печати
Подать команду продолжения печати
// @ts-ignore
export interface Settings {
AccessPassword: string
AutoDisableBluetooth: boolean
AutoEnableBluetooth: boolean
AutoReconnect: boolean
BaudRate: Baudrate
Bits: Bits
ComFile: string
DocumentsJournalPath: string
IPAddress: string
IPPort: number
InvertCashDrawerStatus: boolean
LibraryPath: string
MACAddress: string
Model: Model
OfdChannel: OfdChannel
Parity: Parity
Port: Port
RemoteServerAddr: string
RemoteServerConnectionTimeout: number
ScriptsPath: string
StopBits: Stopbits
UsbDevicePath: string
UseDocumentsJournal: boolean
UserPassword: string
}
export interface LastDocument {
documentNumber: number
fiscalSign: string
date: {
year: number
month: number
day: number
hour: number
minute: number
second: number
}
}
export interface DeviceInfo {
configurationVersion: string
ecrFfdVersion: string
fnFfdVersion: string
firmwareVersion: string
model: Model
modelName: string
receiptLineLength: number
receiptLineLengthPx: number
serial: string
}
export declare class Fptr10 {
create(): void
isOpened(): boolean
destroy(): void
getSettings(): Settings
setSettings(settings: Settings): boolean
open(): boolean
close(): boolean
processJson(json: unknown): any
processJsonAsync(json: unknown, cb: (error: any, result: any) => void): void
fnReport(type: number): any
findLastDocument(): LastDocument
}
export enum Port {
LIBFPTR_PORT_COM = 0,
LIBFPTR_PORT_USB,
LIBFPTR_PORT_TCPIP,
LIBFPTR_PORT_BLUETOOTH,
}
export enum Error {
LIBFPTR_OK = 0,
LIBFPTR_ERROR_CONNECTION_DISABLED,
LIBFPTR_ERROR_NO_CONNECTION,
LIBFPTR_ERROR_PORT_BUSY,
LIBFPTR_ERROR_PORT_NOT_AVAILABLE,
LIBFPTR_ERROR_INCORRECT_DATA,
LIBFPTR_ERROR_INTERNAL,
LIBFPTR_ERROR_UNSUPPORTED_CAST,
LIBFPTR_ERROR_NO_REQUIRED_PARAM,
LIBFPTR_ERROR_INVALID_SETTINGS,
LIBFPTR_ERROR_NOT_CONFIGURED,
LIBFPTR_ERROR_NOT_SUPPORTED,
LIBFPTR_ERROR_INVALID_MODE,
LIBFPTR_ERROR_INVALID_PARAM,
LIBFPTR_ERROR_NOT_LOADED,
LIBFPTR_ERROR_UNKNOWN,
LIBFPTR_ERROR_INVALID_SUM,
LIBFPTR_ERROR_INVALID_QUANTITY,
LIBFPTR_ERROR_CASH_COUNTER_OVERFLOW,
LIBFPTR_ERROR_LAST_OPERATION_STORNO_DENIED,
LIBFPTR_ERROR_STORNO_BY_CODE_DENIED,
LIBFPTR_ERROR_LAST_OPERATION_NOT_REPEATABLE,
LIBFPTR_ERROR_DISCOUNT_NOT_REPEATABLE,
LIBFPTR_ERROR_DISCOUNT_DENIED,
LIBFPTR_ERROR_INVALID_COMMODITY_CODE,
LIBFPTR_ERROR_INVALID_COMMODITY_BARCODE,
LIBFPTR_ERROR_INVALID_COMMAND_FORMAT,
LIBFPTR_ERROR_INVALID_COMMAND_LENGTH,
LIBFPTR_ERROR_BLOCKED_IN_DATE_INPUT_MODE,
LIBFPTR_ERROR_NEED_DATE_ACCEPT,
LIBFPTR_ERROR_NO_MORE_DATA,
LIBFPTR_ERROR_NO_ACCEPT_OR_CANCEL,
LIBFPTR_ERROR_BLOCKED_BY_REPORT_INTERRUPTION,
LIBFPTR_ERROR_DISABLE_CASH_CONTROL_DENIED,
LIBFPTR_ERROR_MODE_BLOCKED,
LIBFPTR_ERROR_CHECK_DATE_TIME,
LIBFPTR_ERROR_DATE_TIME_LESS_THAN_FS,
LIBFPTR_ERROR_CLOSE_ARCHIVE_DENIED,
LIBFPTR_ERROR_COMMODITY_NOT_FOUND,
LIBFPTR_ERROR_WEIGHT_BARCODE_WITH_INVALID_QUANTITY,
LIBFPTR_ERROR_RECEIPT_BUFFER_OVERFLOW,
LIBFPTR_ERROR_QUANTITY_TOO_FEW,
LIBFPTR_ERROR_STORNO_TOO_MUCH,
LIBFPTR_ERROR_BLOCKED_COMMODITY_NOT_FOUND,
LIBFPTR_ERROR_NO_PAPER,
LIBFPTR_ERROR_COVER_OPENED,
LIBFPTR_ERROR_PRINTER_FAULT,
LIBFPTR_ERROR_MECHANICAL_FAULT,
LIBFPTR_ERROR_INVALID_RECEIPT_TYPE,
LIBFPTR_ERROR_INVALID_UNIT_TYPE,
LIBFPTR_ERROR_NO_MEMORY,
LIBFPTR_ERROR_PICTURE_NOT_FOUND,
LIBFPTR_ERROR_NONCACH_PAYMENTS_TOO_MUCH,
LIBFPTR_ERROR_RETURN_DENIED,
LIBFPTR_ERROR_PAYMENTS_OVERFLOW,
LIBFPTR_ERROR_BUSY,
LIBFPTR_ERROR_GSM,
LIBFPTR_ERROR_INVALID_DISCOUNT,
LIBFPTR_ERROR_OPERATION_AFTER_DISCOUNT_DENIED,
LIBFPTR_ERROR_INVALID_DEPARTMENT,
LIBFPTR_ERROR_INVALID_PAYMENT_TYPE,
LIBFPTR_ERROR_MULTIPLICATION_OVERFLOW,
LIBFPTR_ERROR_DENIED_BY_SETTINGS,
LIBFPTR_ERROR_TOTAL_OVERFLOW,
LIBFPTR_ERROR_DENIED_IN_ANNULATION_RECEIPT,
LIBFPTR_ERROR_JOURNAL_OVERFLOW,
LIBFPTR_ERROR_NOT_FULLY_PAID,
LIBFPTR_ERROR_DENIED_IN_RETURN_RECEIPT,
LIBFPTR_ERROR_SHIFT_EXPIRED,
LIBFPTR_ERROR_DENIED_IN_SELL_RECEIPT,
LIBFPTR_ERROR_FISCAL_MEMORY_OVERFLOW,
LIBFPTR_ERROR_INVALID_PASSWORD,
LIBFPTR_ERROR_JOURNAL_BUSY,
LIBFPTR_ERROR_DENIED_IN_CLOSED_SHIFT,
LIBFPTR_ERROR_INVALID_TABLE_NUMBER,
LIBFPTR_ERROR_INVALID_ROW_NUMBER,
LIBFPTR_ERROR_INVALID_FIELD_NUMBER,
LIBFPTR_ERROR_INVALID_DATE_TIME,
LIBFPTR_ERROR_INVALID_STORNO_SUM,
LIBFPTR_ERROR_CHANGE_CALCULATION,
LIBFPTR_ERROR_NO_CASH,
LIBFPTR_ERROR_DENIED_IN_CLOSED_RECEIPT,
LIBFPTR_ERROR_DENIED_IN_OPENED_RECEIPT,
LIBFPTR_ERROR_DENIED_IN_OPENED_SHIFT,
LIBFPTR_ERROR_SERIAL_NUMBER_ALREADY_ENTERED,
LIBFPTR_ERROR_TOO_MUCH_REREGISTRATIONS,
LIBFPTR_ERROR_INVALID_SHIFT_NUMBER,
LIBFPTR_ERROR_INVALID_SERIAL_NUMBER,
LIBFPTR_ERROR_INVALID_RNM_VATIN,
LIBFPTR_ERROR_FISCAL_PRINTER_NOT_ACTIVATED,
LIBFPTR_ERROR_SERIAL_NUMBER_NOT_ENTERED,
LIBFPTR_ERROR_NO_MORE_REPORTS,
LIBFPTR_ERROR_MODE_NOT_ACTIVATED,
LIBFPTR_ERROR_RECORD_NOT_FOUND_IN_JOURNAL,
LIBFPTR_ERROR_INVALID_LICENSE,
LIBFPTR_ERROR_NEED_FULL_RESET,
LIBFPTR_ERROR_DENIED_BY_LICENSE,
LIBFPTR_ERROR_DISCOUNT_CANCELLATION_DENIED,
LIBFPTR_ERROR_CLOSE_RECEIPT_DENIED,
LIBFPTR_ERROR_INVALID_ROUTE_NUMBER,
LIBFPTR_ERROR_INVALID_START_ZONE_NUMBER,
LIBFPTR_ERROR_INVALID_END_ZONE_NUMBER,
LIBFPTR_ERROR_INVALID_RATE_TYPE,
LIBFPTR_ERROR_INVALID_RATE,
LIBFPTR_ERROR_FISCAL_MODULE_EXCHANGE,
LIBFPTR_ERROR_NEED_TECHNICAL_SUPPORT,
LIBFPTR_ERROR_SHIFT_NUMBERS_DID_NOT_MATCH,
LIBFPTR_ERROR_DEVICE_NOT_FOUND,
LIBFPTR_ERROR_EXTERNAL_DEVICE_CONNECTION,
LIBFPTR_ERROR_DISPENSER_INVALID_STATE,
LIBFPTR_ERROR_INVALID_POSITIONS_COUNT,
LIBFPTR_ERROR_DISPENSER_INVALID_NUMBER,
LIBFPTR_ERROR_INVALID_DIVIDER,
LIBFPTR_ERROR_FN_ACTIVATION_DENIED,
LIBFPTR_ERROR_PRINTER_OVERHEAT,
LIBFPTR_ERROR_FN_EXCHANGE,
LIBFPTR_ERROR_FN_INVALID_FORMAT,
LIBFPTR_ERROR_FN_INVALID_STATE,
LIBFPTR_ERROR_FN_FAULT,
LIBFPTR_ERROR_FN_CRYPTO_FAULT,
LIBFPTR_ERROR_FN_EXPIRED,
LIBFPTR_ERROR_FN_OVERFLOW,
LIBFPTR_ERROR_FN_INVALID_DATE_TIME,
LIBFPTR_ERROR_FN_NO_MORE_DATA,
LIBFPTR_ERROR_FN_TOTAL_OVERFLOW,
LIBFPTR_ERROR_BUFFER_OVERFLOW,
LIBFPTR_ERROR_PRINT_SECOND_COPY_DENIED,
LIBFPTR_ERROR_NEED_RESET_JOURNAL,
LIBFPTR_ERROR_TAX_SUM_TOO_MUCH,
LIBFPTR_ERROR_TAX_ON_LAST_OPERATION_DENIED,
LIBFPTR_ERROR_INVALID_FN_NUMBER,
LIBFPTR_ERROR_TAX_CANCEL_DENIED,
LIBFPTR_ERROR_LOW_BATTERY,
LIBFPTR_ERROR_FN_INVALID_COMMAND,
LIBFPTR_ERROR_FN_COMMAND_OVERFLOW,
LIBFPTR_ERROR_FN_NO_TRANSPORT_CONNECTION,
LIBFPTR_ERROR_FN_CRYPTO_HAS_EXPIRED,
LIBFPTR_ERROR_FN_RESOURCE_HAS_EXPIRED,
LIBFPTR_ERROR_INVALID_MESSAGE_FROM_OFD,
LIBFPTR_ERROR_FN_HAS_NOT_SEND_DOCUMENTS,
LIBFPTR_ERROR_FN_TIMEOUT,
LIBFPTR_ERROR_FN_SHIFT_EXPIRED,
LIBFPTR_ERROR_FN_INVALID_TIME_DIFFERENCE,
LIBFPTR_ERROR_INVALID_TAXATION_TYPE,
LIBFPTR_ERROR_INVALID_TAX_TYPE,
LIBFPTR_ERROR_INVALID_COMMODITY_PAYMENT_TYPE,
LIBFPTR_ERROR_INVALID_COMMODITY_CODE_TYPE,
LIBFPTR_ERROR_EXCISABLE_COMMODITY_DENIED,
LIBFPTR_ERROR_FISCAL_PROPERTY_WRITE,
LIBFPTR_ERROR_INVALID_COUNTER_TYPE,
LIBFPTR_ERROR_CUTTER_FAULT,
LIBFPTR_ERROR_REPORT_INTERRUPTED,
LIBFPTR_ERROR_INVALID_LEFT_MARGIN,
LIBFPTR_ERROR_INVALID_ALIGNMENT,
LIBFPTR_ERROR_INVALID_TAX_MODE,
LIBFPTR_ERROR_FILE_NOT_FOUND,
LIBFPTR_ERROR_PICTURE_TOO_BIG,
LIBFPTR_ERROR_INVALID_BARCODE_PARAMS,
LIBFPTR_ERROR_FISCAL_PROPERTY_DENIED,
LIBFPTR_ERROR_FN_INTERFACE,
LIBFPTR_ERROR_DATA_DUPLICATE,
LIBFPTR_ERROR_NO_REQUIRED_FISCAL_PROPERTY,
LIBFPTR_ERROR_FN_READ_DOCUMENT,
LIBFPTR_ERROR_FLOAT_OVERFLOW,
LIBFPTR_ERROR_INVALID_SETTING_VALUE,
LIBFPTR_ERROR_HARD_FAULT,
LIBFPTR_ERROR_FN_NOT_FOUND,
LIBFPTR_ERROR_INVALID_AGENT_FISCAL_PROPERTY,
LIBFPTR_ERROR_INVALID_FISCAL_PROPERTY_VALUE_1002_1056,
LIBFPTR_ERROR_INVALID_FISCAL_PROPERTY_VALUE_1002_1017,
LIBFPTR_ERROR_SCRIPT,
LIBFPTR_ERROR_INVALID_USER_MEMORY_INDEX,
LIBFPTR_ERROR_NO_ACTIVE_OPERATOR,
LIBFPTR_ERROR_REGISTRATION_REPORT_INTERRUPTED,
LIBFPTR_ERROR_CLOSE_FN_REPORT_INTERRUPTED,
LIBFPTR_ERROR_OPEN_SHIFT_REPORT_INTERRUPTED,
LIBFPTR_ERROR_OFD_EXCHANGE_REPORT_INTERRUPTED,
LIBFPTR_ERROR_CLOSE_RECEIPT_INTERRUPTED,
LIBFPTR_ERROR_FN_QUERY_INTERRUPTED,
LIBFPTR_ERROR_RTC_FAULT,
LIBFPTR_ERROR_MEMORY_FAULT,
LIBFPTR_ERROR_CHIP_FAULT,
LIBFPTR_ERROR_TEMPLATES_CORRUPTED,
LIBFPTR_ERROR_INVALID_MAC_ADDRESS,
LIBFPTR_ERROR_INVALID_SCRIPT_NUMBER,
LIBFPTR_ERROR_SCRIPTS_FAULT,
LIBFPTR_ERROR_INVALID_SCRIPTS_VERSION,
LIBFPTR_ERROR_INVALID_CLICHE_FORMAT,
LIBFPTR_ERROR_WAIT_FOR_REBOOT,
LIBFPTR_ERROR_NO_LICENSE,
LIBFPTR_ERROR_INVALID_FFD_VERSION,
LIBFPTR_ERROR_CHANGE_SETTING_DENIED,
LIBFPTR_ERROR_INVALID_NOMENCLATURE_TYPE,
LIBFPTR_ERROR_INVALID_GTIN,
LIBFPTR_ERROR_NEGATIVE_MATH_RESULT,
LIBFPTR_ERROR_FISCAL_PROPERTIES_COMBINATION,
LIBFPTR_ERROR_OPERATOR_LOGIN,
LIBFPTR_ERROR_INVALID_INTERNET_CHANNEL,
LIBFPTR_ERROR_DATETIME_NOT_SYNCRONIZED,
LIBFPTR_ERROR_JOURNAL,
LIBFPTR_ERROR_DENIED_IN_OPENED_DOC,
LIBFPTR_ERROR_DENIED_IN_CLOSED_DOC,
LIBFPTR_ERROR_LICENSE_MEMORY_OVERFLOW,
LIBFPTR_ERROR_NEED_CANCEL_DOCUMENT,
LIBFPTR_ERROR_REGISTERS_NOT_INITIALIZED,
LIBFPTR_ERROR_TOTAL_REQUIRED,
LIBFPTR_ERROR_SETTINGS_FAULT,
LIBFPTR_ERROR_COUNTERS_FAULT,
LIBFPTR_ERROR_USER_MEMORY_FAULT,
LIBFPTR_ERROR_SERVICE_COUNTERS_FAULT,
LIBFPTR_ERROR_ATTRIBUTES_FAULT,
LIBFPTR_ERROR_ALREADY_IN_UPDATE_MODE,
LIBFPTR_ERROR_INVALID_FIRMWARE,
LIBFPTR_ERROR_INVALID_CHANNEL,
LIBFPTR_ERROR_INTERFACE_DOWN,
LIBFPTR_ERROR_INVALID_FISCAL_PROPERTY_VALUE_1212_1030,
LIBFPTR_ERROR_INVALID_FISCAL_PROPERTY_VALUE_1214,
LIBFPTR_ERROR_INVALID_FISCAL_PROPERTY_VALUE_1212,
LIBFPTR_ERROR_SYNC_TIME,
LIBFPTR_ERROR_VAT18_VAT20_IN_RECEIPT,
LIBFPTR_ERROR_PICTURE_NOT_CLOSED,
LIBFPTR_ERROR_INTERFACE_BUSY,
LIBFPTR_ERROR_INVALID_PICTURE_NUMBER,
LIBFPTR_ERROR_INVALID_CONTAINER,
LIBFPTR_ERROR_ARCHIVE_CLOSED,
LIBFPTR_ERROR_NEED_REGISTRATION,
LIBFPTR_ERROR_DENIED_DURING_UPDATE,
LIBFPTR_ERROR_INVALID_TOTAL,
LIBFPTR_ERROR_MARKING_CODE_CONFLICT,
LIBFPTR_ERROR_INVALID_RECORDS_ID,
LIBFPTR_ERROR_INVALID_SIGNATURE,
LIBFPTR_ERROR_INVALID_EXCISE_SUM,
LIBFPTR_ERROR_NO_DOCUMENTS_FOUND_IN_JOURNAL,
LIBFPTR_ERROR_INVALID_SCRIPT_TYPE,
LIBFPTR_ERROR_INVALID_SCRIPT_NAME,
LIBFPTR_ERROR_INVALID_POSITIONS_COUNT_WITH_1162,
LIBFPTR_ERROR_INVALID_UC_COUNTER,
LIBFPTR_ERROR_INVALID_UC_TAG,
LIBFPTR_ERROR_INVALID_UC_IDX,
LIBFPTR_ERROR_INVALID_UC_SIZE,
LIBFPTR_ERROR_INVALID_UC_CONFIG,
LIBFPTR_ERROR_CONNECTION_LOST,
LIBFPTR_ERROR_UNIVERSAL_COUNTERS_FAULT,
LIBFPTR_ERROR_INVALID_TAX_SUM,
LIBFPTR_ERROR_INVALID_MARKING_CODE_TYPE,
LIBFPTR_ERROR_LICENSE_HARD_FAULT,
LIBFPTR_ERROR_LICENSE_INVALID_SIGN,
LIBFPTR_ERROR_LICENSE_INVALID_SERIAL,
LIBFPTR_ERROR_LICENSE_INVALID_TIME,
LIBFPTR_ERROR_DOCUMENT_CANCELED,
LIBFPTR_ERROR_INVALID_SCRIPT_PARAMS,
LIBFPTR_ERROR_CLICHE_TOO_LONG,
LIBFPTR_ERROR_COMMODITIES_TABLE_FAULT,
LIBFPTR_ERROR_COMMODITIES_TABLE,
LIBFPTR_ERROR_COMMODITIES_TABLE_INVALID_TAG,
LIBFPTR_ERROR_COMMODITIES_TABLE_INVALID_TAG_SIZE,
LIBFPTR_ERROR_COMMODITIES_TABLE_NO_TAG_DATA,
LIBFPTR_ERROR_COMMODITIES_TABLE_NO_FREE_MEMORY,
LIBFPTR_ERROR_INVALID_CACHE,
LIBFPTR_ERROR_SCHEDULER_NOT_READY,
LIBFPTR_ERROR_SCHEDULER_INVALID_TASK,
LIBFPTR_ERROR_MINIPOS_NO_POSITION_PAYMENT,
LIBFPTR_ERROR_MINIPOS_COMMAND_TIME_OUT,
LIBFPTR_ERROR_MINIPOS_MODE_FR_DISABLED,
LIBFPTR_ERROR_ENTRY_NOT_FOUND_IN_OTP,
LIBFPTR_ERROR_EXCISABLE_COMMODITY_WITHOUT_EXCISE,
LIBFPTR_ERROR_BARCODE_TYPE_NOT_SUPPORTED,
LIBFPTR_ERROR_OVERLAY_DATA_OVERFLOW,
LIBFPTR_ERROR_INVALID_MODULE_ADDRESS,
LIBFPTR_ERROR_ECR_MODEL_NOT_SUPPORTED,
LIBFPTR_ERROR_BASE_MARKING = 400,
LIBFPTR_ERROR_MARKING_CODE_VALIDATION_IN_PROGRESS,
LIBFPTR_ERROR_NO_CONNECTION_WITH_SERVER,
LIBFPTR_ERROR_MARKING_CODE_VALIDATION_CANCELED,
LIBFPTR_ERROR_INVALID_MARKING_CODE_STATUS,
LIBFPTR_ERROR_INVALID_GS1,
LIBFPTR_ERROR_MARKING_WORK_DENIED,
LIBFPTR_ERROR_MARKING_WORK_TEMPORARY_BLOCKED,
LIBFPTR_ERROR_MARKS_OVERFLOW,
LIBFPTR_ERROR_INVALID_MARKING_CODE,
LIBFPTR_ERROR_INVALID_STATE,
LIBFPTR_ERROR_OFD_EXCHANGE,
LIBFPTR_ERROR_INVALID_MEASUREMENT_UNIT,
LIBFPTR_ERROR_OPERATION_DENIED_IN_CURRENT_FFD,
LIBFPTR_ERROR_MARKING_OPERATION_DENIED,
LIBFPTR_ERROR_NO_DATA_TO_SEND,
LIBFPTR_ERROR_NO_MARKED_POSITION,
LIBFPTR_ERROR_HAS_NOT_SEND_NOTICES,
LIBFPTR_ERROR_UPDATE_KEYS_REQUIRED,
LIBFPTR_ERROR_UPDATE_KEYS_SERVICE,
LIBFPTR_ERROR_MARK_NOT_CHECKED,
LIBFPTR_ERROR_MARK_CHECK_TIMEOUT_EXPIRED,
LIBFPTR_ERROR_NO_MARKING_CODE_IN_TABLE,
LIBFPTR_ERROR_CHEKING_MARK_IN_PROGRESS,
LIBFPTR_ERROR_INVALID_SERVER_ADDRESS,
LIBFPTR_ERROR_UPDATE_KEYS_TIMEOUT,
LIBFPTR_ERROR_PROPERTY_FOR_MARKING_POSITION_ONLY,
LIBFPTR_ERROR_MARKING_END = 499,
LIBFPTR_ERROR_BASE_WEB = 500,
LIBFPTR_ERROR_RECEIPT_PARSE_ERROR,
LIBFPTR_ERROR_INTERRUPTED_BY_PREVIOUS_ERRORS,
LIBFPTR_ERROR_DRIVER_SCRIPT_ERROR,
LIBFPTR_ERROR_VALIDATE_FUNC_NOT_FOUND,
LIBFPTR_ERROR_WEB_FAIL,
LIBFPTR_ERROR_WEB_END = 599,
LIBFPTR_ERROR_BASE_RPC = 600,
LIBFPTR_ERROR_RCP_SERVER_BUSY,
LIBFPTR_ERROR_RCP_SERVER_VERSION,
LIBFPTR_ERROR_RCP_SERVER_EXCHANGE,
LIBFPTR_ERROR_RPC_END = 699,
LIBFPTR_ERROR_USERS_SCRIPTS_BASE = 1000,
LIBFPTR_ERROR_USERS_SCRIPTS_END = 1999,
}
// @ts-ignore
export const ErrorCodes = {
0: «Ошибок нет»,
1: «Соединение не установлено»,
2: «Нет связи»,
3: «Порт занят»,
4: «Порт недоступен»,
5: «Некорректные данные от устройства»,
6: «Внутренняя ошибка библиотеки»,
7: «Неподдерживаемое преобразование типа параметра»,
8: «Не найден обязательный параметр»,
9: «Некорректные настройки»,
10: «Драйвер не настроен»,
11: «Не поддерживается в данной версии (драйвера или ККТ)»,
12: «Не поддерживается в данном режиме»,
13: «Нeкорректное значение параметра»,
14: «Не удалось загрузить библиотеку»,
15: «Неизвестная ошибка»,
16: «Неверная цена (сумма)»,
17: «Неверное количество»,
18: «Переполнение счетчика наличности»,
19: «Невозможно сторно последней операции»,
20: «Сторно по коду невозможно»,
21: «Невозможен повтор последней операции»,
22: «Повторная скидка на операцию невозможна»,
23: «Невозможно начислить скидку/надбавку»,
24: «Неверный код товара»,
25: «Неверный штрихкод товара»,
26: «Неверный формат команды»,
27: «Неверная длина»,
28: «ККТ заблокирована в режиме ввода даты»,
29: «Требуется подтверждение ввода даты»,
30: «Нет больше данных»,
31: «Нет подтверждения или отмены продажи»,
32: «Отчет о закрытии смены прерван»,
33: «Отключение контроля наличности невозможно (не настроены необходимые типы оплаты)»,
34: «Вход в режим заблокирован»,
35: «Проверьте дату и время»,
36: «Переданные дата/время меньше даты/времени последнего фискального документа»,
37: «Невозможно закрыть архив»,
38: «Товар не найден»,
39: «Весовой штрихкод с количеством <> 1.000»,
40: «Переполнение буфера чека»,
41: «Недостаточное количество товара»,
42: «Сторнируемое количество больше проданного»,
43: «Товар не найден»,
44: «Нет бумаги»,
45: «Открыта крышка»,
46: «Нет связи с принтером чеков»,
47: «Механическая ошибка печатающего устройства»,
48: «Неверный тип чека»,
49: «Недопустимое целевое устройство»,
50: «Нет места в массиве картинок/штрихкодов»,
51: «Неверный номер картинки/штрихкода (картинка/штрихкод отсутствует)»,
52: «Сумма не наличных платежей превышает сумму чека»,
53: «Накопление меньше суммы возврата или аннулирования»,
54: «Переполнение суммы платежей»,
55: «Предыдущая операция незавершена»,
56: «Ошибка GSM- модуля»,
57: «Неверная величина скидки / надбавки»,
58: «Операция после скидки / надбавки невозможна»,
59: «Неверная секция»,
60: «Неверный вид оплаты»,
61: «Переполнение при умножении»,
62: «Операция запрещена в таблице настроек»,
63: «Переполнение итога чека»,
64: «Открыт чек аннулирования – операция невозможна»,
65: «Переполнение буфера ЭЖ»,
66: «Чек оплачен не полностью»,
67: «Открыт чек возврата – операция невозможна»,
68: «Смена превысила 24 часа»,
69: «Открыт чек продажи – операция невозможна»,
70: «Переполнение ФП»,
71: «Неверный пароль»,
72: «Идет обработка ЭЖ»,
73: «Смена закрыта — операция невозможна»,
74: «Неверный номер таблицы»,
75: «Неверный номер ряда»,
76: «Неверный номер поля»,
77: «Неверная дата и/или время»,
78: «Неверная сумма сторно»,
79: «Подсчет суммы сдачи невозможен»,
80: «В ККТ нет денег для выплаты»,
81: «Чек закрыт – операция невозможна»,
82: «Чек открыт – операция невозможна»,
83: «Смена открыта, операция невозможна»,
84: «Серийный номер / MAC- адрес уже задан»,
85: «Исчерпан лимит перерегистраций»,
86: «Неверный номер смены»,
87: «Недопустимый серийный номер ККТ»,
88: «Недопустимый РНМ и/или ИНН»,
89: «ККТ не зарегистрирована»,
90: «Не задан серийный номер»,
91: «Нет отчетов»,
92: «Режим не активизирован»,
93: «Данные документа отсутствуют»,
94: «Некорректный код защиты / лицензия или номер»,
95: «Требуется выполнение общего гашения»,
96: «Команда не разрешена введенными кодами защиты / лицензиями ККТ»,
97: «Невозможна отмена скидки/надбавки»,
98: «Невозможно закрыть чек данным типом оплаты»,
99: «Неверный номер маршрута»,
100: «Неверный номер начальной зоны»,
101: «Неверный номер конечной зоны»,
102: «Неверный тип тарифа»,
103: «Неверный тариф»,
104: «Ошибка обмена с фискальным модулем»,
105: «Необходимо провести профилактические работы»,
106: «Неверные номера смен в ККТ и ФН»,
107: «Нет устройства, обрабатывающего данную команду»,
108: «Нет связи с внешним устройством»,
109: «Ошибочное состояние ТРК»,
110: «Недопустимое кол- во позиций в чеке»,
111: «Ошибочный номер ТРК»,
112: «Неверный делитель»,
113: «Активация данного ФН в составе данной ККТ невозможна»,
114: «Перегрев головки принтера»,
115: «Ошибка обмена с ФН на уровне интерфейса I2C»,
116: «Ошибка формата передачи ФН»,
117: «Неверное состояние ФН»,
118: «Неисправимая ошибка ФН»,
119: «Ошибка КС ФН»,
120: «Закончен срок эксплуатации ФН»,
121: «Архив ФН переполнен»,
122: «В ФН переданы неверная дата или время»,
123: «В ФН нет запрошенных данных»,
124: «Переполнение ФН (итог чека / смены)»,
125: «Буфер переполнен»,
126: «Невозможно напечатать вторую фискальную копию»,
127: «Требуется гашение ЭЖ»,
128: «Некорректная сумма налога»,
129: «Начисление налога на последнюю операцию невозможно»,
130: «Неверный номер ФН»,
131: «Сумма сторно налога больше суммы зарегистрированного налога данного типа»,
132: «Операция невозможна, недостаточно питания»,
133: «Некорректное значение параметров команды ФН»,
134: «Превышение размеров TLV данных ФН»,
135: «Нет транспортного соединения ФН»,
136: «Исчерпан ресурс КС ФН»,
137: «Ресурс хранения ФД исчерпан»,
138: «Сообщение от ОФД не может быть принято ФН»,
139: «В ФН есть неотправленные ФД»,
140: «Исчерпан ресурс ожидания передачи сообщения в ФН»,
141: «Продолжительность смены ФН более 24 часов»,
142: «Неверная разница во времени между двумя операциями ФН»,
143: «Некорректная СНО»,
144: «Недопустимый номер ставки налога»,
145: «Недопустимый тип оплаты товара»,
146: «Недопустимый тип кода товара»,
147: «Недопустима регистрация подакцизного товара»,
148: «Ошибка программирования реквизита»,
149: «Неверный тип счетчика»,
150: «Ошибка отрезчика»,
151: «Снятие отчета прервалось»,
152: «Недопустимое значение отступа слева»,
153: «Недопустимое значение выравнивания»,
154: «Недопустимое значение режима работы с налогом»,
155: «Файл не найден или неверный формат»,
156: «Размер картинки слишком большой»,
157: «Не удалось сформировать штрихкод»,
158: «Неразрешенные реквизиты»,
159: «Ошибка интерфейса ФН»,
160: «Дублирование данных»,
161: «Не указаны обязательные реквизиты»,
162: «Ошибка чтения документа из ФН»,
163: «Переполнение чисел с плавающей точкой»,
164: «Неверное значение параметра ККТ»,
165: «Внутренняя ошибка ККТ»,
166: «ФН не найден»,
167: «Невозможно записать реквизит агента»,
168: «Недопустимое сочетания реквизитов 1002 и 1056»,
169: «Недопустимое сочетания реквизитов 1002 и 1017»,
170: «Ошибка скриптового движка ККТ»,
171: «Неверный номер пользовательской ячейки памяти»,
172: «Кассир не зарегистрирован»,
173: «Отчет о регистрации ККТ прерван»,
174: «Отчет о закрытии ФН прерван»,
175: «Отчет об открытии смены прерван»,
176: «Отчет о состоянии расчетов прерван»,
177: «Закрытие чека прервано»,
178: «Получение документа из ФН прервано»,
179: «Сбой часов»,
180: «Сбой памяти»,
181: «Сбой микросхемы»,
182: «Ошибка шаблонов документов»,
183: «Недопустимое значение MAC- адреса»,
184: «Неверный тип (номер) шаблона»,
185: «Загруженные шаблоны повреждены или отсутствуют»,
186: «Несовместимая версия загруженных шаблонов»,
187: «Ошибка в формате клише»,
188: «Требуется перезагрузка ККТ»,
189: «Подходящие лицензии не найдены»,
190: «Неверная версия ФФД»,
191: «Параметр доступен только для чтения»,
192: «Неверный тип кода товара»,
193: «Неверное значение GTIN»,
194: «Отрицательный результат математической операции»,
195: «Недопустимое сочетание реквизитов»,
196: «Ошибка регистрации кассира»,
197: «Данный канал Интернет отсутствует в ККТ»,
198: «Дата и время не синхронизированы»,
199: «Ошибка электронного журнала»,
200: «Документ открыт — операция невозможна»,
201: «Документ закрыт — операция невозможна»,
202: «Нет места для сохранения лицензий»,
203: «Произошла критичная ошибка, документ необходимо отменить»,
204: «Регистры ККТ еще не инициализированы»,
205: «Требуется регистрация итога»,
206: «Сбой таблицы настроек»,
207: «Сбой счетчиков и регистров ККТ»,
208: «Сбой пользовательской памяти»,
209: «Сбой сервисных регистров»,
210: «Сбой реквизитов ККТ»,
211: «ККТ уже в режиме обновления конфигурации»,
212: «Конфигурация не прошла проверку»,
213: «Аппаратный канал отсутствует, выключен или ещё не проинициализирован»,
214: «Сетевой интерфейс не подключен, или на нём не получен IP-адрес»,
215: «Недопустимое сочетание реквизитов 1212 и 1030»,
216: «Некорректный признак способа расчета»,
217: «Некорректный признак предмета расчета»,
218: «Ошибка синхронизации времени»,
219: «В одном чеке одновременно не может быть позиций с НДС 18% (18/118) и НДС 20% (20/120)»,
220: «Картинка не закрыта»,
221: «Сетевой интерфейс занят»,
222: «Неверный номер картинки»,
223: «Ошибка проверки контейнера»,
224: «Архив ФН закрыт»,
225: «Нужно выполнить регистрацию / перерегистрацию»,
226: «Операция невозможна, идет обновление ПО ККТ»,
227: «Неверный итог чека»,
228: «Запрещена одновременная передача КМ и реквизита 1162»,
229: «Набор записей по заданному идентификатору не найден»,
230: «Ошибка цифровой подписи»,
231: «Некорректная сумма акциза»,
232: «Заданный диапазон документов не найден в БД документов»,
233: «Неподдерживаемый тип скрипта»,
234: «Некорректный идентификатор скрипта»,
235: «Кол-во позиций с реквизитом 1162 в автономном режиме превысило разрешенный лимит»,
236: «Универсальный счетчик с заданными параметрами недоступен»,
237: «Неподдерживаемый тег для универсальных счетчиков»,
238: «Некорректный индекс для универсальных счетчиков»,
239: «Неверный размер универсального счетчика»,
240: «Неверная конфигурация универсальных счетчиков»,
241: «Соединение с ККТ потеряно»,
242: «Ошибка универсальных счетчиков»,
243: «Некорректная сумма налога»,
244: «Некорректное значение типа кода маркировки»,
245: «Аппаратная ошибка при сохранении лицензии»,
246: «Подпись лицензии некорректна»,
247: «Лицензия не подходит для данной ККТ»,
248: «Срок действия лицензии истёк»,
249: «Документ был отменен»,
250: «Некорректные параметры скрипта»,
251: «Длина клише превышает максимальное значение»,
252: «Ошибка таблицы товаров»,
253: «Общая ошибка таблицы товаров»,
254: «Некорректный тег для таблицы товаров»,
255: «Некорректный размер тега для таблицы товаров»,
256: «Нет данных по тегу в таблице товаров»,
257: «Нет места в динамической области памяти таблицы товаров»,
258: «Ошибка чтения/записи данных кеша»,
259: «Функции планировщика заданий не доступны»,
260: «Неизвестный тип задания планировщика»,
261: «Отсутствует позиция оплаты»,
262: «Таймаут выполнения команды истек»,
263: «Режим ФР выключен»,
264: «Не найдена запись в OTP»,
265: «Подакцизный товар без акциза зарегистрирован в чеке»,
401: «Процедура проверки КМ уже запущена»,
402: «Ошибка соединения с сервером»,
403: «Процедура проверки КМ прервана»,
404: «Некорректное значение статуса КМ»,
405: «Неверный код GS1»,
406: «Запрещена работа с маркированным товарами»,
407: «Работа с маркированными товарами временно заблокирована»,
408: «Переполнена таблица хранения КМ»,
409: «Некорректный код маркировки»,
410: «Неверное состояние»,
411: «Ошибка обмена с сервером ОФД или ИСМ»,
412: «Некорректное значение единиц измерения»,
413: «Операция не разрешена в данной версии ФФД»,
414: «Операция не разрешена, при регистрации не был установлен признак ТМТ»,
415: «Нет данных для отправки»,
416: «Нет маркированных позиций в чеке»,
417: «Имеются неотправленные уведомления»,
418: «Требуется повторное проведение процедуры обновления ключей»,
419: «Ошибка сервиса обновления ключей проверки КМ»,
420: «КМ не проверен в ФН»,
421: «Истёк таймаут проверки КМ»,
422: «Данный КМ отсутствует в таблице»,
501: «Ошибка парсинга чека / запроса»,
502: «Выполнение прервано из-за предыдущих ошибок»,
503: «Ошибка скрипта драйвера»,
504: «Функция проверки задания не найдена»,
505: «Выполняется проверка КМ»,
} as const
export enum Param {
LIBFPTR_PARAM_FIRST = 65536,
LIBFPTR_PARAM_TEXT = LIBFPTR_PARAM_FIRST,
LIBFPTR_PARAM_TEXT_WRAP,
LIBFPTR_PARAM_ALIGNMENT,
LIBFPTR_PARAM_FONT,
LIBFPTR_PARAM_FONT_DOUBLE_WIDTH,
LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT,
LIBFPTR_PARAM_LINESPACING,
LIBFPTR_PARAM_BRIGHTNESS,
LIBFPTR_PARAM_MODEL,
LIBFPTR_PARAM_RECEIPT_TYPE,
LIBFPTR_PARAM_REPORT_TYPE,
LIBFPTR_PARAM_MODE,
LIBFPTR_PARAM_EXTERNAL_DEVICE_TYPE,
LIBFPTR_PARAM_EXTERNAL_DEVICE_DATA,
LIBFPTR_PARAM_FREQUENCY,
LIBFPTR_PARAM_DURATION,
LIBFPTR_PARAM_CUT_TYPE,
LIBFPTR_PARAM_DRAWER_ON_TIMEOUT,
LIBFPTR_PARAM_DRAWER_OFF_TIMEOUT,
LIBFPTR_PARAM_DRAWER_ON_QUANTITY,
LIBFPTR_PARAM_TIMEOUT_ENQ,
LIBFPTR_PARAM_COMMAND_BUFFER,
LIBFPTR_PARAM_ANSWER_BUFFER,
LIBFPTR_PARAM_SERIAL_NUMBER,
LIBFPTR_PARAM_MANUFACTURER_CODE,
LIBFPTR_PARAM_NO_NEED_ANSWER,
LIBFPTR_PARAM_INFO_DISCOUNT_SUM,
LIBFPTR_PARAM_USE_ONLY_TAX_TYPE,
LIBFPTR_PARAM_PAYMENT_TYPE,
LIBFPTR_PARAM_PAYMENT_SUM,
LIBFPTR_PARAM_REMAINDER,
LIBFPTR_PARAM_CHANGE,
LIBFPTR_PARAM_DEPARTMENT,
LIBFPTR_PARAM_TAX_TYPE,
LIBFPTR_PARAM_TAX_SUM,
LIBFPTR_PARAM_TAX_MODE,
LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY,
LIBFPTR_PARAM_USER_PASSWORD,
LIBFPTR_PARAM_SCALE,
LIBFPTR_PARAM_LEFT_MARGIN,
LIBFPTR_PARAM_BARCODE,
LIBFPTR_PARAM_BARCODE_TYPE,
LIBFPTR_PARAM_BARCODE_PRINT_TEXT,
LIBFPTR_PARAM_BARCODE_VERSION,
LIBFPTR_PARAM_BARCODE_CORRECTION,
LIBFPTR_PARAM_BARCODE_COLUMNS,
LIBFPTR_PARAM_BARCODE_INVERT,
LIBFPTR_PARAM_HEIGHT,
LIBFPTR_PARAM_WIDTH,
LIBFPTR_PARAM_FILENAME,
LIBFPTR_PARAM_PICTURE_NUMBER,
LIBFPTR_PARAM_DATA_TYPE,
LIBFPTR_PARAM_OPERATOR_ID,
LIBFPTR_PARAM_LOGICAL_NUMBER,
LIBFPTR_PARAM_DATE_TIME,
LIBFPTR_PARAM_FISCAL,
LIBFPTR_PARAM_SHIFT_STATE,
LIBFPTR_PARAM_CASHDRAWER_OPENED,
LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT,
LIBFPTR_PARAM_COVER_OPENED,
LIBFPTR_PARAM_SUBMODE,
LIBFPTR_PARAM_RECEIPT_NUMBER,
LIBFPTR_PARAM_DOCUMENT_NUMBER,
LIBFPTR_PARAM_SHIFT_NUMBER,
LIBFPTR_PARAM_RECEIPT_SUM,
LIBFPTR_PARAM_RECEIPT_LINE_LENGTH,
LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX,
LIBFPTR_PARAM_MODEL_NAME,
LIBFPTR_PARAM_UNIT_VERSION,
LIBFPTR_PARAM_PRINTER_CONNECTION_LOST,
LIBFPTR_PARAM_PRINTER_ERROR,
LIBFPTR_PARAM_CUT_ERROR,
LIBFPTR_PARAM_PRINTER_OVERHEAT,
LIBFPTR_PARAM_UNIT_TYPE,
LIBFPTR_PARAM_LICENSE_NUMBER,
LIBFPTR_PARAM_LICENSE_ENTERED,
LIBFPTR_PARAM_LICENSE,
LIBFPTR_PARAM_SUM,
LIBFPTR_PARAM_COUNT,
LIBFPTR_PARAM_COUNTER_TYPE,
LIBFPTR_PARAM_STEP_COUNTER_TYPE,
LIBFPTR_PARAM_ERROR_TAG_NUMBER,
LIBFPTR_PARAM_TABLE,
LIBFPTR_PARAM_ROW,
LIBFPTR_PARAM_FIELD,
LIBFPTR_PARAM_FIELD_VALUE,
LIBFPTR_PARAM_FN_DATA_TYPE,
LIBFPTR_PARAM_TAG_NUMBER,
LIBFPTR_PARAM_TAG_VALUE,
LIBFPTR_PARAM_DOCUMENTS_COUNT,
LIBFPTR_PARAM_FISCAL_SIGN,
LIBFPTR_PARAM_DEVICE_FFD_VERSION,
LIBFPTR_PARAM_FN_FFD_VERSION,
LIBFPTR_PARAM_FFD_VERSION,
LIBFPTR_PARAM_CHECK_SUM,
LIBFPTR_PARAM_COMMODITY_NAME,
LIBFPTR_PARAM_PRICE,
LIBFPTR_PARAM_QUANTITY,
LIBFPTR_PARAM_POSITION_SUM,
LIBFPTR_PARAM_FN_TYPE,
LIBFPTR_PARAM_FN_VERSION,
LIBFPTR_PARAM_REGISTRATIONS_REMAIN,
LIBFPTR_PARAM_REGISTRATIONS_COUNT,
LIBFPTR_PARAM_NO_ERROR_IF_NOT_SUPPORTED,
LIBFPTR_PARAM_OFD_EXCHANGE_STATUS,
LIBFPTR_PARAM_FN_ERROR_DATA,
LIBFPTR_PARAM_FN_ERROR_CODE,
LIBFPTR_PARAM_ENVD_MODE,
LIBFPTR_PARAM_DOCUMENT_CLOSED,
LIBFPTR_PARAM_JSON_DATA,
LIBFPTR_PARAM_COMMAND_SUBSYSTEM,
LIBFPTR_PARAM_FN_OPERATION_TYPE,
LIBFPTR_PARAM_FN_STATE,
LIBFPTR_PARAM_ENVD_MODE_ENABLED,
LIBFPTR_PARAM_SETTING_ID,
LIBFPTR_PARAM_SETTING_VALUE,
LIBFPTR_PARAM_MAPPING_KEY,
LIBFPTR_PARAM_MAPPING_VALUE,
LIBFPTR_PARAM_COMMODITY_PIECE,
LIBFPTR_PARAM_POWER_SOURCE_TYPE,
LIBFPTR_PARAM_BATTERY_CHARGE,
LIBFPTR_PARAM_VOLTAGE,
LIBFPTR_PARAM_USE_BATTERY,
LIBFPTR_PARAM_BATTERY_CHARGING,
LIBFPTR_PARAM_CAN_PRINT_WHILE_ON_BATTERY,
LIBFPTR_PARAM_MAC_ADDRESS,
LIBFPTR_PARAM_FN_FISCAL,
LIBFPTR_PARAM_NETWORK_ERROR,
LIBFPTR_PARAM_OFD_ERROR,
LIBFPTR_PARAM_FN_ERROR,
LIBFPTR_PARAM_COMMAND_CODE,
LIBFPTR_PARAM_PRINTER_TEMPERATURE,
LIBFPTR_PARAM_RECORDS_TYPE,
LIBFPTR_PARAM_OFD_FISCAL_SIGN,
LIBFPTR_PARAM_HAS_OFD_TICKET,
LIBFPTR_PARAM_NO_SERIAL_NUMBER,
LIBFPTR_PARAM_RTC_FAULT,
LIBFPTR_PARAM_SETTINGS_FAULT,
LIBFPTR_PARAM_COUNTERS_FAULT,
LIBFPTR_PARAM_USER_MEMORY_FAULT,
LIBFPTR_PARAM_SERVICE_COUNTERS_FAULT,
LIBFPTR_PARAM_ATTRIBUTES_FAULT,
LIBFPTR_PARAM_FN_FAULT,
LIBFPTR_PARAM_INVALID_FN,
LIBFPTR_PARAM_HARD_FAULT,
LIBFPTR_PARAM_MEMORY_MANAGER_FAULT,
LIBFPTR_PARAM_SCRIPTS_FAULT,
LIBFPTR_PARAM_FULL_RESET,
LIBFPTR_PARAM_WAIT_FOR_REBOOT,
LIBFPTR_PARAM_SCALE_PERCENT,
LIBFPTR_PARAM_FN_NEED_REPLACEMENT,
LIBFPTR_PARAM_FN_RESOURCE_EXHAUSTED,
LIBFPTR_PARAM_FN_MEMORY_OVERFLOW,
LIBFPTR_PARAM_FN_OFD_TIMEOUT,
LIBFPTR_PARAM_FN_CRITICAL_ERROR,
LIBFPTR_PARAM_OFD_MESSAGE_READ,
LIBFPTR_PARAM_DEVICE_MIN_FFD_VERSION,
LIBFPTR_PARAM_DEVICE_MAX_FFD_VERSION,
LIBFPTR_PARAM_DEVICE_UPTIME,
LIBFPTR_PARAM_NOMENCLATURE_TYPE,
LIBFPTR_PARAM_GTIN,
LIBFPTR_PARAM_FN_DOCUMENT_TYPE,
LIBFPTR_PARAM_NETWORK_ERROR_TEXT,
LIBFPTR_PARAM_FN_ERROR_TEXT,
LIBFPTR_PARAM_OFD_ERROR_TEXT,
LIBFPTR_PARAM_USER_SCRIPT_ID,
LIBFPTR_PARAM_USER_SCRIPT_PARAMETER,
LIBFPTR_PARAM_USER_MEMORY_OPERATION,
LIBFPTR_PARAM_USER_MEMORY_DATA,
LIBFPTR_PARAM_USER_MEMORY_STRING,
LIBFPTR_PARAM_USER_MEMORY_ADDRESS,
LIBFPTR_PARAM_FN_PRESENT,
LIBFPTR_PARAM_BLOCKED,
LIBFPTR_PARAM_DOCUMENT_PRINTED,
LIBFPTR_PARAM_DISCOUNT_SUM,
LIBFPTR_PARAM_SURCHARGE_SUM,
LIBFPTR_PARAM_LK_USER_CODE,
LIBFPTR_PARAM_LICENSE_COUNT,
LIBFPTR_PARAM_DEFER,
LIBFPTR_PARAM_CAP_54FZ,
LIBFPTR_PARAM_CAP_MANUAL_CLICHE_CONTROL,
LIBFPTR_PARAM_CAP_PAYMENTS_COUNT,
LIBFPTR_PARAM_FIRMWARE_CHUNK_SIZE,
LIBFPTR_PARAM_FIRMWARE_CHUNK_DATA,
LIBFPTR_PARAM_FN_FLAGS,
LIBFPTR_PARAM_PRINT_FOOTER,
LIBFPTR_PARAM_PUBLIC_KEY,
LIBFPTR_PARAM_MAGIC_NUMBER,
LIBFPTR_PARAM_SIGN,
LIBFPTR_PARAM_SOFT_NAME,
LIBFPTR_PARAM_SESSION_CODE,
LIBFPTR_PARAM_ETHERNET_CONFIG_TIMEOUT,
LIBFPTR_PARAM_ETHERNET_DHCP,
LIBFPTR_PARAM_ETHERNET_IP,
LIBFPTR_PARAM_ETHERNET_MASK,
LIBFPTR_PARAM_ETHERNET_GATEWAY,
LIBFPTR_PARAM_ETHERNET_PORT,
LIBFPTR_PARAM_ETHERNET_DNS_IP,
LIBFPTR_PARAM_ETHERNET_DNS_STATIC,
LIBFPTR_PARAM_STORE_IN_JOURNAL,
LIBFPTR_PARAM_NEW_PLATFORM,
LIBFPTR_PARAM_UNIT_RELEASE_VERSION,
LIBFPTR_PARAM_USE_VAT18,
LIBFPTR_PARAM_TAG_NAME,
LIBFPTR_PARAM_TAG_TYPE,
LIBFPTR_PARAM_TAG_IS_COMPLEX,
LIBFPTR_PARAM_TAG_IS_REPEATABLE,
LIBFPTR_PARAM_SHIFT_AUTO_OPENED,
LIBFPTR_PARAM_CONTAINER_FIRMWARE_VERSION,
LIBFPTR_PARAM_CONTAINER_CONFIGURATION_VERSION,
LIBFPTR_PARAM_CONTAINER_BOOTLOADER_VERSION,
LIBFPTR_PARAM_CONTAINER_SCRIPTS_VERSION,
LIBFPTR_PARAM_PAPER_NEAR_END,
LIBFPTR_PARAM_REPORT_ELECTRONICALLY,
LIBFPTR_PARAM_ACTIVATION_METHOD,
LIBFPTR_PARAM_KEYS,
LIBFPTR_PARAM_UIN,
LIBFPTR_PARAM_VERSION,
LIBFPTR_PARAM_PUBLIC_KEY_SIGN,
LIBFPTR_PARAM_CAP_DISABLE_PRINT_REPORTS,
LIBFPTR_PARAM_REGISTRATION_NUMBER,
LIBFPTR_PARAM_PIXEL_BUFFER,
LIBFPTR_PARAM_REPEAT_NUMBER,
LIBFPTR_PARAM_FIELD_TYPE,
LIBFPTR_PARAM_MARKING_CODE,
LIBFPTR_PARAM_CONTAINER_DIRECT_BOOT_VERSION,
LIBFPTR_PARAM_SCRIPT_NAME,
LIBFPTR_PARAM_SCRIPT_HASH,
LIBFPTR_PARAM_RECORDS_ID,
LIBFPTR_PARAM_USER_SCRIPT_RESULT_1,
LIBFPTR_PARAM_USER_SCRIPT_RESULT_2,
LIBFPTR_PARAM_USER_SCRIPT_RESULT_3,
LIBFPTR_PARAM_USER_SCRIPT_RESULT_4,
LIBFPTR_PARAM_USER_SCRIPT_RESULT_5,
LIBFPTR_PARAM_IS_USER_SCRIPT,
LIBFPTR_PARAM_DOCUMENT_NUMBER_END,
LIBFPTR_PARAM_SHIFT_NUMBER_END,
LIBFPTR_PARAM_SCRIPT_CODE,
LIBFPTR_PARAM_SCRIPT_RESULT,
LIBFPTR_PARAM_SCRIPT_TYPE,
LIBFPTR_PARAM_WIFI_CONFIG_TIMEOUT,
LIBFPTR_PARAM_WIFI_DHCP,
LIBFPTR_PARAM_WIFI_IP,
LIBFPTR_PARAM_WIFI_MASK,
LIBFPTR_PARAM_WIFI_GATEWAY,
LIBFPTR_PARAM_WIFI_PORT,
LIBFPTR_PARAM_UC_VERSION,
LIBFPTR_PARAM_UC_AVAILABLE_MEMORY,
LIBFPTR_PARAM_UC_USED_MEMORY_BY_SUMS,
LIBFPTR_PARAM_UC_USED_MEMORY_BY_QUANTITIES,
LIBFPTR_PARAM_UC_LAYER_1,
LIBFPTR_PARAM_UC_FLAGS_1,
LIBFPTR_PARAM_UC_MASK_1,
LIBFPTR_PARAM_UC_LAYER_VALUE_1,
LIBFPTR_PARAM_UC_LAYER_2,
LIBFPTR_PARAM_UC_FLAGS_2,
LIBFPTR_PARAM_UC_MASK_2,
LIBFPTR_PARAM_UC_LAYER_VALUE_2,
LIBFPTR_PARAM_UC_LAYER_3,
LIBFPTR_PARAM_UC_FLAGS_3,
LIBFPTR_PARAM_UC_MASK_3,
LIBFPTR_PARAM_UC_LAYER_VALUE_3,
LIBFPTR_PARAM_UC_LAYER_4,
LIBFPTR_PARAM_UC_FLAGS_4,
LIBFPTR_PARAM_UC_MASK_4,
LIBFPTR_PARAM_UC_LAYER_VALUE_4,
LIBFPTR_PARAM_RECEIPTS_COUNT,
LIBFPTR_PARAM_PAYMENTS_SUM_CASH,
LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY,
LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID,
LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT,
LIBFPTR_PARAM_PAYMENTS_SUM_OTHER,
LIBFPTR_PARAM_TAXES_SUM_VAT20,
LIBFPTR_PARAM_TAXES_SUM_VAT120,
LIBFPTR_PARAM_TAXES_SUM_VAT10,
LIBFPTR_PARAM_TAXES_SUM_VAT110,
LIBFPTR_PARAM_TAXES_SUM_VAT0,
LIBFPTR_PARAM_TAXES_SUM_NO,
LIBFPTR_PARAM_CORRECTIONS_COUNT,
LIBFPTR_PARAM_CORRECTIONS_SUM,
LIBFPTR_PARAM_FN_COUNTERS_TYPE,
LIBFPTR_PARAM_FN_DAYS_REMAIN,
LIBFPTR_PARAM_FREE_MEMORY,
LIBFPTR_PARAM_FN_MAX_FFD_VERSION,
LIBFPTR_PARAM_RECEIPTS_SUM,
LIBFPTR_PARAM_LICENSE_NAME,
LIBFPTR_PARAM_UNIVERSAL_COUNTERS_FAULT,
LIBFPTR_PARAM_USE_LICENSES,
LIBFPTR_PARAM_LICENSE_VALID_FROM,
LIBFPTR_PARAM_LICENSE_VALID_UNTIL,
LIBFPTR_PARAM_MARKING_CODE_TYPE,
LIBFPTR_PARAM_SETTING_NAME,
LIBFPTR_PARAM_SETTING_TYPE,
LIBFPTR_PARAM_FONT_WIDTH,
LIBFPTR_PARAM_REMOTE_CALL,
LIBFPTR_PARAM_SCRIPT_PARAMS,
LIBFPTR_PARAM_IGNORE_EMPTY,
LIBFPTR_PARAM_METHOD_DATA,
LIBFPTR_PARAM_METHOD_RESULT,
LIBFPTR_PARAM_RPC_SERVER_OS,
LIBFPTR_PARAM_RPC_SERVER_VERSION,
LIBFPTR_PARAM_RPC_DRIVER_VERSION,
LIBFPTR_PARAM_LOCKED,
LIBFPTR_PARAM_BOUND,
LIBFPTR_PARAM_COMMODITIES_TABLE_FAULT,
LIBFPTR_PARAM_HAS_ADDITIONAL_DATA,
LIBFPTR_PARAM_FISCAL_SIGN_ARCHIVE,
LIBFPTR_PARAM_COMMAND_GROUP,
LIBFPTR_PARAM_ERROR_CODE,
LIBFPTR_PARAM_MARKING_WAIT_FOR_VALIDATION_RESULT,
LIBFPTR_PARAM_MARKING_CODE_STATUS,
LIBFPTR_PARAM_MARKING_CODE_VALIDATION_RESULT,
LIBFPTR_PARAM_MARKING_CODE_OFFLINE_VALIDATION_ERROR,
LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR,
LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY,
LIBFPTR_PARAM_MEASUREMENT_UNIT,
LIBFPTR_PARAM_MARKING_PROCESSING_MODE,
LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY,
LIBFPTR_PARAM_PRODUCT_CODE,
LIBFPTR_PARAM_TRADE_MARKED_PRODUCTS,
LIBFPTR_PARAM_INSURANCE_ACTIVITY,
LIBFPTR_PARAM_PAWN_SHOP_ACTIVITY,
LIBFPTR_PARAM_TLV_LIST,
LIBFPTR_PARAM_CHECK_MARKING_SERVER_READY,
LIBFPTR_PARAM_MARKING_SERVER_RESPONSE_TIME,
LIBFPTR_PARAM_MARKING_SERVER_ERROR_CODE,
LIBFPTR_PARAM_MARKING_SERVER_ERROR_DESCRIPTION,
LIBFPTR_PARAM_ISM_ERROR,
LIBFPTR_PARAM_ISM_ERROR_TEXT,
LIBFPTR_PARAM_MARKING_MODE_CHECKING_STATUS,
LIBFPTR_PARAM_MARK_CHECKING_COUNT,
LIBFPTR_PARAM_MARK_SOLD_COUNT,
LIBFPTR_PARAM_NOTICE_IS_BEGIN,
LIBFPTR_PARAM_NOTICE_FREE_MEMORY,
LIBFPTR_PARAM_NOTICE_COUNT,
LIBFPTR_PARAM_MARKING_NOT_SEND_TO_SERVER,
LIBFPTR_PARAM_DOCUMENT_TYPE,
LIBFPTR_PARAM_PRINT_REPORT,
LIBFPTR_PARAM_FN_EXECUTION,
LIBFPTR_PARAM_MCU_SN,
LIBFPTR_PARAM_MCU_PART_ID,
LIBFPTR_PARAM_MCU_PART_NAME,
LIBFPTR_PARAM_IS_REQUEST_SENT,
LIBFPTR_PARAM_FN_CHECK_MARK_TIME,
LIBFPTR_PARAM_SENDING_MARK_TIME,
LIBFPTR_PARAM_MARKING_SERVER_EXCHANGE_TIME,
LIBFPTR_PARAM_FULL_SENDING_MARK_TIME,
LIBFPTR_PARAM_MARK_CHECKING_STATUS_IN_CASH,
LIBFPTR_PARAM_MARK_CHECKING_TYPE_IN_CASH,
LIBFPTR_PARAM_MARK_CHECKING_STAGE_IN_CASH,
LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT,
LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR_DESCRIPTION,
LIBFPTR_PARAM_FN_CONTAINS_KEYS_UPDATER_SERVER_URI,
LIBFPTR_PARAM_MARKING_CODE_CLEAR,
LIBFPTR_PARAM_MODULE_ADDRESS,
LIBFPTR_PARAM_SEGMENT_ADDRESS,
LIBFPTR_PARAM_LAST_SUCCESSFUL_OKP,
LIBFPTR_PARAM_FN_SERIAL_NUMBER,
LIBFPTR_PARAM_ECR_REGISTRATION_NUMBER,
LIBFPTR_PARAM_OFD_VATIN,
LIBFPTR_PARAM_FNS_URL,
LIBFPTR_PARAM_MACHINE_NUMBER,
LIBFPTR_PARAM_MARKING_PRODUCT_ID,
LIBFPTR_PARAM_TIMEOUT,
LIBFPTR_PARAM_PRINT_UPDATE_FNM_KEYS_REPORT,
LIBFPTR_PARAM_FN_KEYS_UPDATER_SERVER_URI,
LIBFPTR_PARAM_DOCUMENT_ELECTRONICALLY,
LIBFPTR_PARAM_LAST
}
export enum Model {
LIBFPTR_MODEL_UNKNOWN = 0,
LIBFPTR_MODEL_ATOL_AUTO = 500,
LIBFPTR_MODEL_ATOL_11F = 67,
LIBFPTR_MODEL_ATOL_15F = 78,
LIBFPTR_MODEL_ATOL_20F = 81,
LIBFPTR_MODEL_ATOL_22F = 63,
LIBFPTR_MODEL_ATOL_25F = 57,
LIBFPTR_MODEL_ATOL_27F = 87,
LIBFPTR_MODEL_ATOL_30F = 61,
LIBFPTR_MODEL_ATOL_42FS = 77,
LIBFPTR_MODEL_ATOL_47FA = 48,
LIBFPTR_MODEL_ATOL_50F = 80,
LIBFPTR_MODEL_ATOL_52F = 64,
LIBFPTR_MODEL_ATOL_55F = 62,
LIBFPTR_MODEL_ATOL_60F = 75,
LIBFPTR_MODEL_ATOL_77F = 69,
LIBFPTR_MODEL_ATOL_90F = 72,
LIBFPTR_MODEL_ATOL_91F = 82,
LIBFPTR_MODEL_ATOL_92F = 84,
LIBFPTR_MODEL_ATOL_SIGMA_10 = 86,
LIBFPTR_MODEL_ATOL_SIGMA_7F = 90,
LIBFPTR_MODEL_ATOL_SIGMA_8F = 91,
LIBFPTR_MODEL_ATOL_PT_5F = 89,
LIBFPTR_MODEL_KAZNACHEY_FA = 76,
LIBFPTR_MODEL_ATOL_1F = 93,
LIBFPTR_MODEL_ATOL_22v2F = 95,
}
export enum Baudrate {
LIBFPTR_PORT_BR_1200 = 1200,
LIBFPTR_PORT_BR_2400 = 2400,
LIBFPTR_PORT_BR_4800 = 4800,
LIBFPTR_PORT_BR_9600 = 9600,
LIBFPTR_PORT_BR_19200 = 19200,
LIBFPTR_PORT_BR_38400 = 38400,
LIBFPTR_PORT_BR_57600 = 57600,
LIBFPTR_PORT_BR_115200 = 115200,
LIBFPTR_PORT_BR_230400 = 230400,
LIBFPTR_PORT_BR_460800 = 460800,
LIBFPTR_PORT_BR_921600 = 921600,
}
export enum Bits {
LIBFPTR_PORT_BITS_7 = 7,
LIBFPTR_PORT_BITS_8 = 8,
}
export enum Parity {
LIBFPTR_PORT_PARITY_NO = 0,
LIBFPTR_PORT_PARITY_ODD,
LIBFPTR_PORT_PARITY_EVEN,
LIBFPTR_PORT_PARITY_MARK,
LIBFPTR_PORT_PARITY_SPACE,
}
export enum Stopbits {
LIBFPTR_PORT_SB_1 = 0,
LIBFPTR_PORT_SB_1_5,
LIBFPTR_PORT_SB_2
}
export enum BarcodeType {
LIBFPTR_BT_EAN_8 = 0,
LIBFPTR_BT_EAN_13,
LIBFPTR_BT_UPC_A,
LIBFPTR_BT_UPC_E,
LIBFPTR_BT_CODE_39,
LIBFPTR_BT_CODE_93,
LIBFPTR_BT_CODE_128,
LIBFPTR_BT_CODABAR,
LIBFPTR_BT_ITF,
LIBFPTR_BT_ITF_14,
LIBFPTR_BT_GS1_128,
LIBFPTR_BT_QR,
LIBFPTR_BT_PDF417,
LIBFPTR_BT_AZTEC,
LIBFPTR_BT_CODE_39_EXTENDED,
}
export enum BarcodeCorrection {
LIBFPTR_BC_DEFAULT = 0,
LIBFPTR_BC_0,
LIBFPTR_BC_1,
LIBFPTR_BC_2,
LIBFPTR_BC_3,
LIBFPTR_BC_4,
LIBFPTR_BC_5,
LIBFPTR_BC_6,
LIBFPTR_BC_7,
LIBFPTR_BC_8,
}
export enum TaxMode {
LIBFPTR_TM_POSITION = 0,
LIBFPTR_TM_UNIT,
}
export enum StepCounterType {
LIBFPTR_SCT_OVERALL = 0,
LIBFPTR_SCT_FORWARD,
}
export enum CounterType {
LIBFPTR_CT_ROLLUP = 0,
LIBFPTR_CT_RESETTABLE,
}
export enum ShiftState {
LIBFPTR_SS_CLOSED = 0,
LIBFPTR_SS_OPENED,
LIBFPTR_SS_EXPIRED,
}
export enum CutType {
LIBFPTR_CT_FULL = 0,
LIBFPTR_CT_PART,
}
export enum Alignment {
LIBFPTR_ALIGNMENT_LEFT = 0,
LIBFPTR_ALIGNMENT_CENTER,
LIBFPTR_ALIGNMENT_RIGHT,
}
export enum TextWrap {
LIBFPTR_TW_NONE = 0,
LIBFPTR_TW_WORDS,
LIBFPTR_TW_CHARS,
}
export enum FnType {
LIBFPTR_FNT_DEBUG = 0,
LIBFPTR_FNT_RELEASE,
LIBFPTR_FNT_UNKNOWN,
}
export enum FnState {
LIBFPTR_FNS_INITIAL = 0,
LIBFPTR_FNS_CONFIGURED = 1,
LIBFPTR_FNS_FISCAL_MODE = 3,
LIBFPTR_FNS_POSTFISCAL_MODE = 7,
LIBFPTR_FNS_ACCESS_ARCHIVE = 15,
}
export enum ReceiptType {
LIBFPTR_RT_CLOSED = 0,
LIBFPTR_RT_SELL = 1,
LIBFPTR_RT_SELL_RETURN = 2,
LIBFPTR_RT_SELL_CORRECTION = 7,
LIBFPTR_RT_SELL_RETURN_CORRECTION = 8,
LIBFPTR_RT_BUY = 4,
LIBFPTR_RT_BUY_RETURN = 5,
LIBFPTR_RT_BUY_CORRECTION = 9,
LIBFPTR_RT_BUY_RETURN_CORRECTION = 10,
}
export enum ReportType {
LIBFPTR_RT_CLOSE_SHIFT = 0,
LIBFPTR_RT_X,
LIBFPTR_RT_LAST_DOCUMENT,
LIBFPTR_RT_OFD_EXCHANGE_STATUS,
LIBFPTR_RT_KKT_DEMO,
LIBFPTR_RT_KKT_INFO,
LIBFPTR_RT_OFD_TEST,
LIBFPTR_RT_FN_DOC_BY_NUMBER,
LIBFPTR_RT_QUANTITY,
LIBFPTR_RT_DEPARTMENTS,
LIBFPTR_RT_OPERATORS,
LIBFPTR_RT_HOURS,
LIBFPTR_RT_FN_REGISTRATIONS,
LIBFPTR_RT_FN_SHIFT_TOTAL_COUNTERS,
LIBFPTR_RT_FN_TOTAL_COUNTERS,
LIBFPTR_RT_FN_NOT_SENT_DOCUMENTS_COUNTERS,
LIBFPTR_RT_COMMODITIES_BY_TAXATION_TYPES,
LIBFPTR_RT_COMMODITIES_BY_DEPARTMENTS,
LIBFPTR_RT_COMMODITIES_BY_SUMS,
LIBFPTR_RT_START_SERVICE,
LIBFPTR_RT_DISCOUNTS,
LIBFPTR_RT_JOURNAL_DOCUMENT_BY_NUMBERS,
LIBFPTR_RT_JOURNAL_DOCUMENT_BY_SHIFTS,
LIBFPTR_RT_CLOSE_SHIFT_REPORTS
}
export enum PaymentType {
LIBFPTR_PT_CASH = 0,
LIBFPTR_PT_ELECTRONICALLY,
LIBFPTR_PT_PREPAID,
LIBFPTR_PT_CREDIT,
LIBFPTR_PT_OTHER,
LIBFPTR_PT_6,
LIBFPTR_PT_7,
LIBFPTR_PT_8,
LIBFPTR_PT_9,
LIBFPTR_PT_10
}
export enum TaxType {
LIBFPTR_TAX_DEPARTMENT = 0,
LIBFPTR_TAX_VAT18 = 1,
LIBFPTR_TAX_VAT10,
LIBFPTR_TAX_VAT118,
LIBFPTR_TAX_VAT110,
LIBFPTR_TAX_VAT0,
LIBFPTR_TAX_NO,
LIBFPTR_TAX_VAT20,
LIBFPTR_TAX_VAT120,
LIBFPTR_TAX_INVALID,
}
export enum ExternalDeviceType {
LIBFPTR_EXTERNAL_DEVICE_DISPLAY = 0,
LIBFPTR_EXTERNAL_DEVICE_PINPAD,
LIBFPTR_EXTERNAL_DEVICE_MODEM,
LIBFPTR_EXTERNAL_DEVICE_BARCODE_SCANNER,
}
export enum KktDataType {
LIBFPTR_DT_STATUS = 0,
LIBFPTR_DT_CASH_SUM,
LIBFPTR_DT_UNIT_VERSION,
LIBFPTR_DT_PICTURE_INFO,
LIBFPTR_DT_LICENSE_ACTIVATED,
LIBFPTR_DT_REGISTRATIONS_SUM,
LIBFPTR_DT_REGISTRATIONS_COUNT,
LIBFPTR_DT_PAYMENT_SUM,
LIBFPTR_DT_CASHIN_SUM,
LIBFPTR_DT_CASHIN_COUNT,
LIBFPTR_DT_CASHOUT_SUM,
LIBFPTR_DT_CASHOUT_COUNT,
LIBFPTR_DT_REVENUE,
LIBFPTR_DT_DATE_TIME,
LIBFPTR_DT_SHIFT_STATE,
LIBFPTR_DT_RECEIPT_STATE,
LIBFPTR_DT_SERIAL_NUMBER,
LIBFPTR_DT_MODEL_INFO,
LIBFPTR_DT_RECEIPT_LINE_LENGTH,
LIBFPTR_DT_CUTTER_RESOURCE,
LIBFPTR_DT_STEP_RESOURCE,
LIBFPTR_DT_TERMAL_RESOURCE,
LIBFPTR_DT_ENVD_MODE,
LIBFPTR_DT_SHIFT_TAX_SUM,
LIBFPTR_DT_RECEIPT_TAX_SUM,
LIBFPTR_DT_NON_NULLABLE_SUM,
LIBFPTR_DT_RECEIPT_COUNT,
LIBFPTR_DT_CANCELLATION_COUNT_ALL,
LIBFPTR_DT_CANCELLATION_SUM,
LIBFPTR_DT_CANCELLATION_SUM_ALL,
LIBFPTR_DT_POWER_SOURCE_STATE,
LIBFPTR_DT_CANCELLATION_COUNT,
LIBFPTR_DT_NON_NULLABLE_SUM_BY_PAYMENTS,
LIBFPTR_DT_PRINTER_TEMPERATURE,
LIBFPTR_DT_FATAL_STATUS,
LIBFPTR_DT_MAC_ADDRESS,
LIBFPTR_DT_DEVICE_UPTIME,
LIBFPTR_DT_RECEIPT_BYTE_COUNT,
LIBFPTR_DT_DISCOUNT_AND_SURCHARGE_SUM,
LIBFPTR_DT_LK_USER_CODE,
LIBFPTR_DT_LAST_SENT_OFD_DOCUMENT_DATE_TIME,
LIBFPTR_DT_SHORT_STATUS,
LIBFPTR_DT_PICTURES_ARRAY_INFO,
LIBFPTR_DT_ETHERNET_INFO,
LIBFPTR_DT_SCRIPTS_INFO,
LIBFPTR_DT_SHIFT_TOTALS,
LIBFPTR_DT_WIFI_INFO,
LIBFPTR_DT_FONT_INFO,
LIBFPTR_DT_SOFTLOCK_STATUS,
LIBFPTR_DT_LAST_SENT_ISM_NOTICE_DATE_TIME,
LIBFPTR_DT_MCU_INFO,
LIBFPTR_DT_MODULE_ADDRESS,
LIBFPTR_DT_CACHE_REQUISITES,
}
export enum FnDataType {
LIBFPTR_FNDT_TAG_VALUE,
LIBFPTR_FNDT_OFD_EXCHANGE_STATUS,
LIBFPTR_FNDT_FN_INFO,
LIBFPTR_FNDT_LAST_REGISTRATION,
LIBFPTR_FNDT_LAST_RECEIPT,
LIBFPTR_FNDT_LAST_DOCUMENT,
LIBFPTR_FNDT_SHIFT,
LIBFPTR_FNDT_FFD_VERSIONS,
LIBFPTR_FNDT_VALIDITY,
LIBFPTR_FNDT_REG_INFO,
LIBFPTR_FNDT_DOCUMENTS_COUNT_IN_SHIFT,
LIBFPTR_FNDT_ERRORS,
LIBFPTR_FNDT_TICKET_BY_DOC_NUMBER,
LIBFPTR_FNDT_DOCUMENT_BY_NUMBER,
LIBFPTR_FNDT_REGISTRATION_TLV,
LIBFPTR_FNDT_ERROR_DETAIL,
LIBFPTR_FNDT_VALIDITY_DAYS,
LIBFPTR_FNDT_FREE_MEMORY,
LIBFPTR_FNDT_TOTALS,
LIBFPTR_FNDT_ISM_ERRORS,
LIBFPTR_FNDT_ISM_EXCHANGE_STATUS,
LIBFPTR_FNDT_MARKING_MODE_STATUS,
LIBFPTR_FNDT_CHECK_MARK_TIME
}
export enum FfdVersion {
LIBFPTR_FFD_UNKNOWN = 0,
LIBFPTR_FFD_1_0 = 100,
LIBFPTR_FFD_1_0_5 = 105,
LIBFPTR_FFD_1_1 = 110,
LIBFPTR_FFD_1_2 = 120
}
export enum TaxationType {
LIBFPTR_TT_DEFAULT = 0x00,
LIBFPTR_TT_OSN = 0x01,
LIBFPTR_TT_USN_INCOME = 0x02,
LIBFPTR_TT_USN_INCOME_OUTCOME = 0x04,
LIBFPTR_TT_ENVD = 0x08,
LIBFPTR_TT_ESN = 0x10,
LIBFPTR_TT_PATENT = 0x20,
}
export enum UnitType {
LIBFPTR_UT_FIRMWARE,
LIBFPTR_UT_CONFIGURATION,
LIBFPTR_UT_TEMPLATES,
LIBFPTR_UT_CONTROL_UNIT,
LIBFPTR_UT_BOOT,
}
export enum FnOperationType {
LIBFPTR_FNOP_REGISTRATION = 0,
LIBFPTR_FNOP_CHANGE_FN,
LIBFPTR_FNOP_CHANGE_PARAMETERS,
LIBFPTR_FNOP_CLOSE_ARCHIVE,
}
export enum AgentType {
LIBFPTR_AT_NONE = 0x00,
LIBFPTR_AT_BANK_PAYING_AGENT = 0x01,
LIBFPTR_AT_BANK_PAYING_SUBAGENT = 0x02,
LIBFPTR_AT_PAYING_AGENT = 0x04,
LIBFPTR_AT_PAYING_SUBAGENT = 0x08,
LIBFPTR_AT_ATTORNEY = 0x10,
LIBFPTR_AT_COMMISSION_AGENT = 0x20,
LIBFPTR_AT_ANOTHER = 0x40,
}
export enum OfdChannel {
LIBFPTR_OFD_CHANNEL_NONE = 0,
LIBFPTR_OFD_CHANNEL_USB,
LIBFPTR_OFD_CHANNEL_PROTO,
LIBFPTR_OFD_CHANNEL_AUTO = 2, // LIBFPTR_OFD_CHANNEL_PROTO
}
export enum PowerSourceType {
LIBFPTR_PST_POWER_SUPPLY = 0,
LIBFPTR_PST_RTC_BATTERY,
LIBFPTR_PST_BATTERY
}
export enum RecordsType {
LIBFPTR_RT_LAST_DOCUMENT_LINES,
LIBFPTR_RT_FN_DOCUMENT_TLVS,
LIBFPTR_RT_EXEC_USER_SCRIPT,
LIBFPTR_RT_FIRMWARE,
LIBFPTR_RT_LICENSES,
LIBFPTR_RT_FN_REGISTRATION_TLVS,
LIBFPTR_RT_PARSE_COMPLEX_ATTR,
LIBFPTR_RT_FN_SUM_COUNTERS,
LIBFPTR_RT_FN_QUANTITY_COUNTERS,
LIBFPTR_RT_FN_UNSENT_DOCS_COUNTERS,
LIBFPTR_RT_SETTINGS,
LIBFPTR_RT_RUN_COMMAND,
}
export enum NomenclatureType {
LIBFPTR_NT_FURS = 0,
LIBFPTR_NT_MEDICINES,
LIBFPTR_NT_TOBACCO,
LIBFPTR_NT_SHOES,
}
export enum FnDocumentType {
LIBFPTR_FN_DOC_REGISTRATION = 1,
LIBFPTR_FN_DOC_OPEN_SHIFT = 2,
LIBFPTR_FN_DOC_RECEIPT = 3,
LIBFPTR_FN_DOC_BSO = 4,
LIBFPTR_FN_DOC_CLOSE_SHIFT = 5,
LIBFPTR_FN_DOC_CLOSE_FN = 6,
LIBFPTR_FN_DOC_OPERATOR_CONFIRMATION = 7,
LIBFPTR_FN_DOC_REREGISTRATION = 11,
LIBFPTR_FN_DOC_EXCHANGE_STATUS = 21,
LIBFPTR_FN_DOC_CORRECTION = 31,
LIBFPTR_FN_DOC_BSO_CORRECTION = 41,
}
export enum LogLevel {
LIBFPTR_LOG_ERROR = 0,
LIBFPTR_LOG_WARN,
LIBFPTR_LOG_INFO,
LIBFPTR_LOG_DEBUG
}
export enum UserMemoryOperation {
LIBFPTR_UMO_GET_SIZE = 0,
LIBFPTR_UMO_READ_DATA,
LIBFPTR_UMO_WRITE_DATA,
LIBFPTR_UMO_READ_STRING,
LIBFPTR_UMO_WRITE_STRING,
LIBFPTR_UMO_COMMIT,
}
export enum GuiParent {
LIBFPTR_GUI_PARENT_NATIVE = 0,
LIBFPTR_GUI_PARENT_QT,
}
export enum DeferType {
LIBFPTR_DEFER_NONE = 0,
LIBFPTR_DEFER_PRE,
LIBFPTR_DEFER_POST,
LIBFPTR_DEFER_OVERLAY
}
export enum TagType {
LIBFPTR_TAG_TYPE_STLV = 0,
LIBFPTR_TAG_TYPE_STRING,
LIBFPTR_TAG_TYPE_ARRAY,
LIBFPTR_TAG_TYPE_FVLN,
LIBFPTR_TAG_TYPE_BITS,
LIBFPTR_TAG_TYPE_BYTE,
LIBFPTR_TAG_TYPE_VLN,
LIBFPTR_TAG_TYPE_UINT_16,
LIBFPTR_TAG_TYPE_UINT_32,
LIBFPTR_TAG_TYPE_UNIX_TIME,
LIBFPTR_TAG_TYPE_BOOL
}
export enum FieldType {
LIBFPTR_FT_BYTE_ARRAY = 0,
LIBFPTR_FT_BIN,
LIBFPTR_FT_BCD,
LIBFPTR_FT_STRING,
LIBFPTR_FT_STRING_NULL_TERM,
}
export enum ScriptType {
LIBFPTR_SCRIPT_EXECUTABLE = 0,
LIBFPTR_SCRIPT_JSON,
LIBFPTR_SCRIPT_SETTINGS,
LIBFPTR_SCRIPT_LIBRARY,
}
export enum UcLayer {
LIBFPTR_UCL_UNUSED = 0,
LIBFPTR_UCL_RECEIPT_TYPE,
LIBFPTR_UCL_TAXATION_TYPE,
LIBFPTR_UCL_TAX_TYPE,
LIBFPTR_UCL_PRODUCT_TYPE,
LIBFPTR_UCL_PAYMENT_METHOD,
LIBFPTR_UCL_USER_3,
LIBFPTR_UCL_USER_4,
LIBFPTR_UCL_USER_5,
LIBFPTR_UCL_USER_6,
}
export enum UcFlag {
LIBFPTR_UCF_CALC_SUMS = 1,
LIBFPTR_UCF_CALC_QUANTITIES = 2,
LIBFPTR_UCF_CALC_SUMS_OTHERS = 4,
LIBFPTR_UCF_CALC_QUANTITIES_OTHERS = 8,
}
export enum FnCounterType {
LIBFPTR_FNCT_SHIFT = 0,
LIBFPTR_FNCT_NON_NULLABLE
}
export enum MarkingCodeType {
LIBFPTR_MCT_OTHER = 0,
LIBFPTR_MCT_EGAIS_20,
LIBFPTR_MCT_EGAIS_30,
}
export enum MarkingCodeType12 {
LIBFPTR_MCT12_AUTO = 256,
LIBFPTR_MCT12_UNKNOWN = 0,
LIBFPTR_MCT12_SHORT,
LIBFPTR_MCT12_88_CHECK,
LIBFPTR_MCT12_44_NO_CHECK,
LIBFPTR_MCT12_44_CHECK,
LIBFPTR_MCT12_4_NO_CHECK,
}
export enum MarkingEstimatedStatus {
LIBFPTR_MES_PIECE_SOLD = 1,
LIBFPTR_MES_DRY_FOR_SALE,
LIBFPTR_MES_PIECE_RETURN,
LIBFPTR_MES_DRY_RETURN,
LIBFPTR_MES_UNCHANGED = 255
}
export enum ItemUnits {
LIBFPTR_IU_PIECE = 0,
LIBFPTR_IU_GRAM = 10,
LIBFPTR_IU_KILOGRAM,
LIBFPTR_IU_TON,
LIBFPTR_IU_CENTIMETER = 20,
LIBFPTR_IU_DECIMETER,
LIBFPTR_IU_METER,
LIBFPTR_IU_SQUARE_CENTIMETER = 30,
LIBFPTR_IU_SQUARE_DECIMETER,
LIBFPTR_IU_SQUARE_METER,
LIBFPTR_IU_MILLILITER = 40,
LIBFPTR_IU_LITER,
LIBFPTR_IU_CUBIC_METER,
LIBFPTR_IU_KILOWATT_HOUR = 50,
LIBFPTR_IU_GKAL,
LIBFPTR_IU_DAY = 70,
LIBFPTR_IU_HOUR,
LIBFPTR_IU_MINUTE,
LIBFPTR_IU_SECOND,
LIBFPTR_IU_KILOBYTE = 80,
LIBFPTR_IU_MEGABYTE,
LIBFPTR_IU_GIGABYTE,
LIBFPTR_IU_TERABYTE,
LIBFPTR_IU_OTHER = 255
}
export enum MarkOperatorItemStatus {
LIBFPTR_OIS_ESTIMATED_STATUS_CORRECT = 1,
LIBFPTR_OIS_ESTIMATED_STATUS_INCORRECT,
LIBFPTR_OIS_SALE_STOPPED
}
export enum MarkOperatorResponseResult {
LIBFPTR_ORR_CORRECT = 0,
LIBFPTR_ORR_INCORRECT,
LIBFPTR_ORR_UNRECOGNIZED
}
export enum FnCheckErrorReason {
LIBFPTR_CER_CHECKED = 0,
LIBFPTR_CER_TYPE_INCORRECT,
LIBFPTR_CER_NO_KEYS,
LIBFPTR_CER_NO_GS1,
LIBFPTR_CER_OTHER
}
export enum SettingType {
LIBFPTR_ST_NUMBER = 0,
LIBFPTR_ST_STRING,
LIBFPTR_ST_BOOL
}
export enum FirmwareType {
LIBFPTR_FWT_FIRMWARE = 0,
LIBFPTR_FWT_SCRIPTS = 2,
}
export enum MarkingModeCheckingStatus {
LIBFPTR_MCS_BLOCK = 0,
LIBFPTR_MCS_NO_MARK_FOR_CHECK,
LIBFPTR_MCS_MARK_RECEIVE_B1,
LIBFPTR_MCS_MARK_STATE_QUERY_B5,
LIBFPTR_MCS_MARK_STATE_ANSWER_B6
}
export enum NoticeFreeMemory {
LIBFPTR_NFM_LESS_50_PERCENT = 0,
LIBFPTR_NFM_FROM_50_TO_80_PERCENT,
LIBFPTR_NFM_FROM_80_TO_90_PERCENT,
LIBFPTR_NFM_MORE_90_PERCENT,
LIBFPTR_NFM_OUT_OF_MEMORY
}
export enum DocumentType {
LIBFPTR_DT_CLOSED = 0,
LIBFPTR_DT_RECEIPT_SELL = 1,
LIBFPTR_DT_RECEIPT_SELL_RETURN = 2,
LIBFPTR_DT_RECEIPT_BUY = 3,
LIBFPTR_DT_RECEIPT_BUY_RETURN = 4,
LIBFPTR_DT_OPEN_SHIFT = 5,
LIBFPTR_DT_CLOSE_SHIFT = 6,
LIBFPTR_DT_REGISTRATION = 7,
LIBFPTR_DT_CLOSE_ARCHIVE = 8,
LIBFPTR_DT_OFD_EXCHANGE_STATUS = 11,
LIBFPTR_DT_RECEIPT_SELL_CORRECTION = 12,
LIBFPTR_DT_RECEIPT_SELL_RETURN_CORRECTION = 13,
LIBFPTR_DT_RECEIPT_BUY_CORRECTION = 14,
LIBFPTR_DT_RECEIPT_BUY_RETURN_CORRECTION = 15,
LIBFPTR_DT_DOCUMENT_SERVICE = 20,
LIBFPTR_DT_DOCUMENT_COPY = 21
}
export enum MarkCheckingStatusInCash {
LIBFPTR_MCS_NOT_EXECUTED = 0,
LIBFPTR_MCS_EXECUTED,
LIBFPTR_MCS_IS_OVER,
LIBFPTR_MCS_RESULT_IS_RECIEVED
}
export enum MarkCheckingTypeInCash {
LIBFPTR_MCT_AUTONOMOUS = 0,
LIBFPTR_MCT_WAIT_FOR_RESULT,
LIBFPTR_MCT_RESULT_NOT_WAIT,
LIBFPTR_MCT_QUERY_NOT_SEND
}
export enum MarkCheckingStageInCash {
LIBFPTR_MCST_WAITING_FOR_TASK = 0,
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
}
export enum SilentReboot {
LIBFPTR_SILENT_REBOOT_NO = 0,
LIBFPTR_SILENT_REBOOT_AFTER_SESSION_CLOSE,
LIBFPTR_SILENT_REBOOT_BEFORE_SESSION_OPEN
}
// @ts-ignore
export interface Settings {
AccessPassword: string
AutoDisableBluetooth: boolean
AutoEnableBluetooth: boolean
AutoReconnect: boolean
BaudRate: Baudrate
Bits: Bits
ComFile: string
DocumentsJournalPath: string
IPAddress: string
IPPort: number
InvertCashDrawerStatus: boolean
LibraryPath: string
MACAddress: string
Model: Model
OfdChannel: OfdChannel
Parity: Parity
Port: Port
RemoteServerAddr: string
RemoteServerConnectionTimeout: number
ScriptsPath: string
StopBits: Stopbits
UsbDevicePath: string
UseDocumentsJournal: boolean
UserPassword: string
}
export interface LastDocument {
documentNumber: number
fiscalSign: string
date: {
year: number
month: number
day: number
hour: number
minute: number
second: number
}
}
export interface DeviceInfo {
configurationVersion: string
ecrFfdVersion: string
fnFfdVersion: string
firmwareVersion: string
model: Model
modelName: string
receiptLineLength: number
receiptLineLengthPx: number
serial: string
}
export declare class Fptr10 {
create(): void
isOpened(): boolean
destroy(): void
getSettings(): Settings
setSettings(settings: Settings): boolean
open(): boolean
close(): boolean
processJson(json: unknown): any
processJsonAsync(json: unknown, cb: (error: any, result: any) => void): void
fnReport(type: number): any
findLastDocument(): LastDocument
}
export enum Port {
LIBFPTR_PORT_COM = 0,
LIBFPTR_PORT_USB,
LIBFPTR_PORT_TCPIP,
LIBFPTR_PORT_BLUETOOTH,
}
export enum Error {
LIBFPTR_OK = 0,
LIBFPTR_ERROR_CONNECTION_DISABLED,
LIBFPTR_ERROR_NO_CONNECTION,
LIBFPTR_ERROR_PORT_BUSY,
LIBFPTR_ERROR_PORT_NOT_AVAILABLE,
LIBFPTR_ERROR_INCORRECT_DATA,
LIBFPTR_ERROR_INTERNAL,
LIBFPTR_ERROR_UNSUPPORTED_CAST,
LIBFPTR_ERROR_NO_REQUIRED_PARAM,
LIBFPTR_ERROR_INVALID_SETTINGS,
LIBFPTR_ERROR_NOT_CONFIGURED,
LIBFPTR_ERROR_NOT_SUPPORTED,
LIBFPTR_ERROR_INVALID_MODE,
LIBFPTR_ERROR_INVALID_PARAM,
LIBFPTR_ERROR_NOT_LOADED,
LIBFPTR_ERROR_UNKNOWN,
LIBFPTR_ERROR_INVALID_SUM,
LIBFPTR_ERROR_INVALID_QUANTITY,
LIBFPTR_ERROR_CASH_COUNTER_OVERFLOW,
LIBFPTR_ERROR_LAST_OPERATION_STORNO_DENIED,
LIBFPTR_ERROR_STORNO_BY_CODE_DENIED,
LIBFPTR_ERROR_LAST_OPERATION_NOT_REPEATABLE,
LIBFPTR_ERROR_DISCOUNT_NOT_REPEATABLE,
LIBFPTR_ERROR_DISCOUNT_DENIED,
LIBFPTR_ERROR_INVALID_COMMODITY_CODE,
LIBFPTR_ERROR_INVALID_COMMODITY_BARCODE,
LIBFPTR_ERROR_INVALID_COMMAND_FORMAT,
LIBFPTR_ERROR_INVALID_COMMAND_LENGTH,
LIBFPTR_ERROR_BLOCKED_IN_DATE_INPUT_MODE,
LIBFPTR_ERROR_NEED_DATE_ACCEPT,
LIBFPTR_ERROR_NO_MORE_DATA,
LIBFPTR_ERROR_NO_ACCEPT_OR_CANCEL,
LIBFPTR_ERROR_BLOCKED_BY_REPORT_INTERRUPTION,
LIBFPTR_ERROR_DISABLE_CASH_CONTROL_DENIED,
LIBFPTR_ERROR_MODE_BLOCKED,
LIBFPTR_ERROR_CHECK_DATE_TIME,
LIBFPTR_ERROR_DATE_TIME_LESS_THAN_FS,
LIBFPTR_ERROR_CLOSE_ARCHIVE_DENIED,
LIBFPTR_ERROR_COMMODITY_NOT_FOUND,
LIBFPTR_ERROR_WEIGHT_BARCODE_WITH_INVALID_QUANTITY,
LIBFPTR_ERROR_RECEIPT_BUFFER_OVERFLOW,
LIBFPTR_ERROR_QUANTITY_TOO_FEW,
LIBFPTR_ERROR_STORNO_TOO_MUCH,
LIBFPTR_ERROR_BLOCKED_COMMODITY_NOT_FOUND,
LIBFPTR_ERROR_NO_PAPER,
LIBFPTR_ERROR_COVER_OPENED,
LIBFPTR_ERROR_PRINTER_FAULT,
LIBFPTR_ERROR_MECHANICAL_FAULT,
LIBFPTR_ERROR_INVALID_RECEIPT_TYPE,
LIBFPTR_ERROR_INVALID_UNIT_TYPE,
LIBFPTR_ERROR_NO_MEMORY,
LIBFPTR_ERROR_PICTURE_NOT_FOUND,
LIBFPTR_ERROR_NONCACH_PAYMENTS_TOO_MUCH,
LIBFPTR_ERROR_RETURN_DENIED,
LIBFPTR_ERROR_PAYMENTS_OVERFLOW,
LIBFPTR_ERROR_BUSY,
LIBFPTR_ERROR_GSM,
LIBFPTR_ERROR_INVALID_DISCOUNT,
LIBFPTR_ERROR_OPERATION_AFTER_DISCOUNT_DENIED,
LIBFPTR_ERROR_INVALID_DEPARTMENT,
LIBFPTR_ERROR_INVALID_PAYMENT_TYPE,
LIBFPTR_ERROR_MULTIPLICATION_OVERFLOW,
LIBFPTR_ERROR_DENIED_BY_SETTINGS,
LIBFPTR_ERROR_TOTAL_OVERFLOW,
LIBFPTR_ERROR_DENIED_IN_ANNULATION_RECEIPT,
LIBFPTR_ERROR_JOURNAL_OVERFLOW,
LIBFPTR_ERROR_NOT_FULLY_PAID,
LIBFPTR_ERROR_DENIED_IN_RETURN_RECEIPT,
LIBFPTR_ERROR_SHIFT_EXPIRED,
LIBFPTR_ERROR_DENIED_IN_SELL_RECEIPT,
LIBFPTR_ERROR_FISCAL_MEMORY_OVERFLOW,
LIBFPTR_ERROR_INVALID_PASSWORD,
LIBFPTR_ERROR_JOURNAL_BUSY,
LIBFPTR_ERROR_DENIED_IN_CLOSED_SHIFT,
LIBFPTR_ERROR_INVALID_TABLE_NUMBER,
LIBFPTR_ERROR_INVALID_ROW_NUMBER,
LIBFPTR_ERROR_INVALID_FIELD_NUMBER,
LIBFPTR_ERROR_INVALID_DATE_TIME,
LIBFPTR_ERROR_INVALID_STORNO_SUM,
LIBFPTR_ERROR_CHANGE_CALCULATION,
LIBFPTR_ERROR_NO_CASH,
LIBFPTR_ERROR_DENIED_IN_CLOSED_RECEIPT,
LIBFPTR_ERROR_DENIED_IN_OPENED_RECEIPT,
LIBFPTR_ERROR_DENIED_IN_OPENED_SHIFT,
LIBFPTR_ERROR_SERIAL_NUMBER_ALREADY_ENTERED,
LIBFPTR_ERROR_TOO_MUCH_REREGISTRATIONS,
LIBFPTR_ERROR_INVALID_SHIFT_NUMBER,
LIBFPTR_ERROR_INVALID_SERIAL_NUMBER,
LIBFPTR_ERROR_INVALID_RNM_VATIN,
LIBFPTR_ERROR_FISCAL_PRINTER_NOT_ACTIVATED,
LIBFPTR_ERROR_SERIAL_NUMBER_NOT_ENTERED,
LIBFPTR_ERROR_NO_MORE_REPORTS,
LIBFPTR_ERROR_MODE_NOT_ACTIVATED,
LIBFPTR_ERROR_RECORD_NOT_FOUND_IN_JOURNAL,
LIBFPTR_ERROR_INVALID_LICENSE,
LIBFPTR_ERROR_NEED_FULL_RESET,
LIBFPTR_ERROR_DENIED_BY_LICENSE,
LIBFPTR_ERROR_DISCOUNT_CANCELLATION_DENIED,
LIBFPTR_ERROR_CLOSE_RECEIPT_DENIED,
LIBFPTR_ERROR_INVALID_ROUTE_NUMBER,
LIBFPTR_ERROR_INVALID_START_ZONE_NUMBER,
LIBFPTR_ERROR_INVALID_END_ZONE_NUMBER,
LIBFPTR_ERROR_INVALID_RATE_TYPE,
LIBFPTR_ERROR_INVALID_RATE,
LIBFPTR_ERROR_FISCAL_MODULE_EXCHANGE,
LIBFPTR_ERROR_NEED_TECHNICAL_SUPPORT,
LIBFPTR_ERROR_SHIFT_NUMBERS_DID_NOT_MATCH,
LIBFPTR_ERROR_DEVICE_NOT_FOUND,
LIBFPTR_ERROR_EXTERNAL_DEVICE_CONNECTION,
LIBFPTR_ERROR_DISPENSER_INVALID_STATE,
LIBFPTR_ERROR_INVALID_POSITIONS_COUNT,
LIBFPTR_ERROR_DISPENSER_INVALID_NUMBER,
LIBFPTR_ERROR_INVALID_DIVIDER,
LIBFPTR_ERROR_FN_ACTIVATION_DENIED,
LIBFPTR_ERROR_PRINTER_OVERHEAT,
LIBFPTR_ERROR_FN_EXCHANGE,
LIBFPTR_ERROR_FN_INVALID_FORMAT,
LIBFPTR_ERROR_FN_INVALID_STATE,
LIBFPTR_ERROR_FN_FAULT,
LIBFPTR_ERROR_FN_CRYPTO_FAULT,
LIBFPTR_ERROR_FN_EXPIRED,
LIBFPTR_ERROR_FN_OVERFLOW,
LIBFPTR_ERROR_FN_INVALID_DATE_TIME,
LIBFPTR_ERROR_FN_NO_MORE_DATA,
LIBFPTR_ERROR_FN_TOTAL_OVERFLOW,
LIBFPTR_ERROR_BUFFER_OVERFLOW,
LIBFPTR_ERROR_PRINT_SECOND_COPY_DENIED,
LIBFPTR_ERROR_NEED_RESET_JOURNAL,
LIBFPTR_ERROR_TAX_SUM_TOO_MUCH,
LIBFPTR_ERROR_TAX_ON_LAST_OPERATION_DENIED,
LIBFPTR_ERROR_INVALID_FN_NUMBER,
LIBFPTR_ERROR_TAX_CANCEL_DENIED,
LIBFPTR_ERROR_LOW_BATTERY,
LIBFPTR_ERROR_FN_INVALID_COMMAND,
LIBFPTR_ERROR_FN_COMMAND_OVERFLOW,
LIBFPTR_ERROR_FN_NO_TRANSPORT_CONNECTION,
LIBFPTR_ERROR_FN_CRYPTO_HAS_EXPIRED,
LIBFPTR_ERROR_FN_RESOURCE_HAS_EXPIRED,
LIBFPTR_ERROR_INVALID_MESSAGE_FROM_OFD,
LIBFPTR_ERROR_FN_HAS_NOT_SEND_DOCUMENTS,
LIBFPTR_ERROR_FN_TIMEOUT,
LIBFPTR_ERROR_FN_SHIFT_EXPIRED,
LIBFPTR_ERROR_FN_INVALID_TIME_DIFFERENCE,
LIBFPTR_ERROR_INVALID_TAXATION_TYPE,
LIBFPTR_ERROR_INVALID_TAX_TYPE,
LIBFPTR_ERROR_INVALID_COMMODITY_PAYMENT_TYPE,
LIBFPTR_ERROR_INVALID_COMMODITY_CODE_TYPE,
LIBFPTR_ERROR_EXCISABLE_COMMODITY_DENIED,
LIBFPTR_ERROR_FISCAL_PROPERTY_WRITE,
LIBFPTR_ERROR_INVALID_COUNTER_TYPE,
LIBFPTR_ERROR_CUTTER_FAULT,
LIBFPTR_ERROR_REPORT_INTERRUPTED,
LIBFPTR_ERROR_INVALID_LEFT_MARGIN,
LIBFPTR_ERROR_INVALID_ALIGNMENT,
LIBFPTR_ERROR_INVALID_TAX_MODE,
LIBFPTR_ERROR_FILE_NOT_FOUND,
LIBFPTR_ERROR_PICTURE_TOO_BIG,
LIBFPTR_ERROR_INVALID_BARCODE_PARAMS,
LIBFPTR_ERROR_FISCAL_PROPERTY_DENIED,
LIBFPTR_ERROR_FN_INTERFACE,
LIBFPTR_ERROR_DATA_DUPLICATE,
LIBFPTR_ERROR_NO_REQUIRED_FISCAL_PROPERTY,
LIBFPTR_ERROR_FN_READ_DOCUMENT,
LIBFPTR_ERROR_FLOAT_OVERFLOW,
LIBFPTR_ERROR_INVALID_SETTING_VALUE,
LIBFPTR_ERROR_HARD_FAULT,
LIBFPTR_ERROR_FN_NOT_FOUND,
LIBFPTR_ERROR_INVALID_AGENT_FISCAL_PROPERTY,
LIBFPTR_ERROR_INVALID_FISCAL_PROPERTY_VALUE_1002_1056,
LIBFPTR_ERROR_INVALID_FISCAL_PROPERTY_VALUE_1002_1017,
LIBFPTR_ERROR_SCRIPT,
LIBFPTR_ERROR_INVALID_USER_MEMORY_INDEX,
LIBFPTR_ERROR_NO_ACTIVE_OPERATOR,
LIBFPTR_ERROR_REGISTRATION_REPORT_INTERRUPTED,
LIBFPTR_ERROR_CLOSE_FN_REPORT_INTERRUPTED,
LIBFPTR_ERROR_OPEN_SHIFT_REPORT_INTERRUPTED,
LIBFPTR_ERROR_OFD_EXCHANGE_REPORT_INTERRUPTED,
LIBFPTR_ERROR_CLOSE_RECEIPT_INTERRUPTED,
LIBFPTR_ERROR_FN_QUERY_INTERRUPTED,
LIBFPTR_ERROR_RTC_FAULT,
LIBFPTR_ERROR_MEMORY_FAULT,
LIBFPTR_ERROR_CHIP_FAULT,
LIBFPTR_ERROR_TEMPLATES_CORRUPTED,
LIBFPTR_ERROR_INVALID_MAC_ADDRESS,
LIBFPTR_ERROR_INVALID_SCRIPT_NUMBER,
LIBFPTR_ERROR_SCRIPTS_FAULT,
LIBFPTR_ERROR_INVALID_SCRIPTS_VERSION,
LIBFPTR_ERROR_INVALID_CLICHE_FORMAT,
LIBFPTR_ERROR_WAIT_FOR_REBOOT,
LIBFPTR_ERROR_NO_LICENSE,
LIBFPTR_ERROR_INVALID_FFD_VERSION,
LIBFPTR_ERROR_CHANGE_SETTING_DENIED,
LIBFPTR_ERROR_INVALID_NOMENCLATURE_TYPE,
LIBFPTR_ERROR_INVALID_GTIN,
LIBFPTR_ERROR_NEGATIVE_MATH_RESULT,
LIBFPTR_ERROR_FISCAL_PROPERTIES_COMBINATION,
LIBFPTR_ERROR_OPERATOR_LOGIN,
LIBFPTR_ERROR_INVALID_INTERNET_CHANNEL,
LIBFPTR_ERROR_DATETIME_NOT_SYNCRONIZED,
LIBFPTR_ERROR_JOURNAL,
LIBFPTR_ERROR_DENIED_IN_OPENED_DOC,
LIBFPTR_ERROR_DENIED_IN_CLOSED_DOC,
LIBFPTR_ERROR_LICENSE_MEMORY_OVERFLOW,
LIBFPTR_ERROR_NEED_CANCEL_DOCUMENT,
LIBFPTR_ERROR_REGISTERS_NOT_INITIALIZED,
LIBFPTR_ERROR_TOTAL_REQUIRED,
LIBFPTR_ERROR_SETTINGS_FAULT,
LIBFPTR_ERROR_COUNTERS_FAULT,
LIBFPTR_ERROR_USER_MEMORY_FAULT,
LIBFPTR_ERROR_SERVICE_COUNTERS_FAULT,
LIBFPTR_ERROR_ATTRIBUTES_FAULT,
LIBFPTR_ERROR_ALREADY_IN_UPDATE_MODE,
LIBFPTR_ERROR_INVALID_FIRMWARE,
LIBFPTR_ERROR_INVALID_CHANNEL,
LIBFPTR_ERROR_INTERFACE_DOWN,
LIBFPTR_ERROR_INVALID_FISCAL_PROPERTY_VALUE_1212_1030,
LIBFPTR_ERROR_INVALID_FISCAL_PROPERTY_VALUE_1214,
LIBFPTR_ERROR_INVALID_FISCAL_PROPERTY_VALUE_1212,
LIBFPTR_ERROR_SYNC_TIME,
LIBFPTR_ERROR_VAT18_VAT20_IN_RECEIPT,
LIBFPTR_ERROR_PICTURE_NOT_CLOSED,
LIBFPTR_ERROR_INTERFACE_BUSY,
LIBFPTR_ERROR_INVALID_PICTURE_NUMBER,
LIBFPTR_ERROR_INVALID_CONTAINER,
LIBFPTR_ERROR_ARCHIVE_CLOSED,
LIBFPTR_ERROR_NEED_REGISTRATION,
LIBFPTR_ERROR_DENIED_DURING_UPDATE,
LIBFPTR_ERROR_INVALID_TOTAL,
LIBFPTR_ERROR_MARKING_CODE_CONFLICT,
LIBFPTR_ERROR_INVALID_RECORDS_ID,
LIBFPTR_ERROR_INVALID_SIGNATURE,
LIBFPTR_ERROR_INVALID_EXCISE_SUM,
LIBFPTR_ERROR_NO_DOCUMENTS_FOUND_IN_JOURNAL,
LIBFPTR_ERROR_INVALID_SCRIPT_TYPE,
LIBFPTR_ERROR_INVALID_SCRIPT_NAME,
LIBFPTR_ERROR_INVALID_POSITIONS_COUNT_WITH_1162,
LIBFPTR_ERROR_INVALID_UC_COUNTER,
LIBFPTR_ERROR_INVALID_UC_TAG,
LIBFPTR_ERROR_INVALID_UC_IDX,
LIBFPTR_ERROR_INVALID_UC_SIZE,
LIBFPTR_ERROR_INVALID_UC_CONFIG,
LIBFPTR_ERROR_CONNECTION_LOST,
LIBFPTR_ERROR_UNIVERSAL_COUNTERS_FAULT,
LIBFPTR_ERROR_INVALID_TAX_SUM,
LIBFPTR_ERROR_INVALID_MARKING_CODE_TYPE,
LIBFPTR_ERROR_LICENSE_HARD_FAULT,
LIBFPTR_ERROR_LICENSE_INVALID_SIGN,
LIBFPTR_ERROR_LICENSE_INVALID_SERIAL,
LIBFPTR_ERROR_LICENSE_INVALID_TIME,
LIBFPTR_ERROR_DOCUMENT_CANCELED,
LIBFPTR_ERROR_INVALID_SCRIPT_PARAMS,
LIBFPTR_ERROR_CLICHE_TOO_LONG,
LIBFPTR_ERROR_COMMODITIES_TABLE_FAULT,
LIBFPTR_ERROR_COMMODITIES_TABLE,
LIBFPTR_ERROR_COMMODITIES_TABLE_INVALID_TAG,
LIBFPTR_ERROR_COMMODITIES_TABLE_INVALID_TAG_SIZE,
LIBFPTR_ERROR_COMMODITIES_TABLE_NO_TAG_DATA,
LIBFPTR_ERROR_COMMODITIES_TABLE_NO_FREE_MEMORY,
LIBFPTR_ERROR_INVALID_CACHE,
LIBFPTR_ERROR_SCHEDULER_NOT_READY,
LIBFPTR_ERROR_SCHEDULER_INVALID_TASK,
LIBFPTR_ERROR_MINIPOS_NO_POSITION_PAYMENT,
LIBFPTR_ERROR_MINIPOS_COMMAND_TIME_OUT,
LIBFPTR_ERROR_MINIPOS_MODE_FR_DISABLED,
LIBFPTR_ERROR_ENTRY_NOT_FOUND_IN_OTP,
LIBFPTR_ERROR_EXCISABLE_COMMODITY_WITHOUT_EXCISE,
LIBFPTR_ERROR_BARCODE_TYPE_NOT_SUPPORTED,
LIBFPTR_ERROR_OVERLAY_DATA_OVERFLOW,
LIBFPTR_ERROR_INVALID_MODULE_ADDRESS,
LIBFPTR_ERROR_ECR_MODEL_NOT_SUPPORTED,
LIBFPTR_ERROR_BASE_MARKING = 400,
LIBFPTR_ERROR_MARKING_CODE_VALIDATION_IN_PROGRESS,
LIBFPTR_ERROR_NO_CONNECTION_WITH_SERVER,
LIBFPTR_ERROR_MARKING_CODE_VALIDATION_CANCELED,
LIBFPTR_ERROR_INVALID_MARKING_CODE_STATUS,
LIBFPTR_ERROR_INVALID_GS1,
LIBFPTR_ERROR_MARKING_WORK_DENIED,
LIBFPTR_ERROR_MARKING_WORK_TEMPORARY_BLOCKED,
LIBFPTR_ERROR_MARKS_OVERFLOW,
LIBFPTR_ERROR_INVALID_MARKING_CODE,
LIBFPTR_ERROR_INVALID_STATE,
LIBFPTR_ERROR_OFD_EXCHANGE,
LIBFPTR_ERROR_INVALID_MEASUREMENT_UNIT,
LIBFPTR_ERROR_OPERATION_DENIED_IN_CURRENT_FFD,
LIBFPTR_ERROR_MARKING_OPERATION_DENIED,
LIBFPTR_ERROR_NO_DATA_TO_SEND,
LIBFPTR_ERROR_NO_MARKED_POSITION,
LIBFPTR_ERROR_HAS_NOT_SEND_NOTICES,
LIBFPTR_ERROR_UPDATE_KEYS_REQUIRED,
LIBFPTR_ERROR_UPDATE_KEYS_SERVICE,
LIBFPTR_ERROR_MARK_NOT_CHECKED,
LIBFPTR_ERROR_MARK_CHECK_TIMEOUT_EXPIRED,
LIBFPTR_ERROR_NO_MARKING_CODE_IN_TABLE,
LIBFPTR_ERROR_CHEKING_MARK_IN_PROGRESS,
LIBFPTR_ERROR_INVALID_SERVER_ADDRESS,
LIBFPTR_ERROR_UPDATE_KEYS_TIMEOUT,
LIBFPTR_ERROR_PROPERTY_FOR_MARKING_POSITION_ONLY,
LIBFPTR_ERROR_MARKING_END = 499,
LIBFPTR_ERROR_BASE_WEB = 500,
LIBFPTR_ERROR_RECEIPT_PARSE_ERROR,
LIBFPTR_ERROR_INTERRUPTED_BY_PREVIOUS_ERRORS,
LIBFPTR_ERROR_DRIVER_SCRIPT_ERROR,
LIBFPTR_ERROR_VALIDATE_FUNC_NOT_FOUND,
LIBFPTR_ERROR_WEB_FAIL,
LIBFPTR_ERROR_WEB_END = 599,
LIBFPTR_ERROR_BASE_RPC = 600,
LIBFPTR_ERROR_RCP_SERVER_BUSY,
LIBFPTR_ERROR_RCP_SERVER_VERSION,
LIBFPTR_ERROR_RCP_SERVER_EXCHANGE,
LIBFPTR_ERROR_RPC_END = 699,
LIBFPTR_ERROR_USERS_SCRIPTS_BASE = 1000,
LIBFPTR_ERROR_USERS_SCRIPTS_END = 1999,
}
// @ts-ignore
export const ErrorCodes = {
0: «Ошибок нет»,
1: «Соединение не установлено»,
2: «Нет связи»,
3: «Порт занят»,
4: «Порт недоступен»,
5: «Некорректные данные от устройства»,
6: «Внутренняя ошибка библиотеки»,
7: «Неподдерживаемое преобразование типа параметра»,
8: «Не найден обязательный параметр»,
9: «Некорректные настройки»,
10: «Драйвер не настроен»,
11: «Не поддерживается в данной версии (драйвера или ККТ)»,
12: «Не поддерживается в данном режиме»,
13: «Нeкорректное значение параметра»,
14: «Не удалось загрузить библиотеку»,
15: «Неизвестная ошибка»,
16: «Неверная цена (сумма)»,
17: «Неверное количество»,
18: «Переполнение счетчика наличности»,
19: «Невозможно сторно последней операции»,
20: «Сторно по коду невозможно»,
21: «Невозможен повтор последней операции»,
22: «Повторная скидка на операцию невозможна»,
23: «Невозможно начислить скидку/надбавку»,
24: «Неверный код товара»,
25: «Неверный штрихкод товара»,
26: «Неверный формат команды»,
27: «Неверная длина»,
28: «ККТ заблокирована в режиме ввода даты»,
29: «Требуется подтверждение ввода даты»,
30: «Нет больше данных»,
31: «Нет подтверждения или отмены продажи»,
32: «Отчет о закрытии смены прерван»,
33: «Отключение контроля наличности невозможно (не настроены необходимые типы оплаты)»,
34: «Вход в режим заблокирован»,
35: «Проверьте дату и время»,
36: «Переданные дата/время меньше даты/времени последнего фискального документа»,
37: «Невозможно закрыть архив»,
38: «Товар не найден»,
39: «Весовой штрихкод с количеством <> 1.000»,
40: «Переполнение буфера чека»,
41: «Недостаточное количество товара»,
42: «Сторнируемое количество больше проданного»,
43: «Товар не найден»,
44: «Нет бумаги»,
45: «Открыта крышка»,
46: «Нет связи с принтером чеков»,
47: «Механическая ошибка печатающего устройства»,
48: «Неверный тип чека»,
49: «Недопустимое целевое устройство»,
50: «Нет места в массиве картинок/штрихкодов»,
51: «Неверный номер картинки/штрихкода (картинка/штрихкод отсутствует)»,
52: «Сумма не наличных платежей превышает сумму чека»,
53: «Накопление меньше суммы возврата или аннулирования»,
54: «Переполнение суммы платежей»,
55: «Предыдущая операция незавершена»,
56: «Ошибка GSM- модуля»,
57: «Неверная величина скидки / надбавки»,
58: «Операция после скидки / надбавки невозможна»,
59: «Неверная секция»,
60: «Неверный вид оплаты»,
61: «Переполнение при умножении»,
62: «Операция запрещена в таблице настроек»,
63: «Переполнение итога чека»,
64: «Открыт чек аннулирования – операция невозможна»,
65: «Переполнение буфера ЭЖ»,
66: «Чек оплачен не полностью»,
67: «Открыт чек возврата – операция невозможна»,
68: «Смена превысила 24 часа»,
69: «Открыт чек продажи – операция невозможна»,
70: «Переполнение ФП»,
71: «Неверный пароль»,
72: «Идет обработка ЭЖ»,
73: «Смена закрыта — операция невозможна»,
74: «Неверный номер таблицы»,
75: «Неверный номер ряда»,
76: «Неверный номер поля»,
77: «Неверная дата и/или время»,
78: «Неверная сумма сторно»,
79: «Подсчет суммы сдачи невозможен»,
80: «В ККТ нет денег для выплаты»,
81: «Чек закрыт – операция невозможна»,
82: «Чек открыт – операция невозможна»,
83: «Смена открыта, операция невозможна»,
84: «Серийный номер / MAC- адрес уже задан»,
85: «Исчерпан лимит перерегистраций»,
86: «Неверный номер смены»,
87: «Недопустимый серийный номер ККТ»,
88: «Недопустимый РНМ и/или ИНН»,
89: «ККТ не зарегистрирована»,
90: «Не задан серийный номер»,
91: «Нет отчетов»,
92: «Режим не активизирован»,
93: «Данные документа отсутствуют»,
94: «Некорректный код защиты / лицензия или номер»,
95: «Требуется выполнение общего гашения»,
96: «Команда не разрешена введенными кодами защиты / лицензиями ККТ»,
97: «Невозможна отмена скидки/надбавки»,
98: «Невозможно закрыть чек данным типом оплаты»,
99: «Неверный номер маршрута»,
100: «Неверный номер начальной зоны»,
101: «Неверный номер конечной зоны»,
102: «Неверный тип тарифа»,
103: «Неверный тариф»,
104: «Ошибка обмена с фискальным модулем»,
105: «Необходимо провести профилактические работы»,
106: «Неверные номера смен в ККТ и ФН»,
107: «Нет устройства, обрабатывающего данную команду»,
108: «Нет связи с внешним устройством»,
109: «Ошибочное состояние ТРК»,
110: «Недопустимое кол- во позиций в чеке»,
111: «Ошибочный номер ТРК»,
112: «Неверный делитель»,
113: «Активация данного ФН в составе данной ККТ невозможна»,
114: «Перегрев головки принтера»,
115: «Ошибка обмена с ФН на уровне интерфейса I2C»,
116: «Ошибка формата передачи ФН»,
117: «Неверное состояние ФН»,
118: «Неисправимая ошибка ФН»,
119: «Ошибка КС ФН»,
120: «Закончен срок эксплуатации ФН»,
121: «Архив ФН переполнен»,
122: «В ФН переданы неверная дата или время»,
123: «В ФН нет запрошенных данных»,
124: «Переполнение ФН (итог чека / смены)»,
125: «Буфер переполнен»,
126: «Невозможно напечатать вторую фискальную копию»,
127: «Требуется гашение ЭЖ»,
128: «Некорректная сумма налога»,
129: «Начисление налога на последнюю операцию невозможно»,
130: «Неверный номер ФН»,
131: «Сумма сторно налога больше суммы зарегистрированного налога данного типа»,
132: «Операция невозможна, недостаточно питания»,
133: «Некорректное значение параметров команды ФН»,
134: «Превышение размеров TLV данных ФН»,
135: «Нет транспортного соединения ФН»,
136: «Исчерпан ресурс КС ФН»,
137: «Ресурс хранения ФД исчерпан»,
138: «Сообщение от ОФД не может быть принято ФН»,
139: «В ФН есть неотправленные ФД»,
140: «Исчерпан ресурс ожидания передачи сообщения в ФН»,
141: «Продолжительность смены ФН более 24 часов»,
142: «Неверная разница во времени между двумя операциями ФН»,
143: «Некорректная СНО»,
144: «Недопустимый номер ставки налога»,
145: «Недопустимый тип оплаты товара»,
146: «Недопустимый тип кода товара»,
147: «Недопустима регистрация подакцизного товара»,
148: «Ошибка программирования реквизита»,
149: «Неверный тип счетчика»,
150: «Ошибка отрезчика»,
151: «Снятие отчета прервалось»,
152: «Недопустимое значение отступа слева»,
153: «Недопустимое значение выравнивания»,
154: «Недопустимое значение режима работы с налогом»,
155: «Файл не найден или неверный формат»,
156: «Размер картинки слишком большой»,
157: «Не удалось сформировать штрихкод»,
158: «Неразрешенные реквизиты»,
159: «Ошибка интерфейса ФН»,
160: «Дублирование данных»,
161: «Не указаны обязательные реквизиты»,
162: «Ошибка чтения документа из ФН»,
163: «Переполнение чисел с плавающей точкой»,
164: «Неверное значение параметра ККТ»,
165: «Внутренняя ошибка ККТ»,
166: «ФН не найден»,
167: «Невозможно записать реквизит агента»,
168: «Недопустимое сочетания реквизитов 1002 и 1056»,
169: «Недопустимое сочетания реквизитов 1002 и 1017»,
170: «Ошибка скриптового движка ККТ»,
171: «Неверный номер пользовательской ячейки памяти»,
172: «Кассир не зарегистрирован»,
173: «Отчет о регистрации ККТ прерван»,
174: «Отчет о закрытии ФН прерван»,
175: «Отчет об открытии смены прерван»,
176: «Отчет о состоянии расчетов прерван»,
177: «Закрытие чека прервано»,
178: «Получение документа из ФН прервано»,
179: «Сбой часов»,
180: «Сбой памяти»,
181: «Сбой микросхемы»,
182: «Ошибка шаблонов документов»,
183: «Недопустимое значение MAC- адреса»,
184: «Неверный тип (номер) шаблона»,
185: «Загруженные шаблоны повреждены или отсутствуют»,
186: «Несовместимая версия загруженных шаблонов»,
187: «Ошибка в формате клише»,
188: «Требуется перезагрузка ККТ»,
189: «Подходящие лицензии не найдены»,
190: «Неверная версия ФФД»,
191: «Параметр доступен только для чтения»,
192: «Неверный тип кода товара»,
193: «Неверное значение GTIN»,
194: «Отрицательный результат математической операции»,
195: «Недопустимое сочетание реквизитов»,
196: «Ошибка регистрации кассира»,
197: «Данный канал Интернет отсутствует в ККТ»,
198: «Дата и время не синхронизированы»,
199: «Ошибка электронного журнала»,
200: «Документ открыт — операция невозможна»,
201: «Документ закрыт — операция невозможна»,
202: «Нет места для сохранения лицензий»,
203: «Произошла критичная ошибка, документ необходимо отменить»,
204: «Регистры ККТ еще не инициализированы»,
205: «Требуется регистрация итога»,
206: «Сбой таблицы настроек»,
207: «Сбой счетчиков и регистров ККТ»,
208: «Сбой пользовательской памяти»,
209: «Сбой сервисных регистров»,
210: «Сбой реквизитов ККТ»,
211: «ККТ уже в режиме обновления конфигурации»,
212: «Конфигурация не прошла проверку»,
213: «Аппаратный канал отсутствует, выключен или ещё не проинициализирован»,
214: «Сетевой интерфейс не подключен, или на нём не получен IP-адрес»,
215: «Недопустимое сочетание реквизитов 1212 и 1030»,
216: «Некорректный признак способа расчета»,
217: «Некорректный признак предмета расчета»,
218: «Ошибка синхронизации времени»,
219: «В одном чеке одновременно не может быть позиций с НДС 18% (18/118) и НДС 20% (20/120)»,
220: «Картинка не закрыта»,
221: «Сетевой интерфейс занят»,
222: «Неверный номер картинки»,
223: «Ошибка проверки контейнера»,
224: «Архив ФН закрыт»,
225: «Нужно выполнить регистрацию / перерегистрацию»,
226: «Операция невозможна, идет обновление ПО ККТ»,
227: «Неверный итог чека»,
228: «Запрещена одновременная передача КМ и реквизита 1162»,
229: «Набор записей по заданному идентификатору не найден»,
230: «Ошибка цифровой подписи»,
231: «Некорректная сумма акциза»,
232: «Заданный диапазон документов не найден в БД документов»,
233: «Неподдерживаемый тип скрипта»,
234: «Некорректный идентификатор скрипта»,
235: «Кол-во позиций с реквизитом 1162 в автономном режиме превысило разрешенный лимит»,
236: «Универсальный счетчик с заданными параметрами недоступен»,
237: «Неподдерживаемый тег для универсальных счетчиков»,
238: «Некорректный индекс для универсальных счетчиков»,
239: «Неверный размер универсального счетчика»,
240: «Неверная конфигурация универсальных счетчиков»,
241: «Соединение с ККТ потеряно»,
242: «Ошибка универсальных счетчиков»,
243: «Некорректная сумма налога»,
244: «Некорректное значение типа кода маркировки»,
245: «Аппаратная ошибка при сохранении лицензии»,
246: «Подпись лицензии некорректна»,
247: «Лицензия не подходит для данной ККТ»,
248: «Срок действия лицензии истёк»,
249: «Документ был отменен»,
250: «Некорректные параметры скрипта»,
251: «Длина клише превышает максимальное значение»,
252: «Ошибка таблицы товаров»,
253: «Общая ошибка таблицы товаров»,
254: «Некорректный тег для таблицы товаров»,
255: «Некорректный размер тега для таблицы товаров»,
256: «Нет данных по тегу в таблице товаров»,
257: «Нет места в динамической области памяти таблицы товаров»,
258: «Ошибка чтения/записи данных кеша»,
259: «Функции планировщика заданий не доступны»,
260: «Неизвестный тип задания планировщика»,
261: «Отсутствует позиция оплаты»,
262: «Таймаут выполнения команды истек»,
263: «Режим ФР выключен»,
264: «Не найдена запись в OTP»,
265: «Подакцизный товар без акциза зарегистрирован в чеке»,
401: «Процедура проверки КМ уже запущена»,
402: «Ошибка соединения с сервером»,
403: «Процедура проверки КМ прервана»,
404: «Некорректное значение статуса КМ»,
405: «Неверный код GS1»,
406: «Запрещена работа с маркированным товарами»,
407: «Работа с маркированными товарами временно заблокирована»,
408: «Переполнена таблица хранения КМ»,
409: «Некорректный код маркировки»,
410: «Неверное состояние»,
411: «Ошибка обмена с сервером ОФД или ИСМ»,
412: «Некорректное значение единиц измерения»,
413: «Операция не разрешена в данной версии ФФД»,
414: «Операция не разрешена, при регистрации не был установлен признак ТМТ»,
415: «Нет данных для отправки»,
416: «Нет маркированных позиций в чеке»,
417: «Имеются неотправленные уведомления»,
418: «Требуется повторное проведение процедуры обновления ключей»,
419: «Ошибка сервиса обновления ключей проверки КМ»,
420: «КМ не проверен в ФН»,
421: «Истёк таймаут проверки КМ»,
422: «Данный КМ отсутствует в таблице»,
501: «Ошибка парсинга чека / запроса»,
502: «Выполнение прервано из-за предыдущих ошибок»,
503: «Ошибка скрипта драйвера»,
504: «Функция проверки задания не найдена»,
505: «Выполняется проверка КМ»,
} as const
export enum Param {
LIBFPTR_PARAM_FIRST = 65536,
LIBFPTR_PARAM_TEXT = LIBFPTR_PARAM_FIRST,
LIBFPTR_PARAM_TEXT_WRAP,
LIBFPTR_PARAM_ALIGNMENT,
LIBFPTR_PARAM_FONT,
LIBFPTR_PARAM_FONT_DOUBLE_WIDTH,
LIBFPTR_PARAM_FONT_DOUBLE_HEIGHT,
LIBFPTR_PARAM_LINESPACING,
LIBFPTR_PARAM_BRIGHTNESS,
LIBFPTR_PARAM_MODEL,
LIBFPTR_PARAM_RECEIPT_TYPE,
LIBFPTR_PARAM_REPORT_TYPE,
LIBFPTR_PARAM_MODE,
LIBFPTR_PARAM_EXTERNAL_DEVICE_TYPE,
LIBFPTR_PARAM_EXTERNAL_DEVICE_DATA,
LIBFPTR_PARAM_FREQUENCY,
LIBFPTR_PARAM_DURATION,
LIBFPTR_PARAM_CUT_TYPE,
LIBFPTR_PARAM_DRAWER_ON_TIMEOUT,
LIBFPTR_PARAM_DRAWER_OFF_TIMEOUT,
LIBFPTR_PARAM_DRAWER_ON_QUANTITY,
LIBFPTR_PARAM_TIMEOUT_ENQ,
LIBFPTR_PARAM_COMMAND_BUFFER,
LIBFPTR_PARAM_ANSWER_BUFFER,
LIBFPTR_PARAM_SERIAL_NUMBER,
LIBFPTR_PARAM_MANUFACTURER_CODE,
LIBFPTR_PARAM_NO_NEED_ANSWER,
LIBFPTR_PARAM_INFO_DISCOUNT_SUM,
LIBFPTR_PARAM_USE_ONLY_TAX_TYPE,
LIBFPTR_PARAM_PAYMENT_TYPE,
LIBFPTR_PARAM_PAYMENT_SUM,
LIBFPTR_PARAM_REMAINDER,
LIBFPTR_PARAM_CHANGE,
LIBFPTR_PARAM_DEPARTMENT,
LIBFPTR_PARAM_TAX_TYPE,
LIBFPTR_PARAM_TAX_SUM,
LIBFPTR_PARAM_TAX_MODE,
LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY,
LIBFPTR_PARAM_USER_PASSWORD,
LIBFPTR_PARAM_SCALE,
LIBFPTR_PARAM_LEFT_MARGIN,
LIBFPTR_PARAM_BARCODE,
LIBFPTR_PARAM_BARCODE_TYPE,
LIBFPTR_PARAM_BARCODE_PRINT_TEXT,
LIBFPTR_PARAM_BARCODE_VERSION,
LIBFPTR_PARAM_BARCODE_CORRECTION,
LIBFPTR_PARAM_BARCODE_COLUMNS,
LIBFPTR_PARAM_BARCODE_INVERT,
LIBFPTR_PARAM_HEIGHT,
LIBFPTR_PARAM_WIDTH,
LIBFPTR_PARAM_FILENAME,
LIBFPTR_PARAM_PICTURE_NUMBER,
LIBFPTR_PARAM_DATA_TYPE,
LIBFPTR_PARAM_OPERATOR_ID,
LIBFPTR_PARAM_LOGICAL_NUMBER,
LIBFPTR_PARAM_DATE_TIME,
LIBFPTR_PARAM_FISCAL,
LIBFPTR_PARAM_SHIFT_STATE,
LIBFPTR_PARAM_CASHDRAWER_OPENED,
LIBFPTR_PARAM_RECEIPT_PAPER_PRESENT,
LIBFPTR_PARAM_COVER_OPENED,
LIBFPTR_PARAM_SUBMODE,
LIBFPTR_PARAM_RECEIPT_NUMBER,
LIBFPTR_PARAM_DOCUMENT_NUMBER,
LIBFPTR_PARAM_SHIFT_NUMBER,
LIBFPTR_PARAM_RECEIPT_SUM,
LIBFPTR_PARAM_RECEIPT_LINE_LENGTH,
LIBFPTR_PARAM_RECEIPT_LINE_LENGTH_PIX,
LIBFPTR_PARAM_MODEL_NAME,
LIBFPTR_PARAM_UNIT_VERSION,
LIBFPTR_PARAM_PRINTER_CONNECTION_LOST,
LIBFPTR_PARAM_PRINTER_ERROR,
LIBFPTR_PARAM_CUT_ERROR,
LIBFPTR_PARAM_PRINTER_OVERHEAT,
LIBFPTR_PARAM_UNIT_TYPE,
LIBFPTR_PARAM_LICENSE_NUMBER,
LIBFPTR_PARAM_LICENSE_ENTERED,
LIBFPTR_PARAM_LICENSE,
LIBFPTR_PARAM_SUM,
LIBFPTR_PARAM_COUNT,
LIBFPTR_PARAM_COUNTER_TYPE,
LIBFPTR_PARAM_STEP_COUNTER_TYPE,
LIBFPTR_PARAM_ERROR_TAG_NUMBER,
LIBFPTR_PARAM_TABLE,
LIBFPTR_PARAM_ROW,
LIBFPTR_PARAM_FIELD,
LIBFPTR_PARAM_FIELD_VALUE,
LIBFPTR_PARAM_FN_DATA_TYPE,
LIBFPTR_PARAM_TAG_NUMBER,
LIBFPTR_PARAM_TAG_VALUE,
LIBFPTR_PARAM_DOCUMENTS_COUNT,
LIBFPTR_PARAM_FISCAL_SIGN,
LIBFPTR_PARAM_DEVICE_FFD_VERSION,
LIBFPTR_PARAM_FN_FFD_VERSION,
LIBFPTR_PARAM_FFD_VERSION,
LIBFPTR_PARAM_CHECK_SUM,
LIBFPTR_PARAM_COMMODITY_NAME,
LIBFPTR_PARAM_PRICE,
LIBFPTR_PARAM_QUANTITY,
LIBFPTR_PARAM_POSITION_SUM,
LIBFPTR_PARAM_FN_TYPE,
LIBFPTR_PARAM_FN_VERSION,
LIBFPTR_PARAM_REGISTRATIONS_REMAIN,
LIBFPTR_PARAM_REGISTRATIONS_COUNT,
LIBFPTR_PARAM_NO_ERROR_IF_NOT_SUPPORTED,
LIBFPTR_PARAM_OFD_EXCHANGE_STATUS,
LIBFPTR_PARAM_FN_ERROR_DATA,
LIBFPTR_PARAM_FN_ERROR_CODE,
LIBFPTR_PARAM_ENVD_MODE,
LIBFPTR_PARAM_DOCUMENT_CLOSED,
LIBFPTR_PARAM_JSON_DATA,
LIBFPTR_PARAM_COMMAND_SUBSYSTEM,
LIBFPTR_PARAM_FN_OPERATION_TYPE,
LIBFPTR_PARAM_FN_STATE,
LIBFPTR_PARAM_ENVD_MODE_ENABLED,
LIBFPTR_PARAM_SETTING_ID,
LIBFPTR_PARAM_SETTING_VALUE,
LIBFPTR_PARAM_MAPPING_KEY,
LIBFPTR_PARAM_MAPPING_VALUE,
LIBFPTR_PARAM_COMMODITY_PIECE,
LIBFPTR_PARAM_POWER_SOURCE_TYPE,
LIBFPTR_PARAM_BATTERY_CHARGE,
LIBFPTR_PARAM_VOLTAGE,
LIBFPTR_PARAM_USE_BATTERY,
LIBFPTR_PARAM_BATTERY_CHARGING,
LIBFPTR_PARAM_CAN_PRINT_WHILE_ON_BATTERY,
LIBFPTR_PARAM_MAC_ADDRESS,
LIBFPTR_PARAM_FN_FISCAL,
LIBFPTR_PARAM_NETWORK_ERROR,
LIBFPTR_PARAM_OFD_ERROR,
LIBFPTR_PARAM_FN_ERROR,
LIBFPTR_PARAM_COMMAND_CODE,
LIBFPTR_PARAM_PRINTER_TEMPERATURE,
LIBFPTR_PARAM_RECORDS_TYPE,
LIBFPTR_PARAM_OFD_FISCAL_SIGN,
LIBFPTR_PARAM_HAS_OFD_TICKET,
LIBFPTR_PARAM_NO_SERIAL_NUMBER,
LIBFPTR_PARAM_RTC_FAULT,
LIBFPTR_PARAM_SETTINGS_FAULT,
LIBFPTR_PARAM_COUNTERS_FAULT,
LIBFPTR_PARAM_USER_MEMORY_FAULT,
LIBFPTR_PARAM_SERVICE_COUNTERS_FAULT,
LIBFPTR_PARAM_ATTRIBUTES_FAULT,
LIBFPTR_PARAM_FN_FAULT,
LIBFPTR_PARAM_INVALID_FN,
LIBFPTR_PARAM_HARD_FAULT,
LIBFPTR_PARAM_MEMORY_MANAGER_FAULT,
LIBFPTR_PARAM_SCRIPTS_FAULT,
LIBFPTR_PARAM_FULL_RESET,
LIBFPTR_PARAM_WAIT_FOR_REBOOT,
LIBFPTR_PARAM_SCALE_PERCENT,
LIBFPTR_PARAM_FN_NEED_REPLACEMENT,
LIBFPTR_PARAM_FN_RESOURCE_EXHAUSTED,
LIBFPTR_PARAM_FN_MEMORY_OVERFLOW,
LIBFPTR_PARAM_FN_OFD_TIMEOUT,
LIBFPTR_PARAM_FN_CRITICAL_ERROR,
LIBFPTR_PARAM_OFD_MESSAGE_READ,
LIBFPTR_PARAM_DEVICE_MIN_FFD_VERSION,
LIBFPTR_PARAM_DEVICE_MAX_FFD_VERSION,
LIBFPTR_PARAM_DEVICE_UPTIME,
LIBFPTR_PARAM_NOMENCLATURE_TYPE,
LIBFPTR_PARAM_GTIN,
LIBFPTR_PARAM_FN_DOCUMENT_TYPE,
LIBFPTR_PARAM_NETWORK_ERROR_TEXT,
LIBFPTR_PARAM_FN_ERROR_TEXT,
LIBFPTR_PARAM_OFD_ERROR_TEXT,
LIBFPTR_PARAM_USER_SCRIPT_ID,
LIBFPTR_PARAM_USER_SCRIPT_PARAMETER,
LIBFPTR_PARAM_USER_MEMORY_OPERATION,
LIBFPTR_PARAM_USER_MEMORY_DATA,
LIBFPTR_PARAM_USER_MEMORY_STRING,
LIBFPTR_PARAM_USER_MEMORY_ADDRESS,
LIBFPTR_PARAM_FN_PRESENT,
LIBFPTR_PARAM_BLOCKED,
LIBFPTR_PARAM_DOCUMENT_PRINTED,
LIBFPTR_PARAM_DISCOUNT_SUM,
LIBFPTR_PARAM_SURCHARGE_SUM,
LIBFPTR_PARAM_LK_USER_CODE,
LIBFPTR_PARAM_LICENSE_COUNT,
LIBFPTR_PARAM_DEFER,
LIBFPTR_PARAM_CAP_54FZ,
LIBFPTR_PARAM_CAP_MANUAL_CLICHE_CONTROL,
LIBFPTR_PARAM_CAP_PAYMENTS_COUNT,
LIBFPTR_PARAM_FIRMWARE_CHUNK_SIZE,
LIBFPTR_PARAM_FIRMWARE_CHUNK_DATA,
LIBFPTR_PARAM_FN_FLAGS,
LIBFPTR_PARAM_PRINT_FOOTER,
LIBFPTR_PARAM_PUBLIC_KEY,
LIBFPTR_PARAM_MAGIC_NUMBER,
LIBFPTR_PARAM_SIGN,
LIBFPTR_PARAM_SOFT_NAME,
LIBFPTR_PARAM_SESSION_CODE,
LIBFPTR_PARAM_ETHERNET_CONFIG_TIMEOUT,
LIBFPTR_PARAM_ETHERNET_DHCP,
LIBFPTR_PARAM_ETHERNET_IP,
LIBFPTR_PARAM_ETHERNET_MASK,
LIBFPTR_PARAM_ETHERNET_GATEWAY,
LIBFPTR_PARAM_ETHERNET_PORT,
LIBFPTR_PARAM_ETHERNET_DNS_IP,
LIBFPTR_PARAM_ETHERNET_DNS_STATIC,
LIBFPTR_PARAM_STORE_IN_JOURNAL,
LIBFPTR_PARAM_NEW_PLATFORM,
LIBFPTR_PARAM_UNIT_RELEASE_VERSION,
LIBFPTR_PARAM_USE_VAT18,
LIBFPTR_PARAM_TAG_NAME,
LIBFPTR_PARAM_TAG_TYPE,
LIBFPTR_PARAM_TAG_IS_COMPLEX,
LIBFPTR_PARAM_TAG_IS_REPEATABLE,
LIBFPTR_PARAM_SHIFT_AUTO_OPENED,
LIBFPTR_PARAM_CONTAINER_FIRMWARE_VERSION,
LIBFPTR_PARAM_CONTAINER_CONFIGURATION_VERSION,
LIBFPTR_PARAM_CONTAINER_BOOTLOADER_VERSION,
LIBFPTR_PARAM_CONTAINER_SCRIPTS_VERSION,
LIBFPTR_PARAM_PAPER_NEAR_END,
LIBFPTR_PARAM_REPORT_ELECTRONICALLY,
LIBFPTR_PARAM_ACTIVATION_METHOD,
LIBFPTR_PARAM_KEYS,
LIBFPTR_PARAM_UIN,
LIBFPTR_PARAM_VERSION,
LIBFPTR_PARAM_PUBLIC_KEY_SIGN,
LIBFPTR_PARAM_CAP_DISABLE_PRINT_REPORTS,
LIBFPTR_PARAM_REGISTRATION_NUMBER,
LIBFPTR_PARAM_PIXEL_BUFFER,
LIBFPTR_PARAM_REPEAT_NUMBER,
LIBFPTR_PARAM_FIELD_TYPE,
LIBFPTR_PARAM_MARKING_CODE,
LIBFPTR_PARAM_CONTAINER_DIRECT_BOOT_VERSION,
LIBFPTR_PARAM_SCRIPT_NAME,
LIBFPTR_PARAM_SCRIPT_HASH,
LIBFPTR_PARAM_RECORDS_ID,
LIBFPTR_PARAM_USER_SCRIPT_RESULT_1,
LIBFPTR_PARAM_USER_SCRIPT_RESULT_2,
LIBFPTR_PARAM_USER_SCRIPT_RESULT_3,
LIBFPTR_PARAM_USER_SCRIPT_RESULT_4,
LIBFPTR_PARAM_USER_SCRIPT_RESULT_5,
LIBFPTR_PARAM_IS_USER_SCRIPT,
LIBFPTR_PARAM_DOCUMENT_NUMBER_END,
LIBFPTR_PARAM_SHIFT_NUMBER_END,
LIBFPTR_PARAM_SCRIPT_CODE,
LIBFPTR_PARAM_SCRIPT_RESULT,
LIBFPTR_PARAM_SCRIPT_TYPE,
LIBFPTR_PARAM_WIFI_CONFIG_TIMEOUT,
LIBFPTR_PARAM_WIFI_DHCP,
LIBFPTR_PARAM_WIFI_IP,
LIBFPTR_PARAM_WIFI_MASK,
LIBFPTR_PARAM_WIFI_GATEWAY,
LIBFPTR_PARAM_WIFI_PORT,
LIBFPTR_PARAM_UC_VERSION,
LIBFPTR_PARAM_UC_AVAILABLE_MEMORY,
LIBFPTR_PARAM_UC_USED_MEMORY_BY_SUMS,
LIBFPTR_PARAM_UC_USED_MEMORY_BY_QUANTITIES,
LIBFPTR_PARAM_UC_LAYER_1,
LIBFPTR_PARAM_UC_FLAGS_1,
LIBFPTR_PARAM_UC_MASK_1,
LIBFPTR_PARAM_UC_LAYER_VALUE_1,
LIBFPTR_PARAM_UC_LAYER_2,
LIBFPTR_PARAM_UC_FLAGS_2,
LIBFPTR_PARAM_UC_MASK_2,
LIBFPTR_PARAM_UC_LAYER_VALUE_2,
LIBFPTR_PARAM_UC_LAYER_3,
LIBFPTR_PARAM_UC_FLAGS_3,
LIBFPTR_PARAM_UC_MASK_3,
LIBFPTR_PARAM_UC_LAYER_VALUE_3,
LIBFPTR_PARAM_UC_LAYER_4,
LIBFPTR_PARAM_UC_FLAGS_4,
LIBFPTR_PARAM_UC_MASK_4,
LIBFPTR_PARAM_UC_LAYER_VALUE_4,
LIBFPTR_PARAM_RECEIPTS_COUNT,
LIBFPTR_PARAM_PAYMENTS_SUM_CASH,
LIBFPTR_PARAM_PAYMENTS_SUM_ELECTRONICALLY,
LIBFPTR_PARAM_PAYMENTS_SUM_PREPAID,
LIBFPTR_PARAM_PAYMENTS_SUM_CREDIT,
LIBFPTR_PARAM_PAYMENTS_SUM_OTHER,
LIBFPTR_PARAM_TAXES_SUM_VAT20,
LIBFPTR_PARAM_TAXES_SUM_VAT120,
LIBFPTR_PARAM_TAXES_SUM_VAT10,
LIBFPTR_PARAM_TAXES_SUM_VAT110,
LIBFPTR_PARAM_TAXES_SUM_VAT0,
LIBFPTR_PARAM_TAXES_SUM_NO,
LIBFPTR_PARAM_CORRECTIONS_COUNT,
LIBFPTR_PARAM_CORRECTIONS_SUM,
LIBFPTR_PARAM_FN_COUNTERS_TYPE,
LIBFPTR_PARAM_FN_DAYS_REMAIN,
LIBFPTR_PARAM_FREE_MEMORY,
LIBFPTR_PARAM_FN_MAX_FFD_VERSION,
LIBFPTR_PARAM_RECEIPTS_SUM,
LIBFPTR_PARAM_LICENSE_NAME,
LIBFPTR_PARAM_UNIVERSAL_COUNTERS_FAULT,
LIBFPTR_PARAM_USE_LICENSES,
LIBFPTR_PARAM_LICENSE_VALID_FROM,
LIBFPTR_PARAM_LICENSE_VALID_UNTIL,
LIBFPTR_PARAM_MARKING_CODE_TYPE,
LIBFPTR_PARAM_SETTING_NAME,
LIBFPTR_PARAM_SETTING_TYPE,
LIBFPTR_PARAM_FONT_WIDTH,
LIBFPTR_PARAM_REMOTE_CALL,
LIBFPTR_PARAM_SCRIPT_PARAMS,
LIBFPTR_PARAM_IGNORE_EMPTY,
LIBFPTR_PARAM_METHOD_DATA,
LIBFPTR_PARAM_METHOD_RESULT,
LIBFPTR_PARAM_RPC_SERVER_OS,
LIBFPTR_PARAM_RPC_SERVER_VERSION,
LIBFPTR_PARAM_RPC_DRIVER_VERSION,
LIBFPTR_PARAM_LOCKED,
LIBFPTR_PARAM_BOUND,
LIBFPTR_PARAM_COMMODITIES_TABLE_FAULT,
LIBFPTR_PARAM_HAS_ADDITIONAL_DATA,
LIBFPTR_PARAM_FISCAL_SIGN_ARCHIVE,
LIBFPTR_PARAM_COMMAND_GROUP,
LIBFPTR_PARAM_ERROR_CODE,
LIBFPTR_PARAM_MARKING_WAIT_FOR_VALIDATION_RESULT,
LIBFPTR_PARAM_MARKING_CODE_STATUS,
LIBFPTR_PARAM_MARKING_CODE_VALIDATION_RESULT,
LIBFPTR_PARAM_MARKING_CODE_OFFLINE_VALIDATION_ERROR,
LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR,
LIBFPTR_PARAM_MARKING_CODE_VALIDATION_READY,
LIBFPTR_PARAM_MEASUREMENT_UNIT,
LIBFPTR_PARAM_MARKING_PROCESSING_MODE,
LIBFPTR_PARAM_MARKING_FRACTIONAL_QUANTITY,
LIBFPTR_PARAM_PRODUCT_CODE,
LIBFPTR_PARAM_TRADE_MARKED_PRODUCTS,
LIBFPTR_PARAM_INSURANCE_ACTIVITY,
LIBFPTR_PARAM_PAWN_SHOP_ACTIVITY,
LIBFPTR_PARAM_TLV_LIST,
LIBFPTR_PARAM_CHECK_MARKING_SERVER_READY,
LIBFPTR_PARAM_MARKING_SERVER_RESPONSE_TIME,
LIBFPTR_PARAM_MARKING_SERVER_ERROR_CODE,
LIBFPTR_PARAM_MARKING_SERVER_ERROR_DESCRIPTION,
LIBFPTR_PARAM_ISM_ERROR,
LIBFPTR_PARAM_ISM_ERROR_TEXT,
LIBFPTR_PARAM_MARKING_MODE_CHECKING_STATUS,
LIBFPTR_PARAM_MARK_CHECKING_COUNT,
LIBFPTR_PARAM_MARK_SOLD_COUNT,
LIBFPTR_PARAM_NOTICE_IS_BEGIN,
LIBFPTR_PARAM_NOTICE_FREE_MEMORY,
LIBFPTR_PARAM_NOTICE_COUNT,
LIBFPTR_PARAM_MARKING_NOT_SEND_TO_SERVER,
LIBFPTR_PARAM_DOCUMENT_TYPE,
LIBFPTR_PARAM_PRINT_REPORT,
LIBFPTR_PARAM_FN_EXECUTION,
LIBFPTR_PARAM_MCU_SN,
LIBFPTR_PARAM_MCU_PART_ID,
LIBFPTR_PARAM_MCU_PART_NAME,
LIBFPTR_PARAM_IS_REQUEST_SENT,
LIBFPTR_PARAM_FN_CHECK_MARK_TIME,
LIBFPTR_PARAM_SENDING_MARK_TIME,
LIBFPTR_PARAM_MARKING_SERVER_EXCHANGE_TIME,
LIBFPTR_PARAM_FULL_SENDING_MARK_TIME,
LIBFPTR_PARAM_MARK_CHECKING_STATUS_IN_CASH,
LIBFPTR_PARAM_MARK_CHECKING_TYPE_IN_CASH,
LIBFPTR_PARAM_MARK_CHECKING_STAGE_IN_CASH,
LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_RESULT,
LIBFPTR_PARAM_MARKING_CODE_ONLINE_VALIDATION_ERROR_DESCRIPTION,
LIBFPTR_PARAM_FN_CONTAINS_KEYS_UPDATER_SERVER_URI,
LIBFPTR_PARAM_MARKING_CODE_CLEAR,
LIBFPTR_PARAM_MODULE_ADDRESS,
LIBFPTR_PARAM_SEGMENT_ADDRESS,
LIBFPTR_PARAM_LAST_SUCCESSFUL_OKP,
LIBFPTR_PARAM_FN_SERIAL_NUMBER,
LIBFPTR_PARAM_ECR_REGISTRATION_NUMBER,
LIBFPTR_PARAM_OFD_VATIN,
LIBFPTR_PARAM_FNS_URL,
LIBFPTR_PARAM_MACHINE_NUMBER,
LIBFPTR_PARAM_MARKING_PRODUCT_ID,
LIBFPTR_PARAM_TIMEOUT,
LIBFPTR_PARAM_PRINT_UPDATE_FNM_KEYS_REPORT,
LIBFPTR_PARAM_FN_KEYS_UPDATER_SERVER_URI,
LIBFPTR_PARAM_DOCUMENT_ELECTRONICALLY,
LIBFPTR_PARAM_LAST
}
export enum Model {
LIBFPTR_MODEL_UNKNOWN = 0,
LIBFPTR_MODEL_ATOL_AUTO = 500,
LIBFPTR_MODEL_ATOL_11F = 67,
LIBFPTR_MODEL_ATOL_15F = 78,
LIBFPTR_MODEL_ATOL_20F = 81,
LIBFPTR_MODEL_ATOL_22F = 63,
LIBFPTR_MODEL_ATOL_25F = 57,
LIBFPTR_MODEL_ATOL_27F = 87,
LIBFPTR_MODEL_ATOL_30F = 61,
LIBFPTR_MODEL_ATOL_42FS = 77,
LIBFPTR_MODEL_ATOL_47FA = 48,
LIBFPTR_MODEL_ATOL_50F = 80,
LIBFPTR_MODEL_ATOL_52F = 64,
LIBFPTR_MODEL_ATOL_55F = 62,
LIBFPTR_MODEL_ATOL_60F = 75,
LIBFPTR_MODEL_ATOL_77F = 69,
LIBFPTR_MODEL_ATOL_90F = 72,
LIBFPTR_MODEL_ATOL_91F = 82,
LIBFPTR_MODEL_ATOL_92F = 84,
LIBFPTR_MODEL_ATOL_SIGMA_10 = 86,
LIBFPTR_MODEL_ATOL_SIGMA_7F = 90,
LIBFPTR_MODEL_ATOL_SIGMA_8F = 91,
LIBFPTR_MODEL_ATOL_PT_5F = 89,
LIBFPTR_MODEL_KAZNACHEY_FA = 76,
LIBFPTR_MODEL_ATOL_1F = 93,
LIBFPTR_MODEL_ATOL_22v2F = 95,
}
export enum Baudrate {
LIBFPTR_PORT_BR_1200 = 1200,
LIBFPTR_PORT_BR_2400 = 2400,
LIBFPTR_PORT_BR_4800 = 4800,
LIBFPTR_PORT_BR_9600 = 9600,
LIBFPTR_PORT_BR_19200 = 19200,
LIBFPTR_PORT_BR_38400 = 38400,
LIBFPTR_PORT_BR_57600 = 57600,
LIBFPTR_PORT_BR_115200 = 115200,
LIBFPTR_PORT_BR_230400 = 230400,
LIBFPTR_PORT_BR_460800 = 460800,
LIBFPTR_PORT_BR_921600 = 921600,
}
export enum Bits {
LIBFPTR_PORT_BITS_7 = 7,
LIBFPTR_PORT_BITS_8 = 8,
}
export enum Parity {
LIBFPTR_PORT_PARITY_NO = 0,
LIBFPTR_PORT_PARITY_ODD,
LIBFPTR_PORT_PARITY_EVEN,
LIBFPTR_PORT_PARITY_MARK,
LIBFPTR_PORT_PARITY_SPACE,
}
export enum Stopbits {
LIBFPTR_PORT_SB_1 = 0,
LIBFPTR_PORT_SB_1_5,
LIBFPTR_PORT_SB_2
}
export enum BarcodeType {
LIBFPTR_BT_EAN_8 = 0,
LIBFPTR_BT_EAN_13,
LIBFPTR_BT_UPC_A,
LIBFPTR_BT_UPC_E,
LIBFPTR_BT_CODE_39,
LIBFPTR_BT_CODE_93,
LIBFPTR_BT_CODE_128,
LIBFPTR_BT_CODABAR,
LIBFPTR_BT_ITF,
LIBFPTR_BT_ITF_14,
LIBFPTR_BT_GS1_128,
LIBFPTR_BT_QR,
LIBFPTR_BT_PDF417,
LIBFPTR_BT_AZTEC,
LIBFPTR_BT_CODE_39_EXTENDED,
}
export enum BarcodeCorrection {
LIBFPTR_BC_DEFAULT = 0,
LIBFPTR_BC_0,
LIBFPTR_BC_1,
LIBFPTR_BC_2,
LIBFPTR_BC_3,
LIBFPTR_BC_4,
LIBFPTR_BC_5,
LIBFPTR_BC_6,
LIBFPTR_BC_7,
LIBFPTR_BC_8,
}
export enum TaxMode {
LIBFPTR_TM_POSITION = 0,
LIBFPTR_TM_UNIT,
}
export enum StepCounterType {
LIBFPTR_SCT_OVERALL = 0,
LIBFPTR_SCT_FORWARD,
}
export enum CounterType {
LIBFPTR_CT_ROLLUP = 0,
LIBFPTR_CT_RESETTABLE,
}
export enum ShiftState {
LIBFPTR_SS_CLOSED = 0,
LIBFPTR_SS_OPENED,
LIBFPTR_SS_EXPIRED,
}
export enum CutType {
LIBFPTR_CT_FULL = 0,
LIBFPTR_CT_PART,
}
export enum Alignment {
LIBFPTR_ALIGNMENT_LEFT = 0,
LIBFPTR_ALIGNMENT_CENTER,
LIBFPTR_ALIGNMENT_RIGHT,
}
export enum TextWrap {
LIBFPTR_TW_NONE = 0,
LIBFPTR_TW_WORDS,
LIBFPTR_TW_CHARS,
}
export enum FnType {
LIBFPTR_FNT_DEBUG = 0,
LIBFPTR_FNT_RELEASE,
LIBFPTR_FNT_UNKNOWN,
}
export enum FnState {
LIBFPTR_FNS_INITIAL = 0,
LIBFPTR_FNS_CONFIGURED = 1,
LIBFPTR_FNS_FISCAL_MODE = 3,
LIBFPTR_FNS_POSTFISCAL_MODE = 7,
LIBFPTR_FNS_ACCESS_ARCHIVE = 15,
}
export enum ReceiptType {
LIBFPTR_RT_CLOSED = 0,
LIBFPTR_RT_SELL = 1,
LIBFPTR_RT_SELL_RETURN = 2,
LIBFPTR_RT_SELL_CORRECTION = 7,
LIBFPTR_RT_SELL_RETURN_CORRECTION = 8,
LIBFPTR_RT_BUY = 4,
LIBFPTR_RT_BUY_RETURN = 5,
LIBFPTR_RT_BUY_CORRECTION = 9,
LIBFPTR_RT_BUY_RETURN_CORRECTION = 10,
}
export enum ReportType {
LIBFPTR_RT_CLOSE_SHIFT = 0,
LIBFPTR_RT_X,
LIBFPTR_RT_LAST_DOCUMENT,
LIBFPTR_RT_OFD_EXCHANGE_STATUS,
LIBFPTR_RT_KKT_DEMO,
LIBFPTR_RT_KKT_INFO,
LIBFPTR_RT_OFD_TEST,
LIBFPTR_RT_FN_DOC_BY_NUMBER,
LIBFPTR_RT_QUANTITY,
LIBFPTR_RT_DEPARTMENTS,
LIBFPTR_RT_OPERATORS,
LIBFPTR_RT_HOURS,
LIBFPTR_RT_FN_REGISTRATIONS,
LIBFPTR_RT_FN_SHIFT_TOTAL_COUNTERS,
LIBFPTR_RT_FN_TOTAL_COUNTERS,
LIBFPTR_RT_FN_NOT_SENT_DOCUMENTS_COUNTERS,
LIBFPTR_RT_COMMODITIES_BY_TAXATION_TYPES,
LIBFPTR_RT_COMMODITIES_BY_DEPARTMENTS,
LIBFPTR_RT_COMMODITIES_BY_SUMS,
LIBFPTR_RT_START_SERVICE,
LIBFPTR_RT_DISCOUNTS,
LIBFPTR_RT_JOURNAL_DOCUMENT_BY_NUMBERS,
LIBFPTR_RT_JOURNAL_DOCUMENT_BY_SHIFTS,
LIBFPTR_RT_CLOSE_SHIFT_REPORTS
}
export enum PaymentType {
LIBFPTR_PT_CASH = 0,
LIBFPTR_PT_ELECTRONICALLY,
LIBFPTR_PT_PREPAID,
LIBFPTR_PT_CREDIT,
LIBFPTR_PT_OTHER,
LIBFPTR_PT_6,
LIBFPTR_PT_7,
LIBFPTR_PT_8,
LIBFPTR_PT_9,
LIBFPTR_PT_10
}
export enum TaxType {
LIBFPTR_TAX_DEPARTMENT = 0,
LIBFPTR_TAX_VAT18 = 1,
LIBFPTR_TAX_VAT10,
LIBFPTR_TAX_VAT118,
LIBFPTR_TAX_VAT110,
LIBFPTR_TAX_VAT0,
LIBFPTR_TAX_NO,
LIBFPTR_TAX_VAT20,
LIBFPTR_TAX_VAT120,
LIBFPTR_TAX_INVALID,
}
export enum ExternalDeviceType {
LIBFPTR_EXTERNAL_DEVICE_DISPLAY = 0,
LIBFPTR_EXTERNAL_DEVICE_PINPAD,
LIBFPTR_EXTERNAL_DEVICE_MODEM,
LIBFPTR_EXTERNAL_DEVICE_BARCODE_SCANNER,
}
export enum KktDataType {
LIBFPTR_DT_STATUS = 0,
LIBFPTR_DT_CASH_SUM,
LIBFPTR_DT_UNIT_VERSION,
LIBFPTR_DT_PICTURE_INFO,
LIBFPTR_DT_LICENSE_ACTIVATED,
LIBFPTR_DT_REGISTRATIONS_SUM,
LIBFPTR_DT_REGISTRATIONS_COUNT,
LIBFPTR_DT_PAYMENT_SUM,
LIBFPTR_DT_CASHIN_SUM,
LIBFPTR_DT_CASHIN_COUNT,
LIBFPTR_DT_CASHOUT_SUM,
LIBFPTR_DT_CASHOUT_COUNT,
LIBFPTR_DT_REVENUE,
LIBFPTR_DT_DATE_TIME,
LIBFPTR_DT_SHIFT_STATE,
LIBFPTR_DT_RECEIPT_STATE,
LIBFPTR_DT_SERIAL_NUMBER,
LIBFPTR_DT_MODEL_INFO,
LIBFPTR_DT_RECEIPT_LINE_LENGTH,
LIBFPTR_DT_CUTTER_RESOURCE,
LIBFPTR_DT_STEP_RESOURCE,
LIBFPTR_DT_TERMAL_RESOURCE,
LIBFPTR_DT_ENVD_MODE,
LIBFPTR_DT_SHIFT_TAX_SUM,
LIBFPTR_DT_RECEIPT_TAX_SUM,
LIBFPTR_DT_NON_NULLABLE_SUM,
LIBFPTR_DT_RECEIPT_COUNT,
LIBFPTR_DT_CANCELLATION_COUNT_ALL,
LIBFPTR_DT_CANCELLATION_SUM,
LIBFPTR_DT_CANCELLATION_SUM_ALL,
LIBFPTR_DT_POWER_SOURCE_STATE,
LIBFPTR_DT_CANCELLATION_COUNT,
LIBFPTR_DT_NON_NULLABLE_SUM_BY_PAYMENTS,
LIBFPTR_DT_PRINTER_TEMPERATURE,
LIBFPTR_DT_FATAL_STATUS,
LIBFPTR_DT_MAC_ADDRESS,
LIBFPTR_DT_DEVICE_UPTIME,
LIBFPTR_DT_RECEIPT_BYTE_COUNT,
LIBFPTR_DT_DISCOUNT_AND_SURCHARGE_SUM,
LIBFPTR_DT_LK_USER_CODE,
LIBFPTR_DT_LAST_SENT_OFD_DOCUMENT_DATE_TIME,
LIBFPTR_DT_SHORT_STATUS,
LIBFPTR_DT_PICTURES_ARRAY_INFO,
LIBFPTR_DT_ETHERNET_INFO,
LIBFPTR_DT_SCRIPTS_INFO,
LIBFPTR_DT_SHIFT_TOTALS,
LIBFPTR_DT_WIFI_INFO,
LIBFPTR_DT_FONT_INFO,
LIBFPTR_DT_SOFTLOCK_STATUS,
LIBFPTR_DT_LAST_SENT_ISM_NOTICE_DATE_TIME,
LIBFPTR_DT_MCU_INFO,
LIBFPTR_DT_MODULE_ADDRESS,
LIBFPTR_DT_CACHE_REQUISITES,
}
export enum FnDataType {
LIBFPTR_FNDT_TAG_VALUE,
LIBFPTR_FNDT_OFD_EXCHANGE_STATUS,
LIBFPTR_FNDT_FN_INFO,
LIBFPTR_FNDT_LAST_REGISTRATION,
LIBFPTR_FNDT_LAST_RECEIPT,
LIBFPTR_FNDT_LAST_DOCUMENT,
LIBFPTR_FNDT_SHIFT,
LIBFPTR_FNDT_FFD_VERSIONS,
LIBFPTR_FNDT_VALIDITY,
LIBFPTR_FNDT_REG_INFO,
LIBFPTR_FNDT_DOCUMENTS_COUNT_IN_SHIFT,
LIBFPTR_FNDT_ERRORS,
LIBFPTR_FNDT_TICKET_BY_DOC_NUMBER,
LIBFPTR_FNDT_DOCUMENT_BY_NUMBER,
LIBFPTR_FNDT_REGISTRATION_TLV,
LIBFPTR_FNDT_ERROR_DETAIL,
LIBFPTR_FNDT_VALIDITY_DAYS,
LIBFPTR_FNDT_FREE_MEMORY,
LIBFPTR_FNDT_TOTALS,
LIBFPTR_FNDT_ISM_ERRORS,
LIBFPTR_FNDT_ISM_EXCHANGE_STATUS,
LIBFPTR_FNDT_MARKING_MODE_STATUS,
LIBFPTR_FNDT_CHECK_MARK_TIME
}
export enum FfdVersion {
LIBFPTR_FFD_UNKNOWN = 0,
LIBFPTR_FFD_1_0 = 100,
LIBFPTR_FFD_1_0_5 = 105,
LIBFPTR_FFD_1_1 = 110,
LIBFPTR_FFD_1_2 = 120
}
export enum TaxationType {
LIBFPTR_TT_DEFAULT = 0x00,
LIBFPTR_TT_OSN = 0x01,
LIBFPTR_TT_USN_INCOME = 0x02,
LIBFPTR_TT_USN_INCOME_OUTCOME = 0x04,
LIBFPTR_TT_ENVD = 0x08,
LIBFPTR_TT_ESN = 0x10,
LIBFPTR_TT_PATENT = 0x20,
}
export enum UnitType {
LIBFPTR_UT_FIRMWARE,
LIBFPTR_UT_CONFIGURATION,
LIBFPTR_UT_TEMPLATES,
LIBFPTR_UT_CONTROL_UNIT,
LIBFPTR_UT_BOOT,
}
export enum FnOperationType {
LIBFPTR_FNOP_REGISTRATION = 0,
LIBFPTR_FNOP_CHANGE_FN,
LIBFPTR_FNOP_CHANGE_PARAMETERS,
LIBFPTR_FNOP_CLOSE_ARCHIVE,
}
export enum AgentType {
LIBFPTR_AT_NONE = 0x00,
LIBFPTR_AT_BANK_PAYING_AGENT = 0x01,
LIBFPTR_AT_BANK_PAYING_SUBAGENT = 0x02,
LIBFPTR_AT_PAYING_AGENT = 0x04,
LIBFPTR_AT_PAYING_SUBAGENT = 0x08,
LIBFPTR_AT_ATTORNEY = 0x10,
LIBFPTR_AT_COMMISSION_AGENT = 0x20,
LIBFPTR_AT_ANOTHER = 0x40,
}
export enum OfdChannel {
LIBFPTR_OFD_CHANNEL_NONE = 0,
LIBFPTR_OFD_CHANNEL_USB,
LIBFPTR_OFD_CHANNEL_PROTO,
LIBFPTR_OFD_CHANNEL_AUTO = 2, // LIBFPTR_OFD_CHANNEL_PROTO
}
export enum PowerSourceType {
LIBFPTR_PST_POWER_SUPPLY = 0,
LIBFPTR_PST_RTC_BATTERY,
LIBFPTR_PST_BATTERY
}
export enum RecordsType {
LIBFPTR_RT_LAST_DOCUMENT_LINES,
LIBFPTR_RT_FN_DOCUMENT_TLVS,
LIBFPTR_RT_EXEC_USER_SCRIPT,
LIBFPTR_RT_FIRMWARE,
LIBFPTR_RT_LICENSES,
LIBFPTR_RT_FN_REGISTRATION_TLVS,
LIBFPTR_RT_PARSE_COMPLEX_ATTR,
LIBFPTR_RT_FN_SUM_COUNTERS,
LIBFPTR_RT_FN_QUANTITY_COUNTERS,
LIBFPTR_RT_FN_UNSENT_DOCS_COUNTERS,
LIBFPTR_RT_SETTINGS,
LIBFPTR_RT_RUN_COMMAND,
}
export enum NomenclatureType {
LIBFPTR_NT_FURS = 0,
LIBFPTR_NT_MEDICINES,
LIBFPTR_NT_TOBACCO,
LIBFPTR_NT_SHOES,
}
export enum FnDocumentType {
LIBFPTR_FN_DOC_REGISTRATION = 1,
LIBFPTR_FN_DOC_OPEN_SHIFT = 2,
LIBFPTR_FN_DOC_RECEIPT = 3,
LIBFPTR_FN_DOC_BSO = 4,
LIBFPTR_FN_DOC_CLOSE_SHIFT = 5,
LIBFPTR_FN_DOC_CLOSE_FN = 6,
LIBFPTR_FN_DOC_OPERATOR_CONFIRMATION = 7,
LIBFPTR_FN_DOC_REREGISTRATION = 11,
LIBFPTR_FN_DOC_EXCHANGE_STATUS = 21,
LIBFPTR_FN_DOC_CORRECTION = 31,
LIBFPTR_FN_DOC_BSO_CORRECTION = 41,
}
export enum LogLevel {
LIBFPTR_LOG_ERROR = 0,
LIBFPTR_LOG_WARN,
LIBFPTR_LOG_INFO,
LIBFPTR_LOG_DEBUG
}
export enum UserMemoryOperation {
LIBFPTR_UMO_GET_SIZE = 0,
LIBFPTR_UMO_READ_DATA,
LIBFPTR_UMO_WRITE_DATA,
LIBFPTR_UMO_READ_STRING,
LIBFPTR_UMO_WRITE_STRING,
LIBFPTR_UMO_COMMIT,
}
export enum GuiParent {
LIBFPTR_GUI_PARENT_NATIVE = 0,
LIBFPTR_GUI_PARENT_QT,
}
export enum DeferType {
LIBFPTR_DEFER_NONE = 0,
LIBFPTR_DEFER_PRE,
LIBFPTR_DEFER_POST,
LIBFPTR_DEFER_OVERLAY
}
export enum TagType {
LIBFPTR_TAG_TYPE_STLV = 0,
LIBFPTR_TAG_TYPE_STRING,
LIBFPTR_TAG_TYPE_ARRAY,
LIBFPTR_TAG_TYPE_FVLN,
LIBFPTR_TAG_TYPE_BITS,
LIBFPTR_TAG_TYPE_BYTE,
LIBFPTR_TAG_TYPE_VLN,
LIBFPTR_TAG_TYPE_UINT_16,
LIBFPTR_TAG_TYPE_UINT_32,
LIBFPTR_TAG_TYPE_UNIX_TIME,
LIBFPTR_TAG_TYPE_BOOL
}
export enum FieldType {
LIBFPTR_FT_BYTE_ARRAY = 0,
LIBFPTR_FT_BIN,
LIBFPTR_FT_BCD,
LIBFPTR_FT_STRING,
LIBFPTR_FT_STRING_NULL_TERM,
}
export enum ScriptType {
LIBFPTR_SCRIPT_EXECUTABLE = 0,
LIBFPTR_SCRIPT_JSON,
LIBFPTR_SCRIPT_SETTINGS,
LIBFPTR_SCRIPT_LIBRARY,
}
export enum UcLayer {
LIBFPTR_UCL_UNUSED = 0,
LIBFPTR_UCL_RECEIPT_TYPE,
LIBFPTR_UCL_TAXATION_TYPE,
LIBFPTR_UCL_TAX_TYPE,
LIBFPTR_UCL_PRODUCT_TYPE,
LIBFPTR_UCL_PAYMENT_METHOD,
LIBFPTR_UCL_USER_3,
LIBFPTR_UCL_USER_4,
LIBFPTR_UCL_USER_5,
LIBFPTR_UCL_USER_6,
}
export enum UcFlag {
LIBFPTR_UCF_CALC_SUMS = 1,
LIBFPTR_UCF_CALC_QUANTITIES = 2,
LIBFPTR_UCF_CALC_SUMS_OTHERS = 4,
LIBFPTR_UCF_CALC_QUANTITIES_OTHERS = 8,
}
export enum FnCounterType {
LIBFPTR_FNCT_SHIFT = 0,
LIBFPTR_FNCT_NON_NULLABLE
}
export enum MarkingCodeType {
LIBFPTR_MCT_OTHER = 0,
LIBFPTR_MCT_EGAIS_20,
LIBFPTR_MCT_EGAIS_30,
}
export enum MarkingCodeType12 {
LIBFPTR_MCT12_AUTO = 256,
LIBFPTR_MCT12_UNKNOWN = 0,
LIBFPTR_MCT12_SHORT,
LIBFPTR_MCT12_88_CHECK,
LIBFPTR_MCT12_44_NO_CHECK,
LIBFPTR_MCT12_44_CHECK,
LIBFPTR_MCT12_4_NO_CHECK,
}
export enum MarkingEstimatedStatus {
LIBFPTR_MES_PIECE_SOLD = 1,
LIBFPTR_MES_DRY_FOR_SALE,
LIBFPTR_MES_PIECE_RETURN,
LIBFPTR_MES_DRY_RETURN,
LIBFPTR_MES_UNCHANGED = 255
}
export enum ItemUnits {
LIBFPTR_IU_PIECE = 0,
LIBFPTR_IU_GRAM = 10,
LIBFPTR_IU_KILOGRAM,
LIBFPTR_IU_TON,
LIBFPTR_IU_CENTIMETER = 20,
LIBFPTR_IU_DECIMETER,
LIBFPTR_IU_METER,
LIBFPTR_IU_SQUARE_CENTIMETER = 30,
LIBFPTR_IU_SQUARE_DECIMETER,
LIBFPTR_IU_SQUARE_METER,
LIBFPTR_IU_MILLILITER = 40,
LIBFPTR_IU_LITER,
LIBFPTR_IU_CUBIC_METER,
LIBFPTR_IU_KILOWATT_HOUR = 50,
LIBFPTR_IU_GKAL,
LIBFPTR_IU_DAY = 70,
LIBFPTR_IU_HOUR,
LIBFPTR_IU_MINUTE,
LIBFPTR_IU_SECOND,
LIBFPTR_IU_KILOBYTE = 80,
LIBFPTR_IU_MEGABYTE,
LIBFPTR_IU_GIGABYTE,
LIBFPTR_IU_TERABYTE,
LIBFPTR_IU_OTHER = 255
}
export enum MarkOperatorItemStatus {
LIBFPTR_OIS_ESTIMATED_STATUS_CORRECT = 1,
LIBFPTR_OIS_ESTIMATED_STATUS_INCORRECT,
LIBFPTR_OIS_SALE_STOPPED
}
export enum MarkOperatorResponseResult {
LIBFPTR_ORR_CORRECT = 0,
LIBFPTR_ORR_INCORRECT,
LIBFPTR_ORR_UNRECOGNIZED
}
export enum FnCheckErrorReason {
LIBFPTR_CER_CHECKED = 0,
LIBFPTR_CER_TYPE_INCORRECT,
LIBFPTR_CER_NO_KEYS,
LIBFPTR_CER_NO_GS1,
LIBFPTR_CER_OTHER
}
export enum SettingType {
LIBFPTR_ST_NUMBER = 0,
LIBFPTR_ST_STRING,
LIBFPTR_ST_BOOL
}
export enum FirmwareType {
LIBFPTR_FWT_FIRMWARE = 0,
LIBFPTR_FWT_SCRIPTS = 2,
}
export enum MarkingModeCheckingStatus {
LIBFPTR_MCS_BLOCK = 0,
LIBFPTR_MCS_NO_MARK_FOR_CHECK,
LIBFPTR_MCS_MARK_RECEIVE_B1,
LIBFPTR_MCS_MARK_STATE_QUERY_B5,
LIBFPTR_MCS_MARK_STATE_ANSWER_B6
}
export enum NoticeFreeMemory {
LIBFPTR_NFM_LESS_50_PERCENT = 0,
LIBFPTR_NFM_FROM_50_TO_80_PERCENT,
LIBFPTR_NFM_FROM_80_TO_90_PERCENT,
LIBFPTR_NFM_MORE_90_PERCENT,
LIBFPTR_NFM_OUT_OF_MEMORY
}
export enum DocumentType {
LIBFPTR_DT_CLOSED = 0,
LIBFPTR_DT_RECEIPT_SELL = 1,
LIBFPTR_DT_RECEIPT_SELL_RETURN = 2,
LIBFPTR_DT_RECEIPT_BUY = 3,
LIBFPTR_DT_RECEIPT_BUY_RETURN = 4,
LIBFPTR_DT_OPEN_SHIFT = 5,
LIBFPTR_DT_CLOSE_SHIFT = 6,
LIBFPTR_DT_REGISTRATION = 7,
LIBFPTR_DT_CLOSE_ARCHIVE = 8,
LIBFPTR_DT_OFD_EXCHANGE_STATUS = 11,
LIBFPTR_DT_RECEIPT_SELL_CORRECTION = 12,
LIBFPTR_DT_RECEIPT_SELL_RETURN_CORRECTION = 13,
LIBFPTR_DT_RECEIPT_BUY_CORRECTION = 14,
LIBFPTR_DT_RECEIPT_BUY_RETURN_CORRECTION = 15,
LIBFPTR_DT_DOCUMENT_SERVICE = 20,
LIBFPTR_DT_DOCUMENT_COPY = 21
}
export enum MarkCheckingStatusInCash {
LIBFPTR_MCS_NOT_EXECUTED = 0,
LIBFPTR_MCS_EXECUTED,
LIBFPTR_MCS_IS_OVER,
LIBFPTR_MCS_RESULT_IS_RECIEVED
}
export enum MarkCheckingTypeInCash {
LIBFPTR_MCT_AUTONOMOUS = 0,
LIBFPTR_MCT_WAIT_FOR_RESULT,
LIBFPTR_MCT_RESULT_NOT_WAIT,
LIBFPTR_MCT_QUERY_NOT_SEND
}
export enum MarkCheckingStageInCash {
LIBFPTR_MCST_WAITING_FOR_TASK = 0,
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
}
export enum SilentReboot {
LIBFPTR_SILENT_REBOOT_NO = 0,
LIBFPTR_SILENT_REBOOT_AFTER_SESSION_CLOSE,
LIBFPTR_SILENT_REBOOT_BEFORE_SESSION_OPEN
}
Проблемы при работе с кэшем и способы их решения
Время на прочтение
12 мин
Количество просмотров 35K
Привет, Хабр!
Меня зовут Виктор Пряжников, я работаю в SRV-команде Badoo. Наша команда занимается разработкой и поддержкой внутреннего API для наших клиентов со стороны сервера, и кэширование данных — это то, с чем мы сталкиваемся каждый день.
Существует мнение, что в программировании есть только две по-настоящему сложные задачи: придумывание названий и инвалидация кэша. Я не буду спорить с тем, что инвалидация — это сложно, но мне кажется, что кэширование — довольно хитрая вещь даже без учёта инвалидации. Есть много вещей, о которых следует подумать, прежде чем начинать использовать кэш. В этой статье я попробую сформулировать некоторые проблемы, с которыми можно столкнуться при работе с кэшем в большой системе.
Я расскажу о проблемах разделения кэшируемых данных между серверами, параллельных обновлениях данных, «холодном старте» и работе системы со сбоями. Также я опишу возможные способы решения этих проблем и приведу ссылки на материалы, где эти темы освещены более подробно. Я не буду рассказывать, что такое кэш в принципе и касаться деталей реализации конкретных систем.
При работе я исхожу из того, что рассматриваемая система состоит из приложения, базы данных и кэша для данных. Вместо базы данных может использоваться любой другой источник (например, какой-то микросервис или внешний API).
Деление данных между кэширующими серверами
Если вы хотите использовать кэширование в достаточно большой системе, нужно позаботиться о том, чтобы можно было поделить кэшируемые данные между доступными серверами. Это необходимо по нескольким причинам:
- данных может быть очень много, и они физически не поместятся в память одного сервера;
- данные могут запрашиваться очень часто, и один сервер не в состоянии обработать все эти запросы;
- вы хотите сделать кэширование более надёжным. Если у вас только один кэширующий сервер, то при его падении вся система останется без кэша, что может резко увеличить нагрузку на базу данных.
Самый очевидный способ разбивки данных — вычисление номера сервера псевдослучайным образом в зависимости от ключа кэширования.
Есть разные алгоритмы для реализации этого. Самый простой — вычисление номера сервера как остатка от целочисленного деления численного представления ключа (например, CRC32) на количество кэширующих серверов:
$cache_server_index = crc32($cache_key) % count($cache_servers_list);
Такой алгоритм называется хешированием по модулю (англ. modulo hashing). CRC32 здесь использован в качестве примера. Вместо него можно взять любую другую хеширующую функцию, из результатов которой можно получить число, большее или равное количеству серверов, с более-менее равномерно распределённым результатом.
Этот способ легко понять и реализовать, он достаточно равномерно распределяет данные между серверами, но у него есть серьёзный недостаток: при изменении количества серверов (из-за технических проблем или при добавлении новых) значительная часть кэша теряется, поскольку для ключей меняется остаток от деления.
Я написал небольшой скрипт, который продемонстрирует эту проблему.
В нём генерируется 1 млн уникальных ключей, распределённых по пяти серверам с помощью хеширования по модулю и CRC32. Я эмулирую выход из строя одного из серверов и перераспределение данных по четырём оставшимся.
В результате этого «сбоя» примерно 80% ключей изменят своё местоположение, то есть окажутся недоступными для последующего чтения:
Total keys count: 1000000
Shards count range: 4, 5
Самое неприятное тут то, что 80% — это далеко не предел. С увеличением количества серверов процент потери кэша будет расти и дальше. Единственное исключение — это кратные изменения (с двух до четырёх, с девяти до трёх и т. п.), при которых потери будут меньше обычного, но в любом случае не менее половины от имеющегося кэша:
Я выложил на GitHub скрипт, с помощью которого я собрал данные, а также ipynb-файл, рисующий данную таблицу, и файлы с данными.
Для решения этой проблемы есть другой алгоритм разбивки — согласованное хеширование (англ. consistent hashing). Основная идея этого механизма очень простая: здесь добавляется дополнительное отображение ключей на слоты, количество которых заметно превышает количество серверов (их могут быть тысячи и даже больше). Сами слоты, в свою очередь, каким-то образом распределяются по серверам.
При изменении количества серверов количество слотов не меняется, но меняется распределение слотов между этими серверами:
- если один из серверов выходит из строя, то все слоты, которые к нему относились, распределяются между оставшимися;
- если добавляется новый сервер, то ему передаётся часть слотов от уже имеющихся серверов.
Обычно идею согласованного хеширования визуализируют с помощью колец, точки на окружностях которых показывают слоты или границы диапазонов слотов (в случае если этих слотов очень много). Вот простой пример перераспределения для ситуации с небольшим количеством слотов (60), которые изначально распределены по четырём серверам:
На картинке начального разбиения все слоты одного сервера расположены подряд, но в реальности это не обязательное условие — они могут быть расположены как угодно.
Основное преимущество этого способа перед предыдущим заключается в том, что здесь каждому серверу соответствует не одно значение, а целый диапазон, и при изменении количества серверов между ними перераспределяется гораздо меньшая часть ключей (k / N
, где k
— общее количество ключей, а N
— количество серверов).
Если вернуться к сценарию, который я использовал для демонстрации недостатка хеширования по модулю, то при той же ситуации с падением одного из пяти серверов (с одинаковым весом) и перераспределением ключей с него между оставшимися мы потерям не 80% кэша, а только 20%. Если считать, что изначально все данные находятся в кэше и все они будут запрошены, то эта разница означает, что при согласованном хешировании мы получим в четыре раза меньше запросов к базе данных.
Код, реализующий этот алгоритм, будет сложнее, чем код предыдущего, поэтому я не буду его приводить в статье. При желании его легко можно найти — на GitHub есть масса реализаций на самых разных языках.
Наряду с согласованным хешированием есть и другие способы решения этой проблемы (например, rendezvous hashing), но они гораздо менее распространены.
Вне зависимости от выбранного алгоритма выбор сервера на основе хеша ключа может работать плохо. Обычно в кэше находится не набор однотипных данных, а большое количество разнородных: кэшированные значения занимают разное место в памяти, запрашиваются с разной частотой, имеют разное время генерации, разную частоту обновлений и разное время жизни. При использовании хеширования вы не можете управлять тем, куда именно попадёт ключ, и в результате может получиться «перекос» как в объёме хранимых данных, так и в количестве запросов к ним, из-за чего поведение разных кэширующих серверов будет сильно различаться.
Чтобы решить эту проблему, необходимо «размазать» ключи так, чтобы разнородные данные были распределены между серверами более-менее однородно. Для этого для выбора сервера нужно использовать не ключ, а какой-то другой параметр, к которому нужно будет применить один из описанных подходов. Нельзя сказать, что это будет за параметр, поскольку это зависит от вашей модели данных.
В нашем случае почти все кэшируемые данные относятся к одному пользователю, поэтому мы используем User ID в качестве параметра шардирования данных в кэше. Благодаря этому у нас получается распределить данные более-менее равномерно. Кроме того, мы получаем бонус — возможность использования multi_get
для загрузки сразу нескольких разных ключей с информацией о юзере (что мы используем в предзагрузке часто используемых данных для текущего пользователя). Если бы положение каждого ключа определялось динамически, то невозможно было бы использовать multi_get
при таком сценарии, так как не было бы гарантии, что все запрашиваемые ключи относятся к одному серверу.
См. также:
- Статья «Distributed hash table» в Wikipedia
- Статья «Consistent hashing» в Wikipedia
- A Guide to Consistent Hashing
- Consistent hashing and random trees: distributed caching protocols for relieving hot spots on the World Wide Web
- Building a Consistent Hashing Ring
Параллельные запросы на обновление данных
Посмотрите на такой простой кусочек кода:
public function getContactsCountCached(int $user_id) : ?int
{
$contacts_count = ContactsCache::getContactsCount($user_id);
if ($contacts_count !== false) {
return $contacts_count;
}
$contacts_count = $this->getContactsCount($user_id);
if (is_null($contacts_count)) {
return null;
}
ContactsCache::setContactsCount($user_id, $contacts_count);
return $contacts_count;
}
Что произойдёт при отсутствии запрашиваемых данных в кэше? Судя по коду, должен запуститься механизм, который достанет эти данные. Если код выполняется только в один поток, то всё будет хорошо: данные будут загружены, помещены в кэш и при следующем запросе взяты уже оттуда. А вот при работе в несколько параллельных потоков всё будет иначе: загрузка данных будет происходить не один раз, а несколько.
Выглядеть это будет примерно так:
На момент начала обработки запроса в процессе №2 данных в кэше ещё нет, но они уже читаются из базы данных в процессе №1. В этом примере проблема не такая существенная, ведь запроса всего два, но их может быть гораздо больше.
Количество параллельных загрузок зависит от количества параллельных пользователей и времени, которое требуется на загрузку необходимых данных.
Предположим, у вас есть какой-то функционал, использующий кэш с нагрузкой 200 запросов в секунду. Если на на загрузку данных нужно 50 мс, то за это время вы получите 50 / (1000 / 200) = 10
запросов.
То есть при отсутствии кэша один процесс начнёт загружать данные, и за время загрузки придут ещё девять запросов, которые не увидят данные в кэше и тоже станут их загружать.
Эта проблема называется cache stampede (русского аналога этого термина я не нашёл, дословно это можно перевести как «паническое бегство кэша», и картинка в начале статьи показывает пример этого действия в дикой природе), hit miss storm («шторм непопаданий в кэш») или dog-pile effect («эффект собачьей стаи»). Есть несколько способов её решения:
Блокировка перед началом выполнения операции пересчёта/ загрузки данных
Суть этого метода состоит в том, что при отсутствии данных в кэше процесс, который хочет их загрузить, должен захватить лок, который не даст сделать то же самое другим параллельно выполняющимся процессам. В случае memcached простейший способ блокировки — добавление ключа в тот же кэширующий сервер, в котором должны храниться сами закэшированные данные.
При этом варианте данные обновляются только в одном процессе, но нужно решить, что делать с процессами, которые попали в ситуацию с отсутствующим кэшем, но не смогли получить блокировку. Они могут отдавать ошибку или какое-то значение по умолчанию, ждать какое-то время, после чего пытаться получить данные ещё раз.
Кроме того, нужно тщательно выбирать время самой блокировки — его гарантированно должно хватить на то, чтобы загрузить данные из источника и положить в кэш. Если не хватит, то повторную загрузку данных может начать другой параллельный процесс. С другой стороны, если этот временной промежуток будет слишком большим и процесс, получивший блокировку, умрёт, не записав данные в кэш и не освободив блокировку, то другие процессы также не смогут получить эти данные до окончания времени блокировки.
Вынос обновлений в фон
Основная идея этого способа — разделение по разным процессам чтения данных из кэша и записи в него. В онлайн-процессах происходит только чтение данных из кэша, но не их загрузка, которая идёт только в отдельном фоновом процессе. Данный вариант делает невозможными параллельные обновления данных.
Этот способ требует дополнительных «расходов» на создание и мониторинг отдельного скрипта, пишущего данные в кэш, и синхронизации времени жизни записанного кэша и времени следующего запуска обновляющего его скрипта.
Этот вариант мы в Badoo используем, например, для счётчика общего количества пользователей, про который ещё пойдёт речь дальше.
Вероятностные методы обновления
Суть этих методов заключается в том, что данные в кэше обновляются не только при отсутствии, но и с какой-то вероятностью при их наличии. Это позволит обновлять их до того, как закэшированные данные «протухнут» и потребуются сразу всем процессам.
Для корректной работы такого механизма нужно, чтобы в начале срока жизни закэшированных данных вероятность пересчёта была небольшой, но постепенно увеличивалась. Добиться этого можно с помощью алгоритма XFetch, который использует экспоненциальное распределение. Его реализация выглядит примерно так:
function xFetch($key, $ttl, $beta = 1)
{
[$value, $delta, $expiry] = cacheRead($key);
if (!$value || (time() − $delta * $beta * log(rand())) > $expiry) {
$start = time();
$value = recomputeValue($key);
$delta = time() – $start;
$expiry = time() + $ttl;
cacheWrite(key, [$value, $delta, $expiry], $ttl);
}
return $value;
}
В данном примере $ttl
— это время жизни значения в кэше, $delta
— время, которое потребовалось для генерации кэшируемого значения, $expiry
— время, до которого значение в кэше будет валидным, $beta
— параметр настройки алгоритма, изменяя который, можно влиять на вероятность пересчёта (чем он больше, тем более вероятен пересчёт при каждом запросе). Подробное описание этого алгоритма можно прочитать в white paper «Optimal Probabilistic Cache Stampede Prevention», ссылку на который вы найдёте в конце этого раздела.
Нужно понимать, что при использовании подобных вероятностных механизмов вы не исключаете параллельные обновления, а только снижаете их вероятность. Чтобы исключить их, можно «скрестить» несколько способов сразу (например, добавив блокировку перед обновлением).
См. также:
- Статья «Cache stampede» в Wikipedia
- Optimal Probabilistic Cache Stampede Prevention
- Репозиторий на GitHub с описанием и тестами разных способов
- Статья «Кэши для “чайников”»
«Холодный» старт и «прогревание» кэша
Нужно отметить, что проблема массового обновления данных из-за их отсутствия в кэше может быть вызвана не только большим количеством обновлений одного и того же ключа, но и большим количеством одновременных обновлений разных ключей. Например, такое может произойти, когда вы выкатываете новый «популярный» функционал с применением кэширования и фиксированным сроком жизни кэша.
В этом случае сразу после выкатки данные начнут загружаться (первое проявление проблемы), после чего попадут в кэш — и какое-то время всё будет хорошо, а после истечения срока жизни кэша все данные снова начнут загружаться и создавать повышенную нагрузку на базу данных.
От такой проблемы нельзя полностью избавиться, но можно «размазать» загрузки данных по времени, исключив тем самым резкое количество параллельных запросов к базе. Добиться этого можно несколькими способами:
- плавным включением нового функционала. Для этого необходим механизм, который позволит это сделать. Простейший вариант реализации — выкатывать новый функционал включённым на небольшую часть пользователей и постепенно её увеличивать. При таком сценарии не должно быть сразу большого вала обновлений, так как сначала функционал будет доступен только части пользователей, а по мере её увеличения кэш уже будет «прогрет».
- разным временем жизни разных элементов набора данных. Данный механизм можно использовать, только если система в состоянии выдержать пик, который наступит при выкатке всего функционала. Его особенность заключается в том, что при записи данных в кэш у каждого элемента будет своё время жизни, и благодаря этому вал обновлений сгладится гораздо быстрее за счёт распределения последующих обновления во времени. Простейший способ реализовать такой механизм — умножить время жизни кэша на какой-то случайный множитель:
public function getNewSnapshotTTL()
{
$random_factor = rand(950, 1050) / 1000;
return intval($this->getSnapshotTTL() * $random_factor);
}
Если по какой-то причине не хочется использовать случайное число, можно заменить его псевдослучайным значением, полученным с помощью хеш-функции на базе каких-нибудь данных (например, User ID).
Пример
Я написал небольшой скрипт, который эмулирует ситуацию «непрогретого» кэша.
В нём я воспроизвожу ситуацию, при которой пользователь при запросе загружает данные о себе (если их нет в кэше). Конечно, пример синтетический, но даже на нём можно увидеть разницу в поведении системы.
Вот как выглядит график количества hit miss-ов в ситуации с фиксированным (fixed_cache_misses_count) и различным (random_cache_misses_count) сроками жизни кэша:
Видно, что в начале работы в обоих случаях пики нагрузки очень заметны, но при использовании псевдослучайного времени жизни они сглаживаются гораздо быстрее.
«Горячие» ключи
Данные в кэше разнородные, некоторые из них могут запрашиваться очень часто. В этом случае проблемы могут создавать даже не параллельные обновления, а само количество чтений. Примером подобного ключа у нас является счётчик общего количества пользователей:
Этот счётчик — один из самых популярных ключей, и при использовании обычного подхода все запросы к нему будут идти на один сервер (поскольку это всего один ключ, а не множество однотипных), поведение которого может измениться и замедлить работу с другими ключами, хранящимися там же.
Чтобы решить эту проблему, нужно писать данные не в один кэширующий сервер, а сразу в несколько. В этом случае мы кратно снизим количество чтений этого ключа, но усложним его обновления и код выбора сервера — ведь нам нужно будет использовать отдельный механизм.
Мы в Badoo решаем эту проблему тем, что пишем данные во все кэширующие серверы сразу. Благодаря этому при чтении мы можем использовать общий механизм выбора сервера — в коде можно использовать обычный механизм шардирования по User ID, и при чтении не нужно ничего знать про специфику этого «горячего» ключа. В нашем случае это работает, поскольку у нас сравнительно немного серверов (примерно десять на площадку).
Если бы кэширующих серверов было намного больше, то этот способ мог бы быть не самым удобным — просто нет смысла дублировать сотни раз одни и те же данные. В таком случае можно было бы дублировать ключ не на все серверы, а только на их часть, но такой вариант требует чуть больше усилий.
Если вы используете определение сервера по ключу кэша, то можно добавить к нему ограниченное количество псевдослучайных значений (сделав из total_users_count
что-то вроде total_users_count_1
, total_users_count_2
и т. д.). Подобный подход используется, например, в Etsy.
Если вы используете явные указания параметра шардирования, то просто передавайте туда разные псевдослучайные значения.
Главная проблема с обоими способами — убедиться, что разные значения действительно попадают на разные кэширующие серверы.
См. также:
- How Etsy caches: hashing, Ketama, and cache smearing
Сбои в работе
Система не может быть надёжной на 100%, поэтому нужно предусмотреть, как она будет вести себя при сбоях. Сбои могут быть как в работе самого кэша, так и в работе базы данных.
Про сбои в работе кэша я уже рассказывал в предыдущих разделах. Единственное, что можно добавить, — хорошо было бы предусмотреть возможность отключения части функционала на работающей системе. Это полезно, когда система не в состоянии справиться с пиком нагрузки.
При сбоях в работе базы данных и отсутствии кэша мы можем попасть в ситуацию cache stampede, про которую я тоже уже рассказывал раньше. Выйти из неё можно уже описанными способами, а можно записать в кэш заведомо некорректное значение с небольшим сроком жизни. В этом случае система сможет определить, что источник недоступен, и на какое-то время перестанет пытаться запрашивать данные.
Заключение
В статье я затронул основные проблемы при работе с кэшем, но уверен, что, кроме них, есть множество других, и продолжать этот разговор можно очень долго. Надеюсь, что после прочтения моей статьи ваш кэш станет более эффективным.
Ошибку ERR_CACHE_MISS в основном испытывают те пользователи, которые находятся в режиме разработчика Google Chrome и пытаются создать с помощью него свое приложение либо же протестировать свой веб-ресурс.
В основном данная ошибка проявляется когда браузеру не удается занести к кэш определенный сайт или же приложение. Также эту ошибку могут вызывать и другие факторы, которые довольно сложно определить.
Например, некоторые пользователи утверждают, что ее может вызывать AdBlock, некоторые баги с самим браузером, поврежденные в следствие чего-то расширения или же просто некорректные настройки. В общем, причин может быть огромное множество.
Методы решения ошибки ERR_CACHE_MISS в Google Chrome
Метод №1 Очистка кэша Google Chrome
Самое простое действие в этой ситуации — это очистка кэша. Именно это действие помогает большинству пользователей справиться с ошибкой. Итак, сделайте следующее:
- Выберите пункт «Настройки».
- Нажмите на синюю ссылку «Показать дополнительные настройки», которая находится в самом низу окна настроек.
- Перейдите к личным данным и кликните на «Очистить историю…».
- Поставьте галочку напротив пункта «Файлы cookie, а также другие данные сайтов» и «Изображения и другие файлы, сохраненные к кеше», а затем нажмите на кнопку «Очистить историю».
Такими действия будет удален кэш вашего браузера. Попробуйте снова зайти на какой-то сайт для проверки наличия ошибки ERR_CACHE_MISS в Google Chrome.
Метод №2 Использование Командной строки
- Нажмите правой кнопкой мыши на Пуск и кликните на «Командная строка(администратор)».
- Введите следующие команды, нажимая Enter через каждую из них:
- ipconfig /release
- ipconfig /all
- ipconfig /flushdns
- ipconfig /renew
- netsh int ip set dns
- netsh winsock reset
- ipconfig /release
- После завершения ввода указанных команд, перезагрузите свой компьютер.
Метод №3 Обновление браузера Google Chrome
Некоторые пользователи игнорируют данный совет, но он действительно может помочь с решением ошибки ERR_CACHE_MISS в Google Chrome. Возможно, что вы пользуетесь уже довольно устарелой версией браузера, на которых как раз таки и могут возникать подобные проблемы. Для обновления Google Chrome сделайте следующее:
- Нажмите на иконку « » в правом верхнем углу окна Google Chrome.
- Кликните на «Обновить Google Chrome» и дождитесь окончания процесса обновления.
- Затем кликните на «Перезапустить».
После обновления браузера, снова попробуйте на сайт для проверки наличия ошибки.
Метод №4 Отключение всех расширений
Как уже упоминалось в начале статьи, некоторые расширения могут вызывать данную проблему. Для проверки такой вероятности, вам понадобится отключить в Google Chrome все расширения, которые работают в нем. Для этого сделайте следующее:
- Нажмите на иконку « » в правом верхнем углу окна Google Chrome.
- Кликните по «Настройки».
- Выберите вкладку «Разрешения»
- Уберите галочки со всех расширений, которые вы найдете в открытом окне. Обязательно отключите ВСЕ расширения.
Ну что, ошибка ERR_CACHE_MISS в Google Chrome все еще преследует вас? Что же, у нас осталось еще парочка советов.
Метод №5 Перезапуск роутера или модема
Порой при постоянно работе модема или роутера, он может начать работать некорректно или же со сбоями. Возможно, именно это и произошло в вашем случае. Попробуйте перезапустить ваше сетевое устройство, а затем проверьте наличие ошибки.
У меня есть веб-представление в моем макете. По умолчанию в нем открывается форма поиска. При поиске под формой поиска появляется раздел листинга. Если нажата какая-либо ссылка в списке, откроется страница сведений. Теперь я хочу контролировать обратную навигацию для веб-просмотра. Я поместил этот код в Activity.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
Log.d(«TYPE», TYPE);
WebView myWebView = null;
if (TYPE.equalsIgnoreCase(«REPORT_ACTIVITY»))
myWebView = reportView;
if (TYPE.equalsIgnoreCase(«FEEDBACK_ACTIVITY»))
myWebView = feedbackView;
if (myWebView != null)
// Check if the key event was the Back button and if there history
if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) {
myWebView.goBack();
return true;
}
// If it wasn»t the Back key or there no web page history, bubble up
// to the default
// system behavior (probably exit the activity)
return super.onKeyDown(keyCode, event);
}
private WebViewClient webViewClient = new WebViewClient() {
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Log.d(«onPageStarted», «onPageStarted»);
loadProgressBarBox.setVisibility(View.VISIBLE);
//view.setVisibility(View.GONE);
}
public void onPageFinished(WebView view, String url) {
Log.d(«onPageFinished», «onPageFinished»);
loadProgressBarBox.setVisibility(View.GONE);
}
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
Log.d(«Error», «Error code: » + errorCode + «/» + description);
}
}
Я также установил WebViewClient с WebView. Когда я возвращаюсь с помощью кнопки «Назад», он отлично работает для любой версии 4.4. Но когда я пытаюсь в Android 4.4, он возвращается с подробной страницы на страницу со списком. Но как только я пытаюсь вернуться назад, его код ошибки бросания -1 и ERR_CACHE_MISS в описании. Страница не отображается.
09-04 06:59:05.666: D/Error(1102): Error code: -1/net::ERR_CACHE_MISS
Как решить эту проблему в Android 4.4?
4
ответов
В большинстве случаев эта ошибка возникает из-за пределов приложения (иногда это просто недостающее разрешение INTERNET , но это не похоже на этот случай).
Я печатал объяснение, но нашел гораздо более простой пример, который удваивается как объяснение в этом ответе на другой вопрос . Здесь соответствующие биты немного переделаны:
- Джо заполняет форму заказа с информацией о своей кредитной карте.
- Сервер обрабатывает эту информацию и возвращает страницу подтверждения/получения, отмеченную no-cache в заголовке, что означает, что она всегда будет запрашиваться с сервера.
- Джо переходит на другую страницу.
- Джо нажимает на кнопку, потому что хочет дважды проверить что-то, переведя его на страницу подтверждения.
Проблема возникает из этого последнего шага. Страница подтверждения была отмечена no-cache , поэтому ее нужно снова запросить с сервера. Но чтобы показать ту же страницу правильно, те же самые данные, которые были переданы в первый раз, должны снова отправляться.
Это приводит к тому, что Джо получает счет дважды, так как новый запрос делается с той же информацией, что и в прошлый раз. Джо не будет счастливым туристом, когда он найдет два заряда на его счет и дополнительные пару палаток на его пороге.
Кажется, эта ситуация была достаточно распространена, что теперь она является стандартной ошибкой для большинства браузеров и, по-видимому, более новых версий Android. Ошибка на самом деле происходит из Chromium, поэтому вы увидите ту же ошибку в Google Chrome и почему ее видите только в 4.4 (в которой была введена новая версия WebView на основе Chromium).
Фактически, вы, вероятно, видели это раньше, это сообщение, появившееся в большинстве браузеров, предупреждает вас о чем-то вроде строки «Чтобы обновить эту страницу, браузеру придется пересылать данные… yada yada yada».
Это Android 4.4, предупреждающий вас о том, что происходит. Как исправить это действительно зависит от того, к чему вы подключаетесь, но если вы ищете эту ситуацию, вы обнаружите, что она довольно распространена и имеет исправления. Точный триггер ошибки на самом деле, когда запрос не может обслуживаться из кеша (в этом случае это вызывает no-cache).
В зависимости от характера запроса, возможно, no-cache на самом деле не требуется.
Но с точки зрения вашего приложения основная проблема заключается в том, что onReceiveError является своего рода «последним средством» для WebView. Ошибки, которые вы получили, распространились из базовой системы. И как только вы окажетесь там, вы не сможете продолжить загрузку страницы в ее нынешнем виде. Таким образом, у вас нет возможности разрешить повторную отправку, и вы не можете предоставить пользователю эту опцию, в отличие от Google Chrome.
Google Chrome — один из популярных веб-браузеров, используемых пользователями Windows. И для того, чтобы оставаться на вершине, он представляет тонну функций, но это делает программное обеспечение более сложным и, следовательно, более подверженным ошибкам. Существуют различные типы ошибок, которые могут возникнуть при таком уровне сложности программы. Следует отметить, что когда пользователь получает эту ошибку, в самом браузере нет прямой проблемы. Существуют проблемы с кэшированием данных веб-сайта локально на компьютере. Эта ошибка может возникать и при некорректном кодировании веб-сайта или при наличии каких-либо расширений браузера, противоречащих правильному функционированию веб-сайта. В этом руководстве разберем, как исправить ошибку (Этот сайт не может быть загружен из кеша) This site can»t be loaded from the cache
с кодом в Google Chrome на компьютерах с Windows 10/8/7.
Исправить ошибку ERR_CACHE_MISS в Chrome
Проверим следующие исправления: очистка данных браузера, используем инструмент разработчика, очистка кеша DNS, удалим конфликтующие расширение браузера.
1. Очистить данные браузера
Есть большие шансы, что некоторые данные браузера противоречат загрузке веб-сайта. Для этого начните с открытия браузера Google Chrome. Далее нажмите комбинацию клавиш CTRL + H
на клавиатуре. Это откроет новую панель, чтобы удалить историю просмотров и другие данные. Нажмите слева на «Очистить историю
«, далее у вас появится окно в котором поставьте везде галочки и нажмите удалить данные
. Хочу отметить что в маленьком окне 2 вкладки «Основные настройки
» и «Дополнительные
«. Для полной уверенности вам нужно удалить историю с этих двух вкладок.
2. Использовать инструменты разработчика
Откройте Google Chrome и нажмите комбинацию клавиш CTRL + Shift + I
на клавиатуре. А затем нажмите F1.
Откроется вкладка настроек внутри инструментов разработчика Chrome. Далее найдите графу Network
(сеть) и в строке поставьте галочку Disable cahe (while DevTools is open)
. После этого просто загрузите страницу и проверьте устранена ли ошибка ERR CACHE MISS.
3. Сбросить DNS, Winsock и TCP/IP протокол
Вы можете , и проверить, устраняет ли это ваши проблемы.
4. Удалить конфликтующие расширения браузера
Есть большие шансы, что расширения и панели инструментов, установленные в вашем браузере, могут противоречить загрузке вашего сайта. Поэтому, чтобы исправить это, вам необходимо удалить или отключить эти расширения и панели инструментов. Для этого откройте браузер и вставьте в адресную строку chrome://extensions/
, чтобы открыть список расширений. Далее отключайте или удаляйте по одному, проверяя какое именно может быть виновником ошибки.
При работе в браузере Google Chrome пользователи могут столкнуться с такой проблемой, когда вместо загрузки нужной страницы на экране появляется сообщение об ошибке ERR_CACHE_MISS. К этому может привести одна из причин, которые рассмотрены ниже, поэтому необходимо выполнять каждый из предложенных шагов, чтобы выяснить, на каком этапе вылетает ошибка. Итак, выясняем, как же обычному пользователю можно исправить ошибку ERR_CACHE_MISS.
Ошибка ERR_CACHE_MISS
Среди причин появления ошибки ERR_CACHE_MISS пользователи отмечают следующие:
- неспособность браузера занести в кэш открываемое приложение либо страницу;
- активная работа Adblock и других расширений, блокирующих рекламу в Google Chrome;
- некоторые баги в самом браузере;
- сбой настроек.
В любом случае, для того чтобы искать решение, необходимо сначала найти причину ошибки ERR_CACHE_MISS. С первого взгляда это сделать не удастся, поэтому нужно запастись терпением и тщательно проработать предложенные ниже шаги. На каком-либо из этапов решение обязательно найдется.
Как вернуться к нормальной работе Google Chrome после вылета ошибки ERR_CACHE_MISS
Итак, начинаем подробно разбирать причины появления ошибки ERR_CACHE_MISS и осуществлять определенные действия, чтобы от нее избавиться. Простейший шаг в данной ситуации – очистка кэша.
Очистим кэш Google Chrome
Чтобы очистить кэш, выполните следующее:
- посмотрите в правый верхний угол браузера и найдите три точки, стоящие вертикально;
- нажмите на них и выберите пункт “Настройки” – они откроются в новой вкладке;
- нам нужны дополнительные настройки – они раскрываются при нажатии на слово “Дополнительные” внизу страницы;
- в разделе “Конфиденциальность и безопасность” будет пункт “Очистить историю”, на который и нужно нажать;
- в открывшемся меню выберите время, за которое необходимо выполнить очистку, и установите флажки, если нужные вам окошки не активированы;
- в данном окне снова нажмите на “Очистить историю”.
На момент начала обработки запроса в процессе №2 данных в кэше ещё нет, но они уже читаются из базы данных в процессе №1. В этом примере проблема не такая существенная, ведь запроса всего два, но их может быть гораздо больше.
Количество параллельных загрузок зависит от количества параллельных пользователей и времени, которое требуется на загрузку необходимых данных.
Предположим, у вас есть какой-то функционал, использующий кэш с нагрузкой 200 запросов в секунду. Если на на загрузку данных нужно 50 мс, то за это время вы получите 50 / (1000 / 200) = 10
запросов.
То есть при отсутствии кэша один процесс начнёт загружать данные, и за время загрузки придут ещё девять запросов, которые не увидят данные в кэше и тоже станут их загружать.
Эта проблема называется cache stampede (русского аналога этого термина я не нашёл, дословно это можно перевести как «паническое бегство кэша», и картинка в начале статьи показывает пример этого действия в дикой природе), hit miss storm («шторм непопаданий в кэш») или dog-pile effect («эффект собачьей стаи»). Есть несколько способов её решения:
Блокировка перед началом выполнения операции пересчёта/ загрузки данных
Суть этого метода состоит в том, что при отсутствии данных в кэше процесс, который хочет их загрузить, должен захватить лок, который не даст сделать то же самое другим параллельно выполняющимся процессам. В случае memcached простейший способ блокировки — добавление ключа в тот же кэширующий сервер, в котором должны храниться сами закэшированные данные.
При этом варианте данные обновляются только в одном процессе, но нужно решить, что делать с процессами, которые попали в ситуацию с отсутствующим кэшем, но не смогли получить блокировку. Они могут отдавать ошибку или какое-то значение по умолчанию, ждать какое-то время, после чего пытаться получить данные ещё раз.
Кроме того, нужно тщательно выбирать время самой блокировки — его гарантированно должно хватить на то, чтобы загрузить данные из источника и положить в кэш. Если не хватит, то повторную загрузку данных может начать другой параллельный процесс. С другой стороны, если этот временной промежуток будет слишком большим и процесс, получивший блокировку, умрёт, не записав данные в кэш и не освободив блокировку, то другие процессы также не смогут получить эти данные до окончания времени блокировки.
Вынос обновлений в фон
Основная идея этого способа — разделение по разным процессам чтения данных из кэша и записи в него. В онлайн-процессах происходит только чтение данных из кэша, но не их загрузка, которая идёт только в отдельном фоновом процессе. Данный вариант делает невозможными параллельные обновления данных.
Этот способ требует дополнительных «расходов» на создание и мониторинг отдельного скрипта, пишущего данные в кэш, и синхронизации времени жизни записанного кэша и времени следующего запуска обновляющего его скрипта.
Этот вариант мы в Badoo используем, например, для счётчика общего количества пользователей, про который ещё пойдёт речь дальше.
Вероятностные методы обновления
Суть этих методов заключается в том, что данные в кэше обновляются не только при отсутствии, но и с какой-то вероятностью при их наличии. Это позволит обновлять их до того, как закэшированные данные «протухнут» и потребуются сразу всем процессам.
Для корректной работы такого механизма нужно, чтобы в начале срока жизни закэшированных данных вероятность пересчёта была небольшой, но постепенно увеличивалась. Добиться этого можно с помощью алгоритма XFetch, который использует экспоненциальное распределение. Его реализация выглядит примерно так:
function xFetch($key, $ttl, $beta = 1)
{
[$value, $delta, $expiry] = cacheRead($key);
if (!$value || (time() − $delta * $beta * log(rand())) > $expiry) {
$start = time();
$value = recomputeValue($key);
$delta = time() – $start;
$expiry = time() + $ttl;
cacheWrite(key, [$value, $delta, $expiry], $ttl);
}
return $value;
}
В данном примере $ttl
— это время жизни значения в кэше, $delta
— время, которое потребовалось для генерации кэшируемого значения, $expiry
— время, до которого значение в кэше будет валидным, $beta
— параметр настройки алгоритма, изменяя который, можно влиять на вероятность пересчёта (чем он больше, тем более вероятен пересчёт при каждом запросе). Подробное описание этого алгоритма можно прочитать в white paper «Optimal Probabilistic Cache Stampede Prevention», ссылку на который вы найдёте в конце этого раздела.
Нужно понимать, что при использовании подобных вероятностных механизмов вы не исключаете параллельные обновления, а только снижаете их вероятность. Чтобы исключить их, можно «скрестить» несколько способов сразу (например, добавив блокировку перед обновлением).
См. также:
- Статья «Cache stampede» в Wikipedia
- Optimal Probabilistic Cache Stampede Prevention
- Репозиторий на GitHub с описанием и тестами разных способов
- Статья «Кэши для “чайников”»
«Холодный» старт и «прогревание» кэша
Нужно отметить, что проблема массового обновления данных из-за их отсутствия в кэше может быть вызвана не только большим количеством обновлений одного и того же ключа, но и большим количеством одновременных обновлений разных ключей. Например, такое может произойти, когда вы выкатываете новый «популярный» функционал с применением кэширования и фиксированным сроком жизни кэша.
В этом случае сразу после выкатки данные начнут загружаться (первое проявление проблемы), после чего попадут в кэш — и какое-то время всё будет хорошо, а после истечения срока жизни кэша все данные снова начнут загружаться и создавать повышенную нагрузку на базу данных.
От такой проблемы нельзя полностью избавиться, но можно «размазать» загрузки данных по времени, исключив тем самым резкое количество параллельных запросов к базе. Добиться этого можно несколькими способами:
- плавным включением нового функционала. Для этого необходим механизм, который позволит это сделать. Простейший вариант реализации — выкатывать новый функционал включённым на небольшую часть пользователей и постепенно её увеличивать. При таком сценарии не должно быть сразу большого вала обновлений, так как сначала функционал будет доступен только части пользователей, а по мере её увеличения кэш уже будет «прогрет».
- разным временем жизни разных элементов набора данных. Данный механизм можно использовать, только если система в состоянии выдержать пик, который наступит при выкатке всего функционала. Его особенность заключается в том, что при записи данных в кэш у каждого элемента будет своё время жизни, и благодаря этому вал обновлений сгладится гораздо быстрее за счёт распределения последующих обновления во времени. Простейший способ реализовать такой механизм — умножить время жизни кэша на какой-то случайный множитель:
public function getNewSnapshotTTL()
{
$random_factor = rand(950, 1050) / 1000;
return intval($this->getSnapshotTTL() * $random_factor);
}
Если по какой-то причине не хочется использовать случайное число, можно заменить его псевдослучайным значением, полученным с помощью хеш-функции на базе каких-нибудь данных (например, User ID).
Пример
Я написал небольшой скрипт, который эмулирует ситуацию «непрогретого» кэша.
В нём я воспроизвожу ситуацию, при которой пользователь при запросе загружает данные о себе (если их нет в кэше). Конечно, пример синтетический, но даже на нём можно увидеть разницу в поведении системы.
Вот как выглядит график количества hit miss-ов в ситуации с фиксированным (fixed_cache_misses_count) и различным (random_cache_misses_count) сроками жизни кэша:
Видно, что в начале работы в обоих случаях пики нагрузки очень заметны, но при использовании псевдослучайного времени жизни они сглаживаются гораздо быстрее.
«Горячие» ключи
Данные в кэше разнородные, некоторые из них могут запрашиваться очень часто. В этом случае проблемы могут создавать даже не параллельные обновления, а само количество чтений. Примером подобного ключа у нас является счётчик общего количества пользователей:
Этот счётчик — один из самых популярных ключей, и при использовании обычного подхода все запросы к нему будут идти на один сервер (поскольку это всего один ключ, а не множество однотипных), поведение которого может измениться и замедлить работу с другими ключами, хранящимися там же.
Чтобы решить эту проблему, нужно писать данные не в один кэширующий сервер, а сразу в несколько. В этом случае мы кратно снизим количество чтений этого ключа, но усложним его обновления и код выбора сервера — ведь нам нужно будет использовать отдельный механизм.
Мы в Badoo решаем эту проблему тем, что пишем данные во все кэширующие серверы сразу. Благодаря этому при чтении мы можем использовать общий механизм выбора сервера — в коде можно использовать обычный механизм шардирования по User ID, и при чтении не нужно ничего знать про специфику этого «горячего» ключа. В нашем случае это работает, поскольку у нас сравнительно немного серверов (примерно десять на площадку).
Если бы кэширующих серверов было намного больше, то этот способ мог бы быть не самым удобным — просто нет смысла дублировать сотни раз одни и те же данные. В таком случае можно было бы дублировать ключ не на все серверы, а только на их часть, но такой вариант требует чуть больше усилий.
Если вы используете определение сервера по ключу кэша, то можно добавить к нему ограниченное количество псевдослучайных значений (сделав из total_users_count
что-то вроде total_users_count_1
, total_users_count_2
и т. д.). Подобный подход используется, например, в Etsy.
Если вы используете явные указания параметра шардирования, то просто передавайте туда разные псевдослучайные значения.
Главная проблема с обоими способами — убедиться, что разные значения действительно попадают на разные кэширующие серверы.
См. также:
- How Etsy caches: hashing, Ketama, and cache smearing
Сбои в работе
Система не может быть надёжной на 100%, поэтому нужно предусмотреть, как она будет вести себя при сбоях. Сбои могут быть как в работе самого кэша, так и в работе базы данных.
Про сбои в работе кэша я уже рассказывал в предыдущих разделах. Единственное, что можно добавить, — хорошо было бы предусмотреть возможность отключения части функционала на работающей системе. Это полезно, когда система не в состоянии справиться с пиком нагрузки.
При сбоях в работе базы данных и отсутствии кэша мы можем попасть в ситуацию cache stampede, про которую я тоже уже рассказывал раньше. Выйти из неё можно уже описанными способами, а можно записать в кэш заведомо некорректное значение с небольшим сроком жизни. В этом случае система сможет определить, что источник недоступен, и на какое-то время перестанет пытаться запрашивать данные.
Заключение
В статье я затронул основные проблемы при работе с кэшем, но уверен, что, кроме них, есть множество других, и продолжать этот разговор можно очень долго. Надеюсь, что после прочтения моей статьи ваш кэш станет более эффективным.
Ошибку ERR_CACHE_MISS в основном испытывают те пользователи, которые находятся в режиме разработчика Google Chrome и пытаются создать с помощью него свое приложение либо же протестировать свой веб-ресурс.
В основном данная ошибка проявляется когда браузеру не удается занести к кэш определенный сайт или же приложение. Также эту ошибку могут вызывать и другие факторы, которые довольно сложно определить.
Например, некоторые пользователи утверждают, что ее может вызывать AdBlock, некоторые баги с самим браузером, поврежденные в следствие чего-то расширения или же просто некорректные настройки. В общем, причин может быть огромное множество.
Методы решения ошибки ERR_CACHE_MISS в Google Chrome
Метод №1 Очистка кэша Google Chrome
Самое простое действие в этой ситуации — это очистка кэша. Именно это действие помогает большинству пользователей справиться с ошибкой. Итак, сделайте следующее:
- Выберите пункт «Настройки».
- Нажмите на синюю ссылку «Показать дополнительные настройки», которая находится в самом низу окна настроек.
- Перейдите к личным данным и кликните на «Очистить историю…».
- Поставьте галочку напротив пункта «Файлы cookie, а также другие данные сайтов» и «Изображения и другие файлы, сохраненные к кеше», а затем нажмите на кнопку «Очистить историю».
Такими действия будет удален кэш вашего браузера. Попробуйте снова зайти на какой-то сайт для проверки наличия ошибки ERR_CACHE_MISS в Google Chrome.
Метод №2 Использование Командной строки
- Нажмите правой кнопкой мыши на Пуск и кликните на «Командная строка(администратор)».
- Введите следующие команды, нажимая Enter через каждую из них:
- ipconfig /release
- ipconfig /all
- ipconfig /flushdns
- ipconfig /renew
- netsh int ip set dns
- netsh winsock reset
- ipconfig /release
- После завершения ввода указанных команд, перезагрузите свой компьютер.
Метод №3 Обновление браузера Google Chrome
Некоторые пользователи игнорируют данный совет, но он действительно может помочь с решением ошибки ERR_CACHE_MISS в Google Chrome. Возможно, что вы пользуетесь уже довольно устарелой версией браузера, на которых как раз таки и могут возникать подобные проблемы. Для обновления Google Chrome сделайте следующее:
- Нажмите на иконку « » в правом верхнем углу окна Google Chrome.
- Кликните на «Обновить Google Chrome» и дождитесь окончания процесса обновления.
- Затем кликните на «Перезапустить».
После обновления браузера, снова попробуйте на сайт для проверки наличия ошибки.
Метод №4 Отключение всех расширений
Как уже упоминалось в начале статьи, некоторые расширения могут вызывать данную проблему. Для проверки такой вероятности, вам понадобится отключить в Google Chrome все расширения, которые работают в нем. Для этого сделайте следующее:
- Нажмите на иконку « » в правом верхнем углу окна Google Chrome.
- Кликните по «Настройки».
- Выберите вкладку «Разрешения»
- Уберите галочки со всех расширений, которые вы найдете в открытом окне. Обязательно отключите ВСЕ расширения.
Ну что, ошибка ERR_CACHE_MISS в Google Chrome все еще преследует вас? Что же, у нас осталось еще парочка советов.
Метод №5 Перезапуск роутера или модема
Порой при постоянно работе модема или роутера, он может начать работать некорректно или же со сбоями. Возможно, именно это и произошло в вашем случае. Попробуйте перезапустить ваше сетевое устройство, а затем проверьте наличие ошибки.
У меня есть веб-представление в моем макете. По умолчанию в нем открывается форма поиска. При поиске под формой поиска появляется раздел листинга. Если нажата какая-либо ссылка в списке, откроется страница сведений. Теперь я хочу контролировать обратную навигацию для веб-просмотра. Я поместил этот код в Activity.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
Log.d(«TYPE», TYPE);
WebView myWebView = null;
if (TYPE.equalsIgnoreCase(«REPORT_ACTIVITY»))
myWebView = reportView;
if (TYPE.equalsIgnoreCase(«FEEDBACK_ACTIVITY»))
myWebView = feedbackView;
if (myWebView != null)
// Check if the key event was the Back button and if there history
if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) {
myWebView.goBack();
return true;
}
// If it wasn»t the Back key or there no web page history, bubble up
// to the default
// system behavior (probably exit the activity)
return super.onKeyDown(keyCode, event);
}
private WebViewClient webViewClient = new WebViewClient() {
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Log.d(«onPageStarted», «onPageStarted»);
loadProgressBarBox.setVisibility(View.VISIBLE);
//view.setVisibility(View.GONE);
}
public void onPageFinished(WebView view, String url) {
Log.d(«onPageFinished», «onPageFinished»);
loadProgressBarBox.setVisibility(View.GONE);
}
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
Log.d(«Error», «Error code: » + errorCode + «/» + description);
}
}
Я также установил WebViewClient с WebView. Когда я возвращаюсь с помощью кнопки «Назад», он отлично работает для любой версии 4.4. Но когда я пытаюсь в Android 4.4, он возвращается с подробной страницы на страницу со списком. Но как только я пытаюсь вернуться назад, его код ошибки бросания -1 и ERR_CACHE_MISS в описании. Страница не отображается.
09-04 06:59:05.666: D/Error(1102): Error code: -1/net::ERR_CACHE_MISS
Как решить эту проблему в Android 4.4?
4
ответов
В большинстве случаев эта ошибка возникает из-за пределов приложения (иногда это просто недостающее разрешение INTERNET , но это не похоже на этот случай).
Я печатал объяснение, но нашел гораздо более простой пример, который удваивается как объяснение в этом ответе на другой вопрос . Здесь соответствующие биты немного переделаны:
- Джо заполняет форму заказа с информацией о своей кредитной карте.
- Сервер обрабатывает эту информацию и возвращает страницу подтверждения/получения, отмеченную no-cache в заголовке, что означает, что она всегда будет запрашиваться с сервера.
- Джо переходит на другую страницу.
- Джо нажимает на кнопку, потому что хочет дважды проверить что-то, переведя его на страницу подтверждения.
Проблема возникает из этого последнего шага. Страница подтверждения была отмечена no-cache , поэтому ее нужно снова запросить с сервера. Но чтобы показать ту же страницу правильно, те же самые данные, которые были переданы в первый раз, должны снова отправляться.
Это приводит к тому, что Джо получает счет дважды, так как новый запрос делается с той же информацией, что и в прошлый раз. Джо не будет счастливым туристом, когда он найдет два заряда на его счет и дополнительные пару палаток на его пороге.
Кажется, эта ситуация была достаточно распространена, что теперь она является стандартной ошибкой для большинства браузеров и, по-видимому, более новых версий Android. Ошибка на самом деле происходит из Chromium, поэтому вы увидите ту же ошибку в Google Chrome и почему ее видите только в 4.4 (в которой была введена новая версия WebView на основе Chromium).
Фактически, вы, вероятно, видели это раньше, это сообщение, появившееся в большинстве браузеров, предупреждает вас о чем-то вроде строки «Чтобы обновить эту страницу, браузеру придется пересылать данные… yada yada yada».
Это Android 4.4, предупреждающий вас о том, что происходит. Как исправить это действительно зависит от того, к чему вы подключаетесь, но если вы ищете эту ситуацию, вы обнаружите, что она довольно распространена и имеет исправления. Точный триггер ошибки на самом деле, когда запрос не может обслуживаться из кеша (в этом случае это вызывает no-cache).
В зависимости от характера запроса, возможно, no-cache на самом деле не требуется.
Но с точки зрения вашего приложения основная проблема заключается в том, что onReceiveError является своего рода «последним средством» для WebView. Ошибки, которые вы получили, распространились из базовой системы. И как только вы окажетесь там, вы не сможете продолжить загрузку страницы в ее нынешнем виде. Таким образом, у вас нет возможности разрешить повторную отправку, и вы не можете предоставить пользователю эту опцию, в отличие от Google Chrome.
Google Chrome — один из популярных веб-браузеров, используемых пользователями Windows. И для того, чтобы оставаться на вершине, он представляет тонну функций, но это делает программное обеспечение более сложным и, следовательно, более подверженным ошибкам. Существуют различные типы ошибок, которые могут возникнуть при таком уровне сложности программы. Следует отметить, что когда пользователь получает эту ошибку, в самом браузере нет прямой проблемы. Существуют проблемы с кэшированием данных веб-сайта локально на компьютере. Эта ошибка может возникать и при некорректном кодировании веб-сайта или при наличии каких-либо расширений браузера, противоречащих правильному функционированию веб-сайта. В этом руководстве разберем, как исправить ошибку (Этот сайт не может быть загружен из кеша) This site can»t be loaded from the cache
с кодом в Google Chrome на компьютерах с Windows 10/8/7.
Исправить ошибку ERR_CACHE_MISS в Chrome
Проверим следующие исправления: очистка данных браузера, используем инструмент разработчика, очистка кеша DNS, удалим конфликтующие расширение браузера.
1. Очистить данные браузера
Есть большие шансы, что некоторые данные браузера противоречат загрузке веб-сайта. Для этого начните с открытия браузера Google Chrome. Далее нажмите комбинацию клавиш CTRL + H
на клавиатуре. Это откроет новую панель, чтобы удалить историю просмотров и другие данные. Нажмите слева на «Очистить историю
«, далее у вас появится окно в котором поставьте везде галочки и нажмите удалить данные
. Хочу отметить что в маленьком окне 2 вкладки «Основные настройки
» и «Дополнительные
«. Для полной уверенности вам нужно удалить историю с этих двух вкладок.
2. Использовать инструменты разработчика
Откройте Google Chrome и нажмите комбинацию клавиш CTRL + Shift + I
на клавиатуре. А затем нажмите F1.
Откроется вкладка настроек внутри инструментов разработчика Chrome. Далее найдите графу Network
(сеть) и в строке поставьте галочку Disable cahe (while DevTools is open)
. После этого просто загрузите страницу и проверьте устранена ли ошибка ERR CACHE MISS.
3. Сбросить DNS, Winsock и TCP/IP протокол
Вы можете , и проверить, устраняет ли это ваши проблемы.
4. Удалить конфликтующие расширения браузера
Есть большие шансы, что расширения и панели инструментов, установленные в вашем браузере, могут противоречить загрузке вашего сайта. Поэтому, чтобы исправить это, вам необходимо удалить или отключить эти расширения и панели инструментов. Для этого откройте браузер и вставьте в адресную строку chrome://extensions/
, чтобы открыть список расширений. Далее отключайте или удаляйте по одному, проверяя какое именно может быть виновником ошибки.
При работе в браузере Google Chrome пользователи могут столкнуться с такой проблемой, когда вместо загрузки нужной страницы на экране появляется сообщение об ошибке ERR_CACHE_MISS. К этому может привести одна из причин, которые рассмотрены ниже, поэтому необходимо выполнять каждый из предложенных шагов, чтобы выяснить, на каком этапе вылетает ошибка. Итак, выясняем, как же обычному пользователю можно исправить ошибку ERR_CACHE_MISS.
Ошибка ERR_CACHE_MISS
Среди причин появления ошибки ERR_CACHE_MISS пользователи отмечают следующие:
- неспособность браузера занести в кэш открываемое приложение либо страницу;
- активная работа Adblock и других расширений, блокирующих рекламу в Google Chrome;
- некоторые баги в самом браузере;
- сбой настроек.
В любом случае, для того чтобы искать решение, необходимо сначала найти причину ошибки ERR_CACHE_MISS. С первого взгляда это сделать не удастся, поэтому нужно запастись терпением и тщательно проработать предложенные ниже шаги. На каком-либо из этапов решение обязательно найдется.
Как вернуться к нормальной работе Google Chrome после вылета ошибки ERR_CACHE_MISS
Итак, начинаем подробно разбирать причины появления ошибки ERR_CACHE_MISS и осуществлять определенные действия, чтобы от нее избавиться. Простейший шаг в данной ситуации – очистка кэша.
Очистим кэш Google Chrome
Чтобы очистить кэш, выполните следующее:
- посмотрите в правый верхний угол браузера и найдите три точки, стоящие вертикально;
- нажмите на них и выберите пункт “Настройки” – они откроются в новой вкладке;
- нам нужны дополнительные настройки – они раскрываются при нажатии на слово “Дополнительные” внизу страницы;
- в разделе “Конфиденциальность и безопасность” будет пункт “Очистить историю”, на который и нужно нажать;
- в открывшемся меню выберите время, за которое необходимо выполнить очистку, и установите флажки, если нужные вам окошки не активированы;
- в данном окне снова нажмите на “Очистить историю”.
Очистка кэша в Google Chrome
Все, кэш очищен. Этот шаг решил вашу проблему? Продолжайте работу в любимом браузере. Если же ошибка ERR_CACHE_MISS продолжает вылетать, предпримем следующее.
Путь к избавлению от ошибки ERR_CACHE_MISS через командную строку
Вызовите командную строку (администратор) способом, подходящим для вашей ОС. Вводите поочередно следующие команды, подтверждая каждую из них нажатием на Enter:
После последнего нажатия Enter перезагрузите ПК, чтобы внесенные в систему изменения вступили в силу. Проверьте, решилась ли проблема – откройте в Google Chrome любой сайт. Если ошибка ERR_CACHE_MISS до сих пор присутствует, сделайте то, что предлагается далее.
Исправим ошибку ERR_CACHE_MISS при помощи обновления браузера
Попробуем обновить браузер. Снова заходим в настройки и ищем пункт “Справка”. Слева выплывет меню, в котором нужно нажать на “О браузере Google Chrome”. Если обозреватель нуждается в обновлении, то оно начнет устанавливаться автоматически. После окончания операции вам предложат перезапустить браузер, чтобы завершить установку обновлений.
Как обновить браузер Google Chrome
Попробуем устранить ошибку ERR_CACHE_MISS путем отключения всех расширений
Чтобы избавиться от ошибки ERR_CACHE_MISS, можно еще отключить все расширения, действующие в браузере. Для этого снова зайдите в настройки и наведите курсор на “Дополнительные инструменты”. В открывшемся слева окошке нажмите на пункт “Расширения”. Снимите флажки во всех окошечках и таким образом отключите все (!) расширения. Перезапустите браузер и проверьте, продолжает ли возникать проблема.
Как отключить расширения в Google Chrome
Перезапустим сетевое оборудование
Если оборудование, с помощью которого осуществляется доступ в Сеть (роутер, модем) работает долгое время без перерыва, это может вызывать сбои в соединении. Как еще один из способов избавления от ошибки ERR_CACHE_MISS попробуем перезапуск устройства. Отключите ваше оборудование от питания, затем снова запустите его. Проверьте, выскакивает ли ошибка. Если да, то нужно применить крайний способ.
Переустановим браузер для ликвидации ошибки ERR_CACHE_MISS
Для начала удалим Google Chrome с компьютера. Деинсталляция браузера должна быть полной. То есть не ограничимся одним только удалением софта через меню “Программы и компоненты”, так как остаточные файлы могут остаться в реестре системы. Для их полной ликвидации используем какой-нибудь деинсталлятор (например, Revo Uninstaller) или редактор реестра Windows. После завершения операции перезагрузим ПК и заново скачаем браузер с официального сайта или установим с диска.
На каком-либо шаге вы обязательно сможете самостоятельно избавиться от ошибки ERR_CACHE_MISS.
Вконтакте
-
Выключить и включить принтер
-
Если не помогло, попробовать открыть и отменить чек из теста ККТ
-
Обратиться в сервисную организацию, обслуживающую принтеры Атол
Действия:
1. Открыть тест-драйвер ККТ
2. В правой части меню установить галочку в чекбоксе «Включено»
3. В левой части меню перейти в раздел «Сервисные»
4. Нажать на кнопку «Инициализировать МГМ ФН»
5. Дождаться загрузки
6. Перейти в раздел «Регистрация ККТ»
7. Нажать на кнопку «Считать»
8. Дождаться ответа
9. Повторить действия пунктов 3,4,5
Ожидаемый результат: Принтер воспроизведёт звуковой сигнал.
ВАЖНО: Появление ошибки «[2] Нет связи» — это нормально:)