- Модуль: 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;
}