Почему аннулируется чек со скидкой на ККТ Вики Принт 57Ф в 1С:Розница?

Системный администратор 1С v8.3 (Управляемые формы) 1С:Розница Торговля и дистрибуция
← На главную

При работе с фискальными регистраторами семейства Вики Принт (Viki Print), в частности с моделью 57Ф, пользователи часто сталкиваются с критической ошибкой при попытке пробить чек, в котором применены автоматические или ручные скидки. Процесс прерывается сообщением: «При выполнении операции произошла ошибка: Функция не выполнима при данном статусе ККТ», а из самой кассы выходит нефискальный документ с надписью «Чек аннулирован». Проанализируем причины этой ситуации и разберем пошагово методы ее решения.

Причина ошибки: Разница в логике расчета скидок

Основная причина возникновения данной ошибки кроется в том, как учетная система 1С:Розница и внутреннее программное обеспечение кассы обрабатывают скидки. В современных реалиях работы по форматам фискальных данных (ФФД 1.05 и выше), кассовый аппарат ожидает получения итоговой цены за единицу товара, которая уже включает в себя все примененные скидки.

Разберем ситуацию подробнее: если 1С пытается передать в кассу первоначальную цену товара и отдельно сумму скидки как корректирующую позицию, математический алгоритм ККТ может выдать ошибку округления. Если итоговая сумма по строке (Цена * Количество - Скидка) не совпадает с точностью до копейки с тем, что рассчитала сама касса, устройство блокирует печать чека и переходит в статус ошибки. Именно поэтому возникает сообщение о том, что функция не выполнима при текущем статусе.

Шаг 1: Обновление драйверов и компонент

Первым делом нам необходимо убедиться, что используется актуальное программное обеспечение. Рассмотрим алгоритм обновления:

  1. Перейдем на официальный сайт производителя (Дримкас) и загрузим актуальный Менеджер обновлений.
  2. Выполним обновление прошивки самой кассы. Старые версии прошивок некорректно работают с тегами скидок в рамках ФФД 1.05.
  3. Проверим версию установленного драйвера в 1С. Нам необходима компонента версии не ниже 925.
  4. Установим Дримкас Универсальный драйвер (USB-драйвер), который обеспечивает стабильную эмуляцию COM-порта.

Важно помнить, что для корректной работы 1С:Розница с устройствами Вики Принт необходимо использовать внешнюю компоненту, которая поставляется производителем специально для интеграции с библиотекой подключаемого оборудования (БПО).

Шаг 2: Настройка способа передачи скидок в 1С

Проанализируем настройки торгового оборудования в самой программе 1С. Выясним, как именно передаются данные в кассу. Для исправления ошибки аннулирования чека часто помогает изменение логики формирования XML-пакета, который 1С отправляет на ККТ.

В ФФД 1.05 фактически отсутствует передача скидки как отдельного объекта. Мы должны передавать в кассу Цена со скидкой. Посмотрим, как это реализуется программно на уровне драйвера:

Сумма по каждой позиции должна рассчитываться как Округлить(Цена * Количество - СуммаСкидки). Если ваша конфигурация позволяет, в настройках драйвера ККТ в 1С следует попробовать отключить флаг «Выводить скидки в чеке». В этом случае программа будет передавать в кассу уже готовую чистую цену товара, и касса не будет пытаться производить дополнительные вычисления, которые ведут к ошибкам округления.

Шаг 3: Сброс ошибочного статуса через утилиту Fito

Если чек был аннулирован, ККТ может остаться в «зависшем» состоянии (открытый чек или ошибка фазы). Чтобы вернуть кассу в рабочее состояние, выполним следующие действия в сервисной утилите Fito:

  1. Запустим утилиту Fito и установим связь с кассой.
  2. Перейдем в раздел «Тестирование» или «Сервис».
  3. Найдем и выполним команду «Аннулировать чек» (или «Отмена документа»).
  4. Убедимся, что статус кассы сменился на 24-часовая смена открыта, а фаза документа — на 0 (документ закрыт).

Только после этого можно повторять попытку пробития чека из 1С.

Шаг 4: Программная проверка перед печатью

Программистам 1С при доработке механизмов печати стоит обратить внимание на структуру данных. Рассмотрим пример формирования строки чека, который минимизирует риск аннулирования документа:


// Пример логики подготовки данных для ККТ Вики Принт
ЦенаСоСкидкой = ТоварСтрока.Цена - (ТоварСтрока.СуммаСкидки / ТоварСтрока.Количество);
ЦенаСоСкидкой = Окр(ЦенаСоСкидкой, 2); // Обязательное округление до копеек

// Проверяем, чтобы итоговая сумма по строке в ККТ совпала с 1С
ИтогоПоСтроке1С = ТоварСтрока.Сумма;
ИтогоПоСтрокеККТ = ЦенаСоСкидкой * ТоварСтрока.Количество;

Если ИтогоПоСтроке1С <> ИтогоПоСтрокеККТ Тогда
    // Корректируем цену на 1 копейку или распределяем разницу
    // чтобы избежать ошибки статуса ККТ
КонецЕсли;

Именно разница в одну копейку между ИтогоПоСтроке1С и ИтогоПоСтрокеККТ чаще всего становится триггером для команды ККТ аннулировать чек.

Шаг 5: Регулировка таймаутов связи

Сложные чеки со множеством позиций и скидок обрабатываются процессором Вики Принт 57Ф дольше обычного. Если в настройках 1С установлен слишком короткий таймаут ожидания ответа от устройства (например, 1-2 секунды), программа может решить, что связь потеряна, и прервать операцию в момент записи данных в фискальный накопитель. Рассмотрим рекомендации по настройке связи:

Подводя итог, можно сказать, что решение проблемы аннулирования чеков со скидкой на Вики Принт 57Ф требует комплексного подхода: обновления прошивки и драйверов до актуальных версий, настройки передачи чистой цены со скидкой и корректной обработки округлений в коде 1С. После выполнения этих шагов работа с кассой станет стабильной, а ошибки статуса ККТ перестанут беспокоить пользователей.

← На главную