Документация для разработчиков
Темная тема

ParentFieldManager

Внимание! Информация дана для ознакомления. Этот класс в ближайшее время может подвергнуться рефакторингу. Пожалуйста, не используйте его в своём коде.

\Bitrix\Crm\Service\ParentFieldManager - объект-сервис, получаемый через контейнер.

Во многих местах необходимо отобразить связи между элементами. Данный сервис позволяет пакетно получить данные о родительских элементах для дальнейшего отображения в интерфейсах CRM.

Метод Описание С версии
ParentFieldManager::getParentFieldName(
	$entityTypeId
): string
Вернет код поля родителя по идентификатору типа CRM $entityTypeId. Например, если $entityTypeId = 128, то результат будет PARENT_ID_128
ParentFieldManager::getEntityTypeIdFromFieldName(
	string $fieldName
): int
Вернет идентификатор типа CRM родителя по коду поля $fieldName. Например, если $fieldName = PARENT_ID_128, то результат будет 128
ParentFieldManager::isParentFieldName(
	string $fieldName
): bool
Вернет true, если $fieldName является кодом поля родителя.
ParentFieldManager::getParentFields(
	int[] $itemIds,
	string[] $entityFields,
	int $entityTypeId
): array[]
Метод вернет многоуровневый массив с описанием родителей для переданных элементов:
  • int[] $itemIds - массив ID элементов, для которых необходимо получить данные о родителях
  • string[] $entityFields - массив названий всех полей, которые необходимо отобразить в интерфейсе (грид, канбан). С помощью названий полей ParentFieldManager определяет, в каких полях содержится информация о родительских элементах и к каким типам сущности они принадлежат. Если среди полей нет тех, которые указывают на родителей, метод вернет пустой массив
  • int $entityTypeId - entityTypeId сущности-потомка, для которой необходимо получить данные о родителях. Показывает, к какому типу сущности принадлежат элементы из $itemIds.

Возвращаемый массив имеет следующую структуру:

$parents = [
	// Ключи верхнего уровня (16 и 34) - это ID элементов из $itemIds
	// Если у переданного элемента нет родителей, то элемента с таким ключом в массиве нет
	// (isset($parents[$itemId]) === false)
	16 => [
		// Ключи второго уровня (2 и 7) - это entityTypeId родительских сущностей
		2 => [
			'id' => '84',
			'code' => 'PARENT_ID_2',
			'entityDescription' => 'Сделка',
			'title' => 'Название конкретного элемента, экранированное',
			'url' => '/crm/deal/details/84/',
			'value' => 'Название конкретного элемента, экранированное',
		],
		7 => [
			'id' => '657',
			'code' => 'PARENT_ID_7', 
			'entityDescription' => 'Предложение', 
			'title' => 'Название конкретного элемента, экранированное', 
			'url' => '/crm/quote/details/657/', 
			'value' => 'Название конкретного элемента, экранированное',
		],
	],
	34 => [
		7 => [
			'id' => '485',
			'code' => 'PARENT_ID_7', 
			'entityDescription' => 'Предложение', 
			'title' => 'Название конкретного элемента, экранированное', 
			'url' => '/crm/quote/details/485/', 
			'value' => 'Название конкретного элемента, экранированное',
		],
	],
];

© «Битрикс», 2001-2024, «1С-Битрикс», 2024