54-ФЗ требует чек не на факт заказа, а на движение денег и передачу товара. В 1С-Битрикс это разведено на два события — оплату (Payment) и отгрузку (Shipment), и от того, как касса привязана к ним, зависит, пробьётся один чек или два, и с какими признаками расчёта.
Почему чеков может быть два: логика 54-ФЗ
54-ФЗ обязывает формировать кассовый чек в двух моментах: когда покупатель расплачивается и когда продавец передаёт товар. Если оплата и отгрузка совпадают по времени (самовывоз, оплата картой на выдаче), достаточно одного чека полного расчёта. Но в интернет-магазине чаще иначе: клиент платит онлайн сегодня, а посылка уезжает через день-два. Тогда формируется два фискальных документа — чек прихода на предоплату и чек полного расчёта на отгрузку.
В 1С-Битрикс эта модель отражена напрямую. Заказ (Bitrix\Sale\Order) содержит коллекции оплат (PaymentCollection) и отгрузок (ShipmentCollection). Смена статуса оплаты и статуса отгрузки — это разные события, и именно к ним привязана печать чеков. Понимание этого разделения снимает большинство вопросов вида «почему пробилось два чека» или «почему во втором чеке нет денег».
Кассы и чеки в модуле sale
За фискализацию отвечает пространство имён Bitrix\Sale\Cashbox. В админке это два раздела: Магазин → Кассы ККМ и Магазин → Чеки. Касса — это подключённый обработчик, который умеет отправлять чеки в конкретный сервис фискализации.
CashboxAtolFarmV5— облачная касса АТОЛ Онлайн;CashboxOrangeData— Orange Data;CashboxBusinessRu— Бизнес.Ру / Класс365;- кассы платёжных систем — например, онлайн-касса ЮKassa, которая пробивает чек вместе с приёмом платежа.
Объект чека — наследник Bitrix\Sale\Cashbox\Check. Битрикс различает типы чеков классами: Check (приход/полный расчёт), PrepaymentCheck и FullPrepaymentCheck (аванс и 100% предоплата), SellReturnCheck (возврат прихода) и другие. Тип чека определяет и признак способа расчёта, и то, к чему чек привязывается.
Чек прихода при оплате
Первый чек рождается в момент, когда оплата переходит в статус «оплачено» — Payment::setPaid('Y'). Обработчик события создаёт чек и ставит его в очередь на печать. Пробьётся ли он автоматически, зависит от настройки платёжной системы: в свойствах ПС есть флаг «Печатать чек» и выбор типа печати. Для онлайн-касс платёжных систем чек уходит на ОФД вместе с подтверждением платежа.
Ключевой момент — какой это чек по смыслу. Если товар ещё не отгружен, а деньги получены полностью, это чек 100% предоплаты (FullPrepaymentCheck) с признаком способа расчёта «предоплата 100%». Если оплата частичная — «частичная предоплата» или «аванс». Битрикс подбирает тип автоматически, исходя из суммы оплаты относительно суммы заказа и наличия несовершённых отгрузок.
Чек «полный расчёт» при отгрузке
Второй чек формируется, когда отгрузка помечается как совершённая — Shipment::setField('DEDUCTED', 'Y') (в интерфейсе — переключатель «Отгружено»). Это чек полного расчёта: он фиксирует передачу товара покупателю и закрывает ранее полученный аванс. Признак способа расчёта в нём — «полный расчёт».
Важно, что этот чек проводится без движения наличных/безналичных: сумма расчёта в нём указывается как зачёт предоплаты, а не как новый приход денег. Поэтому в фискальном документе присутствует тег зачёта аванса, а не тег «получено наличными/электронными». Если предоплаты не было (оплата и отгрузка одновременно), пробивается один чек полного расчёта, в котором деньги и товар закрываются сразу.
| Сценарий | Чек при оплате | Чек при отгрузке |
|---|---|---|
| Онлайн-оплата, отгрузка позже | Предоплата 100% | Полный расчёт (зачёт аванса) |
| Оплата и выдача одновременно | — | Полный расчёт (приход) |
| Частичная предоплата, доплата при выдаче | Частичная предоплата | Полный расчёт (приход остатка) |
Признак способа и предмета расчёта
Каждая позиция чека несёт два реквизита, которые проверяет ФНС. Признак способа расчёта (тег 1214) отвечает на вопрос «когда платят относительно передачи товара», признак предмета расчёта (тег 1212) — «за что платят».
Признак способа расчёта Битрикс подставляет по типу чека:
1— предоплата 100%;2— частичная предоплата;3— аванс;4— полный расчёт;5— частичный расчёт и кредит.
Признак предмета расчёта задаётся на уровне товара и определяет, товар это, услуга, работа, платёж или иная позиция. В карточке товара он настраивается через свойство, а способ хранения зависит от того, ведёте вы каталог на сайте или получаете номенклатуру обменом из 1С. При интеграции с 1С признак предмета расчёта обычно приходит из учётной системы, и его нельзя переопределять руками на сайте, иначе чек и учёт разойдутся.
Привязка чека к Payment, Shipment и ОФД
В таблице чеков (b_sale_cashbox_check) каждый документ хранит связи с сущностями заказа. Чек прихода привязан к оплате (Payment), чек полного расчёта — к отгрузке (Shipment). Эта привязка нужна не только для отчётности: по ней Битрикс понимает, за что возвращать деньги, если позже оформляется возврат, и не даёт пробить возврат прихода без исходного чека.
Жизненный цикл чека виден в его статусе: чек создаётся, отправляется в кассу, та передаёт его в ОФД и возвращает фискальные признаки — номер ФД, фискальный признак, ссылку на чек. Пока эти реквизиты не пришли, чек висит в статусе ожидания. Если касса недоступна или ОФД отклонил документ, чек уходит в ошибку, и его видно в списке Магазин → Чеки с описанием причины.
- Проверить связку удобно прямо в карточке заказа: под оплатой и под отгрузкой отображаются относящиеся к ним чеки.
- Перепробить упавший чек можно из списка чеков — без создания заказа заново.
- Логи обмена с ОФД пишутся кассой; при разборе ошибок начинают с них.
Типичные сбои связки и как их читать
Большинство проблем — не в 54-ФЗ, а в рассинхроне событий оплаты и отгрузки. Ниже — то, что встречается на проектах чаще всего.
- Не пробился приход. Оплата встала в «оплачено» через админку, а не через колбэк ПС, и обработчик печати не сработал — проверьте, откуда меняется статус оплаты.
- Двойной чек прихода. Печать включена и у кассы ККМ, и у онлайн-кассы платёжной системы. Оставьте один источник.
- Отсутствует чек полного расчёта. Отгрузка не помечена «Отгружено» (
DEDUCTED='Y'); без этого события второй чек не формируется. - Отказ ОФД по позиции. Пустой признак предмета или способа расчёта, чаще всего у доставки или у товара без свойства.
Отдельно стоит следить за частичными сценариями: несколько оплат и несколько отгрузок в одном заказе порождают цепочку чеков, и здесь важно, чтобы суммы авансов и зачётов сходились. Это тот случай, когда логику связки лучше проверять на тестовой кассе до боевого запуска.
Итог
Связка чеков в 1С-Битрикс держится на простом принципе: оплата даёт чек прихода, отгрузка — чек полного расчёта, а признаки способа и предмета расчёта делают эти документы валидными для ФНС. Приход привязывается к Payment, полный расчёт — к Shipment, фискальные признаки приходят из ОФД, и всё это видно в карточке заказа и в разделе «Чеки». Разобравшись в этой механике, вы легко читаете любую ошибку — от двойного чека до отказа по пустому реквизиту.
Если магазин работает в паре с 1С, а сценарии оплат и отгрузок нетривиальны, мы настраиваем кассы, признаки расчёта и обмен так, чтобы чеки пробивались корректно на каждом этапе и не расходились с учётом. Поможем спроектировать связку под ваш процесс и подстраховать её мониторингом.
Частые вопросы
Почему по одному заказу пробивается два чека?
Потому что 54-ФЗ требует чек и на оплату, и на передачу товара. При онлайн-предоплате сначала идёт чек прихода, а при отгрузке — чек полного расчёта, зачитывающий аванс.
К чему привязан чек прихода, а к чему чек полного расчёта?
Чек прихода привязан к оплате (Payment), чек полного расчёта — к отгрузке (Shipment). Эта связь хранится в таблице чеков и используется в том числе при возвратах.
Что такое признак способа расчёта?
Это реквизит позиции чека (тег 1214), который показывает момент оплаты относительно передачи товара: предоплата 100%, частичная предоплата, аванс, полный расчёт и другие. Битрикс подставляет его по типу чека.
Чем признак способа расчёта отличается от признака предмета расчёта?
Способ расчёта отвечает на вопрос «когда платят» (предоплата, полный расчёт), а предмет расчёта — «за что платят» (товар, услуга, работа). Предмет задаётся на уровне товара.
Проводит ли деньги чек полного расчёта после предоплаты?
Нет. Он фиксирует передачу товара и зачитывает ранее полученный аванс, поэтому нового движения денег в нём нет — сумма указана как зачёт предоплаты.
Почему чек не ушёл в ОФД?
Обычно из-за недоступности кассы или отказа ОФД по незаполненному реквизиту — чаще всего пустой признак расчёта у товара или доставки. Причина видна в разделе Магазин → Чеки.
Как избежать двойного чека прихода?
Печать чека должна быть включена только в одном месте — либо у кассы ККМ, либо у онлайн-кассы платёжной системы. Одновременное включение приводит к двойной фискализации.
Кто задаёт признак предмета расчёта при обмене с 1С?
При интеграции с 1С признак предмета расчёта обычно приходит из учётной системы вместе с номенклатурой. Переопределять его вручную на сайте не стоит, иначе чек разойдётся с учётом.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.