• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integration/bizproc/document/valuecollection/base.php
  • Класс: Bitrix\Crm\Integration\BizProc\Document\ValueCollection\Base
  • Вызов: Base::loadUserFieldValues
protected function loadUserFieldValues(): void
{
	$entity = \CCrmOwnerType::ResolveUserFieldEntityID($this->typeId);
	$userFieldsList = Application::getUserTypeManager()->getUserFields($entity, $this->id);

	if (is_array($userFieldsList))
	{
		foreach ($userFieldsList as $userFieldName => $userFieldParams)
		{
			$fieldTypeID = isset($userFieldParams['USER_TYPE']) ? $userFieldParams['USER_TYPE']['USER_TYPE_ID'] : '';
			$isFieldMultiple = isset($userFieldParams['MULTIPLE']) && $userFieldParams['MULTIPLE'] === 'Y';
			$fieldSettings = $userFieldParams['SETTINGS'] ?? [];

			if (isset($this->document[$userFieldName]))
			{
				$fieldValue = $this->document[$userFieldName];
			}
			elseif (isset($userFieldParams['VALUE']) && $userFieldParams['VALUE'] !== false)
			{
				$fieldValue = $userFieldParams['VALUE'];
			}
			elseif (isset($fieldSettings['DEFAULT_VALUE']))
			{
				if (is_array($fieldSettings['DEFAULT_VALUE']))
				{
					$fieldValue = $fieldSettings['DEFAULT_VALUE']['VALUE'] ?? '';
				}
				else
				{
					$fieldValue = $fieldSettings['DEFAULT_VALUE'];
				}
			}
			else
			{
				$this->document[$userFieldName] = $this->document[$userFieldName . '_PRINTABLE'] = '';
				continue;
			}

			if ($fieldTypeID == 'employee')
			{
				if (!$isFieldMultiple)
				{
					$this->document[$userFieldName] = 'user_' . $fieldValue;
				}
				elseif (is_array($fieldValue))
				{
					$this->document[$userFieldName] = [];
					foreach ($fieldValue as $value)
					{
						$this->document[$userFieldName][] = 'user_' . $value;
					}
				}
			}
			elseif ($fieldTypeID == 'crm')
			{
				$defaultTypeName = '';
				foreach ($fieldSettings as $typeName => $flag)
				{
					if ($flag === 'Y')
					{
						$defaultTypeName = $typeName;
						break;
					}
				}

				if (!$isFieldMultiple)
				{
					$this->document[$userFieldName . '_PRINTABLE'] = \CCrmDocument::prepareCrmUserTypeValueView($fieldValue, $defaultTypeName);
				}
				elseif (is_array($fieldValue))
				{
					$views = [];
					foreach ($fieldValue as $value)
					{
						$views[] = \CCrmDocument::prepareCrmUserTypeValueView($value, $defaultTypeName);
					}

					$this->document[$userFieldName . '_PRINTABLE'] = $views;

				}
			}
			elseif ($fieldTypeID == 'enumeration')
			{
				$this->document[$userFieldName] = $fieldValue;
				\CCrmDocument::externalizeEnumerationField($this->document, $userFieldName);
			}
			elseif ($fieldTypeID === 'boolean')
			{
				$this->document[$userFieldName] = \CBPHelper::getBool($fieldValue) ? 'Y' : 'N';
				$this->document[$userFieldName . '_PRINTABLE'] = GetMessage($this->document[$userFieldName] === 'Y' ? 'MAIN_YES' : 'MAIN_NO');
			}
			elseif ($fieldTypeID === 'resourcebooking')
			{
				self::prepareResourceBookingField($this->document, $userFieldName);
			}
			elseif (!isset($this->document[$userFieldName]))
			{
				$this->document[$userFieldName] = $fieldValue;
			}
		}
	}
}