Как интегрировать облачную или физическую онлайн-кассу с 1С:Управление торговлей 11 при продажах через интернет-магазин?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При организации продаж через интернет-магазин современные компании сталкиваются с необходимостью соблюдения требований Федерального закона № 54-ФЗ. Типичный сценарий выглядит следующим образом: клиент оплачивает заказ на сайте банковской картой, система должна мгновенно сформировать электронный чек на аванс (предоплату), а при физической выдаче товара на точке самовывоза — пробить второй чек с признаком «Зачет аванса». Реализовать эту схему в связке с программой «1С:Управление торговлей 11» можно несколькими способами. Разберем подробно, какое оборудование выбрать, как обойти технические ограничения клиент-серверной архитектуры 1С и как настроить систему для экономии на чековой ленте.

Физическая ККТ против облачной кассы: юридические и практические аспекты

Выясним причину, почему у многих компаний возникает дилемма при выборе между покупкой физического фискального регистратора и арендой облачной кассы. Бытует ошибочное мнение, что для интернет-торговли и розничной точки обязательно требуются два разных аппарата. Проанализируем законодательную базу.

Согласно разъяснениям ФНС России (письмо № ЕД-4-20/19359), действующее законодательство не запрещает использовать одну и ту же онлайн-кассу как для регистрации продаж в физическом магазине, так и для фискализации интернет-платежей. При регистрации ККТ в личном кабинете налогоплательщика в поле «Место установки ККТ» вы можете одновременно указать фактический адрес магазина и адреса доменов ваших интернет-сайтов (в пределах доступных 256 символов).

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

  1. Облачная касса (аренда оборудования в дата-центре): Физический аппарат (например, «Терминал-ФА» или модификации АТОЛ) находится на территории провайдера (АТОЛ Онлайн, Ferma от OFD.ru, КОМТЕТ Касса). Вы не заботитесь о бесперебойном питании, замене расходных материалов и доступности интернета. Касса не имеет чековой ленты и отправляет только электронные чеки. Это идеальное решение, если у вас огромный поток заказов (сотни и тысячи чеков в сутки) или у вас полностью отсутствует физическая розничная точка.
  2. Локальная физическая ККТ (АТОЛ 22Ф, 55Ф, Штрих-М-01Ф и др.): Находится в вашем офисе или магазине. Вы можете использовать её для розничных покупателей (печать бумажных чеков) и одновременно направлять на неё поток чеков из интернет-магазина. Это решение экономически выгодно при небольшом или среднем объеме интернет-заказов, так как исключает ежемесячные арендные платежи за облачный сервис.

Решение проблемы взаимодействия «Клиент-Сервер» при автоматической печати чеков

Если вы решили использовать обычную ККТ, подключенную к рабочему месту кассира, вы неизбежно столкнетесь с архитектурным ограничением 1С. Обмен данными с сайтом (например, на CMS Битрикс) выполняется в фоновом режиме на сервере «1С:Предприятие». Однако драйвер ККТ и сама касса физически подключены к клиентскому компьютеру. Напрямую вызвать методы торгового оборудования из серверного кода без участия пользователя невозможно.

Разберем по шагам, как решить эту задачу в современных версиях «1С:Управление торговлей 11»:

Шаг 1: Использование механизма «Очередь чеков».

В типовой конфигурации 1С:УТ 11 предусмотрен специальный регистр сведений «Очередь чеков ККТ». При поступлении оплаты с сайта на стороне сервера создается документ ЭквайринговаяОперация или ПриходныйКассовыйОрдер. Вместо мгновенной попытки печати, система помещает запись о необходимости фискализации в очередь.

Для программного добавления чека в очередь на сервере используется следующий алгоритм:


// Пример помещения чека в очередь фискализации из серверного контекста
Процедура ПоместитьЧекВОчередь(ДокументСсылка, КонтактныеДанные) Экспорт
    
    МенеджерЗаписи = РегистрыСведений.ОчередьЧековККТ.СоздатьМенеджерЗаписи();
    МенеджерЗаписи.Документ = ДокументСсылка;
    МенеджерЗаписи.Состояние = Перечисления.СостоянияЧековВОчереди.Новый;
    МенеджерЗаписи.ФискализироватьТолькоЭлектронно = Истина;
    МенеджерЗаписи.АдресЭлектроннойПочты = КонтактныеДанные.Email;
    МенеджерЗаписи.Телефон = КонтактныеДанные.Телефон;
    
    Попытка
        МенеджерЗаписи.Записать(Истина);
    Исключение
        ЗаписьЖурналаРегистрации("ИнтеграцияККТ", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
    КонецПопытки;
    
КонецПроцедуры

Шаг 2: Настройка рабочего места «фискализатора».

На клиентском компьютере, к которому физически подключена касса, запускается сеанс 1С. В настройках подключаемого оборудования для данной ККТ активируется регламентный режим опроса очереди чеков. Программа с заданной периодичностью считывает новые записи из регистра ОчередьЧековККТ, инициализирует локальный драйвер и отправляет команду на фискализацию чека.

Шаг 3: Использование Web-сервисов драйверов (альтернативный вариант).

Современные драйверы ККТ (например, АТОЛ ДККТ 10) имеют встроенный веб-сервер. Вы можете запустить его на компьютере с подключенной кассой. В этом случае сервер 1С может напрямую отправлять JSON-запросы по протоколу HTTP на IP-адрес этого компьютера. Это позволяет полностью отказаться от постоянного запуска клиентского сеанса 1С для пробития интернет-чеков.

Настройка безбумажного режима на физической кассе

Постоянная печать интернет-чеков на бумажной ленте приводит к быстрому износу печатающей головки ККТ и нерациональному расходу бумаги. Выясним, как заставить обычную кассу работать в режиме «облачной», то есть отправлять чеки клиенту только по SMS или Email, не распечатывая бумагу.

Для реализации безбумажного режима выполним следующие действия в «1С:Управление торговлей 11»:

  1. Перейдем в раздел НСИ и администрирование – Настройка НСИ и разделов – Продажи – Розничные продажи.
  2. Активируем опцию «Не печатать чек на ККТ при отправке электронного чека».
  3. В карточке подключаемого оборудования (ККТ) убедимся, что драйвер поддерживает передачу признака электронного чека.

Рассмотрим, как это работает на уровне кода драйвера. Чтобы касса не печатала чек, в XML-пакет, передаваемый на ККТ через обработку обслуживания, добавляются обязательные параметры: email или телефон покупателя, а также флаг отказа от печати.


// Фрагмент кода, отключающий печать бумажной ленты при программном обращении к драйверу ККТ
ОбъектДрайвера.УстановитьПараметр("ЭлектронныйЧек", Истина);
ОбъектДрайвера.УстановитьПараметр("ПолучательЧека", "customer@domain.ru");
// При отправке данных параметров физический принтер сформирует фискальный признак,
// отправит данные в ОФД, но пропустит шаг протяжки бумажной ленты.

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

Реализация схемы «Аванс — Зачет аванса» по шагам

Рассмотрим подробнее двухэтапную схему отражения продаж, которая требуется при торговле по предоплате:

Этап 1: Получение оплаты на сайте и пробитие чека на аванс.

При оплате картой на сайте в 1С создается документ ЭквайринговаяОперация. При пробитии чека из этого документа 1С автоматически устанавливает признак способа расчета «Предоплата 100%» (если состав товаров определен и зафиксирован в заказе) или «Аванс» (если точный перечень товаров на момент оплаты неизвестен). Сумма оплаты распределяется по позициям номенклатуры.

Этап 2: Выдача товара и зачет аванса.

Когда клиент приходит за товаром, менеджер оформляет документ РеализацияТоваровУслуг. В документе заполняется вкладка «Оплата», где указывается зачет ранее полученного платежа по эквайрингу. При нажатии кнопки «Пробить чек» в документе реализации 1С формирует xml-пакет со следующими параметрами:

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

← На главную