Почему в 1С:Управление торговлей 10.3 на кассе АТОЛ всегда печатается «ПОЛНЫЙ РАСЧЕТ» вместо аванса или предоплаты и как это исправить?

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

При переходе на онлайн-кассы и внедрении требований форматов фискальных данных (ФФД 1.05 и выше) многие компании, использующие нетиповые или давно не обновлявшиеся конфигурации, сталкиваются с неприятной проблемой. Мы настраиваем частичную оплату, принимаем авансы или оформляем рассрочку платежа, но на чеке упрямо печатается признак способа расчета «ПОЛНЫЙ РАСЧЕТ».

Особенно часто с этой ситуацией сталкиваются пользователи конфигурации «1С:Управление торговлей 10.3» (УТ 10.3), когда пытаются вручную перенести («выдернуть») механизмы работы с торговым оборудованием из последних официальных обновлений в свою рабочую сильно измененную базу. Давайте подробно разберем, почему так происходит, проанализируем внутренние механизмы взаимодействия 1С с кассовым оборудованием АТОЛ и найдем практические способы решения этой проблемы.

Выясняем причины: почему касса «не видит» авансы и предоплаты?

Для того чтобы кассовый аппарат (например, популярный АТОЛ 30Ф) корректно вывел на чеке нужный признак способа расчета (будь то Аванс, Предоплата 100%, Частичный расчет и кредит или Передача в кредит), должны слаженно сработать три звена цепи:

  1. Конфигурация 1С должна правильно сформировать структуру XML-пакета чека, сопоставить реквизиты документов с правильными кодами ФФД 1.05 и передать эти данные в драйвер.
  2. Обработка обслуживания и Драйвер ККТ должны без искажений принять этот XML-пакет, распознать теги и передать соответствующие команды на фискальный накопитель.
  3. Параметры самой ККТ должны быть настроены так, чтобы эти данные выводились на печать на бумажной чековой ленте.

Если хотя бы в одном из этих звеньев происходит сбой, драйвер кассы по умолчанию подставляет самое безопасное значение — «ПОЛНЫЙ РАСЧЕТ», чтобы чек вообще пробился и не возникло ошибки фискализации. Рассмотрим подробнее проблемы на каждом уровне.

Причина 1. Проблема на уровне программного кода 1С (Жесткое кодирование)

При частичном переносе подсистемы торгового оборудования (ТО) из новых релизов УТ 10.3 в старую базу разработчики часто переносят только сами формы документов, ПКО, РКО и обработки фискализации, упуская логику заполнения тегов ФФД 1.05. В результате в общем модуле или в обработке обслуживания может остаться упрощенная или устаревшая логика подготовки данных.

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


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

// Ошибка: жестко прописаны значения по умолчанию без анализа логики операции
СтрокаЧека.Вставить("ПризнакСпособаРасчета", 4); // 4 соответствует "Полный расчет"
СтрокаЧека.Вставить("ПризнакПредметаРасчета", 1); // 1 соответствует "Товар"

Если код подготовки данных написан подобным образом, то какой бы вид операции вы ни выбирали в документе-источнике (будь то аванс в Приходном кассовом ордере или частичная оплата в реализации), драйвер кассы всегда будет получать инструкцию напечатать «ПОЛНЫЙ РАСЧЕТ».

Причина 2. Ограничения устаревшего драйвера АТОЛ 8.x

Очень часто в старых связках используется драйвер АТОЛ 8.16.x (ДТО 8). Этот драйвер имеет критическую особенность работы с ФФД 1.05 в связке с 1С:

Решение проблемы по шагам

Проанализируем возможные варианты исправления ситуации и выберем наиболее надежные алгоритмы действий.

Шаг 1. Переход на современный драйвер АТОЛ 10.x (Рекомендуемый путь)

Использование ДТО 10 снимает большинство проблем совместимости с ФФД 1.05. Этот драйвер изначально проектировался под современные требования законодательства.

  1. Установите на рабочий компьютер актуальную версию драйвера ДТО 10 (рекомендуется использовать версии 10.8.x и выше).
  2. В конфигурации 1С перейдите в меню Сервис — Торговое оборудование — Подключение и настройка торгового оборудования.
  3. Замените обработку обслуживания ККТ. Вместо старой обработки для 8-й версии (ATOLkkt.epf) необходимо использовать современную обработку обслуживания с поддержкой ДТО 10 (как правило, версии 3.xx).
  4. В настройках параметров подключения ККТ укажите правильную модель и порт, выполните тест устройства. Драйвер 10-й версии корректно сопоставляет перечисления способов расчета из 1С и передает их на кассу.

Шаг 2. Исправление кода подготовки XML-пакета в 1С

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

Разберем пример корректной реализации формирования структуры строки чека в модуле фискализации (например, при печати из документа Приходный кассовый ордер):


// Динамическое определение признаков на основании документа-источника
СтрокаЧека = Новый Структура;
СтрокаЧека.Вставить("Наименование", Выборка.Наименование);
СтрокаЧека.Вставить("Количество", Выборка.Количество);
СтрокаЧека.Вставить("Цена", Выборка.Цена);
СтрокаЧека.Вставить("Сумма", Выборка.Сумма);

// Логика определения признака способа расчета (тег 1214)
Если ВидОперацииДокумента = Перечисления.ВидыОперацийПКО.ПолучениеАванса Тогда
    // Для аванса (когда перечень товаров еще не известен)
    СтрокаЧека.Вставить("ПризнакСпособаРасчета", 3); // 3 - Аванс
    СтрокаЧека.Вставить("ПризнакПредметаРасчета", 10); // 10 - Платеж
ИначеЕсли ВидОперацииДокумента = Перечисления.ВидыОперацийПКО.ПредоплатаПокупателя Тогда
    // Для предоплаты (когда известен конкретный список товаров)
    СтрокаЧека.Вставить("ПризнакСпособаРасчета", 1); // 1 - Предоплата 100% или 2 - Частичная предоплата
    СтрокаЧека.Вставить("ПризнакПредметаРасчета", 1); // 1 - Товар
ИначеЕсли ЭтоЧастичнаяОплатаПоРеализации Тогда
    // Если идет оплата после отгрузки в рассрочку/кредит
    СтрокаЧека.Вставить("ПризнакСпособаРасчета", 5); // 5 - Частичный расчет и кредит
    СтрокаЧека.Вставить("ПризнакПредметаРасчета", 1); // 1 - Товар
Иначе
    // Во всех остальных случаях стандартный полный расчет
    СтрокаЧека.Вставить("ПризнакСпособаРасчета", 4); // 4 - Полный расчет
    СтрокаЧека.Вставить("ПризнакПредметаРасчета", 1); // 1 - Товар
КонецЕсли;

При таком подходе касса будет получать корректные цифровые коды признаков. Обратите внимание, что коды должны соответствовать стандартам ФФД 1.05:

Шаг 3. Проверка параметров настройки самой кассы (ККТ)

Бывают ситуации, когда 1С отправляет данные правильно, драйвер отрабатывает корректно, в личный кабинет ОФД уходят верные теги аванса, но на бумажном чеке все равно пишется «ПОЛНЫЙ РАСЧЕТ». Это связано с внутренними настройками таблицы параметров самого фискального регистратора АТОЛ, которые оптимизируют расход чековой ленты.

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

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

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

← На главную