static function getEditorEntityData(int $documentId): array
{
$companyId = 0;
$contactBindings = [];
if ($documentId > 0)
{
$storeDocumentContractors = static::getTableName()::query()
->setSelect(['ENTITY_TYPE_ID', 'ENTITY_ID'])
->where(static::getDocumentPrimaryField(), $documentId)
->exec()
;
while ($storeDocumentContractor = $storeDocumentContractors->fetch())
{
if ((int)$storeDocumentContractor['ENTITY_TYPE_ID'] === CCrmOwnerType::Company)
{
$companyId = (int)$storeDocumentContractor['ENTITY_ID'];
}
if ((int)$storeDocumentContractor['ENTITY_TYPE_ID'] === CCrmOwnerType::Contact)
{
$contactBindings[] = [
'CONTACT_ID' => (int)$storeDocumentContractor['ENTITY_ID'],
];
}
}
}
$clientInfo = [];
if ($companyId > 0)
{
$isEntityReadPermitted = \CCrmCompany::CheckReadPermission($companyId, self::getPermissions());
$companyInfo = \CCrmEntitySelectorHelper::PrepareEntityInfo(
CCrmOwnerType::CompanyName,
$companyId,
[
'ENTITY_EDITOR_FORMAT' => true,
'IS_HIDDEN' => !$isEntityReadPermitted,
'USER_PERMISSIONS' => self::getPermissions(),
'REQUIRE_REQUISITE_DATA' => true,
'REQUIRE_EDIT_REQUISITE_DATA' => true,
'REQUIRE_MULTIFIELDS' => true,
'NORMALIZE_MULTIFIELDS' => true,
'NAME_TEMPLATE' => PersonNameFormatter::getFormat(),
]
);
$clientInfo['COMPANY_DATA'] = [$companyInfo];
}
$contactIDs = EntityBinding::prepareEntityIDs(CCrmOwnerType::Contact, $contactBindings);
$clientInfo['CONTACT_DATA'] = [];
$iteration= 0;
foreach($contactIDs as $contactID)
{
$isEntityReadPermitted = \CCrmContact::CheckReadPermission($contactID, self::getPermissions());
$clientInfo['CONTACT_DATA'][] = \CCrmEntitySelectorHelper::PrepareEntityInfo(
CCrmOwnerType::ContactName,
$contactID,
[
'ENTITY_EDITOR_FORMAT' => true,
'IS_HIDDEN' => !$isEntityReadPermitted,
'USER_PERMISSIONS' => self::getPermissions(),
'REQUIRE_REQUISITE_DATA' => true,
'REQUIRE_EDIT_REQUISITE_DATA' => ($iteration === 0),
'REQUIRE_MULTIFIELDS' => true,
'NORMALIZE_MULTIFIELDS' => true,
'REQUIRE_BINDINGS' => true,
'NAME_TEMPLATE' => PersonNameFormatter::getFormat(),
]
);
$iteration++;
}
$result = [
'CLIENT_INFO' => $clientInfo,
'LAST_COMPANY_INFOS' => SearchAction::prepareSearchResultsJson(
Entity::getRecentlyUsedItems(
'crm.store.document.details',
'company',
[
'EXPAND_ENTITY_TYPE_ID' => CCrmOwnerType::Company,
'EXPAND_CATEGORY_ID' => self::getCategoryIdByEntityType(CCrmOwnerType::Company),
]
)
),
'LAST_CONTACT_INFOS' => SearchAction::prepareSearchResultsJson(
Entity::getRecentlyUsedItems(
'crm.store.document.details',
'contact',
[
'EXPAND_ENTITY_TYPE_ID' => CCrmOwnerType::Contact,
'EXPAND_CATEGORY_ID' => self::getCategoryIdByEntityType(CCrmOwnerType::Contact),
]
)
),
];
\CCrmComponentHelper::prepareMultifieldData(
CCrmOwnerType::Company,
[$companyId],
[
'PHONE',
'EMAIL',
'IM',
],
$result
);
\CCrmComponentHelper::prepareMultifieldData(
CCrmOwnerType::Contact,
$contactIDs,
[
'PHONE',
'EMAIL',
'IM',
],
$result
);
return $result;
}