- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/webform/entityfieldprovider.php
- Класс: Bitrix\Crm\WebForm\EntityFieldProvider
- Вызов: EntityFieldProvider::onUpdateUserFieldItems
static function onUpdateUserFieldItems(array $userField, array $items)
{
$actualItems = [];
foreach ($items as $itemId => $item)
{
if (!is_numeric($itemId))
{
continue;
}
$actualItems[$itemId] = $item;
}
$fieldName = substr($userField['ENTITY_ID'], 4) . '_' . $userField['FIELD_NAME'];
$rows = Internals\FieldTable::getList([
'select' => ['FORM_ID'],
'filter' => [
'=CODE' => $fieldName
],
]);
foreach ($rows as $row)
{
$isChanged = false;
$form = new Form($row['FORM_ID']);
$formFields = $form->getFields();
foreach ($formFields as $index => $formField)
{
if ($formField['CODE'] !== $fieldName)
{
continue;
}
$fieldItems = is_array($formField['ITEMS']) ? $formField['ITEMS'] : [];
$fieldItems = array_combine(
array_column($fieldItems, 'ID'),
$fieldItems
);
$newItems = [];
foreach ($actualItems as $itemId => $item)
{
$newItem = [
'ID' => (string)$itemId,
'VALUE' => $item['VALUE'],
];
if (!empty($fieldItems[$itemId]['DISABLED']))
{
$newItem['DISABLED'] = $fieldItems[$itemId]['DISABLED'] === 'Y' ? 'Y' : 'N';
}
if (!empty($fieldItems[$itemId]['SELECTED']))
{
$newItem['SELECTED'] = $fieldItems[$itemId]['SELECTED'] === 'Y' ? 'Y' : 'N';
}
$newItems[] = $newItem;
}
$formField['ITEMS'] = $newItems;
$formFields[$index] = $formField;
$isChanged = true;
}
if ($isChanged)
{
$form->merge(['FIELDS' => $formFields]);
$form->save();
}
}
}