Добавление данных в шаблон письма о заказе в 1с-Битрикс


Иногда есть необходимость добавить некоторые данные в письмо покупателю или администратору об успешном заказе на веб-сайта под управлением 1с-Битрикс. Это могут быть дополнительная информация о доставке или оплате, свойства заказа и другие данные. Для этого необходимо добавить код в init.php (проверялось на Управление сайтом 20.0.1650. (версия модуля интернет-магазин 20.0.687)):

AddEventHandler('sale', 'OnOrderNewSendEmail', function($orderID, &$eventName, &$arFields) { 

$arOrder = CSaleOrder::GetByID($orderID); 
 
// получаем телефоны и адрес 
$order_props = CSaleOrderPropsValue::GetOrderProps($orderID); 
$index = '';  
$address = ''; 

while ($arProps = $order_props->Fetch()) { 
    if ($arProps['CODE'] == 'LOCATION') { 
        $arLoc = CSaleLocation::GetByID($arProps['VALUE'], LANGUAGE_ID); 
        // $country =  $arLoc['COUNTRY_NAME']; 
        $city = $arLoc['REGION_NAME'] . ' ' . $arLoc['CITY_NAME_ORIG']; 
    } 
    if ($arProps['CODE'] == 'ZIP') { 
        $index = $arProps['VALUE'];    
    } 
    if ($arProps['CODE'] == 'ADDRESS'){ 
        $address = $arProps['VALUE']; 
    } 
} 

$fullAddress = $index . ' ' . $city . ', ' . $address; 

// получаем службу доставки 
$arDelivery = CSaleDelivery::GetByID($arOrder['DELIVERY_ID']); 
$deliveryName = ''; 
if ($arDelivery) { 
    $deliveryName = $arDelivery['NAME']; 
} 

// получаем способ оплаты 
$arPaySystem = CSalePaySystem::GetByID($arOrder['PAY_SYSTEM_ID']); 
$paySystemName = ''; 
if ($arPaySystem){ 
    $paySystemName = $arPaySystem['NAME']; 
} 

// дополнительные свойства заказа (при необходимости)
$dbRes = \Bitrix\Sale\PropertyValueCollection::getList([ 
    'select' => ['*'], 
    'filter' => [ 
        '=ORDER_ID' => $orderID,  
    ] 
]); 
while ($item = $dbRes->fetch()) { 
    // print_r($item);
} 

// добавляем новые поля в массив результатов 
$arFields['ORDER_DESCRIPTION'] = $arOrder['USER_DESCRIPTION'];  
$arFields['DELIVERY_NAME'] =  $deliveryName; 
$arFields["PAYMENT_NAME"] =  $paySystemName; 
$arFields['FULL_ADDRESS'] = $fullAddress;    

// в шаблоне письма #ORDER_DESCRIPTION# и т.д.

});

Далее в админке Битрикса адрес_вашего_сайта/bitrix/admin/message_admin.php в списке шаблонов выберите шаблон с типом почтового события “SALE_NEW_ORDER”:

Выбор шаблона письма

И в нем можете использовать переменные из примера:

#ORDER_DESCRIPTION# – описание заказа

#DELIVERY_NAME# – наименование службы доставки

#PAYMENT_NAME# – наименование платежной системы

#FULL_ADDRESS# – адрес

Редактирование шаблона письма