- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/controller/fieldset.php
- Класс: Bitrix\Crm\Controller\FieldSet
- Вызов: FieldSet::loadAction
public function loadAction(int $entityTypeId, int $entityId, ?int $presetId = null): array
{
$item = Crm\Integration\Sign\Form::getFieldSet($entityTypeId, $presetId);
if (!$item)
{
$this->addError(new Main\Error(Loc::getMessage('CRM_CONTROLLER_FIELDSET_NOT_FOUND', ['#ENTITY_TYPE#' => $entityTypeId])));
return [];
}
$fields = [];
$values = Crm\Integration\Sign\Form::getFieldSetValues(
$entityTypeId,
$entityId,
['appendExtended' => true],
$presetId
);
$rqId = (int)($values['extended']['requisiteId'] ?? 0);
$presetId = (int)($values['extended']['presetId'] ?? 0) ?: $item->getRequisitePresetId();
$title = $values['extended']['title'] ?? '';
unset($values['extended']);
if (!$title)
{
switch ($entityTypeId)
{
case \CCrmOwnerType::Company:
$title = Crm\CompanyTable::query()
->setSelect(['TITLE'])
->where('ID', $entityId)
->setLimit(1)
->fetch()['TITLE']
;
break;
case \CCrmOwnerType::Contact:
$row = Crm\ContactTable::query()
->setSelect(['NAME', 'LAST_NAME'])
->where('ID', $entityId)
->setLimit(1)
->fetch()
;
if ($row)
{
$title = trim(str_replace(
['#NAME#', '#LAST_NAME#'],
[$row['NAME'], $row['LAST_NAME']],
Main\Context::getCurrent()->getCulture()->getFormatName()
));
}
break;
}
}
$rqEditUrl = "/bitrix/components/bitrix/crm.requisite.details/slider.ajax.php"
. "?requisite_id={$rqId}"
. "&pid={$presetId}"
. "&etype={$entityTypeId}"
. "&eid={$entityId}"
. "&mode=" . ($rqId ? 'edit' : 'create')
. "&doSave=Y"
. "&" . bitrix_sessid_get()
;
foreach ($item->getFields() as $field)
{
$name = $field['name'];
$value = $values[$name] ?? '';
$field['value'] = $value;
$field['valuePrintable'] = $value;
$fieldEntityTypeId = $field['editing']['entityTypeId'];
if (!$fieldEntityTypeId)
{
continue;
}
$field['editing']['url'] =
($fieldEntityTypeId === \CCrmOwnerType::Requisite)
? $rqEditUrl
: Crm\Service\Container::getInstance()->getRouter()->getItemDetailUrl($fieldEntityTypeId, $entityId)
;
$fields[] = $field;
}
return [
'id' => $item->getId(),
'title' => $title,
'fields' => $fields,
];
}