• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/ui/entityselector/entityusagetable.php
  • Класс: BitrixMainUIEntitySelectorEntityUsageTable
  • Вызов: EntityUsageTable::getMap
static function getMap()
{
	$connection = Application::getConnection();
	$helper = $connection->getSqlHelper();

	return [
		new FieldsIntegerField("USER_ID", [
			"primary" => true,
			"required" => true
		]),
		new Reference(
			"USER",
			UserTable::class,
			Join::on("this.USER_ID", "ref.ID"),
			["join_type" => "INNER"]
		),
		new FieldsStringField("ITEM_ID", [
			"primary" => true,
			"required" => true
		]),
		new FieldsStringField("ENTITY_ID", [
			"primary" => true,
			"required" => true
		]),
		new FieldsStringField("CONTEXT", [
			"primary" => true,
			"required" => true
		]),
		new FieldsIntegerField("ITEM_ID_INT", [
			"required" => true,
			"default_value" => 0
		]),
		new FieldsStringField("PREFIX", [
			"default_value" => ''
		]),
		new FieldsDatetimeField("LAST_USE_DATE", [
			"required" => true,
			"default_value" => function() {
				return new DateTime();
			}
		]),

		//Compatible Fields for FinderDestTable
		new FieldsExpressionField(
			'CODE',
			'CASE WHEN %s='department' THEN REPLACE(' . $helper->getConcatFunction('%s', '%s') . ', ':F', '') ELSE ' . $helper->getConcatFunction('%s', '%s') . ' END',
			['ENTITY_ID', 'PREFIX', 'ITEM_ID', 'PREFIX', 'ITEM_ID']
		),
		new FieldsExpressionField(
			'CODE_TYPE',
			'CASE 
				WHEN %s = 'user' THEN 'U'
				WHEN %s = 'project' THEN 'SG'
				WHEN %s = 'department' THEN 'D'
				WHEN %s IN(
						'crm-contact', 
						'crm-company', 
						'crm-lead', 
						'crm-quote', 
						'crm-deal',
						'crm-order',
						'crm-product'
					) THEN 'CRM'
			END',
			['ENTITY_ID', 'ENTITY_ID', 'ENTITY_ID', 'ENTITY_ID']
		),

		new FieldsExpressionField(
			'CODE_USER_ID',
			'CASE WHEN %s = 'user' THEN %s END',
			['ENTITY_ID', 'ITEM_ID_INT']
		),

		new Reference(
			"CODE_USER",
			UserTable::class,
			Join::on("this.ITEM_ID_INT", "ref.ID")->where('this.ENTITY_ID', 'user')
		),

		new Reference(
			'CODE_USER_CURRENT',
			UserTable::class,
			Join::on("this.ITEM_ID_INT", "ref.ID")
				->where('this.ENTITY_ID', 'user')
				->where('this.USER_ID', $GLOBALS['USER']->getId())
		),
	];
}