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

RelationManager

RelationManager - это объект-сервис, получаемый через \Bitrix\Crm\Service\Container. Именно через него происходит общение клиентского кода и API связей. Объект позволяет получить информацию о существующих типах связи, найти связанные элементы или создать новые связи или типы связей.

Создание и редактирование типов связи

Типы связи могут быть двух видов — стандартные и кастомные. API связей позволяет работать с ними обоими. Но клиентский код может создавать, редактировать и удалять только кастомные связи. Для этих операций есть методы с соответствующими названиями:
RelationManager::bindTypes,
RelationManager::updateTypesBinding,
RelationManager::unbindTypes).

Все они после своего выполнения возвращают объект \Bitrix\Main\Result. Если по ходу выполнения возникают ошибки, они складываются в него в виде объектов \Bitrix\Main\Error. Большинство ошибок имеет свой код в виде константы RelationManager::ERROR_CODE_*, с помощью которых можно определить, что конкретно пошло не так.

Проверить, существует ли тип связи между сущностями, можно через метод RelationManager::areTypesBound. Он вернет true, если тип связи существует, вне зависимости от того, стандартный он или кастомный.

getAvailableForParentBindingEntityTypes

RelationManager::getAvailableForParentBindingEntityTypes(
	?int $currentEntityId = null
): array[]

Метод позволяет получить массив всех типов сущностей, которые могут быть родителями для переданного типа сущности. Если передан null, то возвращает все сущности, которые в принципе могут быть родителями.

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

$result = [
	// entityTypeId
	2 => [
		'entityTypeId' => 2,
		'title' => 'Сделка',
	],
	7 => [
		'entityTypeId' => 7,
		'title' => 'Предложение',
	],
];

getAvailableForChildBindingEntityTypes

RelationManager::getAvailableForChildBindingEntityTypes(
	?int $currentEntityId = null
): array[]

Метод аналогичен предыдущему. Он возвращает массив всех типов сущностей, которые могут быть потомками текущего типа или потомками в целом.

Получение типов связи

Метод Описание С версии
RelationManager::getRelation(
	RelationIdentifier $identifier
): ?Relation
Метод возвращает конкретный тип связи, если он существует.
RelationManager::getRelations(
	int $entityTypeId
): Relation\Collection
Метод возвращает коллекцию всех типов связи, в которых фигурирует $entityTypeId (не важно, как родитель или как потомок).
RelationManager::getParentRelations(
	int $childEntityTypeId
): Relation\Collection
Метод возвращает коллекцию всех типов связи, в которых $childEntityTypeId упоминается как сущность-потомок.
RelationManager::getChildRelations(
	int $parentEntityTypeId
): Relation\Collection
Метод возвращает коллекцию всех типов связи, в которых $parentEntityTypeId упоминается как родительская сущность.

Создание и удаление связей

С помощью метода RelationManager::bindItems можно связать между собой два элемента. А с помощью метода RelationManager::unbindItems можно эту связь удалить.

Аналогично методам для редактирования типов связи, эти методы возвращают объект \Bitrix\Main\Result, в который складываются возникающие ошибки. Большинство из них имеет код в виде константы RelationManager::ERROR_CODE_*.

Проверить, связаны ли элементы, можно через RelationManager::areItemsBound.

Получение связанных элементов

Метод Описание С версии
RelationManager::getElements(
	ItemIdentifier $identifier
): ItemIdentifier[]
Метод возвращает все элементы, которые связаны с переданным элементом.
RelationManager::getParentElements(
	ItemIdentifier $child
): ItemIdentifier[]
Метод возвращает все элементы, которые связаны с переданным элементом и являются его родителями.
RelationManager::getChildElements(
	ItemIdentifier $parent
): ItemIdentifier[]
Метод возвращает все элементы, которые связаны с переданным элементом и являются его потомками.

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