...Человеческий поиск в разработке...
- Модуль: 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(); } } }