В процессе автоматизации автосервисов и автомоек на базе отраслевых решений «1С:Автосервис» (разработка компании «1С-Рарус» на базе «1С:Управление нашей фирмой») внедренцы и пользователи часто сталкиваются с проблемой при приеме безналичной оплаты. При попытке пробить чек на основании документа Заказ-наряд через документ Оплата платежной картой фискальный регистратор выдает ошибку: «сумма безналичных оплат больше суммы товарных позиций».
В этой статье мы подробно разберем, почему возникает данная ошибка, проанализируем внутренние механизмы взаимодействия конфигурации с драйвером ККТ и рассмотрим два основных пути решения проблемы: стандартный (методический) и программный (путем доработки системы).
---
Согласно требованиям Федерального закона № 54-ФЗ и форматов фискальных данных (ФФД), кассовый аппарат (ККТ) осуществляет строгий форматно-логический контроль отправляемых на печать данных. Сумма всех товарных позиций (с учетом количества, цены и примененных скидок) должна копейка в копейку совпадать с итоговой суммой оплаты, переданной в ККТ.
В типовых конфигурациях «1С:Автосервис» и «1С:УНФ» прошлых версий (включая ветку 1.6) документ Заказ-наряд содержит две ключевые и независимые табличные части:
Товары (запасные части, расходные материалы, моторные масла и т.д.).Работы (услуги автослесаря, диагностика, шиномонтаж и другие операции).Когда менеджер создает документ Оплата платежной картой (или вводит оплату через терминал) на основании проведенного документа Заказ-наряд, система автоматически пытается заполнить документ оплаты. Однако из-за особенностей типового алгоритма заполнения в документ оплаты переносятся данные только из табличной части Товары, в то время как табличная часть Работы игнорируется.
В результате получается следующая картина:
Заказ-наряд составляет, к примеру, 10 000 рублей (из них 3 000 рублей — запчасти, 7 000 рублей — работы).Товары на сумму 3 000 рублей.---
Если вы хотите обойтись исключительно типовым функционалом без изменения программного кода конфигурации, рассмотрим методически верную схему проведения платежа, рекомендуемую методологами «1С-Рарус».
Разберем этот процесс по шагам:
Когда клиент готов оплатить заказ-наряд картой, мы не пробиваем чек напрямую. Вместо этого на основании документа Заказ-наряд создаем документ Оплата платежной картой.
В созданном документе в качестве признака способа расчета мы указываем значение Аванс (или Предоплата). При этом табличная часть с конкретными товарами и работами не заполняется — в чек уходит только общая сумма платежа одной строкой «Аванс». ККТ успешно пробивает этот чек, так как сумма платежа соответствует единственной строке «Аванс».
После того как все работы по ремонту автомобиля завершены, мы открываем исходный документ Заказ-наряд.
Переходим на вкладку «Предоплата» и нажимаем кнопку «Подобрать». Программа предложит выбрать ранее созданный документ оплаты (наш авансовый платеж по карте). Выбираем его и переносим в документ.
Теперь мы можем пробить финальный чек непосредственно из самого документа Заказ-наряд (нажав на кнопку с изображением кассового аппарата или кнопку «Оплатить»).
В этот момент программа сформирует полную фискальную XML-структуру для кассового аппарата. В чеке будут построчно перечислены все позиции: и фактически установленные запчасти (товары), и выполненные авторемонтные работы. В качестве способа оплаты для всех этих строк будет указан Зачет аванса (или Предварительная оплата). Итоговая сумма к доплате на кассе будет равна 0 рублей, и ККТ успешно напечатает закрывающий чек.
---
Описанная выше двухэтапная схема с авансом и его последующим зачетом часто кажется кассирам и мастерам-приемщикам избыточной и неудобной, особенно в условиях высокой загрузки автосервиса или автомойки. В таком случае оптимальным решением будет небольшая программная доработка конфигурации.
Проанализируем ситуацию: для корректного списания материалов со склада и отражения выручки по всем регистрам документооборот розничной точки должен выглядеть так:
Заказ-наряд → Чек ККМ → Отчет о розничных продажах
Для реализации этой схемы нам необходимо доработать механизм создания документа Чек ККМ на основании Заказ-наряда, чтобы в табличную часть чека корректно переносились не только товары, но и работы. При этом работы должны попадать в табличную часть чека как услуги розничной продажи.
Рассмотрим пример кода, который можно внедрить в модуль менеджера документа Чек ККМ или реализовать с помощью механизма расширений (что является более предпочтительным, так как конфигурация останется на поддержке).
// Процедура заполнения Чека ККМ на основании Заказ-наряда в расширении конфигурации
&После("ЗаполнитьНаОсновании")
Процедура Расш_ЗаполнитьНаОсновании(ДокументОснование)
Если ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ЗаказНаряд") Тогда
// Очищаем стандартно заполненную табличную часть "Запасы" (или "Товары" в зависимости от версии УНФ)
ЭтотОбъект.Запасы.Очистить();
// 1. Переносим товары и материалы из Заказ-наряда
Для Каждого СтрокаТовара Из ДокументОснование.Товары Цикл
НоваяСтрока = ЭтотОбъект.Запасы.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТовара);
// Заполняем специфические реквизиты Чека ККМ
НоваяСтрока.ПризнакСпособаРасчета = Перечисления.ПризнакиСпособаРасчета.ПолныйРасчет;
КонецЦикла;
// 2. Переносим выполненные работы как услуги в единую табличную часть запасов чека
Для Каждого СтрокаРаботы Из ДокументОснование.Работы Цикл
НоваяСтрока = ЭтотОбъект.Запасы.Добавить();
// Сопоставляем реквизиты работы с товарной строкой чека
НоваяСтрока.Номенклатура = СтрокаРаботы.Работа;
НоваяСтрока.Характеристика = СтрокаРаботы.Характеристика;
НоваяСтрока.Количество = СтрокаРаботы.Количество;
НоваяСтрока.Цена = СтрокаРаботы.Цена;
НоваяСтрока.ПроцентСкидкиНаценки = СтрокаРаботы.ПроцентСкидкиНаценки;
НоваяСтрока.Сумма = СтрокаРаботы.Сумма;
НоваяСтрока.ПризнакСпособаРасчета = Перечисления.ПризнакиСпособаРасчета.ПолныйРасчет;
КонецЦикла;
// Рассчитываем итоговые суммы документа
ЭтотОбъект.СуммаДокумента = ЭтотОбъект.Запасы.Итог("Сумма");
КонецЕсли;
КонецПроцедуры
Благодаря этому несложному алгоритму при вводе Чека ККМ на основании Заказ-наряда вся номенклатура (и запчасти, и услуги по их установке) соберется в единой табличной части чека. При выборе безналичного способа оплаты вся сумма без копеечных расхождений уйдет на кассовый аппарат, и чек будет успешно распечатан.
---
Иногда даже при полном переносе всех строк в чек ККМ может возникать расхождение в 1 копейку из-за распределения автоматических скидок или расчета НДС. Чтобы обезопасить систему от подобных ошибок, выполним следующие настройки: