Описываю информацию:
Есть сервер с БД, на нем же и работают в iikoOffice.
На кассе стоит iikoFront и к ней подключены: терминал оплаты (альфа) + фискальный регистратор (АТОЛ FPrint-22ПТК).
Версия iiko: 6.2.2015.0
Касса одна.
[2022-10-24 18:17:00,180] INFO [53] [MessageService:Add:108] — Message: Dual Connector: операция не выполнена. Причина: «Операция обмена завершилась с ошибкой!
Код ошибки: 13
Описание: Connection error. «, Sender: Dual Connector, Type: Error, ReceiveTime: 10/24/2022 18:17:00, ExpireTime: 10/25/2022 06:17:00
[2022-10-25 16:30:16,272] ERROR [65] [PaymentScreenController:PaymentOperationFailed:202 7] — Payment operation failedResto.Framework.Common.RestoException: Операция не выполнена:
Код ошибки:OperationIsInterrupted
Описание: ПРЕРВАНО
Подробно: ОПЕРАЦИЯ ПРЕРВАНА —> Resto.Front.Api.V5.Exceptions.PaymentActionFailedE xception: Операция не выполнена:
Код ошибки:OperationIsInterrupted
Описание: ПРЕРВАНО
Подробно: ОПЕРАЦИЯ ПРЕРВАНА
Server stack trace:
в Resto.Front.Api.PaymentSystem.DualConnector.DualCo nnectorOperationHelper.CheckOperationResult(Operat ionData operationData) в I:BuildAgentworkrelease-installerdeviikoFront.NetResto.Front.Api.Paymen tSystem.DualConnectorDualConnectorOperationHelper .cs:строка 43
в Resto.Front.Api.PaymentSystem.DualConnector.DualCo nnectorPlugin.CompleteOperation(Pair`2 result, IReceiptPrinter printer, IUser cashier) в I:BuildAgentworkrelease-installerdeviikoFront.NetResto.Front.Api.Paymen tSystem.DualConnectorDualConnectorPlugin.cs:ст� �ока 170
в Resto.Front.Api.PaymentSystem.DualConnector.DualCo nnectorPlugin.Pay(Decimal sum, Nullable`1 orderId, Guid paymentTypeId, Guid transactionId, IPointOfSale pointOfSale, IUser cashier, IReceiptPrinter printer, IViewManager viewManager, IPaymentDataContext context, IProgressBar progressBar) в I:BuildAgentworkrelease-installerdeviikoFront.NetResto.Front.Api.Paymen tSystem.DualConnectorDualConnectorPlugin.cs:ст� �ока 136
в System.Runtime.Remoting.Messaging.StackBuilderSink ._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
в System.Runtime.Remoting.Messaging.StackBuilderSink .SyncProcessMessage(IMessage msg)
Exception rethrown at [0]:
в System.Runtime.Remoting.Proxies.RealProxy.HandleRe turnMessage(IMessage reqMsg, IMessage retMsg)
в System.Runtime.Remoting.Proxies.RealProxy.PrivateI nvoke(MessageData& msgData, Int32 type)
в Resto.Front.Api.V5.IExternalPaymentProcessor.Pay(D ecimal sum, Nullable`1 orderId, Guid paymentTypeId, Guid transactionId, IPointOfSale pointOfSale, IUser cashier, IReceiptPrinter printer, IViewManager viewManager, IPaymentDataContext context, IProgressBar progressBar)
в Resto.Front.Api.V5.Payment.PaymentProcessorWrapper .Pay(Decimal sum, Nullable`1 orderId, Guid paymentTypeId, Guid transactionId, IPointOfSale pointOfSale, IUser cashier, IPluginPrinter printManager, PluginViewManager viewManager, IPluginPaymentDataContext paymentContext, IPluginProgressBar progressBar) в I:BuildAgentworkrelease-installerdeviikoFront.NetResto.Front.ApiV5Pay mentPaymentProcessorWrapper.cs:строка 50
в Resto.Front.Api.ApiExtensionsService.PerformPaymen tAction(IExternalPaymentItem item, String key, Decimal sum, Nullable`1 orderId, Guid transactionId, ICashRegister cashRegister, IUser cashier, ActionType type, Action`1 changeProgressBarMessage) в I:BuildAgentworkrelease-installerdeviikoFront.NetResto.Front.ApiApiExt ensionsService.cs:строка 116
— Конец трассировки внутреннего стека исключений —
в Resto.Front.Api.ApiExtensionsService.PerformPaymen tAction(IExternalPaymentItem item, String key, Decimal sum, Nullable`1 orderId, Guid transactionId, ICashRegister cashRegister, IUser cashier, ActionType type, Action`1 changeProgressBarMessage) в I:BuildAgentworkrelease-installerdeviikoFront.NetResto.Front.ApiApiExt ensionsService.cs:строка 155
в Resto.Front.Api.ApiExtensionsService.Pay(IExternal PaymentItem item, String key, Decimal sum, Nullable`1 orderId, Guid transactionId, ICashRegister cashRegister, IUser cashier, Action`1 changeProgressBarMessage) в I:BuildAgentworkrelease-installerdeviikoFront.NetResto.Front.ApiApiExt ensionsService.cs:строка 62
в Resto.CashServer.PaymentSystem.ExternalPaymentItem .PerformTransaction(IBaseOrderBuilder orderBuilder, ILockedObjectsToken token, ICafeSession cafeSession, IUser cashier, Action`1 changeProgressBarMessage) в I:BuildAgentworkrelease-installerdeviikoFront.NetResto.CashServerPayme ntSystemExternalPaymentItem.cs:строка 34
в Resto.CashServer.PaymentSystem.CardPaymentItem`1.E xecuteProcessingOperation(IBaseOrderBuilder orderBuilder, ILockedObjectsToken token, ICafeSession cafeSession, IUser cashier, Action`1 changeProgressBarMessage) в I:BuildAgentworkrelease-installerdeviikoFront.NetResto.CashServerPayme ntSystemCardPaymentItem.cs:строка 167
в Resto.CashServer.PaymentSystem.PaymentItem.Process (IBaseOrderBuilder orderBuilder, ILockedObjectsToken token, ICafeSession cafeSession, IUser cashier, Action`1 changeProgressBarMessage) в I:BuildAgentworkrelease-installerdeviikoFront.NetResto.CashServerPayme ntSystemPaymentItem.cs:строка 227
в Resto.CashServer.Services.OrderService.ProcessPaym entsItems(IBaseOrderBuilder orderBuilder, IUser cashier, ILockedObjectsToken token, ICafeSession cafeSession, Action`1 changeProgressBarMessage) в I:BuildAgentworkrelease-installerdeviikoFront.NetResto.CashServerServi cesOrderService.cs:строка 1271
в Resto.CashServer.Services.OrderService.ProcessOrde rClose(IBaseOrderBuilder orderBuilder, ICafeSession cafeSession, IOrderCloseParameters closeParameters, ILockedObjectsToken token, Action`1 changeProgressBarMessage) в I:BuildAgentworkrelease-installerdeviikoFront.NetResto.CashServerServi cesOrderService.cs:строка 503
в Resto.Front.Controllers.PaymentScreenController.<> c__DisplayClass75_0.<CloseOrder>b__3() в I:BuildAgentworkrelease-installerdeviikoFront.NetResto.Front.Controller sPaymentScreenController.cs:строка 1510
в System.Threading.Tasks.Task.InnerInvoke()
в System.Threading.Tasks.Task.Execute()
iiko. Поддерживаемое оборудование.

ККМ, онлайн кассы, принтеры чеков
ALPOS AF01, BRIO Fis-FM32/32E(M), Empirija, IKC(IKC-MARKET), IKS(Straujos Prekybos Sistemos), MSTAR-TK, Pirit, Posnet, Posnet Therminal, Линейка Datecs, MIHI-ФП6, Мария-301 МТМ, Меркурий, ПИЛОТ FP-410K, ПРИМ-ФР(Azimuth), СПАРК.
OPOS Fiscal Register, Pirit c ФН, Viki Print, АртСофт драйвер фискальных регистраторов Украины, Виртуальная касса (нефискальный режим),АТОЛ, ШТРИХ М, РР01Ф, РР02Ф, РР04Ф, Меркурий 130Ф, ПРИМ-ФР с ФН(Azimuth), СПАРК с ФН, Фискальный сервис HRS.
Программа iiko, как работает с драйвером Штрих М? — Работает отлично. Проблем практически не бывает.
как убрать с iiko фискальный регистратор
как подключить ккт к iiko
iiko не видит кассу
WhatsApp +7(987)-268-84-37
Настройка онлайн касс
Принтеры
Checkway, Citizen CT-Sxxx (термопринтер), Comstar, Epson TM-T88(TM-U220,TM-U295), OPOS принтер, Posiflex, SPrint TM200(TM200 Min), STAR (SMxxx(портативный), SPxxx(матричный), SP298, TSPxxx(термопринтер)), Windows Printer, Zebra Epl, АТОЛ RP-326, Штрих-600(700).
Принтеры этикеток
Zebra LP 2824, Zebra LP 2824 S Plus RS232, OL-2834, TSC TTP-225, GoDex DT4, GoDex G500, GoDex DT2X, GoDex DT2US.
Сканеры
Как подключить cканер штрих-кода в iiko — подключение любых моделей cканера штрих-кодов.
iiko подключить сканер honeywell 1450g
iiko не видит сканер
WhatsApp +7(987)-268-84-37
Весы
DIGI SM, NCI-ECR весы
CAS AD(H), AP, ED(H), EMR, ER, ND, DB-H, EB(кг.), CL5000J Static memory, CL5000J Dynamic memory, CL5000, CWM-4000, CAS WM-Nano, CAS Printer 5+, CL3000/CL5000-D.
Весы Масса серий ВПМ и ТВ_Р3(модификация MF)
Штрих М Универсальный драйвер весов Штрих МI, МII, МIII, М5, ВП, Весовая ячейка ВМ100, Драйвер POS2(Штрих-Слим,ВМ100), Штрих-Принт.
Экран покупателя
Firich/Epson, OPOS Display.
Процессинг карт
ПЛАСТ-ТЕК, Процессинг банковских карт Smart Sale, ПУЛЬСАР.
Вопросы и ответы
ФР не зарегистрирован для данной системы налогообложения: — сравните настройки iikoOffice системы налогообложения с параметрами регистрации ККТ. Эти параметры должны совпадать.
Работа с маркированными товарами временно заблокировано — проверьте связь с ОИСМ, нужно отправить уведомления.
Ошибка программирования реквизита 1162 — возможно, ошибка выходит после прошивки ккт на ффд.1.2.. Нужно обновить iiko и переподключить ккт с выбором ффд 1.2..
iiko не запускается, горит красная точка справа в верху.¹ — проверьте Интернет и разъем Интернет (RJ45). Перезагрузите компьютер.
iiko настройка чека атол
Ошибка при печати: Не удалось передать данные по сети — нужно проверить связь с ОФД и настроить.
iiko Нет связи ОФД. Неотправленных данных N — нужно проверить связь с ОФД и настроить.
Исчерпан ресурс хранения ФН — нужно отправить данные в ОФД.
Исчерпан ресурс ФН — нужно заменить ФН
Устройство не может обработать команду в данный момент времени — нужно провести диагностику ККТ.

iiko office не видит оборудование
iiko front фискальный регистратор не подключен — требуется настройка ККТ.
Ошибка фискального регистратора: Невозможно получить серийный номер фискального регистратора. Возможно, устройство не подключено.
Закончился чек при открытии смены, выдает ошибку, как повторно открыть смену и напечатать х-отчет касса атол — требуется диагностика и настройка ККТ.
При установки фн viki print 57ф печатает «Фатальная ошибка фн» — Возможно нарушена последовательность действий в обслуживании ККТ или неисправен ФН.
iiko ошибка реквизита печать фискального чека прервана — требуется проверка реквизита и настроек на ККТ.
iiko отчет с гашением прерван вход в режим невозможен — нужно проверить состояние ККТ, при необходимости завершить печать отчета.
WhatsApp +7(987)-268-84-37
Возникла ошибка «Истекли 24 часа , необходимо закрыть смену» — Закройте смену, если смена не закрывается, то возможно кончилась бумага, фискальный регистратор выключен или не подключен. Если фискальный регистратор неисправен, то пишите в
WhatsApp +7(987)-268-84-37
Неверный код акцизной марки — возможно установлена русская раскладка клавиатуры RU, измените раскладку на EN и повторите операцию.
Расширение функционала фискального регистратора
Введение
Команды фискального регистратора могут быть дополнены любыми другими операциями.
Например, если нужно сделать предварительные работы перед печатью чека оплаты заказа или выполнить операции после печати данного чека.
Схематично, это можно представить так:

Если плагину необходимо получать управление в процессе печати фискального чека оплаты или возврата заказа, а также в процессе внесения, изъятия, печать X и Z отчетов, достаточно реализовать интерфейс IChequeTaskProcessor и зарегистрировать его посредством вызова метода API RegisterChequeTaskProcessor():
var chequeTaskProcessor = new ChequeTaskProcessor()
PluginContext.Operations.RegisterChequeTaskProcessor(chequeTaskProcessor);
Все команды интерфейса IChequeTaskProcessor могут прервать выполнение основной операции: фискализация чека, внесение, изъятие, печать X и Z отчета. Для этого в теле команды нужно бросить любого вида исключение.
Например, сделаем условие — нельзя закрывать заказы на виртуальном фискальном регистраторе (ФР):
public BeforeDoCheckActionResult BeforeDoCheckAction(ChequeTask chequeTask, ICashRegisterInfo device, CashRegisterChequeExtensions chequeExtensions, IViewManager viewManager)
{
// Для примера: разрешать печатать чеки оплаты и предоплаты только на реальном устройстве.
if (device.IsVirtual)
throw new Exception("Cash register is virtual. Please close order only on real device.");
PluginContext.Log.InfoFormat("Before do cheque on cash register: {0} ({1})", device.FriendlyName, device.Id);
...
}
Тогда при оплате заказа на виртуальном ФР iikoFront выведет сообщение об ошибке и заказ останется открытым:

Пример реализации интерфейса IChequeTaskProcessor и его регистрация есть в проекте SDK SamplePlugin.
Интерфейс IChequeTaskProcessor
Рассмотрим подробнее команды IChequeTaskProcessor.
1. BeforeDoCheckAction
BeforeDoCheckAction() — команда, которая выполняется перед операцией фискализации чека. Это может быть закрытие заказа, возврат заказа, пречек, отмена пречека, возврат товаров.
Основное ее назначение проверить возможность выполнения операции, а также добавить в чек дополнительную информацию.
Как добавить в чек дополнительную информацию?
Есть 2 способа добавить в чек дополнительную информацию:
- Путем добавления шаблона чека «Дополнение к фискальному чеку»: iikoOffice => «Администрирование» => «Шаблоны чеков» => «Добавить» => «Тип: Дополнение к фискальному чеку».
Написанный здесь шаблон будет добавлен в конец чекаchequeTask.TextAfterCheque.
Этот способ не связан с расширением функционала ФРа, используя его не нужно регистрировать свойIChequeTaskProcessor.

- Плагин имеет возможность добавить свои значения в
chequeTask.TextBeforeCheque,chequeTask.TextAfterCheque, а так же изменить имя кассираchequeTask.cashierName. Эти данные будут переданы в ФР для печати. Для этого необходимо заполнить соотвествующие поля в возращаемом значении типаBeforeDoCheckActionResult. Если модификация полей не требуется, нужно вернуть просто null.public BeforeDoCheckActionResult BeforeDoCheckAction(ChequeTask chequeTask, ICashRegisterInfo device, CashRegisterChequeExtensions chequeExtensions, IViewManager viewManager) { var beforeCheque = new List<Data.Print.Document>(); var documentBefore = new Data.Print.Document(); documentBefore.Markup.Add(new XElement(Tags.LargeFont, "Welcome")); documentBefore.Markup.Add(new XElement(Tags.SmallFont, "tel. 555-123456")); beforeCheque.Add(documentBefore); var afterCheque = new List<Data.Print.Document>(); var documentAfter = new Data.Print.Document(); documentBefore.Markup.Add(new XElement(Tags.SmallFont, "Thank you for shopping")); documentBefore.Markup.Add(new XElement(Tags.QRCode, "iiko.ru")); beforeCheque.Add(documentAfter); return new BeforeDoCheckActionResult { BeforeCheque = beforeCheque, AfterCheque = afterCheque, CashierName = "CashierName" }; }
Аргументы функции BeforeDoCheckAction():
chequeTask— информация по заказу.
Вся информация по позициям заказа, скидкам/надбавкам, оплатах и прочее (см. статью API внешние фискальные регистраторы).device— информация по фискальному регистратору, на котором происходит закрытие заказа.chequeExtensions— дополнительныя информация по чеку.
Хранит разметку для добавления в начало и конец чека (chequeExtensions.BeforeCheque,chequeExtensions.AfterCheque).
Также хранит идентификаторchequeExtensions.PastOrderIdи номерchequeExtensions.PastOrderNumberзаказа, закрытого в прошлой КС.
Эти поля заполняются при возврате заказа из прошлой КС.viewManager— менеджер окон.
Позволяет показывать предопределённый набор встроенных в iikoFront диалоговых окон (см. статью API диалоговые окна).
2. AfterDoCheckAction
AfterDoCheckAction() — команда, которая выполняется после операции фискализации чека.
Основное ее назначение — выполнить завершающие действия после печати чека. Например, добавить в очередь операцию выгрузки во внешнюю систему.
Аргумент result описывает результат выполнения операции на ФР.
result.Success = true — операция выполнена успешно, иначе — неуспех.
Если операция выполнена неуспешно result.Success = false, текст ошибки можно будет увидеть в result.Message.
3. BeforeXReport
BeforeXReport() — команда, которая выполняется перед печатью X-отчета.
В качестве параметров также передаются фискальный регистратор, на котором проводится операция, IViewManager для показа сообщений или ввода данных и пользователь authUser, инициирующий печать X-отчета.
4. AfterXReport
AfterXReport() — команда, которая выполняется после печати X-отчета.
Аргументы аналогичны команде AfterDoCheckAction.
5. BeforeZReport
BeforeZReport — команда, которая выполняется перед печатью Z-отчета.
Параметрами передаются: ФР, пользователь и менеджер окон IViewManager.
6. AfterPayIn
AfterPayIn — команда, которая выполняется после внесения денежный средств в кассу.
В функцию передаются: ФР, ответ фискального регистратора при выполнении внесения, менеджер окон IViewManager и сумма денежных средств, которую вносили в кассу.
7. AfterPayOut
AfterPayOut — команда, которая выполняется после изъятия денежных средств из кассы.
В функцию передаются: ФР, ответ фискального регистратора при выполнении изъятия, менеджер окон IViewManager и сумма денежных средств, которую изымали из кассы.
Дополнительные интерфейсы IReadonlyChequeTaskProcessor и IEditableChequeTaskProcessor
Наряду с вышеописанным интерфейсом IChequeTaskProcessor, также есть расширяющие его интерфейсы IReadonlyChequeTaskProcessor и IEditableChequeTaskProcessor, которые позволяют выполнять свои задачи перед выполнением внесения и изъятия на кассе.
Регистрируются они точно также, как родительский интерфейс.
Разница между ними лишь в том, что используя интерфейс IReadonlyChequeTaskProcessor плагин при изъятии денежных средств не может отредактировать сумму изъятия, а используя интерфейс IEditableChequeTaskProcessor — может, за счет параметра ref estimatedSum.
Это сделано для того, чтобы при закрытии КС плагин мог регулировать сумму изъятия.
-
t800
- Сообщения: 36
- Зарегистрирован: 30 дек 2016, 01:03
-
Контактная информация:
88-ККТ: Ожидание команды продолжения печати
Еще вопрос:
Подскажите, у нас когда закончилась бумага, чек распечататься не смог и при печати чека и вышла ошибка: 88-ККТ: Ожидание команды продолжения печати
Саму бумагу заправили, но как теперь продолжить печатать чеки?
Раньше с другим ПО (iiko) мы просто меняли рулон и чек перепечатывался.
Заранее спасибо!
-
Audim
- Администратор
- Сообщения: 2230
- Зарегистрирован: 17 мар 2015, 18:36
Re: 88-ККТ: Ожидание команды продолжения печати
Сообщение
Audim » 03 мар 2017, 20:10
Сервер работает по принципу транзакций — все или ни чего!
Ошибка вышла — значит чек отменен.
Посылайте на печать заново.
-
t800
- Сообщения: 36
- Зарегистрирован: 30 дек 2016, 01:03
- Контактная информация:
Re: 88-ККТ: Ожидание команды продолжения печати
Сообщение
t800 » 03 мар 2017, 20:58
Получилось как раз наоборот.
Эта ошибка появлялась как раз при печати заново.
Т.е. пускали чек на печать, и получали эту ошибку.
Вылечили путем запуска ДТО и в нем уже выполнены были действия Печать текста/Операции/Продолжить печать.
-
Audim
- Администратор
- Сообщения: 2230
- Зарегистрирован: 17 мар 2015, 18:36
Re: 88-ККТ: Ожидание команды продолжения печати
Сообщение
Audim » 03 мар 2017, 21:58
Да, воспроизвел — на ККТ где все команды буферизуются есть такая ошибка.
Исправил.
В таких случаях (если чек не напечатался до конца из за бумаги) нужно подать любую команду (например XReport, GetLineLength и т.д.) и недопечатанный чек напечатается заново.
Как только мой провайдер решит проблему с хостингом выложу новую версию.
-
t800
- Сообщения: 36
- Зарегистрирован: 30 дек 2016, 01:03
- Контактная информация:
Re: 88-ККТ: Ожидание команды продолжения печати
Сообщение
t800 » 04 мар 2017, 22:07
А получается не будет тогда работать опция при операции продажи?
// Аннулировать открытый чек если ранее чек не был завершен до конца
CancelOpenedCheck: true,
Дело в том, что сейчас у нас все операции к кассе складываются в очередь, откуда последовательно посылаются на выполнение.
И, если какая-то операция застревает, очередь не двигается, пока не примется решение о неуспешной операции.
Т.е. я рассчитывал, что если просто перепущу такую операцию, то про предыдущий фейловый чек можно забыть.
А операция GetLineLength отдает ответ на бумагу? Или в ответе на запрос?
-
Audim
- Администратор
- Сообщения: 2230
- Зарегистрирован: 17 мар 2015, 18:36
Re: 88-ККТ: Ожидание команды продолжения печати
Сообщение
Audim » 04 мар 2017, 22:27
А операция GetLineLength отдает ответ на бумагу? Или в ответе на запрос?
Нет, только в ответе. И вытолкнет на печать застрявший чек.
А получается не будет тогда работать опция при операции продажи?
// Аннулировать открытый чек если ранее чек не был завершен до конца
CancelOpenedCheck: true,
Новые Штрихи работают так:
Принимают все команды регистрации чека в буфер (печать при этом не идет)
При закрытии чека делается регистрация чека в ФН.
Если все нормально то ККТ возвращает статус что все Ок.
Мой сервер получив этот статус закрывает соединение с ККТ и отдает ответ вызывающей программе.
Т.е. для сервера с чеком все Ок — он зарегистрирован!
И только после этого ККТ начинает печатать чек!!!
И если этот чек не напечатан то его отменить нельзя т.к. в ФН он уже зарегистрирован!!!!
Более того: если выключить ККТ и включить то ККТ будет помнить что у нее есть не напечатанный чек!!
И выйти из этого режим можно только протолкнув чек на печать!
CancelOpenedCheck: true — только для тех чеков которые застряли при формировании = т.е. не была выполнена успешна команда закрытия чека.
-
Audim
- Администратор
- Сообщения: 2230
- Зарегистрирован: 17 мар 2015, 18:36
Re: 88-ККТ: Ожидание команды продолжения печати
Сообщение
Audim » 04 мар 2017, 23:15
ЗЫ: кстати протолкнуть застрявший чек на печать можно нажав кнопку на ККТ (она там одна-называется «Протяжка ленты»).
-
t800
- Сообщения: 36
- Зарегистрирован: 30 дек 2016, 01:03
- Контактная информация:
Re: 88-ККТ: Ожидание команды продолжения печати
Сообщение
t800 » 05 мар 2017, 11:32
Audim писал(а):ЗЫ: кстати протолкнуть застрявший чек на печать можно нажав кнопку на ККТ (она там одна-называется «Протяжка ленты»).
Подходящее решение. Попробуем в след. раз.
Спасибо!