@glazsss

Как записать значение в массив битрикс 24?

Все доброго времени суток!

Пытюсь через php добавить значение во множественное пользовательское поле карточки организации.
Делаю следуюеще:
$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));

Где: 3699 - ID компании; UF_CRM_1591122266 - ID блока (множественный с привязкой по сотрудникам), 850 - ID сотрудника.

Просто не добавляет

Хотя, если делать так:

$GLOBALS["USER_FIELD_MANAGER"]->Update("CRM_COMPANY", 3699, Array ("UF_CRM_1591122266" => array ("VALUE" => 100, 850, 1))); - то все работает.. Сотрудники добавляются во множественное поле.

Что не так?

Заранее спасибо!
  • Вопрос задан
  • 1130 просмотров
Решения вопроса 1
@reza40k
$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) );
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы