1С-Битрикс. Кастомный префикс номера заказа
При выгрузке заказов с сайта в 1с при многосайтовости(одна база на 2 сайта) понадобилось дописывать префикс к заказу в виде, например, идентификатора сайта. «Из коробки» этого сделать нельзя. Задача решается парочкой обработчиков:
// {{{ custom order number. format #SITE_ID#-#ORDER_ID# $eventManager = \Bitrix\Main\EventManager::getInstance(); $eventManager->addEventHandlerCompatible('sale', 'OnBeforeOrderAccountNumberSet', function ($orderId, $type){ if($type == 'siteid_orderid' && $orderId > 0){ $arOrder = CSaleOrder::GetByID($orderId); return sprintf('%s-%s', $arOrder['LID'], $orderId); } return false; }); $eventManager->addEventHandlerCompatible('sale', 'OnBuildAccountNumberTemplateList', function (){ return array('CODE' => 'siteid_orderid', 'NAME' => '#SITE_ID#-#ORDER_ID#'); }); // }}}
Код нужно добавить в файл init.php
На событие OnBuildAccountNumberTemplateList мы дополняем шаблон генерации номера заказа(обязательно нужно выбрать #SITE_ID#-#ORDER_ID# и сохранить настройки модуля «Интернет-магазин»).
На событие OnBeforeOrderAccountNumberSet формируем свой номер заказа с нужным префиксом.