← К заметкам

Заметки

Как сохранить множественное поле смарт-процесса через фабрику

Для множественного пользовательского поля через D7 передают массив значений. Например, поле с пользователями получает числовые ID, а не строку 15,28.

Фрагмент выполняется после получения фабрики и существующего элемента:

$item->set('UF_CRM_18_COEXECUTORS', [15, 28]);
$result = $factory->getUpdateOperation($item)->launch();
if (!$result->isSuccess()) {
    throw new RuntimeException(implode('; ', $result->getErrorMessages()));
}

Замените код поля на свой и проверьте его тип. Для списка нужны ID вариантов, для файлов — свой формат; массив сам по себе не делает любое значение корректным.

Обычно передаваемый массив задаёт новый набор значений. Если требуется добавить одного участника, сначала получите текущий набор, объедините его с новым ID и уберите повторы. При параллельных изменениях двух обработчиков чтение и последующая запись могут затереть изменения друг друга.