• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/recycling/dynamicbindermanager.php
  • Класс: Bitrix\Crm\Recycling\DynamicBinderManager
  • Вызов: DynamicBinderManager::recoverBindings
public function recoverBindings(RelationMap $map): void
{
	$this->checkConfigure();

	foreach ($this->dynamicTypes as $type)
	{
		$entityTypeId = $type->getEntityTypeId();
		$ids = $map->getDestinationEntityIDs($entityTypeId);

		if (empty($ids))
		{
			continue;
		}

		$factory = Container::getInstance()->getFactory($entityTypeId);
		if ($factory)
		{
			$dynamicIds = [];
			$items = $factory->getItems([
				'select' => [
					Item::FIELD_NAME_ID,
				],
				'filter' => [
					Item::FIELD_NAME_ID => $ids,
				],
			]);
			foreach ($items as $item)
			{
				$dynamicIds[] = $item->getId();
			}

			if(!empty($dynamicIds))
			{
				DynamicBinder::getInstance($entityTypeId)->bindEntities(
					$this->getAssociatedEntityTypeId(),
					$this->getEntityId(),
					$dynamicIds
				);
			}
		}
	}
}