Пользовательский шаблон бланка заказа. Bitrix

Йо-йо! Недавно мне нужно было реализовать не стандартный шаблон бланка заказа. Видимо он был нужен для печати заказа и набора товара. Чтобы это было удобнее делать в шаблоне нужны картинки товара. И так.. сейчас я расскажу как сделать пользовательский шаблон бланка заказа в битрике.

Печать бланка заказа в битриксе

Перенос шаблона

Сперва нам нужно сделать так, чтобы у нас был собственный файл с шаблоном в котором мы будем вносить правки. Для этого из папки /bitrix/modules/sale/reports/ в папку /bitrix/admin/reports/
копируем нужный нам шаблон, в моём случае это order_form.php. В некоторых сборках битрикса изначальный шаблон может лежать в другой папке, а в /bitrix/modules/sale/reports/ он будет только подключаться, так что будьте внимательны.

Получение нужных данных

В данном шаблоне в различных переменных не хранятся все данные, которые нам нужны. Так, что нам нужно будет их получить. Внутри шаблона есть строки:

//определяем начальную цену
$item_price = $b_AMOUNT;

if(DoubleVal($arBasket["VAT_RATE"]) > 0)
{
    $nds_val = ($b_AMOUNT - DoubleVal($b_AMOUNT/(1+$arBasket["VAT_RATE"])));
    $item_price = $b_AMOUNT - $nds_val;
    $taxRate = $arBasket["VAT_RATE"]*100;
}
elseif(!$bUseVat)
{
    $basket_tax = CSaleOrderTax::CountTaxes($b_AMOUNT*$arQuantities[$i], $arTaxList, $arOrder["CURRENCY"]);
    for ($mi = 0, $countTaxList = count($arTaxList); $mi < $countTaxList; $mi++)
    {
        if ($arTaxList[$mi]["IS_IN_PRICE"] == "Y")
        {
            $item_price -= $arTaxList[$mi]["TAX_VAL"];
        }
        $nds_val += DoubleVal($arTaxList[$mi]["TAX_VAL"]);
        $taxRate += ($arTaxList[$mi]["VALUE"]);
    }
}

Поле них нужно получить данные, которые дальше будем использовать:

// Получаем данные инфоблока для элемента по ID
$c_CIBlockElement = CIBlockElement::GetByID($arBasket['PRODUCT_ID'])->GetNextElement();
$detailPictureId = ''; // ID картинки
$codePriont = ""; // Код товара
$ostPrint = ""; // Остаток
if(!empty($c_CIBlockElement)){
    $detailPictureId = $c_CIBlockElement->GetFields()['DETAIL_PICTURE'];
    $codePriont = $c_CIBlockElement->GetProperties()['CODE_5']['VALUE'];
    $ostPrint = CCatalogProduct::GetByID($arBasket['PRODUCT_ID'])['QUANTITY'];
}

Так мы получим данные, которые нам нужны и можем распечатать их внутри таблицы бланка заказа, кроме картинки.

Печать картинки

Чтобы распечатать картинку мы используем следующий код:

<img src="<?php echo (isset($detailPictureId)) ? CFile::GetPath($detailPictureId) : ''; ?>"/>

В результате мы получим пример следующие:

Добавление картинки в бланк заказа bitrix

Бонус

Возможно вы заметили вверху таблицы ссылку download. Тот, кто подпишется на мою группу в VK получит готовый код и инструкцию по установке выгрузки бланка заказа в excel, работающую на php spreadsheet.

P.S.

Неожиданно из figma выпилили шрифт, который я раньше использовал для баннеров и это подтолкнуло меня на обновление стиля сайта. Обложка для этой записи первый шаг