Как добавить название сайта в номер заказа 1С-Битрикс (многосайтовость)
Если под управлением 1С-Битрикс работает сразу несколько интернет-магазинов (режим многосайтовости), менеджерам бывает сложно быстро определить, с какого именно сайта поступил новый заказ. Особенно это неудобно, когда все магазины используют единую административную панель и общую почту.
По умолчанию Битрикс формирует обычные номера заказов (1001, 1002, 1003 и т.д.), которые никак не содержат информацию о сайте. Исправить это можно при помощи собственного обработчика события формирования номера заказа.
Добавляем собственный формат номера заказа
Откройте файл /bitrix/modules/sale/init.php (или создайте обработчик в своем модуле) и добавьте следующий код:
<?php
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandlerCompatible(
'sale',
'OnBeforeOrderAccountNumberSet',
function ($orderId, $type) {
if ($type == 'siteid_orderid' && $orderId > 0) {
$arOrder = CSaleOrder::GetByID($orderId);
$number = $arOrder['ID'];
switch ($arOrder['LID']) {
case 's1':
$suffix = 'Рога и копыта';
break;
case 's2':
$suffix = 'Попкорн и печеньки';
break;
default:
$suffix = 'Электроника';
}
return $number . ' - ' . $suffix;
}
return false;
}
);
$eventManager->addEventHandlerCompatible(
'sale',
'OnBuildAccountNumberTemplateList',
function () {
return [
'CODE' => 'siteid_orderid',
'NAME' => 'SITE_ID: ORDER_ID'
];
}
);
?>
Как это работает
Представим, что у вас используется три сайта:
- s1 — «Рога и копыта»;
- s2 — «Попкорн и печеньки»;
- s3 — «Электроника».
Пусть поступают следующие заказы:
- №1000 — сайт s1;
- №1001 — сайт s2;
- №1002 — сайт s3.
Стандартный Битрикс покажет менеджеру только номера:
1000
1001
1002
После подключения обработчика номера будут выглядеть значительно информативнее:
1000 - Рога и копыта
1001 - Попкорн и печеньки
1002 - Электроника
Такой формат будет использоваться в административной панели, уведомлениях по электронной почте и других местах, где выводится номер заказа.
Какие данные можно использовать
В обработчике доступны практически все поля заказа, поэтому при желании можно формировать номер по собственным правилам.
[ID]— ID заказа;[LID]— идентификатор сайта;[DATE_INSERT]— дата создания заказа;[DATE_INSERT_FORMAT]— дата в отформатированном виде;[PERSON_TYPE_ID]— тип плательщика;[USER_ID]— ID пользователя.
Например, никто не мешает сделать номера вида:
MSK-10025
SHOP-10544
CATALOG-9001
или даже:
SHOP-10025-2026
Все зависит только от логики вашего проекта.
Включение собственного шаблона
После добавления обработчика необходимо открыть:
Настройки → Настройки продукта → Интернет-магазин → Формат номера заказа.
В списке появится новый шаблон, который необходимо выбрать.
Обратите внимание, что пользовательские шаблоны нельзя комбинировать со стандартными форматами Битрикса. Работать будет только один выбранный вариант.
Несколько важных нюансов
- изменение затрагивает только новые заказы;
- старые номера автоматически не переименовываются;
- обработчик срабатывает только при создании нового заказа;
- для Битрикс24 (модель «Интернет-магазин + CRM») этот способ обычно не влияет на номер сделки — в CRM продолжит использоваться собственный формат.
Если вы используете многосайтовость, добавление названия сайта или собственного префикса в номер заказа значительно упрощает работу менеджеров. Уже по одному номеру можно понять, откуда пришел заказ, не открывая его карточку и не просматривая дополнительные поля.
Комментарии
Будем рады вашему мнению и вопросам по статье.