При использовании современных кассовых аппаратов АТОЛ без фискального накопителя (ФН) владельцы бизнеса и разработчики часто сталкиваются с неприятной проблемой. На каждом распечатанном чеке ККТ выводит крупную предупреждающую надпись "ЧЕК НЕДЕЙСТВИТЕЛЕН" (или "Демонстрационный режим"). Это штатное поведение ККТ, заложенное производителем для предотвращения нелегального использования кассы в обход налоговых органов.
Однако существуют законные сценарии, когда касса используется исключительно как чекопечатающая машина (принтер документов) — например, для плательщиков патентной системы налогообложения (ПСН) или ЕНВД в переходные периоды, а также для печати внутренних нефискальных документов, копий чеков или квитанций. В таких случаях надпись смущает покупателей и портит внешний вид документа. В этой статье мы подробно разберем два основных метода решения этой проблемы без физического вмешательства в плату устройства и без сложного перепрограммирования.
Прежде чем перейти к методам устранения надписи, выясним причину её появления. По умолчанию микропрограмма (прошивка) ККТ АТОЛ работает в одном из двух режимов:
Наша задача — перевести ККТ в специальный режим принтера документов (АСПД) либо изменить способ отправки данных из 1С таким образом, чтобы касса не считала печатаемый документ фискальным чеком.
---
Самый простой и правильный путь — активировать во внутренней памяти ККТ специальный режим принтера документов (АСПД или режим ЕНВД). В этом режиме касса программно «понимает», что она работает без ФН легально, и перестает печатать предупреждающие надписи.
Важное ограничение: данный метод работает только на фискальных регистраторах со старыми версиями прошивок (платформа 2.5, версии прошивок до 3689) и на моделях, поддерживающих режим АСПД (например, АТОЛ 30Ф, АТОЛ 11Ф, АТОЛ 22Ф/55Ф). На новых прошивках (платформа 5.0) и на некоторых смарт-терминалах (например, АТОЛ Sigma, АТОЛ 91Ф/92Ф) производитель полностью заблокировал возможность перевода в АСПД. При попытке перевода вы можете столкнуться с Ошибкой 122 ("Активизация памяти ПД невозможна"). Если это ваш случай, переходите сразу к Мегоду 2.
Выполним процедуру перевода ККТ в режим АСПД по шагам:
Активация выполнена. Режим ЕНВД включен.После проведения этой несложной настройки касса начнет печатать обычные чеки без раздражающей надписи о недействительности.
---
Если ваша модель кассы не поддерживает переход в режим АСПД, или на ней установлена современная прошивка платформы 5.0, метод с утилитой регистрации не сработает. Однако мы можем обойти ограничение программным путем непосредственно из 1С.
Когда 1С отправляет документ на печать стандартным образом, она вызывает методы фискальной печати: сначала открывает чек через драйвер, затем регистрирует товарные позиции и, наконец, закрывает чек. Именно процедура закрытия фискального чека при отсутствии ФН инициирует печать надписи "Чек недействителен".
Решение заключается в том, чтобы вообще не открывать фискальный чек. Вместо этого мы будем использовать ККТ как обычный принтер, отправляя на него текстовые строки. При такой схеме (slip-печать) устройство просто выводит на бумагу присланный текст, не анализируя его структуру, и не добавляет никаких сервисных сообщений от себя.
Проанализируем пример кода на языке 1С для реализации текстовой печати через Драйвер торгового оборудования АТОЛ 10-й версии (ДТО 10):
// Создаем объект драйвера ККТ АТОЛ 10
Драйвер = Новый COMОбъект("AddIn.Fptr10");
// Устанавливаем параметры подключения (порт, скорость и т.д.)
// В данном примере параметры берутся по умолчанию, настроенные в системе
Драйвер.ПоказыватьСвойства = Ложь;
// Открываем соединение с кассовым аппаратом
РезультатПодключения = Драйвер.open();
Если РезультатПодключения <> 0 Тогда
Предупреждение("Не удалось подключиться к кассовому аппарату!");
Возврат;
КонецЕсли;
// Начинаем нефискальную печать документа
// Мы НЕ вызываем метод openReceipt(), а сразу отправляем текст
// Печать заголовка документа
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_TEXT, " ООО ""МОЯ ТОРГОВАЯ КОМПАНИЯ""");
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_ALIGNMENT, Драйвер.LIBFPTR_ALIGNMENT_CENTER);
Драйвер.printText();
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_TEXT, " ТОВАРНЫЙ ЧЕК (КОПИЯ)");
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_ALIGNMENT, Драйвер.LIBFPTR_ALIGNMENT_CENTER);
Драйвер.printText();
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_TEXT, "------------------------------------------");
Драйвер.printText();
// Печать товарных позиций (в реальной задаче здесь будет цикл по табличной части документа)
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_TEXT, "1. Кабель USB-C 1.5м 1 x 450.00");
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_ALIGNMENT, Драйвер.LIBFPTR_ALIGNMENT_LEFT);
Драйвер.printText();
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_TEXT, "2. Переходник OTG 2 x 150.00");
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_ALIGNMENT, Драйвер.LIBFPTR_ALIGNMENT_LEFT);
Драйвер.printText();
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_TEXT, "------------------------------------------");
Драйвер.printText();
// Печать итоговой суммы
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_TEXT, "ИТОГО К ОПЛАТЕ: 750.00");
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_ALIGNMENT, Драйвер.LIBFPTR_ALIGNMENT_RIGHT);
Драйвер.printText();
// Печать подвала документа
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_TEXT, " Спасибо за покупку!");
Дrapвер.setParam(Драйвер.LIBFPTR_PARAM_ALIGNMENT, Драйвер.LIBFPTR_ALIGNMENT_CENTER);
Драйвер.printText();
// Производим отрезку чековой ленты (полную или частичную)
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_CUT_TYPE, Драйвер.LIBFPTR_CUT_FULL);
Драйвер.cut();
// Закрываем соединение с ККТ
Драйвер.close();
Рассмотрим подробнее преимущества и особенности данного метода:
Если перед вами стоит задача запустить ККТ АТОЛ без фискального накопителя в качестве обычного принтера документов, сначала попробуйте перевести устройство в режим АСПД/ЕНВД через штатную утилиту тест-драйвера. Если касса выдает ошибку о невозможности активизации памяти ПД (что часто бывает на современных прошивках), единственным надежным и стабильным решением будет переписать алгоритм отправки чека из 1С на построчную нефискальную slip-печать.