При использовании старых релизов конфигурации 1С:Управление торговлей 11.1 в связке с современными онлайн-кассами (ККТ с передачей данных по 54-ФЗ) пользователи часто сталкиваются с ситуацией, когда скидки из документов продажи не печатаются в чеке или касса выдает ошибку при попытке фискализации. Разберем причины такого поведения и рассмотрим технические варианты решения задачи.
Выясним причину проблемы: требования 54-ФЗ и форматы ФФД
Проанализируем, почему старый механизм печати скидок перестал работать:
Запрет на передачу скидки отдельной операцией. В кассах старого образца (с ЭКЛЗ) допускалась передача базовой цены товара с отдельной строкой скидки на весь чек или на позицию. В онлайн-кассах по формату фискальных документов (ФФД) каждая товарная позиция должна содержать итоговую стоимость и цену за единицу, в которых все скидки и наценки уже рассчитаны.
Устаревший модуль БПО в УТ 11.1. В ранних версиях 1С:УТ 11.1 подсистема подключаемого оборудования отправляет в драйвер ККТ базовую цену и отдельное поле со скидкой. Современные драйверы онлайн-касс (например, «Штрих-М» или «АТОЛ») либо отбрасывают эту команду, либо блокируют печать из-за несовпадения итоговой суммы чека с суммой строк.
Способ 1. Доработка алгоритма формирования строк чека в УТ 11.1
Если конфигурация сильно доработана и оперативно обновить ее невозможно, решим проблему корректировкой кода передачи данных в фискальный регистратор. Рассмотрим ключевые шаги такой доработки:
Пересчет цены за единицу товара. Перед отправкой таблицы товаров в драйвер ККТ необходимо пересчитать цену каждой позиции:
ЦенаСоСкидкой = ИтоговаяСуммаСтроки / Количество;
В драйвер передается уже рассчитанная конечная цена с учетом предоставленной скидки.
Алгоритм расщепления строк (борьба с погрешностью округления). При распределении скидки на несколько единиц одного товара (например, 3 штуки со скидкой 10%) часто возникают дробные копейки. Если умножить округленную цену на количество, итоговая сумма строки может разойтись с суммой по документу на 1–2 копейки. В таком случае касса вернет ошибку. Для устранения проблемы строку с количеством больше 1 программно разбивают на две части: например, 2 единицы по базовой округленной цене и 1 единица по скорректированной цене, компенсирующей копейку.
Вывод информации о скидке нефискальным текстом. Поскольку фискализируется только цена со скидкой, покупатель не видит размера скидки в чеке. Чтобы отобразить выгоду клиента, перед фискальной строкой товара или в подвале чека вызывают метод драйвера для печати текстовых нефискальных строк.
Способ 2. Обновление конфигурации до УТ 11.3 / 11.4 с переносом доработок
Самый надежный и долгосрочный вариант — переход на актуальные версии линейки УТ, где реализована современная «Библиотека подключаемого оборудования» (БПО), полностью поддерживающая актуальные требования ФФД.
Если в базе выполнено много доработок, разберем типичные технические сложности при обновлении с 11.1 на 11.2/11.3 и способы их обхода:
Обращение к дополнительным реквизитам. В версиях 11.2 и 11.3 изменились системные наименования и структура некоторых дополнительных реквизитов. Если в доработках использовался поиск по наименованию, в коде модуля следует предусмотреть проверку версии конфигурации или заменить жесткий поиск:
Изменение механизма резервирования товаров. Начиная с версии 11.2 была полностью переработана логика резервирования и регистры накопления остатков и резервов. Все нетиповые отчеты и внешние печатные формы, анализирующие остатки и заказы, потребуется адаптировать под новую структуру регистров.
Изменения в интерфейсе документов. В документах ЗаказКлиента и РеализацияТоваровУслуг товарная часть была перенесена на отдельную вкладку. Для сохранения привычного интерфейса пользователей можно программно скорректировать форму в общем модуле МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере().
Учет упаковок и единиц измерения. В версиях 11.2+ изменилась структура хранения единиц измерения. В кастомных запросах необходимо актуализировать обращения к реквизитам упаковок и единиц.
Способ 3. Использование внешних обработок обслуживания или кассового сервера
Разберем альтернативные варианты, позволяющие не затрагивать модули конфигурации:
Подключение внешней обработки ККТ. Создается внешняя обработка торгового оборудования по стандарту БПО, внутри которой формируется XML-пакет чека с предварительным распределением скидок по строкам.
Промежуточный кассовый сервер. Установка специализированного кассового ПО (прокси-драйвера). Конфигурация 1С передает данные о продаже через API сторонней службы, а служба самостоятельно производит выравнивание копеек, расчет скидок и печать фискального чека на аппарате.