При автоматизации торговых точек иногда возникает потребность использовать онлайн-кассу (например, Атол 30Ф или Атол 11Ф) для внутренних нужд или в переходный период без установки фискального накопителя (ФН). В таких сценариях кассовый аппарат должен выполнять роль обычного принтера чеков или чекопечатающей машины (ЧПМ).
Однако при попытке типовой печати чеков из конфигураций 1С (таких как 1С:Розница или 1С:Управление торговлей) пользователи часто сталкиваются с ошибкой Индекс находится за границами массива при проведении документа Чек ККМ, а также с некорректным отображением системы налогообложения (СНО) на чековой ленте. Разберем детально причины такого поведения и рассмотрим все способы настройки оборудования.
Проанализируем механику взаимодействия платформы 1С и кассового оборудования. Типовая Библиотека подключаемого оборудования (БПО) при пробитии фискального чека через документ Чек ККМ выполняет жесткий сценарий фискализации:
Если в ККТ отсутствует фискальный накопитель, прошивка кассы не формирует фискальный признак и возвращает усеченный или пустой массив данных. Программный код 1С пытается прочитать отсутствующий элемент массива, что приводит к аварийному завершению транзакции с ошибкой Индекс находится за границами массива.
При этом печать из документа Реализация товаров и услуг или печать товарного чека может работать штатно, так как в этих режимах касса вызывается как устройство печати текстовых нефискальных документов (слип-чеков), где обратного ответа с фискальными реквизитами не требуется.
Самый надежный и стабильный способ использовать онлайн-кассу без ФН — перевести ее в режим обычного принтера документов. В этом случае касса исключается из состава фискальных регистраторов БПО, а печать выполняется через стандартные драйверы печати операционной системы.
Многие модели ККТ (включая Атол 11Ф и 30Ф) поддерживают режим прямой печати по стандартному протоколу ESC/POS через виртуальный COM-порт. Это позволяет отправлять команды форматирования текста напрямую в печатающую головку кассы.
ESC/POS.Принтер чеков, указав драйвер 1С:Принтер чеков (ESC/POS) и настроив параметры подключения к соответствующему COM-порту.Если на рабочем месте кассира (РМК) критически важно сохранить привычный процесс оформления продаж через документ Чек ККМ, потребуется доработка обработки ответа фискализации в модулях торгового оборудования.
Разберем, как обойти ошибку переполнения границ массива. В процедуре обработки результатов фискализации чека необходимо предусмотреть проверку заполненности выходных параметров от драйвера:
// Пример проверки структуры ответа от ККТ без ФН
Если ВыходныеПараметры = Неопределено Или ВыходныеПараметры.Количество() = 0 Тогда
// Заполняем массив фиктивными значениями для нефискального режима
ВыходныеПараметры = Новый Массив();
ВыходныеПараметры.Добавить("000000000000"); // Фиктивный номер ФД
ВыходныеПараметры.Добавить("0000000000"); // Фиктивный ФПД
ВыходныеПараметры.Добавить(1); // Номер смены
ВыходныеПараметры.Добавить(1); // Номер чека за смену
КонецЕсли;
Такая заглушка предотвратит падение транзакции документа Чек ККМ, и чек будет успешно закрыт в учетной системе.
Часто при нефискальной печати на кассе Атол в чеке выводится надпись СНО: ОСН, даже если в 1С для организации задана УСН или ЕНВД. Это происходит потому, что нефискализированная ККТ игнорирует тег 1055 (применяемая система налогообложения) из пакета данных 1С и берет значение по умолчанию из внутренней таблицы настроек.
Для исправления СНО выполним следующие действия:
УСН Доход или ЕНВД) и снимем признак с ОСН.После применения настроек касса будет печатать корректную СНО даже при формировании нефискальных документов.