Как настроить печать чека при оплате банковской картой в 1С 7.7 (ТиС)?

Программист 1С v7.7 1С:Управление торговлей Торговля и дистрибуция
← На главную

Рассмотрим распространенную ситуацию: на торговой точке используется проверенная временем конфигурация «Торговля и Склад» (ТиС) на платформе 1С 7.7. Руководство решает установить банковский эквайринговый терминал для приема оплат по картам. Изначально терминал может работать автономно: кассир вводит сумму на самом устройстве, покупатель прикладывает карту, а затем в 1С пробивается чек. Проанализируем, как правильно передать команду фискальному регистратору на печать чека с верным типом оплаты, так как штатные механизмы старой платформы имеют свои ограничения.

Стандартный механизм 1С 7.7 и обмен через XML

Разберем по шагам, как устроен базовый обмен 1С 7.7 с кассовым оборудованием. В отличие от современных конфигураций, в старых версиях взаимодействие с драйвером фискального регистратора (ФР) часто реализовано через формирование промежуточного XML-файла. В этот файл передаются основные параметры чека, включая типы оплаты.

Посмотрим на пример стандартного кода, формирующего узлы оплат в XML:


Атрибут(XMLPayments, "Cash", Макс(СуммаЧека, Получено));
Атрибут(XMLPayments, "CashLessType1", "0");
Атрибут(XMLPayments, "CashLessType2", "0");
Атрибут(XMLPayments, "CashLessType3", "0");

Из примера видно, что для безналичных расчетов зарезервированы три параметра: CashLessType1, CashLessType2 и CashLessType3. Однако в описании формата файла нет жесткой привязки, какой именно из них отвечает за банковские карты. Они лишь передают суммы электронной оплаты первого, второго и третьего типа соответственно.

Настройка таблиц фискального регистратора

Выясним причину такой абстрактности. Дело в том, что параметры типа CashLessType не содержат текстовых наименований (таких как «Оплата картой» или «Кредит»). Они напрямую ссылаются на индексы типов оплат, которые зашиты во внутренней памяти (таблицах) самой кассы (ККТ).

Чтобы чек печатался правильно, выполним следующие действия:

  1. Откроем утилиту тест-драйвера вашего фискального регистратора (например, от Атол или Штрих-М).
  2. Перейдем в раздел программирования таблиц ККТ.
  3. Найдем таблицу, отвечающую за наименования типов оплат. В стандартной поставке там могут быть пункты: «Наличные», «Электронные», «Аванс», «Кредит» и т.д.
  4. Убедимся, какой номер соответствует нужному безналичному расчету (например, тип №3), и в 1С начнем передавать сумму оплаты именно в тег CashLessType3.

Требования 54-ФЗ и ФФД: отказ от термина «Электронные»

Рассмотрим подробнее законодательный нюанс. Ранее многие пользователи просто переименовывали один из пунктов (или использовали существующий) под названием «Электронные». Однако, согласно актуальным форматам фискальных документов (ФФД 1.05, 1.1 и 1.2) по закону 54-ФЗ, оплата банковской картой должна строго классифицироваться и печататься в чеке с тегом «Безналичными».

Термин «Электронные» использовался в первоначальной версии ФФД 1.0, которая давно утратила силу. Современные драйверы ККТ способны «на лету» заменять старое название на новое, но правильнее и безопаснее изначально настроить таблицу ККТ так, чтобы нужный индекс оплаты назывался именно «Безналичными».

Современный подход: переход на прямое COM-соединение

Проанализируем текущие реалии автоматизации. Стандартный механизм с формированием XML-файла сегодня безнадежно устарел. Основная проблема заключается в том, что этот файл не поддерживает передачу множества обязательных тегов, требуемых 54-ФЗ: кодов маркировки товаров (Честный ЗНАК), ИНН кассира, признаков предмета и способа расчета.

Чтобы решить все эти проблемы разом, рекомендуем отказаться от XML-обмена. В 1С 7.7 сейчас повсеместно применяются доработанные внешние обработки (файлы с расширением .ert). Они работают следующим образом:

  1. Обработка напрямую подключается к современному драйверу (например, Атол ДТО 10) через COM-объект (OLE-соединение).
  2. Из программного кода 1С напрямую вызываются методы драйвера для открытия чека, передачи позиций, применения скидок и закрытия чека с нужным типом оплаты.
  3. Это позволяет игнорировать скудные 4 параметра из старого формата и корректно пробивать чеки любой сложности, включая смешанную оплату (часть наличными, часть картой).

Полная интеграция эквайринга в 1С 7.7

Если вы хотите избежать человеческого фактора (когда кассир забыл пробить чек в 1С, но списал деньги с карты, или наоборот), систему можно улучшить. 1С 7.7 вполне поддерживает полноценную интеграцию с банковскими терминалами.

Рассмотрим схему интеграции, например, со Сбербанком:

  1. В систему устанавливается банковская библиотека sbrf.dll.
  2. Внешняя обработка 1С дорабатывается: при выборе оплаты картой, программа сначала отправляет команду терминалу на списание суммы.
  3. 1С блокирует интерфейс и ожидает ответа от терминала (код успешного завершения транзакции).
  4. Только при получении подтверждения об успешной оплате от банка, 1С автоматически отправляет команду на фискальный регистратор для печати кассового чека.

Такой подход делает работу пользователей в 1С 7.7 максимально похожей на работу в современных версиях программы (1С 8.3), сводит к минимуму ошибки кассиров и обеспечивает полное соответствие требованиям законодательства по применению онлайн-касс.

← На главную