С вступлением в силу поправок в Федеральный закон № 54-ФЗ, безналичные расчеты с физическими лицами требуют обязательного применения контрольно-кассовой техники (ККТ). Это касается и ситуаций, когда клиент оплачивает счет через мобильное приложение банка или интернет-банкинг по реквизитам организации. В этой статье мы подробно разберем, как реализовать механизм пробития чеков в конфигурации 1С:Управление производственным предприятием (УПП), учитывая специфику этой системы.
Проанализируем требования законодательства: при получении оплаты от физического лица по безналичному расчету (без предъявления карты в терминале) организация обязана сформировать чек не позднее рабочего дня, следующего за днем осуществления расчета. В 1С:УПП такие операции обычно отражаются документом Платежное поручение входящее. Однако исторически этот документ не был предназначен для работы с торговым оборудованием. Рассмотрим, как решить эту задачу современными методами.
Первым делом выясним, обновлена ли ваша конфигурация до актуального релиза. Начиная с версии 1.3.124 и выше, фирма «1С» добавила штатную возможность пробития чеков напрямую из документа Платежное поручение входящее с видом операции «Оплата от покупателя». Разберем, как это работает:
Платежное поручение входящее при заполнении контрагента-физлица должна появиться кнопка «Чек».Если ваша конфигурация значительно доработана и обновление невозможно, нам придется вмешаться в программный код. Основная сложность заключается в том, что в УПП механизмы печати чеков жестко привязаны к определенным типам документов (ПКО, Оплата платежной картой). Проанализируем ситуацию, описанную участниками форума: использование документа Оплата платежной картой для 51 счета методически неверно, так как он ориентирован на эквайринг (счет 57).
Рассмотрим по шагам, как добавить функционал печати чека в Платежное поручение входящее:
Шаг 1: Поиск ключевой функции фискализации.
Вся логика подготовки данных для ККТ сосредоточена в общем модуле МенеджерОборудованияКлиентСервер. Нам интересна функция ПодготовитьДанныеДляФискализацииЧека(...). Именно в ней формируется структура данных, которую понимает драйвер кассы.
Шаг 2: Модификация мДанныеСервера.
Как отмечают специалисты, при попытке печати из платежки может возникнуть ошибка из-за отсутствия необходимых параметров в структуре мДанныеСервера. Нам нужно обеспечить передачу признака «ККТ с передачей данных». Для этого проанализируем модуль объекта ТОСервера и функцию ПолучитьПараметрСервераТО. Необходимо убедиться, что для документа безналичной оплаты вызывается инициализация кассового модуля.
Шаг 3: Пример реализации вызова печати.
Мы можем создать внешнюю печатную форму или добавить кнопку в форму документа, которая будет вызывать процедуру печати. Примерный алгоритм кода может выглядеть следующим образом:
// Пример вызова процедур из модуля документа
Процедура КомандаПробитьЧек(Кнопка)
ПараметрыЧека = ПодготовитьПараметрыДляЧека();
// Здесь собираем массив строк из табличной части расшифровки платежа
Результат = МенеджерОборудованияКлиент.ВыполнитьКоманду(
"ПечатьЧека",
ПараметрыЧека,
Объект.КассаККМ
);
КонецПроцедуры
Если вы не хотите менять типовой код, рассмотрим вариант использования внешней обработки. Это особенно удобно, если входящих платежей много. Обработка может сканировать реестр платежных поручений за день и массово формировать чеки.
Выясним причину, почему это иногда удобнее:
В такой обработке важно правильно заполнить ПризнакСпособаРасчета. Если оплата поступает авансом (товар еще не отгружен), в чеке должен стоять признак «Аванс». Если же это оплата за уже отгруженный товар — «Полный расчет».
При реализации любого из способов следует обратить внимание на следующие моменты:
ДанныеЧека.Рассмотрим подробнее фрагмент кода, отвечающий за наполнение данных о покупателе в структуре чека:
// Добавление данных покупателя для ФФД 1.05+
ДанныеЧека.Вставить("Покупатель", Контрагент.Наименование);
ДанныеЧека.Вставить("ИННПокупателя", Контрагент.ИНН);
Если ЗначениеЗаполнено(Контрагент.ЭлектронныйАдрес) Тогда
ДанныеЧека.Вставить("АдресЭлектроннойПочты", Контрагент.ЭлектронныйАдрес);
КонецЕсли;
Мы выяснили, что наиболее правильным путем является обновление 1С:УПП до актуального релиза, где работа с чеками в платежных поручениях реализована штатно. Однако, если это невозможно, следует использовать механизмы общего модуля МенеджерОборудованияКлиент, адаптировав их под специфику банковских выписок. Главное — следить за тем, чтобы способ оплаты в чеке всегда передавался как «Безналичный», а данные о покупателе были заполнены максимально полно для соблюдения требований 54-ФЗ.