• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integration/main/uiselector/crmorders.php
  • Класс: Bitrix\Crm\Integration\Main\UISelector\CrmOrders
  • Вызов: CrmOrders::getData
public function getData($params = [])
{
	global $USER;

	$entityType = static::getHandlerType();

	$result = [
		'ITEMS' => [],
		'ITEMS_LAST' => [],
		'ITEMS_HIDDEN' => [],
		'ADDITIONAL_INFO' => [
			'GROUPS_LIST' => [
				'crmorders' => [
					'TITLE' => Loc::getMessage('MAIN_UI_SELECTOR_TITLE_CRMORDERS'),
					'TYPE_LIST' => [ $entityType ],
					'DESC_LESS_MODE' => 'N',
					'SORT' => 60,
				],
			],
			'SORT_SELECTED' => 400,
		],
	];

	$userPermissions = CCrmPerms::getCurrentUserPermissions();

	if (!\Bitrix\Crm\Order\Permissions\Order::checkReadPermission(0, $userPermissions))
	{
		return $result;
	}

	$entityOptions = (!empty($params['options']) ? $params['options'] : []);
	$prefix = static::getPrefix($entityOptions);

	$lastItems = (!empty($params['lastItems']) ? $params['lastItems'] : []);
	$selectedItems = (!empty($params['selectedItems']) ? $params['selectedItems'] : []);

	$lastOrdersIdList = [];
	if(!empty($lastItems[$entityType]))
	{
		$result["ITEMS_LAST"] = array_map(
			function($code) use ($prefix)
			{
				return preg_replace('/^'.self::PREFIX_FULL . '(\d+)$/', $prefix . '$1', $code);
			},
			array_values($lastItems[$entityType])
		);
		foreach ($lastItems[$entityType] as $value)
		{
			$lastOrdersIdList[] = intval(str_replace(self::PREFIX_FULL, '', $value));
		}
	}

	$selectedOrdersIdList = [];

	if(!empty($selectedItems[$entityType]))
	{
		foreach ($selectedItems[$entityType] as $value)
		{
			$selectedOrdersIdList[] = intval(str_replace($prefix, '', $value));
		}
	}

	$ordersIdList = array_merge($selectedOrdersIdList, $lastOrdersIdList);
	$ordersIdList = array_slice($ordersIdList, 0, max(count($selectedOrdersIdList), 20));
	$ordersIdList = array_unique($ordersIdList);

	$ordersList = [];

	$filter = [];
	$permissionSql = '';

	if (!(is_object($USER) && $USER->isAdmin()))
	{
		$options = [
			'RAW_QUERY' => true,
			'PERMS'=> CCrmPerms::getCurrentUserPermissions()
		];

		if (!empty($ordersIdList))
		{
			$options['RESTRICT_BY_IDS'] = $ordersIdList;
		}

		$permissionSql = CCrmPerms::buildSql(
			CCrmOwnerType::OrderName,
			'',
			'READ',
			$options
		);
	}

	if($permissionSql <> '')
	{
		$filter['@ID'] = new SqlExpression($permissionSql);
	}
	elseif (!empty($ordersIdList))
	{
		$filter['@ID'] = $ordersIdList;
	}

	if (empty($ordersIdList))
	{
		$order = ['ID' => 'DESC'];
		$limit = 10;
	}
	else
	{
		$order = [];
		$limit = 0;
	}

	$res = Order::getList([
		'order' =>  $order,
		'select' =>  $this->getSearchSelect(),
		'filter' =>  $filter,
		'limit' => $limit
	]);

	while ($orderFields = $res->fetch())
	{
		$ordersList[$prefix . $orderFields['ID']] = static::prepareEntity($orderFields, $entityOptions);
	}

	if (empty($lastOrdersIdList))
	{
		$result["ITEMS_LAST"] = array_keys($ordersList);
	}

	$result['ITEMS'] = $ordersList;

	return $result;
}