Печатная форма заказа в 1С-Битрикс — это не отдельная сущность, а шаблон платёжной системы. То, что менеджер выводит на печать как «счёт», физически формируется обработчиком платёжной системы, а данные в него подставляются через справочник значений продавца. Разберём, где лежат шаблоны, как добавить свои поля и реквизиты, вставить логотип, печать и подпись, а также как создать новую печатную форму и привязать её к нужной платёжной системе.
Что такое печатная форма и откуда берутся данные
В модуле sale печать документа по заказу привязана к платёжной системе. Классический пример — обработчик «Оплата по счёту» (bill): когда менеджер в карточке заказа нажимает «Печать», Битрикс рендерит шаблон именно этого обработчика, а не какую-то универсальную форму.
Каждый обработчик состоит из трёх частей: описания полей (.description.php), логики (handler.php) и одного или нескольких шаблонов вывода в template/. Именно шаблон определяет, как выглядит печатная форма — вёрстку, набор колонок, блок реквизитов и подвал.
Данные в шаблон приходят двумя путями: часть — прямо из объекта заказа (\Bitrix\Sale\Order: состав, суммы, свойства), а часть — из справочника значений (\Bitrix\Sale\BusinessValue). Это ключевая механика: реквизиты продавца, логотип, печать не «зашиты» в шаблон, а подставляются по кодам бизнес-значений.
Где физически хранятся шаблоны
Штатные обработчики платёжных систем и их шаблоны лежат в модуле:
/bitrix/modules/sale/handlers/paysystem/— каталог всех системных обработчиков (bill,cash,yandexpayи т. д.);- внутри обработчика —
template/template.php(реже несколько шаблонов, тогда нужный выбирается в настройках платёжной системы).
/local или /bitrix/php_interface.Правильное место для своих форм — /local/php_interface/include/sale_payment/ (или устаревший путь /bitrix/php_interface/include/sale_payment/). Обработчики отсюда Битрикс подхватывает автоматически и показывает их в списке при выборе типа платёжной системы.
Редактирование существующего шаблона
Чтобы изменить внешний вид штатного счёта, копию обработчика переносят в пользовательский каталог. Порядок такой:
- Скопировать папку
/bitrix/modules/sale/handlers/paysystem/bill/в/local/php_interface/include/sale_payment/mybill/. - Переименовать класс обработчика внутри
handler.phpи поправить егоgetName()в.description.php, чтобы форма отличалась в списке. - Внести правки в
template/template.php: вёрстку таблицы товаров, шрифты, порядок блоков.
В шаблоне доступны объект $order, сервис $paySystemService и массив $params с подготовленными бизнес-значениями. Обращаться к составу заказа удобно через коллекцию корзины: $order->getBasket()->getBasketItems(), а к суммам — через $order->getPrice(). Свойства заказа (например, ИНН покупателя) берутся из $order->getPropertyCollection().
Свои поля и реквизиты продавца
Реквизиты компании (наименование, ИНН, КПП, расчётный счёт, банк) не пишут прямо в шаблон. Их задают в разделе Магазин → Настройки → Платёжные системы → Справочник значений (/bitrix/admin/sale_business_value.php) или прямо в форме настройки платёжной системы.
Механизм работает так: в шаблоне стоит код бизнес-значения (например, реквизит продавца), а в справочнике этот код сопоставляется с источником — константой, свойством заказа или свойством пользователя. Это позволяет одному шаблону обслуживать несколько юрлиц: значение подставляется по группе (провайдеру) в зависимости от условий заказа.
| Источник значения | Когда применять |
|---|---|
| Константа продавца | Постоянные реквизиты одного юрлица (ИНН, банк) |
| Свойство заказа | Данные покупателя из оформления (ИНН плательщика, адрес) |
| Свойство профиля покупателя | Реквизиты, сохранённые в профиле B2B-клиента |
Чтобы добавить новое поле, объявите его код в .description.php обработчика (секция CODES) и выведите в шаблоне через переданный массив значений. После этого поле появится в справочнике и его можно будет сопоставить с любым источником.
Логотип, печать и подпись
Графика в счёте — логотип, печать организации и факсимиле подписи — это тоже бизнес-значения, только файлового типа. В штатном обработчике bill для них уже предусмотрены поля в настройках платёжной системы: изображение логотипа, оттиск печати и подписи руководителя и бухгалтера.
- Файлы загружаются в настройках платёжной системы либо в справочнике значений и хранятся в таблице файлов Битрикса.
- В шаблоне картинка выводится по абсолютному пути или как data-URI — второе надёжнее для печати и генерации PDF, чтобы изображение не «отвалилось».
- Печать и подпись обычно накладывают полупрозрачным PNG поверх блока с суммой и подписантами.
Создание новой печатной формы
Если нужен документ, которого нет в стандартной поставке (например, спецификация к договору или счёт другого формата), проще всего сделать новый обработчик платёжной системы на базе существующего.
- Создайте каталог
/local/php_interface/include/sale_payment/specification/. - Положите три файла:
.description.php(имя, коды полей, сортировка),handler.php(класс-наследник\Bitrix\Sale\PaySystem\BaseServiceHandler) иtemplate/template.php. - В
.description.phpопишите нужные реквизиты и файловые поля, в шаблоне сверстайте документ.
После этого новая форма появится как отдельный тип обработчика при создании платёжной системы. Если печатать документ нужно независимо от оплаты, форму всё равно оформляют через платёжную систему — это штатный способ вывода печати по заказу в Битриксе; альтернатива только через собственный компонент или страницу в админке.
Привязка формы к платёжной системе
Чтобы форма заработала, её обработчик нужно назначить платёжной системе в Магазин → Настройки → Платёжные системы (/bitrix/admin/sale_pay_system.php).
- Создайте или откройте платёжную систему и выберите ваш обработчик в поле «Тип обработчика».
- Заполните поля настроек — именно здесь задаются реквизиты, логотип, печать и выбирается шаблон, если их несколько.
- Ограничьте применимость через ограничения платёжной системы (по типу плательщика, сумме, свойству заказа), чтобы форма «Счёт для юрлиц» не предлагалась рознице.
В карточке заказа доступные к печати формы определяются оплатами: у каждой оплаты своя платёжная система, а значит — свой печатный шаблон. Поэтому один заказ может печататься и как розничный чек, и как счёт для B2B — зависит от того, какая оплата в нём создана.
Итог
Печатная форма заказа в 1С-Битрикс — это шаблон обработчика платёжной системы, а не самостоятельный документ. Кастомизация строится на трёх опорах: шаблон в /local/php_interface/include/sale_payment/, справочник бизнес-значений для реквизитов и графики, и привязка обработчика к платёжной системе с нужными ограничениями. Такой подход позволяет обслуживать несколько юрлиц и разные типы клиентов одним аккуратным набором форм.
Если печатные документы должны совпадать с формами из 1С, подтягивать реквизиты из учётной системы и корректно печататься в PDF, мы в B2Bsite проектируем шаблоны, настраиваем справочник значений и связываем это с обменом заказами. Обращайтесь — соберём печатные формы под ваши бизнес-процессы и поддержим их при обновлениях платформы.
Частые вопросы
Где в Битриксе редактируется печатная форма счёта?
Форма счёта — это шаблон обработчика платёжной системы «Оплата по счёту». Копию обработчика переносят из /bitrix/modules/sale/handlers/paysystem/bill/ в /local/php_interface/include/sale_payment/ и правят там.
Почему нельзя менять шаблон прямо в /bitrix/modules/sale?
Эти файлы принадлежат модулю и перезаписываются при каждом обновлении. Любые правки в них будут потеряны, поэтому кастомные шаблоны держат только в /local или /bitrix/php_interface.
Как подставить в форму реквизиты продавца?
Реквизиты задаются через справочник значений (Магазин → Настройки → Платёжные системы → Справочник значений). Код бизнес-значения из шаблона сопоставляется с константой, свойством заказа или профиля.
Можно ли использовать разные реквизиты для разных юрлиц?
Да. В справочнике значений создаются группы (провайдеры), и значение подставляется в зависимости от условий заказа, поэтому один шаблон обслуживает несколько организаций.
Как добавить логотип, печать и подпись?
Это файловые бизнес-значения: изображения загружаются в настройках платёжной системы или в справочнике значений. В шаблоне их выводят по абсолютному пути или как data-URI для надёжной печати.
Как сделать печатную форму, которой нет в стандартной поставке?
Создать новый обработчик в /local/php_interface/include/sale_payment/ из трёх файлов: .description.php, handler.php и template/template.php. Он появится как отдельный тип при создании платёжной системы.
Почему у одного заказа доступны разные печатные формы?
Печатная форма привязана к оплате, а у каждой оплаты своя платёжная система со своим шаблоном. Поэтому набор доступных форм зависит от того, какие оплаты созданы в заказе.
Как ограничить форму только юрлицами?
В настройках платёжной системы используются ограничения по типу плательщика, сумме или свойству заказа. Так форма «Счёт для юрлиц» не будет предлагаться розничным покупателям.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.