Почему АТОЛ 11Ф печатает «Последующая оплата (кредит)» вместо «Электронными» и как это исправить?

Программист 1С v8.3 (Управляемые формы) Торговля и дистрибуция
← На главную

При работе с контрольно-кассовой техникой АТОЛ (в частности, моделью 11Ф) программисты часто сталкиваются с неприятной ситуацией: при попытке пробить чек с безналичной оплатой в фискальном документе вместо привычного «Электронными» или «Безналичными» печатается текст «Последующая оплата (кредит)». Эта проблема особенно актуальна для конфигураций на базе 1С, использующих Библиотеку подключаемого оборудования (БПО), и связана с изменением логики обработки типов оплаты в формате фискальных данных (ФФД) 1.05.

В данной статье мы подробно разберем причины возникновения этой ошибки, проанализируем, как версии драйверов и прошивок влияют на результат, и рассмотрим несколько способов решения — от простых «костылей» до правильной настройки обмена данными.

Причина возникновения проблемы: переход на ФФД 1.05

Разберем ситуацию: в старых версиях прошивок ККТ и драйверов (ДТО 8) нумерация типов оплаты была достаточно простой. Значение 0 соответствовало наличным, а значение 1 — безналичным (электронным). Однако с введением формата ФФД 1.05 структура типов оплат в ККТ АТОЛ жестко зафиксировалась. Теперь касса ожидает следующие индексы:

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

Проблема заключается в том, что при обновлении прошивки кассы до версии, поддерживающей ФФД 1.05, или при смене драйверов на версию 9.х/10.х, индексы, которые передает 1С, могут интерпретироваться драйвером иначе. Если ваша обработка или версия БПО сформирует XML-пакет, где тип оплаты указан неверно или не соответствует внутренней таблице кассы, устройство подставит значение по умолчанию, которым часто оказывается именно «Кредит».

Решение №1: Эмпирический подбор индекса типа оплаты

Проанализируем самый быстрый способ решения для самописных конфигураций. Если вы используете формирование структуры оплаты вручную, попробуйте изменить передаваемый индекс. Как показывает практика многих разработчиков, в некоторых связках «драйвер-прошивка» значение 1 ошибочно вызывает кредит, а значение 2 — безналичные.

Рассмотрим пример кода, который часто используется в самописных решениях на БПО:


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

// Для безналичных оплат попробуем индекс 2 вместо 1
Если Объект.ПолученоБезНал > 0 Тогда 
    СтрокаОплаты = Новый Структура; 
    СтрокаОплаты.Вставить("ТипОплаты", 2); // Было 1, пробуем 2 для обхода ошибки с кредитом
    СтрокаОплаты.Вставить("Наименование", "Электронными"); 
    СтрокаОплаты.Вставить("Сумма", Объект.ПолученоБезНал); 
    ОбщиеПараметры.ТаблицаОплат.Добавить(СтрокаОплаты); 
КонецЕсли;

Важный момент: этот метод является «околонаучным тыком» и может перестать работать при следующем обновлении драйвера. Однако, если время поджимает, это рабочая временная мера.

Решение №2: Корректировка XML-пакета в типовых конфигурациях

Если проблема возникла в типовой конфигурации (например, 1С:Розница 2.2), причина может крыться в формировании XML-строки, которая отправляется драйверу. Проанализируем ситуацию: функция ПолучитьXMLПакетДляФискализацияЧека собирает данные, и если в ней жестко прописаны старые соответствия, касса будет печатать «Кредит».

Выясним, как внести изменения в модуль МенеджерОборудованияВызовСервера. Нам нужно найти место, где формируются данные чека, и убедиться, что для безналичной оплаты подставляется корректный тип. В некоторых случаях помогает принудительная замена типа оплаты в самом конце формирования пакета.

Посмотрим на пример логики исправления в 1С:


// В функции формирования XML пакета находим обход таблицы оплат
Для Каждого СтрокаОплаты Из ОбщиеПараметры.ТаблицаОплат Цикл
    // Если мы видим тип оплаты Безналичные (обычно 1 в БПО)
    // но касса воспринимает его как кредит, проверяем версию ФФД
    Если СтрокаОплаты.ТипОплаты = 1 Тогда
        // Возможно, ваша касса на ФФД 1.05 требует тег CashLessType со значением 2
        // или специфический атрибут Type в XML
    КонецЕсли;
КонецЦикла;

Также обратите внимание на специфику обработки ATOL_KKM_1C82_54FZ. Иногда сумма безналичных передается в теге CashLessType1, но из-за особенностей прошивки драйвер ожидает её в CashLessType2. Это часто встречается при использовании ДТО 8.15 или 8.16.

Решение №3: Обновление драйверов и прошивки

Разберем самый правильный, но трудозатратный способ. Проблема со «съехавшими» индексами часто лечится переходом на ДТО 10.х и обновлением Библиотеки подключаемого оборудования (БПО) в самой 1С.

  1. Версия драйвера: Установите актуальную версию драйвера АТОЛ (на текущий момент это ветка 10.х). Драйверы 8-й и 9-й серий официально признаны устаревшими и могут некорректно работать с новыми требованиями законодательства.
  2. Прошивка ККТ: Убедитесь, что версия прошивки кассы поддерживает ФФД 1.05 или 1.2. В новых прошивках индексы налогов и оплат стандартизированы.
  3. Настройка в 1С: После обновления драйвера переподключите кассу в справочнике «Подключаемое оборудование». Используйте актуальную версию драйвера «АТОЛ:ККТ с передачей данных в ОФД (10.х)».

Проблема со ставками НДС

Часто вместе с проблемой типов оплаты «вылезает» ошибка со ставками НДС (например, печатается 18% или 20% вместо 0%). Это происходит по той же причине: 1С передает номер строки из таблицы налогов ККТ, а не саму ставку. В старых прошивках под индексом «1» мог быть НДС 0%, а в новых там стоит НДС 18/20%.

Проанализируем, как это исправить:

Итоги и рекомендации

Подведем итоги. Если ваш АТОЛ 11Ф начал печатать «Кредит» вместо «Безналичных», выполните следующие действия:

  1. Проверьте, не менялась ли прошивка кассы. Если менялась — скорее всего, съехали индексы в коде.
  2. Попробуйте в коде изменить ТипОплаты с 1 на 2.
  3. Если используется типовая конфигурация, проверьте актуальность версии БПО и используемого драйвера.
  4. В случае работы через XML-пакеты, обратите внимание на теги CashLessType и соответствие типа оплаты версии ФФД.

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

← На главную