Налаштування чеків по 54-ФЗ на 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування чеків по 54-ФЗ на 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування чеків по 54-ФЗ на 1С-Bitrix

Чек по 54-ФЗ — це не просто відправка даних в касу. Це конкретний формат JSON з обов'язковими полями: ознака розрахунку, ознака способу розрахунку, НДС по кожній позиції, дані агента якщо розрахунок через посередника, дані покупця якщо сума перевищує 100 000 рублів. Помилка в будь-якому полі — чек не фіскалізується, а ФНС це фіксує.

Структура чека в контексті Bitrix

Bitrix формує чек через клас \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();
}

Чек при поверненні замовлення

При скасуванні оплаченого замовлення Bitrix повинен автоматично сформувати чек повернення. Це відбувається при зніманні статусу оплати:

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

Переконатися що у налаштуваннях касі включена опція «Формувати чек повернення при скасуванні оплати».