При работе в старых конфигурациях 1С, таких как «Комплексная автоматизация 1.1», «Управление производственным предприятием 1.3» или «Управление торговлей 10.3», пользователи часто сталкиваются с некорректным заполнением признаков способа расчета в фискальных чеках ККТ. Типичный сценарий: клиент частично оплатил отгрузку в прошлом периоде, сейчас вносит финальный платеж, а касса печатает чек, в котором сумма предыдущего платежа почему-то указывается как «последующая оплата (кредит)». В результате перед налоговой формируется неверная картина расчетов, будто клиент остался должен организации.
В этой статье мы подробно разберем, почему возникает данная техническая ошибка, как этот процесс должен выглядеть с точки зрения законодательства (ФФД 1.05) и какие практические шаги нужно предпринять для исправления ситуации в программе 1С.
Давайте проанализируем, как работает алгоритм печати чеков в старых конфигурациях 1С на обычных формах. Когда мы пробиваем чек из документа ПриходныйКассовыйОрдер (ПКО), связанного с документом РеализацияТоваровУслуг (РТУ), программа выполняет следующие действия:
Сумма реализации - Сумма текущего платежа = Остаток (в нашем примере: 29 473 - 9 473 = 20 000 руб.).Главная проблема алгоритма: программа не анализирует историю взаиморасчетов по данной сделке. Она «не видит», что эти 20 000 руб. уже были успешно оплачены ранее другим кассовым ордером или платежным поручением в предыдущем периоде. Алгоритм просто сопоставляет текущую оплату с общей суммой отгрузки «в лоб».
Согласно методическим рекомендациям ФНС по применению формата фискальных данных (ФФД) 1.05, поэтапная сделка (предоплата — отгрузка — доплата) должна сопровождаться тремя этапами формирования чеков:
Предоплата (частичная или 100%). В качестве предмета расчета указывается платеж, а не конкретный товар, так как передача товара еще не состоялась.Частичный расчет и кредит. В нем отражается:
Оплата кредита. В чеке фигурирует только принимаемая сумма (9 473 руб.), а предмет расчета классифицируется как оплата по кредиту. Никакие старые долги или суммы прошлых авансов здесь упоминаться не должны.В нашем случае программа на третьем этапе вместо признака Оплата кредита на сумму 9 473 руб. пытается повторно разложить чек на товары из реализации и заявить о новом кредите на 20 000 руб.
Самый простой вариант решить проблему без изменения программного кода — это ручная корректировка параметров чека перед его отправкой на фискальный регистратор. В последних релизах конфигурации «Комплексная автоматизация 1.1» разработчики добавили возможность изменять параметры чека.
Выясним, как это сделать по шагам:
ПриходныйКассовыйОрдер на финальную сумму (9 473 руб.).Иногда некорректное появление слова «кредит» в чеке связано не с алгоритмом 1С, а со сбившимися настройками интеграции с драйвером ККТ. В фискальных накопителях и драйверах (например, Штрих-М или Атол) типы оплат жестко закодированы в таблицах:
Если в настройках подключения ККТ в 1С неправильно сопоставлены индексы оплат, программа при попытке пробить чек по безналичному расчету или при зачете аванса может передать в ККТ команду задействовать код таблицы №4. ККТ послушно напечатает на чеке слово «Кредит».
Для исправления этой настройки выполним следующие действия:
Если подобные операции происходят у вас регулярно, ручной ввод признаков расчета приведет к человеческим ошибкам. В таком случае лучшим решением будет небольшая доработка конфигурации. Нам необходимо скорректировать модуль печати чеков ККТ, чтобы он автоматически проверял остаток долга по договору или сделке на момент проведения платежа.
Рассмотрим пример того, как можно переписать типовой запрос получения остатка долга по сделке в модуле обработки обслуживания ККТ или в самом документе ПКО:
// Пример запроса для анализа реального остатка долга по сделке перед печатью чека
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВзаиморасчетыОстатки.СуммаВзаиморасчетовОстаток КАК ДолгОстаток
|ИЗ
| РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(
| &МоментВремени,
| ДоговорКонтрагента = &Договор
| И Сделка = &Сделка
| ) КАК ВзаиморасчетыОстатки";
Запрос.УстановитьПараметр("МоментВремени", Новый Граница(ЭтотОбъект.МоментВремени(), ВидГраницы.Исключая));
Запрос.УстановитьПараметр("Договор", ЭтотОбъект.ДоговорКонтрагента);
Запрос.УстановитьПараметр("Сделка", ЭтотОбъект.ДокументРасчетовСКонтрагентом);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
РеальныйДолг = Выборка.ДолгОстаток;
Иначе
РеальныйДолг = 0;
КонецЕсли;
// Если реальный долг равен текущему платежу, переопределяем признак способа расчета
Если РеальныйДолг <= ЭтотОбъект.СуммаДокумента Тогда
// Устанавливаем признак способа расчета "Оплата кредита" вместо частичного расчета
ПараметрыЧека.ПризнакСпособаРасчета = Перечисления.ПризнакиСпособаРасчета.ОплатаКредита;
КонецЕсли;
Внедрение такого алгоритма позволит программе автоматически определять, закрывает ли текущий платеж сделку целиком, и не выводить на печать несуществующий долг покупателя.
Если вы уже пробили чек, в котором ошибочно отразилась «последующая оплата (кредит) — 20 000 руб.», оставлять ситуацию без внимания не рекомендуется. Для налоговых органов это выглядит так, будто у вас осталась незакрытая дебиторская задолженность по кассе, которая фактически была оплачена еще в прошлом году.
Разберем, как исправить эту ошибку:
Возврат прихода, полностью дублирующий ошибочный чек (с неверной «последующей оплатой»). Это аннулирует некорректную операцию в базе ФНС. Затем пробейте правильный чек с признаком Приход, указав верный способ расчета — «Оплата кредита» на сумму 9 473 руб.Применение этих несложных правил и настроек поможет вам содержать кассовую отчетность в идеальном порядке и избежать штрафных санкций со стороны контролирующих органов.