При работе с фискальными регистраторами семейства Вики Принт (Viki Print), в частности с моделью 57Ф, пользователи часто сталкиваются с критической ошибкой при попытке пробить чек, в котором применены автоматические или ручные скидки. Процесс прерывается сообщением: «При выполнении операции произошла ошибка: Функция не выполнима при данном статусе ККТ», а из самой кассы выходит нефискальный документ с надписью «Чек аннулирован». Проанализируем причины этой ситуации и разберем пошагово методы ее решения.
Основная причина возникновения данной ошибки кроется в том, как учетная система 1С:Розница и внутреннее программное обеспечение кассы обрабатывают скидки. В современных реалиях работы по форматам фискальных данных (ФФД 1.05 и выше), кассовый аппарат ожидает получения итоговой цены за единицу товара, которая уже включает в себя все примененные скидки.
Разберем ситуацию подробнее: если 1С пытается передать в кассу первоначальную цену товара и отдельно сумму скидки как корректирующую позицию, математический алгоритм ККТ может выдать ошибку округления. Если итоговая сумма по строке (Цена * Количество - Скидка) не совпадает с точностью до копейки с тем, что рассчитала сама касса, устройство блокирует печать чека и переходит в статус ошибки. Именно поэтому возникает сообщение о том, что функция не выполнима при текущем статусе.
Первым делом нам необходимо убедиться, что используется актуальное программное обеспечение. Рассмотрим алгоритм обновления:
1С. Нам необходима компонента версии не ниже 925.Важно помнить, что для корректной работы 1С:Розница с устройствами Вики Принт необходимо использовать внешнюю компоненту, которая поставляется производителем специально для интеграции с библиотекой подключаемого оборудования (БПО).
Проанализируем настройки торгового оборудования в самой программе 1С. Выясним, как именно передаются данные в кассу. Для исправления ошибки аннулирования чека часто помогает изменение логики формирования XML-пакета, который 1С отправляет на ККТ.
В ФФД 1.05 фактически отсутствует передача скидки как отдельного объекта. Мы должны передавать в кассу Цена со скидкой. Посмотрим, как это реализуется программно на уровне драйвера:
Сумма по каждой позиции должна рассчитываться как Округлить(Цена * Количество - СуммаСкидки). Если ваша конфигурация позволяет, в настройках драйвера ККТ в 1С следует попробовать отключить флаг «Выводить скидки в чеке». В этом случае программа будет передавать в кассу уже готовую чистую цену товара, и касса не будет пытаться производить дополнительные вычисления, которые ведут к ошибкам округления.
Если чек был аннулирован, ККТ может остаться в «зависшем» состоянии (открытый чек или ошибка фазы). Чтобы вернуть кассу в рабочее состояние, выполним следующие действия в сервисной утилите Fito:
Fito и установим связь с кассой.24-часовая смена открыта, а фаза документа — на 0 (документ закрыт).Только после этого можно повторять попытку пробития чека из 1С.
Программистам 1С при доработке механизмов печати стоит обратить внимание на структуру данных. Рассмотрим пример формирования строки чека, который минимизирует риск аннулирования документа:
// Пример логики подготовки данных для ККТ Вики Принт
ЦенаСоСкидкой = ТоварСтрока.Цена - (ТоварСтрока.СуммаСкидки / ТоварСтрока.Количество);
ЦенаСоСкидкой = Окр(ЦенаСоСкидкой, 2); // Обязательное округление до копеек
// Проверяем, чтобы итоговая сумма по строке в ККТ совпала с 1С
ИтогоПоСтроке1С = ТоварСтрока.Сумма;
ИтогоПоСтрокеККТ = ЦенаСоСкидкой * ТоварСтрока.Количество;
Если ИтогоПоСтроке1С <> ИтогоПоСтрокеККТ Тогда
// Корректируем цену на 1 копейку или распределяем разницу
// чтобы избежать ошибки статуса ККТ
КонецЕсли;
Именно разница в одну копейку между ИтогоПоСтроке1С и ИтогоПоСтрокеККТ чаще всего становится триггером для команды ККТ аннулировать чек.
Сложные чеки со множеством позиций и скидок обрабатываются процессором Вики Принт 57Ф дольше обычного. Если в настройках 1С установлен слишком короткий таймаут ожидания ответа от устройства (например, 1-2 секунды), программа может решить, что связь потеряна, и прервать операцию в момент записи данных в фискальный накопитель. Рассмотрим рекомендации по настройке связи:
Подводя итог, можно сказать, что решение проблемы аннулирования чеков со скидкой на Вики Принт 57Ф требует комплексного подхода: обновления прошивки и драйверов до актуальных версий, настройки передачи чистой цены со скидкой и корректной обработки округлений в коде 1С. После выполнения этих шагов работа с кассой станет стабильной, а ошибки статуса ККТ перестанут беспокоить пользователей.