• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/controller/documentgenerator/document.php
  • Класс: Bitrix\Crm\Controller\DocumentGenerator\Document
  • Вызов: Document::listAction
public function listAction(array $select = ['*'], array $order = null, array $filter = null, PageNavigation $pageNavigation = null)
{
	if(!is_array($filter))
	{
		$filter = [];
	}
	$filter['=template.moduleId'] = static::MODULE_ID;

	if (
		(!isset($filter['entityTypeId']) || !is_scalar($filter['entityTypeId']))
		&& !\CCrmPerms::IsAccessEnabled()
	)
	{
		$this->addError(ErrorCode::getAccessDeniedError());

		return null;
	}
	if (
		(isset($filter['entityTypeId']) && is_scalar($filter['entityTypeId']))
		&& !Container::getInstance()->getUserPermissions()->checkReadPermissions($filter['entityTypeId'])
	)
	{
		$this->addError(ErrorCode::getAccessDeniedError());

		return null;
	}

	if(is_array($select) && in_array('entityId', $select))
	{
		$select[] = 'value';
		unset($select[array_search('entityId', $select)]);
	}

	$providersMap = DocumentGeneratorManager::getInstance()->getCrmOwnerTypeProvidersMap();
	if(is_array($filter))
	{
		if(isset($filter['entityTypeId']))
		{
			$filter['=provider'] = isset($providersMap[(int)$filter['entityTypeId']])
				? mb_strtolower($providersMap[(int)$filter['entityTypeId']])
				: $filter['entityTypeId'];

			unset($filter['entityTypeId']);
		}
		if(isset($filter['entityId']))
		{
			$filter['=value'] = $filter['entityId'];
			unset($filter['entityId']);
		}
	}
	/** @var Page $result */
	$result = $this->proxyAction('listAction', [$select, $order, $filter, $pageNavigation]);
	$documents = $result->getItems();
	foreach($documents as $key => &$document)
	{
		$document = $this->prepareDocumentData($document);
		$result->offsetSet($key, $document);
	}

	return $result;
}