• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/entity/compatibility/adapter/operation.php
  • Класс: Bitrix\Crm\Entity\Compatibility\Adapter\Operation
  • Вызов: Operation::prepareFields
private function prepareFields(array &$fields, bool $isNew): void
{
	global $USER_FIELD_MANAGER;

	$crmUserType = new \CCrmUserType($USER_FIELD_MANAGER, $this->factory->getUserFieldEntityId());

	// use the same workarounds as old api
	$crmUserType->PrepareUpdate($fields, ['IS_NEW' => $isNew]);

	foreach ($this->factory->getFieldsCollection() as $field)
	{
		if (!$field->isUserField() || !isset($fields[$field->getName()]))
		{
			continue;
		}

		$fieldValue = $fields[$field->getName()];
		// previously it was applied only for fields with type 'crm', expand it on other types for consistency
		if (!is_iterable($fieldValue) && $field->isMultiple())
		{
			$fields[$field->getName()] = [$fieldValue];
		}
	}

	if (array_key_exists('CATEGORY_ID', $fields) && $this->factory->isCategoriesSupported())
	{
		$categoryId = (int)$fields['CATEGORY_ID'];
		if (!$this->factory->isCategoryAvailable($categoryId))
		{
			$fields['CATEGORY_ID'] = $this->factory->createDefaultCategoryIfNotExist()->getId();
		}
	}
}