Вячеслав, эм... а что в этом коде происходит?
Я вижу, что при обновлении счета происходит поиск по всем счетам и ищется не пустые значения некоторого свойства (т.е. все счета у которых UF_CRM_1525687440 заполнено).
Все счета записываются в массив $result
Затем если их количество (если счетов больще 0), мессив проходится по всем значениям первого счета и проверяет соответствие текущего ID и значению данной переменной. после происходит какой-то дикий мерж между массивом и товарами.
Затем происходит еще один мерж и зацикливание обработчика, т.е. даже если он и не накосячит, то уж точно уйдет в рекурсию, так как на событии обновления счета происходит обновление счета, которое триггерит событие обновление счета, в котором происходит обновление счета ... и так далее до бесконечности.
Почему сразу не написать как-нибудь так:
| Код |
|---|
// То, что должно быть в UF_CRM_1525687440
$acceptedValue = 463;
$result = [];
$CCrmInvoice = new \CCrmInvoice(false);
$invoices = $CCrmInvoice::GetList(
[],
[
'UF_CRM_1525687440' => $acceptedValue
]
);
if ( $result = $invoices->GetNext() )
{
// дальнейшие действия
} |