При использовании современных кассовых аппаратов серии «Ф» (например, АТОЛ 55Ф или АТОЛ 30Ф) в режиме чекопечатающей машины (для плательщиков ЕНВД или ПСН без фискального накопителя) специалисты часто сталкиваются со следующей проблемой: устройство корректно подключается к 1С в качестве «ККТ с передачей данных», проходит тесты связи и даже снимает X-отчеты, но при попытке пробить чек или проведение документа Приходный кассовый ордер (ПКО) / Чек ККМ платформа 1cv8.exe аварийно завершает работу без вывода информативного сообщения об ошибке.
Проанализируем причины возникновения этой проблемы и разберем варианты её технического решения в конфигурации 1С:Управление торговлей ред. 10.3.
Причина вылета платформы заключается в расходовании ожиданий подсистемы торгового оборудования и драйвера:
.dll) и подсистема торгового оборудования в 1С:УТ 10.3 не содержат обработчика исключительной ситуации для этой ошибки, что вызывает критический сбой памяти и закрытие приложения.Разберем подробнее способы решения данной задачи.
Если требуется подключить кассу как традиционный «Фискальный регистратор» (а не «ККТ с передачей данных»), необходимо перевести устройство на старый протокол обмена 2.4. Это позволит выбирать в настройках торгового оборудования модель FPrint-55 или аналогичную.
Рассмотрим порядок переключения протокола обмена на аппарате АТОЛ:
После перевода устройства в режим протокола 2.4 в 1С:УТ 10.3 открываем справочник подключенного торгового оборудования, добавляем устройство в раздел «Фискальные регистраторы» и выбираем модель FPrint-55 (или совместимую). Это исключает вызовы методов работы с 54-ФЗ и решает проблему вылетов.
Если кассовый аппарат подключается к 1С как онлайн-ККТ, но пробитие фискальных чеков не требуется, можно обойти стандартный механизм печати чеков 1С путем отправки на устройство текстовых нефискальных команд.
Проанализируем алгоритм реализации данного обхода:
ОткрытьЧек() и ЗакрытьЧек().Посмотрим на пример кода 1С для работы с объектом драйвера ДТО 8.x при печати нефискального документа:
// Создаем объект драйвера ККМ
ОбъектДрайвера = Новый COMОбъект("AddIn.FPrintSrv");
// Занимаем порт устройства
ОбъектДрайвера.DeviceEnabled = Истина;
Если ОбъектДрайвера.ResultCode = 0 Тогда
// Вход в режим печати нефискальных документов
ОбъектДрайвера.Mode = 1;
ОбъектДрайвера.SetMode();
// Печать строк чека
ОбъектДрайвера.Caption = "ТОВАРНЫЙ ЧЕК (НЕФИСКАЛЬНЫЙ)";
ОбъектДрайвера.PrintString();
ОбъектДрайвера.Caption = "Товар: Наименование товара";
ОбъектДрайвера.PrintString();
ОбъектДрайвера.Caption = "Итого: 1000.00 руб.";
ОбъектДрайвера.PrintString();
// Промотка и отрезка ленты
ОбъектДрайвера.PartialCut();
// Освобождаем порт
ОбъектДрайвера.DeviceEnabled = Ложь;
Иначе
Сообщить("Ошибка подключения к ККТ: " + ОбъектДрайвера.ResultDescription);
КонецЕсли;
Если необходимо сохранить штатную схему работы с оборудованием через интерфейсы 1С, рекомендуется:
ATOLKKTSHTRIHM54_v2.epf или аналогичную актуальную обработку с поддержкой ДТО 10).Использование ДТО 10.x корректно обрабатывает отсутствие ФН и предотвращает критические сбои платформы 1С при завершении печати.