Как пробить кассовый чек в 1С:УПП при оплате физическим лицом через интернет-банкинг

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

С вступлением в силу поправок в Федеральный закон № 54-ФЗ, безналичные расчеты с физическими лицами требуют обязательного применения контрольно-кассовой техники (ККТ). Это касается и ситуаций, когда клиент оплачивает счет через мобильное приложение банка или интернет-банкинг по реквизитам организации. В этой статье мы подробно разберем, как реализовать механизм пробития чеков в конфигурации 1С:Управление производственным предприятием (УПП), учитывая специфику этой системы.

Правовое обоснование и логика процесса

Проанализируем требования законодательства: при получении оплаты от физического лица по безналичному расчету (без предъявления карты в терминале) организация обязана сформировать чек не позднее рабочего дня, следующего за днем осуществления расчета. В 1С:УПП такие операции обычно отражаются документом Платежное поручение входящее. Однако исторически этот документ не был предназначен для работы с торговым оборудованием. Рассмотрим, как решить эту задачу современными методами.

Вариант 1: Использование типового функционала в новых релизах

Первым делом выясним, обновлена ли ваша конфигурация до актуального релиза. Начиная с версии 1.3.124 и выше, фирма «1С» добавила штатную возможность пробития чеков напрямую из документа Платежное поручение входящее с видом операции «Оплата от покупателя». Разберем, как это работает:

  1. Проверим настройки торгового оборудования: касса должна быть подключена с типом «ККТ с передачей данных».
  2. В документе Платежное поручение входящее при заполнении контрагента-физлица должна появиться кнопка «Чек».
  3. Система автоматически определяет тип оплаты как «Безналичными» (ранее — «Электронными»).
  4. Для корректного формирования чека необходимо, чтобы в карточке контрагента были заполнены контактные данные (E-mail или телефон) для отправки электронной версии документа.

Вариант 2: Программная доработка для старых или измененных конфигураций

Если ваша конфигурация значительно доработана и обновление невозможно, нам придется вмешаться в программный код. Основная сложность заключается в том, что в УПП механизмы печати чеков жестко привязаны к определенным типам документов (ПКО, Оплата платежной картой). Проанализируем ситуацию, описанную участниками форума: использование документа Оплата платежной картой для 51 счета методически неверно, так как он ориентирован на эквайринг (счет 57).

Рассмотрим по шагам, как добавить функционал печати чека в Платежное поручение входящее:

Шаг 1: Поиск ключевой функции фискализации.

Вся логика подготовки данных для ККТ сосредоточена в общем модуле МенеджерОборудованияКлиентСервер. Нам интересна функция ПодготовитьДанныеДляФискализацииЧека(...). Именно в ней формируется структура данных, которую понимает драйвер кассы.

Шаг 2: Модификация мДанныеСервера.

Как отмечают специалисты, при попытке печати из платежки может возникнуть ошибка из-за отсутствия необходимых параметров в структуре мДанныеСервера. Нам нужно обеспечить передачу признака «ККТ с передачей данных». Для этого проанализируем модуль объекта ТОСервера и функцию ПолучитьПараметрСервераТО. Необходимо убедиться, что для документа безналичной оплаты вызывается инициализация кассового модуля.

Шаг 3: Пример реализации вызова печати.

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


// Пример вызова процедур из модуля документа
Процедура КомандаПробитьЧек(Кнопка)
    
    ПараметрыЧека = ПодготовитьПараметрыДляЧека(); 
    // Здесь собираем массив строк из табличной части расшифровки платежа
    
    Результат = МенеджерОборудованияКлиент.ВыполнитьКоманду(
        "ПечатьЧека", 
        ПараметрыЧека, 
        Объект.КассаККМ
    );
    
КонецПроцедуры

Вариант 3: Использование внешних обработок

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

Выясним причину, почему это иногда удобнее:

В такой обработке важно правильно заполнить ПризнакСпособаРасчета. Если оплата поступает авансом (товар еще не отгружен), в чеке должен стоять признак «Аванс». Если же это оплата за уже отгруженный товар — «Полный расчет».

Важные технические нюансы при внедрении

При реализации любого из способов следует обратить внимание на следующие моменты:

  1. Счет учета: В отличие от розничных продаж, здесь используется 51 счет. Убедитесь, что ваша доработка не пытается создать проводки по кассе (50 счет), чтобы не возникло задвоения оборотов.
  2. Формат ФФД: Современные ККТ работают по формату 1.2 или 1.05. Убедитесь, что библиотека подключаемого оборудования (БПО) в вашей УПП поддерживает эти форматы. Иногда требуется ручное обновление БПО внутри конфигурации.
  3. Данные покупателя: С 2019 года для безналичных расчетов в чеке обязательно должны быть ФИО покупателя и его ИНН (при наличии). Эти данные нужно передавать в структуру ДанныеЧека.

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


// Добавление данных покупателя для ФФД 1.05+
ДанныеЧека.Вставить("Покупатель", Контрагент.Наименование);
ДанныеЧека.Вставить("ИННПокупателя", Контрагент.ИНН);
Если ЗначениеЗаполнено(Контрагент.ЭлектронныйАдрес) Тогда
    ДанныеЧека.Вставить("АдресЭлектроннойПочты", Контрагент.ЭлектронныйАдрес);
КонецЕсли;

Заключение

Мы выяснили, что наиболее правильным путем является обновление 1С:УПП до актуального релиза, где работа с чеками в платежных поручениях реализована штатно. Однако, если это невозможно, следует использовать механизмы общего модуля МенеджерОборудованияКлиент, адаптировав их под специфику банковских выписок. Главное — следить за тем, чтобы способ оплаты в чеке всегда передавался как «Безналичный», а данные о покупателе были заполнены максимально полно для соблюдения требований 54-ФЗ.

← На главную