• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integration/ui/entityselector/dynamicmultipleprovider.php
  • Класс: Bitrix\Crm\Integration\UI\EntitySelector\DynamicMultipleProvider
  • Вызов: DynamicMultipleProvider::fillDialog
public function fillDialog(Dialog $dialog): void
{
	$itemEntityId = $this->getItemEntityId();
	$recentItems = $dialog->getRecentItems();
	$recentItemsByEntityId = $recentItems->getEntityItems($itemEntityId);
	$remainingItemsCount = Entity::ITEMS_LIMIT - count($recentItemsByEntityId);

	if ($remainingItemsCount > 0)
	{
		foreach ($dialog->getGlobalRecentItems()->getEntityItems($this->getItemEntityId()) as $globalRecentItem)
		{
			if ($remainingItemsCount === 0)
			{
				break;
			}

			if (!$recentItems->has($globalRecentItem))
			{
				$recentItems->add($globalRecentItem);
				$remainingItemsCount--;
			}
		}
	}

	if ($remainingItemsCount > 0)
	{
		$context = $dialog->getContext() ?: EntitySelector::CONTEXT;

		foreach ($this->getDynamicEntityIds() as $entityTypeId)
		{
			$moreItemIds = $this->getRecentItemIds($entityTypeId, $context);

			foreach ($moreItemIds as $itemId)
			{
				$recentItem = new RecentItem([
					'id' => "{$entityTypeId}:{$itemId}",
					'entityId' => $itemEntityId,
				]);

				if (!$recentItems->has($recentItem))
				{
					$recentItems->add($recentItem);
					$remainingItemsCount--;
				}

				if ($remainingItemsCount === 0)
				{
					break;
				}
			}
		}
	}
}