• Модуль: biconnector
  • Путь к файлу: ~/bitrix/modules/biconnector/lib/integration/main/user.php
  • Класс: BitrixBIConnectorIntegrationMainUser
  • Вызов: User::onBIConnectorDataSources
static function onBIConnectorDataSources(BitrixMainEvent $event)
{
	$params = $event->getParameters();
	//$manager = $params[0];
	$result = &$params[1];
	$languageId = $params[2];

	$result['user'] = [
		'TABLE_NAME' => 'b_user',
		'TABLE_ALIAS' => 'U',
		'FILTER' => [
			'=IS_EXTERNAL' => 'N',
		],
		'FILTER_FIELDS' => [
			'IS_EXTERNAL' => [
				'IS_METRIC' => 'N',
				'FIELD_NAME' => "CASE WHEN EXTERNAL_AUTH_ID IN ('" . implode("', '", BitrixMainUserTable::getExternalUserTypes()) . "') THEN 'Y' ELSE 'N' END",
				'FIELD_TYPE' => 'string',
			],
		],
		'FIELDS' => [
			'ID' => [
				'IS_PRIMARY' => 'Y',
				'IS_METRIC' => 'N',
				'FIELD_NAME' => 'U.ID',
				'FIELD_TYPE' => 'int',
			],
			'ACTIVE' => [
				'IS_METRIC' => 'N',
				'FIELD_NAME' => 'U.ACTIVE',
				'FIELD_TYPE' => 'string',
			],
			'NAME' => [
				'IS_METRIC' => 'N', // 'Y'
				'FIELD_NAME' => 'concat_ws(' ', nullif(U.NAME, ''), nullif(U.LAST_NAME, ''))',
				'FIELD_TYPE' => 'string',
			],
			'DEPARTMENT' => [
				'IS_METRIC' => 'N', // 'Y'
				'FIELD_NAME' => 'D.VALUE_STR',
				'FIELD_TYPE' => 'string',
				'TABLE_ALIAS' => 'D',
				'JOIN' => 'INNER JOIN b_biconnector_dictionary_data D ON D.DICTIONARY_ID = ' . BitrixBIConnectorDictionary::USER_DEPARTMENT . ' AND D.VALUE_ID = U.ID',
				'LEFT_JOIN' => 'LEFT JOIN b_biconnector_dictionary_data D ON D.DICTIONARY_ID = ' . BitrixBIConnectorDictionary::USER_DEPARTMENT . ' AND D.VALUE_ID = U.ID',
			],
		],
	];

	if (BitrixBIConnectorDictionaryManager::isAvailable(BitrixBIConnectorDictionary::USER_DEPARTMENT))
	{
		$result['crm_deal']['DICTIONARY'] = [
			BitrixBIConnectorDictionary::USER_DEPARTMENT,
		];
	}
	else
	{
		unset($result['user']['FIELDS']['DEPARTMENT']);
	}

	$messages = Loc::loadLanguageFile(__FILE__, $languageId);
	$result['user']['TABLE_DESCRIPTION'] = $messages['MAIN_BIC_USER_TABLE'] ?: 'user';
	foreach ($result['user']['FIELDS'] as $fieldCode => &$fieldInfo)
	{
		$fieldInfo['FIELD_DESCRIPTION'] = $messages['MAIN_BIC_USER_FIELD_' . $fieldCode];
		if (!$fieldInfo['FIELD_DESCRIPTION'])
		{
			$fieldInfo['FIELD_DESCRIPTION'] = $fieldCode;
		}

		$fieldInfo['FIELD_DESCRIPTION_FULL'] = $messages['MAIN_BIC_USER_FIELD_' . $fieldCode . '_FULL'] ?? '';
	}
	unset($fieldInfo);
}