Почему в чеке ККТ из ПКО пишется «последующая оплата (кредит)» на сумму предыдущей оплаты и как это исправить?

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

При работе в старых конфигурациях 1С, таких как «Комплексная автоматизация 1.1», «Управление производственным предприятием 1.3» или «Управление торговлей 10.3», пользователи часто сталкиваются с некорректным заполнением признаков способа расчета в фискальных чеках ККТ. Типичный сценарий: клиент частично оплатил отгрузку в прошлом периоде, сейчас вносит финальный платеж, а касса печатает чек, в котором сумма предыдущего платежа почему-то указывается как «последующая оплата (кредит)». В результате перед налоговой формируется неверная картина расчетов, будто клиент остался должен организации.

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

Техническая причина: почему 1С ошибается при печати чека

Давайте проанализируем, как работает алгоритм печати чеков в старых конфигурациях 1С на обычных формах. Когда мы пробиваем чек из документа ПриходныйКассовыйОрдер (ПКО), связанного с документом РеализацияТоваровУслуг (РТУ), программа выполняет следующие действия:

  1. Обращается к связанной накладной (РТУ), чтобы получить товарный состав и общую сумму отгрузки (например, 29 473 руб.).
  2. Сопоставляет общую сумму реализации с суммой текущего ПКО (например, 9 473 руб.).
  3. Вычисляет разницу по простой формуле: Сумма реализации - Сумма текущего платежа = Остаток (в нашем примере: 29 473 - 9 473 = 20 000 руб.).
  4. Программа автоматически делает вывод, что этот остаток в размере 20 000 руб. является неоплаченным долгом (кредитом), и отправляет на ККТ признак «последующая оплата (кредит)» на эту сумму.

Главная проблема алгоритма: программа не анализирует историю взаиморасчетов по данной сделке. Она «не видит», что эти 20 000 руб. уже были успешно оплачены ранее другим кассовым ордером или платежным поручением в предыдущем периоде. Алгоритм просто сопоставляет текущую оплату с общей суммой отгрузки «в лоб».

Как это должно работать по закону (ФФД 1.05)

Согласно методическим рекомендациям ФНС по применению формата фискальных данных (ФФД) 1.05, поэтапная сделка (предоплата — отгрузка — доплата) должна сопровождаться тремя этапами формирования чеков:

В нашем случае программа на третьем этапе вместо признака Оплата кредита на сумму 9 473 руб. пытается повторно разложить чек на товары из реализации и заявить о новом кредите на 20 000 руб.

Способ 1. Ручное изменение признака способа расчета в ПКО

Самый простой вариант решить проблему без изменения программного кода — это ручная корректировка параметров чека перед его отправкой на фискальный регистратор. В последних релизах конфигурации «Комплексная автоматизация 1.1» разработчики добавили возможность изменять параметры чека.

Выясним, как это сделать по шагам:

  1. Откроем документ ПриходныйКассовыйОрдер на финальную сумму (9 473 руб.).
  2. Перед нажатием кнопки «Чек» обратим внимание на табличную часть или форму настройки параметров чека (в зависимости от релиза она может открываться в виде отдельного диалогового окна).
  3. Найдем поле «Признак способа расчета» и вручную заменим установленное по умолчанию значение на «Оплата кредита» (или «Оплата после передачи с рассрочкой»).
  4. Пробьем чек ККТ. При таком выборе программа не будет обращаться к списку товаров из накладной, а сформирует чек на один платеж с корректной суммой без упоминания виртуального долга в 20 000 руб.

Способ 2. Проверка сопоставления типов оплат в настройках торгового оборудования

Иногда некорректное появление слова «кредит» в чеке связано не с алгоритмом 1С, а со сбившимися настройками интеграции с драйвером ККТ. В фискальных накопителях и драйверах (например, Штрих-М или Атол) типы оплат жестко закодированы в таблицах:

Если в настройках подключения ККТ в 1С неправильно сопоставлены индексы оплат, программа при попытке пробить чек по безналичному расчету или при зачете аванса может передать в ККТ команду задействовать код таблицы №4. ККТ послушно напечатает на чеке слово «Кредит».

Для исправления этой настройки выполним следующие действия:

  1. Перейдем в меню Сервис — Торговое оборудование — Подключение и настройка торгового оборудования.
  2. Выберем нашу кассу и откроем форму ее параметров (нажав кнопку «Параметры подключения» или «Настроить»).
  3. Найдем вкладку или таблицу «Таблица соответствия типов оплат».
  4. Убедимся, что безналичным оплатам в 1С соответствует именно тот индекс, который прописан в драйвере ККТ (обычно индекс 2 или 1 в зависимости от модели). При необходимости отредактируем соответствия и сохраним настройки.

Способ 3. Доработка алгоритма печати чека (для программистов)

Если подобные операции происходят у вас регулярно, ручной ввод признаков расчета приведет к человеческим ошибкам. В таком случае лучшим решением будет небольшая доработка конфигурации. Нам необходимо скорректировать модуль печати чеков ККТ, чтобы он автоматически проверял остаток долга по договору или сделке на момент проведения платежа.

Рассмотрим пример того, как можно переписать типовой запрос получения остатка долга по сделке в модуле обработки обслуживания ККТ или в самом документе ПКО:


// Пример запроса для анализа реального остатка долга по сделке перед печатью чека
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ВзаиморасчетыОстатки.СуммаВзаиморасчетовОстаток КАК ДолгОстаток
    |ИЗ
    |	РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(
    |		&МоментВремени,
    |		ДоговорКонтрагента = &Договор
    |			И Сделка = &Сделка
    |	) КАК ВзаиморасчетыОстатки";

Запрос.УстановитьПараметр("МоментВремени", Новый Граница(ЭтотОбъект.МоментВремени(), ВидГраницы.Исключая));
Запрос.УстановитьПараметр("Договор", ЭтотОбъект.ДоговорКонтрагента);
Запрос.УстановитьПараметр("Сделка", ЭтотОбъект.ДокументРасчетовСКонтрагентом);

РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
    Выборка = РезультатЗапроса.Выбрать();
    Выборка.Следующий();
    РеальныйДолг = Выборка.ДолгОстаток;
Иначе
    РеальныйДолг = 0;
КонецЕсли;

// Если реальный долг равен текущему платежу, переопределяем признак способа расчета
Если РеальныйДолг <= ЭтотОбъект.СуммаДокумента Тогда
    // Устанавливаем признак способа расчета "Оплата кредита" вместо частичного расчета
    ПараметрыЧека.ПризнакСпособаРасчета = Перечисления.ПризнакиСпособаРасчета.ОплатаКредита;
КонецЕсли;

Внедрение такого алгоритма позволит программе автоматически определять, закрывает ли текущий платеж сделку целиком, и не выводить на печать несуществующий долг покупателя.

Что делать с уже пробитыми ошибочными чеками?

Если вы уже пробили чек, в котором ошибочно отразилась «последующая оплата (кредит) — 20 000 руб.», оставлять ситуацию без внимания не рекомендуется. Для налоговых органов это выглядит так, будто у вас осталась незакрытая дебиторская задолженность по кассе, которая фактически была оплачена еще в прошлом году.

Разберем, как исправить эту ошибку:

  1. Вариант с чеком коррекции: На старых форматах (ФФД 1.05) создание чеков коррекции на сложные операции зачета авансов может быть затруднено технически. На практике такой способ часто приводит к еще большему запутыванию фискальных данных.
  2. Вариант через «Возврат прихода»: Это наиболее надежный и распространенный способ исправления. Сначала пробейте чек с признаком расчета Возврат прихода, полностью дублирующий ошибочный чек (с неверной «последующей оплатой»). Это аннулирует некорректную операцию в базе ФНС. Затем пробейте правильный чек с признаком Приход, указав верный способ расчета — «Оплата кредита» на сумму 9 473 руб.

Применение этих несложных правил и настроек поможет вам содержать кассовую отчетность в идеальном порядке и избежать штрафных санкций со стороны контролирующих органов.

← На главную