• Модуль: rpa
  • Путь к файлу: ~/bitrix/modules/rpa/lib/components/itemdetail.php
  • Класс: BitrixRpaComponentsItemDetail
  • Вызов: ItemDetail::prepareFormFields
protected function prepareFormFields(): array
{
	static $formFields;
	if($formFields === null)
	{
		$formFields = [];
		if($this->stage && !$this->isEmbedded() && $this->item->getId() > 0)
		{
			$userFields = $this->stage->getUserFieldCollection();
		}
		else
		{
			$userFields = $this->type->getUserFieldCollection();
		}

		$enumerationFields = [];
		foreach($userFields as $userField)
		{
			$fieldName = $userField->getName();
			$itemId = (int)$this->item->getId();

			$fieldInfo = [
				'USER_TYPE_ID' => $userField->getUserTypeId(),
				'ENTITY_ID' => $this->type->getItemUserFieldsEntityId(),
				'ENTITY_VALUE_ID' => $itemId,
				'FIELD' => $fieldName,
				'MULTIPLE' => $userField['MULTIPLE'],
				'MANDATORY' => $userField['MANDATORY'],
				'SETTINGS' => $userField['SETTINGS'] ?? null,
			];

			if($userField['USER_TYPE_ID'] === 'enumeration')
			{
				$enumerationFields[$fieldName] = $userField;
			}

			if($userField['USER_TYPE_ID'] === 'file')
			{
				$urlTemplate = Driver::getInstance()
					->getUrlManager()
					->getFileUrlTemplate($this->type->getId(), $itemId, $fieldName);
				$fieldInfo['ADDITIONAL']['URL_TEMPLATE'] = $urlTemplate;
			}

			$formFields[$fieldName] = [
				'name' => $fieldName,
				'title' => $userField->getTitle(),
				'type' => 'userField',
				'data' => ['fieldInfo' => $fieldInfo],
				'required' => $this->isFieldRequired($userField),
//					'editable' => $userField->isEditable(),
			];
		}

		if(!empty($enumerationFields))
		{
			$enumInfos = $this->prepareEnumerationInfos($enumerationFields);
			foreach($enumInfos as $fieldName => $enums)
			{
				if(isset($formFields[$fieldName]['data']['fieldInfo']))
				{
					$formFields[$fieldName]['data']['fieldInfo']['ENUM'] = $enums;
				}
			}
		}

		$formFields['ID'] = [
			'name' => 'ID',
			'title' => 'ID',
			'type' => 'number',
			'editable' => false,
		];

		$formFields['CREATED_BY'] = $this->getOwnUserFieldDescription('CREATED_BY');
		$formFields['UPDATED_BY'] = $this->getOwnUserFieldDescription('UPDATED_BY');
		$formFields['MOVED_BY'] = $this->getOwnUserFieldDescription('MOVED_BY');

		$formFields['CREATED_TIME'] = $this->getOwnDateTimeFieldDescription('CREATED_TIME');
		$formFields['UPDATED_TIME'] = $this->getOwnDateTimeFieldDescription('UPDATED_TIME');
		$formFields['MOVED_TIME'] = $this->getOwnDateTimeFieldDescription('MOVED_TIME');
	}

	return $formFields;
}