Обновлено 18.10.2024
Если в почтовом событии не хватает каких-то необходимых полей, то их можно добавить вручную с помощью небольшой кастомизации сайта. Само добавление состоит из 2х шагов:
Пример обработчика для добавления поля #DELIVERY_TIME#
со временем доставки заказа. Обработчик можно разместить в файле init.php
.
В примере предполагается, что само значение времени доставки вы получите самостоятельно, в зависимости от вашей логики сайта.
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'main',
'\Bitrix\Main\Mail\Internal\Event::OnBeforeAdd',
'\MailCustom::onBeforeAdd'
);
class MailCustom
{
function onBeforeAdd(\Bitrix\Main\Entity\Event $event)
{
$fields = $event->getParameter("fields");
if($fields['EVENT_NAME'] != 'SALE_NEW_ORDER') // модифицируем только конкретное почтовое событие
return;
$cFields = $fields['C_FIELDS'];
$cFields['DELIVERY_TIME'] = "моё значение"; // добавляем время доставки
$result = new \Bitrix\Main\Entity\EventResult();
$changedFields = array(
'C_FIELDS' => $cFields,
);
$result->modifyFields($changedFields);
return $result;
}
}
Если в почтовое событие добавили новое поле и требуется настроить его передачу в amoCRM, достаточно добавить описание этого поля к описаниям других полей в настройках типа почтового события.
Например, в типе события "Новый заказ" (SALE_NEW_ORDER
) добавили поле "Время доставки" с кодом DELIVERY_TIME
. Чтобы модуль его "увидел", добавим его к другим полям в настройках типа события:
#DELIVERY_TIME# - Время доставки
;
Всё! Теперь вы можете интегрировать это поле точно так же, как и все остальные.
Будьте внимательны в написании системного кода поля. Поле с таким именем должно существовать в почтовом событии. В случае ошибки ничего передано не будет.
По поводу добавления новых полей в существующие почтовые события, а так же добавления новых почтовых событий в ваши решения вы можете написать в техподдержку. Такие услуги не входят в стандартную поддержку модуля и осуществляются на платной основе.