Как в 1С 7.7 настроить отправку электронных чеков вместо бумажных

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

В условиях дефицита или резкого подорожания чековой ленты вопрос перехода на электронные чеки становится критически важным для бизнеса. В платформе 1С 7.7, несмотря на её возраст, технически возможно реализовать отправку электронного чека (через SMS или Email) с полным или частичным отказом от печати бумажного носителя. Рассмотрим детально, как это сделать на примере ККТ Атол, используя наиболее распространенные драйверы и обработки обслуживания.

Законодательная база и технический принцип

Согласно 54-ФЗ, продавец обязан выдать бумажный чек, если покупатель не попросил об электронном до момента расчета. Если же покупатель предоставил номер телефона или адрес электронной почты, электронный чек приравнивается к бумажному. С технической стороны для реализации этого механизма нам нужно передать в кассовый аппарат два ключевых параметра:

  1. Тег 1008: Абонентский номер или адрес электронной почты покупателя.
  2. Флаг электронного чека: Специальный параметр в драйвере, который сообщает ККТ, что бумажную ленту расходовать не нужно.

Анализируем обработку обслуживания ККТ

Большинство систем на «семерке» используют типовую или слегка модифицированную обработку обслуживания, например, frATOL54_comm_105.ert. Нам необходимо найти в коде этой обработки процедуру, отвечающую за закрытие чека. Обычно она называется ЗакрытьЧек, CloseCheck или ПечатьЧека.

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

Реализация для драйвера Атол (ДТО 8 и 10)

В зависимости от версии установленного драйвера, программный код будет отличаться. Рассмотрим пример для ДТО 10, так как он является наиболее современным и стабильным для работы с ФФД 1.05 и 1.2.

В коде обработки нам нужно найти объект драйвера (часто это Драйвер или Объект) и добавить передачу параметров перед закрытием чека. Рассмотрим пример кода:


// Установка контакта покупателя (Тег 1008)
Драйвер.AttrNumber = 1008;
Драйвер.AttrValue = СокрЛП(КонтактПокупателя); // Переменная с телефоном или почтой
Драйвер.WriteAttribute();

// Установка признака электронного чека (чтобы не печатать бумагу)
// Для ДТО 10 используется параметр LIBFPTR_PARAM_RECEIPT_ELECTRONICALLY
Драйвер.setParam(65572, Истина); 

Если вы используете ДТО 8, метод будет выглядеть иначе. Проанализируем пример записи реквизита для старой версии драйвера:


// Для ДТО 8
Драйвер.AttrNumber = 1008;
Драйвер.AttrValue = "ivanov@mail.ru";
Драйвер.WriteAttribute();

// Отключение печати может зависеть от прошивки ККТ
// В некоторых моделях это свойство 65 в таблицах или параметр в методе CloseCheck

Интеграция в интерфейс 1С 7.7

Чтобы программисту было удобно работать, а пользователю — вводить данные, необходимо изменить форму документа, из которого пробивается чек (например, ЧекККМ или ПриходныйКассовыйОрдер). Выясним, какие изменения потребуются:

  1. Добавим на форму текстовое поле КонтактПокупателя.
  2. Добавим флажок ТолькоЭлектронно.
  3. В модуле формы передадим эти значения в процедуру печати чека.

Рассмотрим пример передачи параметров из формы документа в обработку обслуживания:


СписокПараметров = СоздатьОбъект("СписокЗначений");
СписокПараметров.Установить("ЭлектронныйЧек", 1);
СписокПараметров.Установить("Контакт", СокрЛП(ТелефонИлиПочта));

// Вызов функции печати из обработки обслуживания
ОткрытьФормуМодально("Отчет", СписокПараметров, КаталогИБ() + "ExtForms\Equip\frATOL54_comm_105.ert");

Настройка на стороне ОФД

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

Важные моменты:

Проблемы со старыми прошивками

Выясним причину, по которой касса может продолжать печатать бумагу даже после внесения изменений в код. Это часто связано с версией прошивки ККТ. В ранних версиях (Платформа 2.5) полная отмена печати не поддерживалась на уровне протокола — касса все равно выдавала «слип» с итоговой суммой. Для корректной работы без бумаги рекомендуется обновить ККТ до Платформы 5.0 и использовать драйвер версии 10.9 и выше.

Экономия без полного отказа от бумаги

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

Таким образом, сочетание программной доработки 1С 7.7 и тонкой настройки драйвера позволит вам сократить расходы на чековую ленту на 80-100%, обеспечив при этом соблюдение всех требований законодательства.

← На главную