G
G
glazsss2020-06-09 15:43:47
PHP
glazsss, 2020-06-09 15:43:47

How to write a value to an array of Bitrix 24?

All the good time of the day!

I'm trying to add a value to a multiple custom field on an organization card via php.
I also do the following:
$arUserFields1 = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("CRM_COMPANY", 3699);
$arUserFields1 = array($arUserFields1[UF_CRM_1591122266][VALUE]);
$arUserFields1[] = 850;
$GLOBALS["USER_FIELD_MANAGER"]->Update("CRM_COMPANY", 3699, Array("UF_CRM_1591122266[VALUE]" => $arUserFields1));

Where: 3699 - company ID; UF_CRM_1591122266 - block ID (multiple with reference to employees), 850 - employee ID.

Just does not add

Although, if you do like this:

$GLOBALS["USER_FIELD_MANAGER"]->Update("CRM_COMPANY", 3699, Array ("UF_CRM_1591122266" => array ("VALUE" => 100, 850, 1))); - then everything works. Employees are added to the multiple field.

What's wrong?

Thanks in advance!

Answer the question

In order to leave comments, you need to log in

1 answer(s)
R
reza40k, 2020-06-09
@glazsss

$arUserFields1 = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("CRM_COMPANY", 3699);
//создаем хранилище для юзеров
$users = [];
//Если у компании уже есть сотрудники, и их несколько, то закинем их
if( is_array( $arUserFields1[UF_CRM_1591122266][VALUE] ) ){
$users = $arUserFields1[UF_CRM_1591122266][VALUE];
}
//Битрикс такой битрикс, иногда бывает очень неожиданным после обновлений, поэтому сразу предусмотрим вариант, что как обычно АПИ поменялось и вместо массива с одним сотрудником там просто ID сотрудника и число
elseif( is_numeric( $arUserFields1[UF_CRM_1591122266][VALUE]  ) && $arUserFields1[UF_CRM_1591122266][VALUE] > 0 ){
$users[] = $arUserFields1[UF_CRM_1591122266][VALUE];
}
//ДОбавляем нового к списку
$users[] = 850;
//И сохраняем
$GLOBALS["USER_FIELD_MANAGER"]->Update("CRM_COMPANY", 3699, Array ("UF_CRM_1591122266" => $users));
//Хотя если не сработает, тогда надо через СРМ это делать
if( \Bitrix\Main\Loader::inclideModule('crm') ){
$company = new \CCrmCompany();
$company->update( 3699, Array ("UF_CRM_1591122266" => $users) );
}

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question