Почему при печати чека из платежного поручения в УПП выводится «Последующая оплата "Кредит"» вместо «Электронно»?

Программист 1С v8.3 (Обычные формы) Налоговый учет IT и автоматизация бизнеса
← На главную

При переходе на новые релизы конфигурации 1С:Управление производственным предприятием (УПП) редакции 1.3 пользователи часто сталкиваются с неприятной ситуацией: при печати чека из документа Платежное поручение входящее для физических лиц на чеке вместо ожидаемого типа оплаты «Электронно» (безналичными) печатается «Последующая оплата "Кредит"» (или «Постоплата»). Более того, такие чеки в личном кабинете ОФД отображаются некорректно и не попадают в итоги по электронным (безналичным) расчетам, хотя сам фискальный документ регистрируется.

В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем взаимодействие драйверов ККТ с платформой 1С, изучим методологию работы с чеками по 54-ФЗ и рассмотрим пути устранения этой ошибки. Также мы разберем сопутствующую техническую проблему — ошибку обращения к свойству ИмяПредопределенныхДанных при обновлении ставок НДС до 20% в старых базах.

---

Причина проблемы: конфликт форматов ФФД 1.05 и устаревших драйверов

Для начала выясним первопричину сбоя. В старых форматах фискальных данных (ФФД 1.0) и устаревших версиях драйверов торгового оборудования (например, АТОЛ ДТО 8.х) типы оплат кодировались по упрощенной схеме. При переходе на формат ФФД 1.05 и обновлении прошивок ККТ под требования законодательства, внутренний протокол обмена ККТ претерпел значительные изменения.

В современных прошивках ККТ АТОЛ сетка типов оплат выглядит следующим образом:

  1. 0 — Наличные
  2. 1 — Безналичные (электронные)
  3. 2 — Предварительная оплата (Аванс)
  4. 3 — Последующая оплата (Кредит)
  5. 4 — Иная форма оплаты (Встречное предоставление)

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

---

Решение №1: Переход на 10-ю версию драйверов АТОЛ (ДТО 10)

Самым надежным и методически верным решением является полный отказ от использования 8-й и 9-й линеек драйверов АТОЛ и переход на актуальный 10-й драйвер. Выполним следующие шаги:

  1. Скачаем и установим актуальную версию ДТО 10 (АТОЛ) на рабочий компьютер.
  2. В конфигурации УПП зайдем в меню Сервис — Торговое оборудование — Подключение и настройка торгового оборудования (в режиме обычных форм).
  3. Добавим новое устройство, выбрав обработку обслуживания, поддерживающую драйвер 10-й версии.
  4. Настроим параметры связи с кассовым аппаратом и обязательно выполним тест устройства.

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

---

Решение №2: Корректировка таблицы оплат в коде 1С (для ДТО 8)

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

Для этого проанализируем функцию формирования XML-пакета для фискализации чека. Обычно она находится в общем модуле МенеджерОборудованияВызовСервера или в модуле обработки обслуживания ККТ. Найдем фрагмент кода, отвечающий за заполнение таблицы оплат, и сопоставим его со следующим алгоритмом:


Если ТипЗнч(Ссылка) = Тип("ДокументСсылка.ОплатаОтПокупателяПлатежнойКартой") 
   Или ТипЗнч(Ссылка) = Тип("ДокументСсылка.ПлатежноеПоручениеВходящее") Тогда
    // Для электронных безналичных оплат передаем соответствующий тип ККТ
    СтрокаОплаты.Вставить("ТипОплаты", ПредопределенноеЗначение("Перечисление.ТипыОплатыККТ.Электронно"));
    СтрокаОплаты.Вставить("Наименование", "Безналичные");
Иначе
    // Для наличных расчетов
    СтрокаОплаты.Вставить("ТипОплаты", PresettedValue("Перечисление.ТипыОплатыККТ.Наличные"));
    СтрокаОплаты.Вставить("Наименование", "Наличные");
КонецЕсли;

Также рекомендуется зайти в настройки самого драйвера АТОЛ через утилиту «Тест драйвера ККТ», перейти в раздел «Свойства — Параметры ККТ», найти вкладку «Оплаты» и проверить наименования типов оплат под индексами от 0 до 4. Названия должны соответствовать требованиям ФФД 1.05.

---

Как правильно пробивать чеки по 54-ФЗ при безналичных расчетах

Разберем методологию формирования чеков, так как путаница с «Кредитом» и «Авансом» часто возникает из-за нарушения цепочки документов. При получении оплаты от физического лица по безналичному расчету (через клиент-банк) и последующей отгрузке мы обязаны сформировать два чека:

  1. Первый чек (Предоплата): Формируется из документа Платежное поручение входящее в момент подтверждения банком поступления денег.
    • Признак способа расчета: Предоплата 100% (или Аванс).
    • Признак предмета расчета: Платеж.
    • Тип оплаты: Безналичные (деньги поступили на р/с).
  2. Второй чек (Отгрузка): Формируется из документа Реализация товаров и услуг в момент передачи товара или оказания услуги.
    • Признак способа расчета: Полный расчет.
    • Признак предмета расчета: Товар (или Услуга).
    • Тип оплаты: Зачет аванса (в ККТ передается как тип оплаты «Предоплата/Аванс», реальные деньги в кассу не поступают).

Если мы нарушим эту цепочку и пробьем чек из реализации без указания документа предоплаты в табличной части Документы расчетов с контрагентом, система 1С посчитает, что отгрузка происходит в долг, и автоматически присвоит чеку признак способа расчета «Передача в кредит», а тип оплаты установит в «Постоплата (Кредит)».

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

  1. В договоре с контрагентом установим флаг «Вести взаиморасчеты по документам расчетов».
  2. В документе Реализация товаров и услуг на вкладке «Предоплата» (или в таблице взаиморасчетов) укажем соответствующее входящее платежное поручение.
  3. Только после этого нажмем кнопку «Чек» на форме реализации.

---

Бонус: Решение ошибки «ИмяПредопределенныхДанных» в старых базах (Альфа-Авто 4, УПП 1.3)

В процессе обновления кассовых механизмов для работы с новыми ставками НДС (например, при переходе на 20% в конфигурациях уровня УПП 1.3 или Альфа-Авто 4.1) разработчики часто сталкиваются с ошибкой при запуске процедур обновления ставок:

Поле объекта не обнаружено (ИмяПредопределенныхДанных)

Проанализируем причину этой ошибки. Возможность программно изменять имя предопределенных данных (свойство ИмяПредопределенныхДанных у объектов справочников) появилась только в платформе 1С:Предприятие 8.3. Однако многие старые конфигурации запускаются на платформе 8.3, но имеют установленный режим совместимости с версией 8.2. В этом режиме данное свойство недоступно, что и вызывает критический сбой системы при выполнении программного кода переноса предопределенности со ставки 18% на 20%.

Посмотрим на ошибочный участок кода:


СтавкаНДС20.ИмяПредопределенныхДанных = СтавкаНДС.ИмяПредопределенныхДанных;
СтавкаНДС.ИмяПредопределенныхДанных = "НеИспользоватьОсновнаяСтавкаНДС";

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

  1. Откроем базу в режиме Конфигуратор.
  2. Найдем справочник СтавкиНДС и откроем список его предопределенных данных.
  3. Найдем элемент ОсновнаяСтавкаНДС (который ссылался на 18%) и вручную переименуем его имя (идентификатор метаданных) в НеИспользоватьОсновнаяСтавкаНДС. При этом сама ссылка в базе данных (УИД) сохранится, старые документы не пострадают.
  4. Создадим новый предопределенный элемент с именем ОсновнаяСтавкаНДС.
  5. Запустим базу в режиме «1С:Предприятие» и для вновь созданной предопределенной ставки укажем значение 20%.

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

← На главную