- Модуль: 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;
}
}
}
}