Настройка чеков по 54-ФЗ на 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка чеков по 54-ФЗ на 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка чеков по 54-ФЗ на 1С-Битрикс

Чек по 54-ФЗ — это не просто отправка данных в кассу. Это конкретный формат JSON с обязательными полями: признак расчёта, признак способа расчёта, НДС по каждой позиции, данные агента если расчёт через посредника, данные покупателя если сумма превышает 100 000 рублей. Ошибка в любом поле — чек не фискализируется, а ФНС это фиксирует.

Структура чека в контексте Битрикс

Битрикс формирует чек через класс \Bitrix\Sale\Cashbox\Check и его наследников:

  • Sell — чек прихода (первая оплата)
  • SellCorrection — чек коррекции прихода
  • Refund — чек возврата прихода
  • RefundCorrection — чек коррекции возврата
  • AdvancePayment — аванс (предоплата без привязки к номенклатуре)
  • AdvancePaymentReturn — возврат аванса
  • Full — полный расчёт (для двухстадийной оплаты)

Тип чека определяется автоматически по событию. Для двухстадийной оплаты нужны два чека: первый при холдировании (аванс), второй при подтверждении (полный расчёт).

Обязательные поля чека по FFD 1.2

С 2023 года обязателен формат ФФД 1.2 для новых ККТ. В нём добавлены поля:

Признак предмета расчёта (PAYMENT_OBJECT) — что продаётся:

  • COMMODITY — товар
  • EXCISE — подакцизный товар
  • JOB — работа
  • SERVICE — услуга
  • PAYMENT — платёж (аванс без номенклатуры)

Признак способа расчёта (PAYMENT_METHOD):

  • FULL_PAYMENT — полная оплата
  • ADVANCE — аванс
  • PREPAYMENT — предоплата
  • CREDIT — постоплата
  • CREDIT_PAYMENT — оплата кредита

Настройка в свойствах товара через административный интерфейс или через b_catalog_product.PAYMENT_OBJECT.

Конфигурация НДС для позиций чека

Неправильный НДС — самая частая причина отказа фискализации. Проверить связку НДС:

-- Все ставки НДС в системе
SELECT ID, NAME, RATE FROM b_catalog_vat WHERE ACTIVE = 'Y';

-- Товары без привязки к НДС (VAT_ID IS NULL)
SELECT ID, NAME FROM b_catalog_product WHERE VAT_ID IS NULL LIMIT 20;

-- Обновить VAT для всех товаров одного инфоблока
UPDATE b_catalog_product cp
JOIN b_iblock_element ie ON cp.ID = ie.ID
SET cp.VAT_ID = 3  -- ID ставки НДС 20%
WHERE ie.IBLOCK_ID = 7 AND cp.VAT_ID IS NULL;

Данные покупателя в чеке

Если сумма расчёта превышает 100 000 рублей, чек должен содержать данные покупателя (ФИО, ИНН или email/телефон). Для B2B заказов — ИНН организации.

Настройка свойств заказа для передачи данных в чек:

// Свойство EMAIL покупателя должно называться EMAIL или иметь флаг IS_EMAIL = Y
// Проверить:
$res = \Bitrix\Sale\Internals\OrderPropsTable::getList([
    'filter' => ['IS_EMAIL' => 'Y'],
    'select' => ['ID', 'NAME', 'CODE']
]);

В чеке передаётся автоматически если свойство заказа помечено флагом «Email покупателя» или «Телефон покупателя» в настройках модуля продаж.

Отладка формирования чека

Включить логирование кассового модуля:

// /bitrix/php_interface/init.php
define('CASHBOX_DEBUG', true);

Лог пишется в bitrix/modules/sale/cashbox/log/. Формат JSON — можно проверить структуру чека до отправки.

Программно получить тело чека без отправки:

$order = \Bitrix\Sale\Order::load($orderId);
$payment = $order->getPaymentCollection()->getInnerPayment();

$check = \Bitrix\Sale\Cashbox\CheckManager::createCheck(
    \Bitrix\Sale\Cashbox\Internals\Check\SellCheck::getType(),
    $payment
);

// Получить данные чека до отправки
$checkData = $check->getDataForCheck();
var_dump($checkData);

Обработка ошибок и повторная отправка

Чеки с ошибками (статус F в b_sale_cashbox_check) — частая проблема при первоначальной настройке:

-- Чеки с ошибками
SELECT ID, ORDER_ID, PAYMENT_ID, ERROR_TEXT, DATE_CREATE
FROM b_sale_cashbox_check
WHERE STATUS = 'F'
ORDER BY DATE_CREATE DESC;

Повторная отправка через административную панель: «Магазин» → «Онлайн-кассы» → «Очередь чеков» → выбрать чек → «Отправить повторно».

Программная повторная отправка:

$check = \Bitrix\Sale\Cashbox\CheckManager::getCheckById($checkId);
if ($check) {
    $check->setField('STATUS', \Bitrix\Sale\Cashbox\Internals\Check::STATUS_NEW);
    $check->save();
}

Чек при возврате заказа

При отмене оплаченного заказа Битрикс должен автоматически сформировать чек возврата. Это происходит при снятии статуса оплаты:

$payment->setField('PAID', 'N');
$order->save();
// Чек возврата формируется через обработчик события OnSalePaymentEntitySaved

Убедиться что в настройках кассы включена опция «Формировать чек возврата при отмене оплаты».