Печатные формы и Печать документов по заказу в 1С-Битрикс
В статье рассказывается о добавлении пользовательских печатных форм для печати заказов с сайта.
Печатные формы в 1С-Битрикс
Печатные формы - страница для настройки данных в документах по заказу, выводимых на печать.
В документах, выводимых на печать, необходимо указать множество данных от названия компании до реквизитов счета. Такая настройка выполняется на странице Настройка печатных форм (Магазин > Настройки > Печатные формы).
Настройка выполняется простым заданием соответствий в двух колонках. Данные заполняются отдельно для магазина и для покупателя.
Печать документов в 1С-Битрикс
Что же касается печати документов, то печать документов выполняется как по всему заказу, так и отдельно по отгрузкам:
- Для печати документа отгрузки следует перейти к форме редактирования отгрузки и нажать кнопку Распечатать, выбрав необходимый шаблон документа http://joxi.ru/brRvEXvHYXv6Wr:
- Печать документов по заказу выполняется со страницы просмотра/редактирования заказа по кнопке Печать заказа, выбрав необходимый шаблон документа http://joxi.ru/Q2KvDKvHwKl0Ym:
- распечатать документы можно иначе: находясь на странице списка заказов, в меню действий выбрать пункт Печать документов http://joxi.ru/BA0VnkVcPOD49m:
Более подробную информацию можно изучить на странице обучающего курса 1С-Битрикс по ссылке https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=42&LESSON_ID=3101.
В конце статьи по указанной ссылке есть примечание: внешний вид формы печати документов по заказу настраивается на странице Настройка печатных форм (Магазин > Настройки > Печатные формы).
Создание пользовательского шаблона печати документов в 1С-Битрикс
Файлы, содержащие Предустановленные шаблоны, находятся в каталоге /bitrix/modules/sale/reports/
.
Если вас не устраивает какой-либо предустановленный шаблон, то вам следует скопировать файл этого шаблона из каталога предустановленных шаблонов в каталог пользовательских шаблонов (/bitrix/admin/reports/
) и изменить его соответствующим образом. В каталог пользовательских шаблонов можно добавить любое количество произвольных шаблонов документов.
Если у вас используется многоязычная версия сайта, в этом случае нужно брать предустановленные шаблоны из папки /bitrix/modules/sale/ru/reports
.
Техническая информация для админитраторов находится на этой странице - https://dev.1c-bitrix.ru/user_help/store/sale/orders/sale_order_print.php.
Итак, размерем данный функционал на решении реальной задачи:
Для печати заказа нам нужна только краткая информация и подходит только "Бланк заказа". Но в нем нет информации о телефоне, почте, адресе доставки покупателя из заказа. Так же не отображается изначальная цена товара и какая скидка применена. Только итоговая сумма со скидкой. Как все это настроить для печати?
В папке /bitrix/modules/sale/reports/ мы видим следующие предустановленные шаблоны печатных документов http://joxi.ru/KAxadPaF1N5Bgr:
Блан заказа выглядит таким образом http://joxi.ru/v29VdMVczxyW3A:
Счёт-фактура выглядит таким образом http://joxi.ru/823Vn7VcDv0OYm:
Пример предустановленного документа "Счёт" http://joxi.ru/KAgj7ljcXldbN2:
Из статьи 1С-Битрикс становится ясно, что нельзя добавить колонку со скидкой на товар, т.к. в документ передается окончательная цена, тем не менее, мы можем дополнить подходящую форму докумтена "Бланк заказа" (он же товарный чек) расширенной информацией о покупателе.
Код шаблона из товарного чека, отвечающий за вывод данных выглядит так http://joxi.ru/YmEv1QvHJQyVE2:
Здесь <tr>...</tr>
- это строка таблицы, а <td>...</td>
в ней - это содержимое ячейки. В содержимом находится программный PHP-код.
Чтобы решить задачу, потребуется добавить несколько строк <tr> и ячеек <td>, заполнив их информацией, которая имеется в другом документе для печати (например, "Счет").
Алгоритм создания пользовательского шаблона печати документов в 1С-Битрикс
1. Копируем из папки /bitrix/modules/sale/ru/reports
(конкретно для данного примера) файл order_form.php в папку /bitrix/admin/reports/
, и назовем его order_form_custom-1.php.
При попытке копирования файла средствами 1С-Битрикс появилось уведомление, что такой папки нет (Папка "/bitrix/admin/reports/" отсутствует. Вы хотите чтобы она была создана?), с предложением создать папку. Соглашаемся на это, нажав "ок".
2. Открываем файл order_form_custom-1.php для редактирования.
3. Первое, что нужно заменить в файле - заголовок (в нашем случае это <title langs="ru">Бланк заказа</title>
), т.к. именно это значение отображается при выборе варианта печатного документа из выпадающего списка. Заменим его на <title langs="ru">Бланк заказа (расширенный)</title>.
4. При выводе информации мы будем руководствоваться тремя массивами данных:
- $arOrder - Массив атрибутов заказа (ID, доставка, стоимость, дата создания и т.д.)
- $arOrderProps - Массив со свойствами заказа
- $arParams - Массив атрибутов, которые устанавливаются на странице: магазин > настройки > печатные формы
- $arBasketIDs – Массив кодов товарных позиций в заказе (кодов соответствующих записей в корзине), которые выбраны для печати
- $arQuantities – Массив количеств товарных позиций в заказе, которые выбраны для печати
Для получения более подробной информации о содержании массивов в шаблоне печатного документа выполните код (для примера с $arOrder) <pre><?php print_r($arOrder); ?></pre>
- вывод всех элементов массива атрибутов заказа.
5. Выводим контактные данные.
В зависимости от способа оформления заказа мы сначала проверяем наличие данных в $arParams, и если там пусто, то берём значение из $arOrderProps (по крайней мере такая проверка установлена в предустановленном шаблоне. Мнемонические коды свойств также можно посмотреть на странице в панели управления /bitrix/admin/sale_order_props.php
.
На примере вывода телефона покупателя это выглядит так http://joxi.ru/L21Vp1VcgdMPQA:
По аналогии добавляем E-mail и адрес доставки http://joxi.ru/EA4Vn8VcO7ELvm:
В итоге вывод информации для товарного чека выглядит так http://joxi.ru/Vm6V5JVcjopO1m:
6. Выводим скидки к товарам.
Как оказалось в процессе написания статьи, данные о скидке находятся в массиве $arBasket. В нем есть несколько переменных, которые хранят значение цены товара:
- $arBasket["BASE_PRICE"] - основная цена единицы товара БЕЗ скидки
- $arBasket["DISCOUNT_PRICE"] - размер скидки на 1 единицу товара
- $arBasket["PRICE"] - цена единицы товара с учетом скидки
Массив $arBasket уже используется в печатное документе Товарного чека, но важно учесть, что он используется внутри цикла вывода элементов таблицы номенклатуры. Вот код, в котором происходит получение этого массива - foreach ($arBasketOrder as $arBasket):
.
Чтобы вывести скидку в таблице номенклатуры, необходимо:
- добравить колонку "Скидка" в строку заголовков таблицы http://joxi.ru/v29VdMVczxodgA:
- добавить вывод ячейки со скидкой (п.2. скриншота http://joxi.ru/5mdeNbeUewy4N2) в строке товарной позиции, скорректировать вывод рядом стоящик ячеек с ценой за единицу товара (п.1. скриншота http://joxi.ru/5mdeNbeUewy4N2) и итоговой ценой за позицию с учетом количества и скидок (п.3. скриншота http://joxi.ru/5mdeNbeUewy4N2):
- скорректировать объединение ячеек для строки суммы http://joxi.ru/L21Vp1Vcgdb6OA (изменить "4" на "5"):
- скорректировать объединение ячеек для строки итоговой суммы без учета доставки http://joxi.ru/Grq5dP5ckLPNKr:
В итоге при тестировании печатного документа для заказа с товарами, которые были приобретены со скидкой, выводи будет выглядеть так http://joxi.ru/Q2KvDKvHwKx4bm:
На этом задача выполнена, всем спасибо за чтение.
Исходный код файла доступен для скачивания по ссылке: https://yadi.sk/d/3nQN0UooeJ7gzA
Полезные ссылки:
- https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=42&LESSON_ID=3101
- https://hard-skills.ru/bitrix/pechat-zakaza-v-bitriks/
Tags: 1C-Bitrix 1С-Битрикс
Недавние комментарии
Восстановление конфигурации WinSCP из реестра Windows
[Решено] Chrome: как остановить редирект с http на https
Перенос файлов между серверами напрямую по SSH через SCP
Восстановление конфигурации WinSCP из реестра Windows
Устанавливаем macOS Monterey на VirtualBox на ПК или ноутбуке с Windows 10