• Модуль: rpa
  • Путь к файлу: ~/bitrix/modules/rpa/lib/components/itemdetail.php
  • Класс: BitrixRpaComponentsItemDetail
  • Вызов: ItemDetail::prepareFormData
protected function prepareFormData(): array
{
	$userFields = $this->type->getUserFieldCollection();
	$formFields = $this->prepareFormFields();

	$users = static::getUsers($this->item->getUserIds());

	$data = [
		'ID' => $this->item->getId(),
		'CREATED_TIME' => (string) $this->item->getCreatedTime(),
		'UPDATED_TIME' => (string) $this->item->getUpdatedTime(),
		'MOVED_TIME' => (string) $this->item->getMovedTime(),
	];

	foreach(['CREATED_BY', 'MOVED_BY', 'UPDATED_BY'] as $fieldName)
	{
		$userId = $this->item->get($fieldName);
		$data[$fieldName] = $userId;
		$data[$fieldName . '_FORMATTED_NAME'] = $users[$userId]['fullName'] ?? null;
		$data[$fieldName . '_WORK_POSITION'] = $users[$userId]['workPosition'] ?? null;
		$data[$fieldName . '_PHOTO_URL'] = $users[$userId]['photo'] ?? null;
		$data[$fieldName . '_SHOW_URL'] = $users[$userId]['link'] ?? null;
	}

	foreach($userFields as $userField)
	{
		$fieldName = $userField->getName();
		$fieldValue = $this->item->get($fieldName);

		if(is_array($fieldValue))
		{
			foreach($fieldValue as &$value)
			{
				$value = $this->prepareSingleValue($value);
			}
			unset($value);
		}
		else
		{
			$fieldValue = $this->prepareSingleValue($fieldValue);
		}

		$fieldData = $formFields[$fieldName] ?? null;

		if(!is_array($fieldData))
		{
			continue;
		}

		$isEmptyField = true;
		$fieldParams = $fieldData['data']['fieldInfo'];
		if((is_string($fieldValue) && $fieldValue !== '')
			|| (is_numeric($fieldValue) && $fieldValue !== 0)
			|| (is_array($fieldValue) && !empty($fieldValue))
			|| (is_object($fieldValue))
		)
		{
			if(is_array($fieldValue))
			{
				$fieldValue = array_values($fieldValue);
			}
			$fieldParams['VALUE'] = $fieldValue;
			$isEmptyField = false;
		}

		$fieldSignature = $this->userFieldDispatcher->getSignature($fieldParams);
		if($isEmptyField)
		{
			$data[$fieldName] = [
				'SIGNATURE' => $fieldSignature,
				'IS_EMPTY' => true
			];
		}
		else
		{
			$data[$fieldName] = [
				'VALUE' => $fieldValue,
				'SIGNATURE' => $fieldSignature,
				'IS_EMPTY' => false
			];
		}
	}

	return $data;
}