• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_report_helper.php
  • Класс: \CCrmReportHelper
  • Вызов: CCrmReportHelper::prepareUFInfo
static function prepareUFInfo()
{
	if (!is_array(self::$arUFId) || count(self::$arUFId) <= 0 || is_array(self::$ufInfo))
		return;

	/** @global CUserTypeManager $USER_FIELD_MANAGER */
	global $USER_FIELD_MANAGER;

	$allowedUserTypes = array('string', 'date', 'datetime', 'enumeration', 'double', 'integer', 'boolean', 'file',
		'employee', 'crm', 'crm_status', 'iblock_element', 'iblock_section', 'money');

	self::$ufInfo = [];
	self::$ufEnumerations = [];
	self::$userFieldMoneyList = [];

	foreach(self::$arUFId as $ufId)
	{
		$arUserFields = $USER_FIELD_MANAGER->GetUserFields($ufId, 0, LANGUAGE_ID);

		// remove invoice reserved fields
		if ($ufId === CCrmInvoice::GetUserFieldEntityID())
			foreach (CCrmInvoice::GetUserFieldsReserved() as $id)
				if (isset($arUserFields[$id]))
					unset($arUserFields[$id]);

		if (is_array($arUserFields) && count($arUserFields) > 0)
		{
			foreach ($arUserFields as $field)
			{
				if (isset($field['FIELD_NAME']) && mb_substr($field['FIELD_NAME'], 0, 3) === 'UF_'
					/*&& (!isset($field['MULTIPLE']) || $field['MULTIPLE'] !== 'Y')*/
					&& isset($field['USER_TYPE_ID']) && in_array($field['USER_TYPE_ID'], $allowedUserTypes, true))
				{
					self::$ufInfo[$ufId][$field['FIELD_NAME']] = $field;

					if ($field['USER_TYPE_ID'] === 'datetime' && $field['MULTIPLE'] !== 'Y')
						self::$ufInfo[$ufId][$field['FIELD_NAME'].self::UF_DATETIME_SHORT_POSTFIX] = $field;

					$blPostfix = defined('self::UF_BOOLEAN_POSTFIX') ? self::UF_BOOLEAN_POSTFIX : '_BLINL';
					if ($field['USER_TYPE_ID'] === 'boolean' && $field['MULTIPLE'] !== 'Y')
						self::$ufInfo[$ufId][$field['FIELD_NAME'].$blPostfix] = $field;

					if ($field['USER_TYPE_ID'] === 'money')
					{
						self::$userFieldMoneyList[] = $field['FIELD_NAME'];
					}
				}
			}
		}
	}
}