• Модуль: rpa
  • Путь к файлу: ~/bitrix/modules/rpa/lib/controller/item.php
  • Класс: BitrixRpaControllerItem
  • Вызов: Item::prepareFilter
protected function prepareFilter(BitrixRpaModelType $type, array $filter = null): array
{
	if(empty($filter))
	{
		return Driver::getInstance()->getUserPermissions()->getFilterForViewableItems($type);
	}

	$converter = new Converter(Converter::TO_UPPER | Converter::TO_SNAKE);
	$logic = null;
	$tasks = null;
	foreach($filter as $name => $value)
	{
		if($name === 'logic')
		{
			$logic = $value;
			unset($filter[$name]);
			continue;
		}
		if($name === 'tasks')
		{
			$tasks = $value;
			unset($filter[$name]);
			continue;
		}
		if(is_numeric($name))
		{
			$filter[$name] = $this->prepareFilter($type, $filter[$name]);
		}
		elseif(strpos($name, 'UF_RPA_') === false)
		{
			$nameCamel = $converter->process($name);
			$filter[$nameCamel] = $filter[$name];
			unset($filter[$name]);
		}
	}
	if($logic)
	{
		$filter = array_merge(['LOGIC' => $logic], $filter);
	}
	if($tasks)
	{
		$settings = new Settings([
			'ID' => $this->getScope().'_list',
		], $type);

		$itemProvider = new Provider($settings);
		$itemProvider->processTasksFilter($tasks, $filter);
	}

	if($this->getScope() === self::SCOPE_REST)
	{
		$this->prepareDateTimeFieldsForFilter($filter, $this->getItemDateTimeFieldNames($type));
	}

	return [
		$filter,
		Driver::getInstance()->getUserPermissions()->getFilterForViewableItems($type),
	];
}