Как реализовать оплату по банковским картам в 1С 7.7 «Торговля и Склад» с фискальным регистратором?

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

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

Техническая реализация: как заставить ФР печатать «Безнал»

Первый и самый важный вопрос — это передача типа оплаты в драйвер ККТ. Если просто закрывать чек, вся сумма по умолчанию попадет в «Наличные», что приведет к расхождениям в Z-отчете и путанице при сверке с банковским терминалом. Рассмотрим ситуацию на примере популярных драйверов АТОЛ (DTO). Разберем логику взаимодействия. В драйверах DTO 6/8 за тип оплаты отвечает свойство TypeClose. Обычно в настройках ФР (таблица типов оплат) распределение выглядит следующим образом:

Для корректной работы нам необходимо модифицировать внешнюю обработку обслуживания ФР. Обычно это файл fr_comm.ert или atol_db.ert, находящийся в каталоге ExtForms\Equip. Проанализируем пример кода, который позволяет разделять оплату:


// В процедуре печати чека добавим условие
Если ФлагБезнал = 0 Тогда
    // Стандартная логика для наличных
    Объект.TypeClose = 0; 
    Если (Получено > 0) И (Получено > СуммаЧека) Тогда
        Объект.Summ = Окр(Получено, 2, 1);
        Объект.ОплатаСоСдачей;
    Иначе
        Объект.ЗакрытьЧек;
    КонецЕсли;
Иначе
    // Логика для оплаты картой
    Объект.Summ = СуммаЧека;
    // Устанавливаем тип оплаты №3 (согласно настройкам ФР)
    Объект.TypeClose = 3; 
    // Регистрируем оплату
    Объект.Оплата; 
    // Закрываем чек
    Объект.ЗакрытьЧек;
КонецЕсли;

Важный нюанс: метод ЗакрытьЧек без предварительного вызова Оплата с установленным TypeClose может привести к аннулированию чека или ошибке «Чек оплачен не полностью». Выясним причину: ФР ожидает подтверждения, что вся сумма чека распределена по видам платежей. При наличном расчете сдача вычисляется автоматически, а при безналичном — сумма оплаты должна строго равняться сумме чека.

Организация учета в программе «Торговля и Склад»

Теперь рассмотрим вторую часть проблемы: как учитывать эти деньги в базе. Многие пользователи используют схему с РКО (Расходный кассовый ордер) с видом «Прочее» в конце смены, чтобы «вычесть» безналичную выручку из остатка кассы. Это в корне неверно, так как искажает обороты по кассе и не позволяет отслеживать задолженность банка-эквайера. Разберем более правильный алгоритм:

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

Работа с автономными и интегрированными терминалами

Проанализируем ситуацию, когда терминал стоит отдельно. В этом случае кассир вручную вбивает сумму на терминале, дожидается чека («слипа») и только потом нажимает «Оплатить» в 1С. Это порождает человеческий фактор: суммы в 1С и на терминале могут не совпасть. Для исключения ошибок рекомендуется рассмотреть возможность интеграции терминала. Для 1С 7.7 существуют компоненты (например, от Сбербанка SBRFCOM.dll), которые позволяют инициировать оплату прямо из программы. Выясним преимущества этого метода: если оплата по карте не прошла (недостаточно средств, ошибка связи), 1С не даст пробить фискальный чек, и остатки товара не спишутся ошибочно.

Сверка итогов и контроль

Выясним, как эффективно контролировать работу. В конце дня кассир должен сверять три показателя:

Если эти три цифры совпадают, значит, настройки выполнены корректно. Если же в Z-отчете безналичная выручка нулевая, хотя оплаты были — ищите проблему в передаче параметра TypeClose в обработке fr_comm.ert.

В заключение отметим, что переход на 54-ФЗ (онлайн-кассы) накладывает дополнительные требования. В новых версиях драйверов (например, DTO 10) вместо «Безналичными» используется понятие «Электронными». При использовании старых конфигураций 7.7 убедитесь, что ваши внешние компоненты поддерживают работу с признаками способа расчета в соответствии с актуальным форматом фискальных данных (ФФД).

← На главную