В оптовой торговле организация онлайн-платежей через сайт сталкивается с рядом специфических проблем, которые редко встречаются в рознице. Основные сложности — это огромные заказы (более 200 позиций), необходимость передачи данных о ГТД и стране происхождения, а также оплата уже существующей задолженности по накладным, данных о которых может не быть в корзине сайта. В данной статье мы проанализируем ситуацию, разберем технические ограничения и предложим надежную схему реализации на базе 1С:Управление торговлей 11.4 и интеграции с интернет-эквайрингом.
При оплате заказа в корзине, содержащего сотни позиций, мы неизбежно сталкиваемся с техническим ограничением протокола обмена с ОФД. Рассмотрим подробнее, почему это происходит. Каждый фискальный документ имеет ограничение по объему данных (обычно около 32 Кб). Если в чеке указано 200 позиций, и для каждой позиции передаются дополнительные реквизиты, такие как СтранаПроисхождения, НомерГТД или коды маркировки («Честный ЗНАК»), объем данных возрастает лавинообразно. Такой чек просто не будет принят фискальным накопителем или сервером ОФД.
Разберем по шагам решение этой проблемы:
Предоплата 100% или Аванс. В этом случае в чеке можно указать одну строку «Оплата по заказу №...» без детального перечисления 200 позиций с их ГТД.Реализация товаров и услуг в 1С. Именно тогда печатается второй чек на «Полный расчет», который закрывает аванс. В 1С:УТ 11 этот процесс автоматизирован.Ситуация усложняется, когда авторизованный клиент хочет оплатить не новый заказ, а старый долг. Сайт зачастую не обладает актуальной информацией о том, из каких товаров состояла накладная месяц назад. Выясним причину сложности: прямая фискализация с сайта в этом случае невозможна, так как нет состава чека.
Оптимальный алгоритм действий выглядит следующим образом:
Эквайринговая операция. На этом этапе необходимо программно распределить оплату по документам задолженности (по методу ФИФО или по конкретным счетам).Для автоматизации распределения в 1С:УТ можно использовать следующий подход в коде:
// Пример логики распределения оплаты по накладным
Процедура РаспределитьОплатуПоДолгу(ТекущийКонтрагент, СуммаОплаты)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РасчетыСКлиентамиОстатки.ЗаказКлиента КАК ДокументОбъект,
| РасчетыСКлиентамиОстатки.СуммаОстаток КАК Долг
|ИЗ
| РегистрНакопления.РасчетыСКлиентами.Остатки(, Контрагент = &Контрагент) КАК РасчетыСКлиентамиОстатки
|УПОРЯДОЧИТЬ ПО
| РасчетыСКлиентамиОстатки.ЗаказКлиента.Дата ВОЗРАСТАНИЕ";
Запрос.УстановитьПараметр("Контрагент", ТекущийКонтрагент);
Результат = Запрос.Выполнить().Выбрать();
ОстатокКРаспределению = СуммаОплаты;
Пока Результат.Следующий() И ОстатокКРаспределению > 0 Цикл
СуммаКПогашению = Мин(Результат.Долг, ОстатокКРаспределению);
// Логика создания документов оплаты и привязки к накладной
ОстатокКРаспределению = ОстатокКРаспределению - СуммаКПогашению;
КонецЦикла;
КонецПроцедуры
Чтобы избежать зависимости от работоспособности сайта и модулей банка, проанализируем ситуацию с использованием локальной или облачной кассы, подключенной непосредственно к 1С. В 1С:УТ 11.4 реализован механизм «Очередь чеков».
Когда оплата подтверждена эквайером, сайт через API или регулярный обмен передает данные в 1С. В учетной системе создается документ оплаты. Если в настройках ККТ указано «Автоматическая фискализация», 1С сама сформирует чеки. При этом, если товаров слишком много, 1С позволяет программно разбить оплату на несколько чеков в рамках одной операции. Это критически важно для соблюдения лимитов фискального накопителя.
Важный нюанс по 54-ФЗ: Согласно закону, при расчетах в сети интернет чек должен быть сформирован не позднее следующего рабочего дня после оплаты. Это дает нам «окно» для исправления технических сбоев обмена между сайтом и 1С. Однако касса должна быть зарегистрирована должным образом. Если вы используете одну и ту же кассу для офиса и сайта, в заявлении на регистрацию ККТ в ФНС не нужно ставить галочку «Используется только для расчетов в сети Интернет». Это позволит использовать устройство в смешанном режиме.
Многие разработчики сайтов утверждают, что «отвязать» эквайринг от чека невозможно. Рассмотрим подробнее, как это обойти:
Такой подход делает 1С «мастер-системой» для фискализации. 1С видит реальные остатки, актуальные цены, данные о ГТД и маркировке, что гарантирует соответствие чека требованиям законодательства. При оплате задолженности признак способа расчета будет Оплата кредита, а при оплате заказа в корзине — Аванс или Предоплата, что снимает проблему переполнения чека данными.
Посмотрим на пример структуры данных, передаваемых с сайта в 1С для идентификации платежа:
TransactionID — уникальный номер транзакции в системе банка.Amount — фактически списанная сумма.PaymentMethod — идентификатор платежной системы.OrderReference — номер заказа или ID контрагента (для погашения долга).Внедрение данной схемы потребует доработки модуля обмена 1С и сайта, но в долгосрочной перспективе это избавит компанию от штрафов за некорректные чеки и позволит менеджерам не отвлекаться на ручное распределение платежей по накладным.