Если вам необходимо добавить свойство продукта в шаблон письма заказа, то можно это сделать в init.php через событие OnOrderNewSendEmail. Пример конечно костыльный, но вдруг кому пригодиться
AddEventHandler("sale", "OnOrderNewSendEmail", "ModifyOrderSaleMails");
function ModifyOrderSaleMails($orderID, &$eventName, &$arFields)
{
if (CModule::IncludeModule("sale") && CModule::IncludeModule("iblock")) {
Yandex_check($orderID);
//разбираем заказ по частям
$strOrderList = "";
$dbBasketItems = CSaleBasket::GetList(
array("NAME" => "ASC"),
array("ORDER_ID" => $orderID),
false,
false,
array("PRODUCT_ID", "ID", "NAME", "QUANTITY", "LID", "DETAIL_PAGE_URL", "PRICE", "CURRENCY", "PROPPERTY_CML2_ARTICLE")
);
// file_put_contents('/var/www/b2b.eco-balt.ru/logupd' . time() . '.log', print_r($productsList[$arFieldsProductList['ID']]['SKU'], true));
$productIds = [];
while ($arPropsFirst = $dbBasketItems->Fetch()) {
$productIds[] = $arPropsFirst['PRODUCT_ID'];
}
$arSelectProducts = ['ID', 'DETAIL_PAGE_URL', 'PREVIEW_PICTURE', 'PROPERTY_CML2_ARTICLE'];
$arFilterProducts = ['IBLOCK_ID' => 6, 'ID' => $productIds];
$resProductList = CIBlockElement::GetList(['ID' => 'ASC'], $arFilterProducts, false, false, $arSelectProducts);
$productsById = [];
while ($obProductList = $resProductList->Fetch()) {
$productsById[$obProductList['ID']] = $obProductList;
}
$dbBasketItems = CSaleBasket::GetList(
array("NAME" => "ASC"),
array("ORDER_ID" => $orderID),
false,
false,
array("PRODUCT_ID", "ID", "NAME", "QUANTITY", "LID", "DETAIL_PAGE_URL", "PRICE", "CURRENCY", "PROPPERTY_CML2_ARTICLE")
);
while ($arProps = $dbBasketItems->Fetch())
{
$nujnoeSvoistvoArticle = '<NOT FOUND>';
if(!empty($productsById[$arProps['PRODUCT_ID']])) {
$nujnoeSvoistvoArticle = $productsById[$arProps['PRODUCT_ID']]['PROPERTY_CML2_ARTICLE_VALUE'];
}
//вычесляем сумму заказа
$summ = $arProps['QUANTITY'] * $arProps['PRICE'];
//функция php обновления до 2-х значений после запятой
//$price = round($arProps['PRICE'], 2);
$price = number_format($arProps['PRICE'], 2, ',', ' ');
$summ = number_format($summ, 2, ',', ' ');
$i++;
if($i % 2){
$background = 'background:#f7f7f7;';
}else{
$background = '';
}
$strCustomOrderList .= "
<tr>
<td style='".$background."padding:7.5pt'>
<p style='font-family:'times new roman' , serif;font-size:12pt;margin-left:0cm;margin-right:0cm'>
<span style='font-family:'arial' , sans-serif;font-size:10pt'>".$nujnoeSvoistvoArticle."<br>
<a href='https://www.ecobalt.ru".$arProps['DETAIL_PAGE_URL']."' class='daria-goto-anchor' target='_blank'>
<span style='color:#006ab4'>".$arProps['NAME']."</span>
</a>
</span>
</p>
</td>
<td valign='top' width='60' style='".$background."padding:7.5pt;width:45pt'>
<p align='center' style='font-family:'times new roman' , serif;font-size:12pt;margin:0cm 0cm 0.0001pt 0cm;text-align:center'>
<span style='font-family:'arial' , sans-serif;font-size:10pt'>".$arProps['QUANTITY']."</span>
</p>
</td>
<td valign='top' width='90' style='".$background."padding:7.5pt;width:67.5pt'>
<p align='right' style='font-family:'times new roman' , serif;font-size:12pt;margin:0cm 0cm 0.0001pt 0cm;text-align:right''>
<span style='font-family:'arial' , sans-serif;font-size:10pt'>".$summ."</span>
</p>
</td>
</tr>
";
}
//заносим заказ в переменную
$arFields["ORDER_TABLE_ITEMS"] = $strCustomOrderList;
//-- получаем телефоны и адрес
$arOrder = CSaleOrder::GetByID($orderID);
$order_props = CSaleOrderPropsValue::GetOrderProps($orderID);
$phone="";
$index = "";
$country_name = "";
$city_name = "";
$address = "";
while ($arProps = $order_props->Fetch())
{
if ($arProps["CODE"] == "PHONE")
{
$phone = htmlspecialchars($arProps["VALUE"]);
}
if ($arProps["CODE"] == "LOCATION")
{
$arLocs = CSaleLocation::GetByID($arProps["VALUE"]);
$country_name = $arLocs["COUNTRY_NAME_ORIG"];
$city_name = $arLocs["CITY_NAME_ORIG"];
}
if ($arProps["CODE"] == "INDEX")
{
$index = $arProps["VALUE"];
}
if ($arProps["CODE"] == "ADDRESS")
{
$address = $arProps["VALUE"];
}
}
$full_address = $index.", ".$country_name."-".$city_name.", ".$address;
//-- получаем название службы доставки
$arDeliv = CSaleDelivery::GetByID($arOrder["DELIVERY_ID"]);
$delivery_name = "";
if ($arDeliv)
{
$delivery_name = $arDeliv["NAME"];
}
//-- получаем название платежной системы
$arPaySystem = CSalePaySystem::GetByID($arOrder["PAY_SYSTEM_ID"]);
$pay_system_name = "";
if ($arPaySystem)
{
$pay_system_name = $arPaySystem["NAME"];
}
//-- добавляем новые поля в массив результатов
$arFields["COMMENT"] = $arOrder["USER_DESCRIPTION"];
$arFields["PHONE"] = $phone;
$arFields["DELIVERY_NAME"] = $delivery_name;
$arFields["DELIVERY_PRICE"] = $arOrder["PRICE_DELIVERY"];
$arFields["PAYMENT"] = $pay_system_name;
$arFields["DELIV_ADDRESS"] = $full_address;
}
}