• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/conversion/entityconversionmapper.php
  • Класс: Bitrix\Crm\Conversion\EntityConversionMapper
  • Вызов: EntityConversionMapper::initializeUserFields
static function initializeUserFields($entityTypeID, array &$fields)
{
	$userFields = self::getUserFields($entityTypeID);
	foreach($userFields as $userField)
	{
		$typeID = isset($userField['USER_TYPE_ID']) ? $userField['USER_TYPE_ID'] : '';
		$name = isset($userField['FIELD_NAME']) ? $userField['FIELD_NAME'] : '';
		if($name === '' || $typeID === '')
		{
			continue;
		}

		//Skip already assigned fields
		if(isset($fields[$name]))
		{
			continue;
		}

		if (
			$typeID === EnumType::USER_TYPE_ID
			&& is_callable([$userField['USER_TYPE']['CLASS_NAME'], 'GetList'])
		)
		{
			$dbResult = call_user_func([$userField['USER_TYPE']['CLASS_NAME'], 'GetList'], $userField);

			$enumIds = [];
			while($enum = $dbResult->Fetch())
			{
				$isDefault = (($enum['DEF'] ?? 'N') === 'Y');
				if (!$isDefault)
				{
					continue;
				}

				$isMultiple = (($userField['MULTIPLE'] ?? 'N') === 'Y');
				if ($isMultiple)
				{
					$enumIds[] = $enum['ID'];
				}
				else
				{
					$enumIds = $enum['ID'];

					break;
				}
			}

			if(!empty($enumIds))
			{
				$fields[$name] = $enumIds;
			}

			continue;
		}

		$settings = isset($userField['SETTINGS']) && is_array($userField['SETTINGS'])
			? $userField['SETTINGS'] : array();

		if(!isset($settings['DEFAULT_VALUE']))
		{
			continue;
		}

		if(!is_array($settings['DEFAULT_VALUE']))
		{
			$fields[$name] =
				$userField['MULTIPLE'] === 'Y'
					? [ $settings['DEFAULT_VALUE'] ]
					: $settings['DEFAULT_VALUE']
			;
		}
		elseif($typeID === 'datetime')
		{
			$valueType = isset($settings['DEFAULT_VALUE']['TYPE']) ? $settings['DEFAULT_VALUE']['TYPE'] : '';
			if($valueType === 'NOW')
			{
				$d = new Date();
				$fields[$name] = $d->format(Date::getFormat());
			}
			elseif($valueType === 'FIXED'
				&& isset($settings['DEFAULT_VALUE']['VALUE'])
				&& $settings['DEFAULT_VALUE']['VALUE'] !== '')
			{
				try
				{
					$d = new Date($settings['DEFAULT_VALUE']['VALUE'], 'Y-m-d');
					$fields[$name] = $d->format(Date::getFormat());
				}
				catch(Main\ObjectException $e)
				{
				}
			}
		}
	}
}