• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/rest/controllers/task.php
  • Класс: BitrixTasksRestControllersTask
  • Вызов: Task::fillWithCrmInfo
private function fillWithCrmInfo(array $tasks): array
{
	if (!Loader::includeModule('crm'))
	{
		return $tasks;
	}

	$ufCrmTaskCode = CRMUserField::getMainSysUFCode();
	$ufCrmTask = CRMUserField::getSysUFScheme()[$ufCrmTaskCode];
	$displayField = Field::createByType('crm', $ufCrmTaskCode)
		->setIsMultiple($ufCrmTask['MULTIPLE'] === 'Y')
		->setIsUserField(true)
		->setUserFieldParams($ufCrmTask)
		->setContext(Field::MOBILE_CONTEXT)
	;
	$display = new Display(0, [$ufCrmTaskCode => $displayField]);

	foreach ($tasks as $id => $task)
	{
		$tasks[$id]['CRM'] = [];

		if (
			empty($task[$ufCrmTaskCode])
			|| !is_array($task[$ufCrmTaskCode])
		)
		{
			continue;
		}

		$res = $display
			->setItems([[$ufCrmTaskCode => $task[$ufCrmTaskCode]]])
			->getValues(0)
		;

		if (
			!is_array($res[$ufCrmTaskCode]['config']['entityList'])
			|| count($res[$ufCrmTaskCode]['config']['entityList']) !== count($task[$ufCrmTaskCode])
		)
		{
			continue;
		}

		$tasks[$id]['CRM'] = array_combine($task[$ufCrmTaskCode], $res[$ufCrmTaskCode]['config']['entityList']);
	}

	return $tasks;
}