• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integration/ui/entityselector/entityprovider.php
  • Класс: Bitrix\Crm\Integration\UI\EntitySelector\EntityProvider
  • Вызов: EntityProvider::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;
		$moreItemIds = $this->getRecentItemIds($context);

		foreach ($moreItemIds as $itemId)
		{
			if ($remainingItemsCount === 0)
			{
				break;
			}

			$recentItem = new RecentItem([
				'id' => $itemId,
				'entityId' => $itemEntityId,
			]);

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