В модуле присутствует дополнительный функционал, позволяющий модифицировать данные, приходящие из системы и уходящие в нее. Для этого в файле init.php нужно описать нужную функцию и произвести требуемые изменения данных. О том как подключить init.php, можно подробно прочитать в документации 1С-Битрикс.
Функция retailCrmBeforeCustomerSend
retailCrmBeforeCustomerSend — модификация данных клиента перед отправкой в систему.
function retailCrmBeforeCustomerSend($customer)
{
//Ваши изменения
return $customer;
//либо return false; и тогда данные отправлены в систему не будут
}
Где $customer — сформированный массив данных клиента для отправки в систему.
Функция retailCrmBeforeOrderSend
retailCrmBeforeOrderSend — модификация данных заказа перед отправкой в систему.
function retailCrmBeforeOrderSend($order, $arFields)
{
//Ваши изменения
return $order;
//либо return false; и тогда данные отправлены в систему не будут
}
Где $order — сформированный массив данных заказа для отправки в систему, а $arFields — массив полей заказа на сайте.
Функция retailCrmBeforeCustomerSave
retailCrmBeforeCustomerSave — модификация данных клиента, пришедших по истории из системы.
function retailCrmBeforeCustomerSave($customer)
{
//Ваши изменения
return $customer;
//либо return false; и тогда изменения из системы по этому клиенту будут проигнорированы
}
Где $customer— массив с измененными данными клиента, пришедший из системы.
Функция retailCrmAfterCustomerSave
retailCrmAfterCustomerSave — функция, выполняющаяся сразу после сохранения на сайте изменений данных клиента, пришедших по истории из системы.
function retailCrmAfterCustomerSave($customer)
{
//Ваши изменения
return;
}
Где $customer— массив с измененными данными клиента, пришедшими из системы.
Функция retailCrmBeforeOrderSave
retailCrmBeforeOrderSave — модификация данных заказа, пришедших по истории из системы.
function retailCrmBeforeOrderSave($order)
{
//Ваши изменения
return $order;
//либо return false; и тогда изменения из системы по этому заказу будут проигнорированы
}
Где $order— массив с измененными данными заказа, пришедший из системы.
Функция retailCrmAfterOrderSave
retailCrmAfterOrderSave — функция, которая выполняется сразу после сохранения на сайте изменений заказа, пришедших по истории из системы.
function retailCrmAfterOrderSave($order)
{
//Ваши изменения
return;
}
Где $order— массив с измененными данными заказа, пришедшими из системы.
Функция retailCrmApiResult
retailCrmApiResult — функция выполняющаяся сразу после получения ответа от API системы.
function retailCrmApiResult($methodApi, $res, $code)
{
//Ваши изменения
return;
}
Где $methodApi— название API метода, $res— результат запроса true/false(удачный или не удачный запрос), $code- код статуса ответа API.
Примечание
Ошибки в коде, при использовании данной функции, могут нарушить работу синхронизации сайта и системы.
Если перечисленных выше инструментов по какой-то причине недостаточно, то можно внести требуемые изменения непосредственно в код модуля без риска потери этих изменений при обновлении модуля. Для этого требуется скопировать файл с нужным классом в директорию /bitrix/php_interface/retailcrm/ и уже в нем производить модификацию.
Данный механизм поддерживает изменение классов для работы с клиентами, заказами, событиями, экспортом каталога и другими вспомогательными механизмами.
Особенности
Пользовательские поля в CRM выгружаются через ассоциативный массив customFields, в данных заказа. Пример:
json {"customFields":{"someCode":"value"}}
Для передачи пользовательского поля в систему используйте php-функцию:
function retailCrmBeforeOrderSend($order, $arFields)
{
$order['customFields']['someCode'] = 'value';
return $order;
}