- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/integration/sign/form.php
- Класс: Bitrix\Crm\Integration\Sign\Form
- Вызов: Form::getFieldSetValues
static function getFieldSetValues(
int $entityTypeId,
int $entityId,
array $options = [],
?int $requisitePresetId = null
): array
{
$result = [];
$set = self::getFieldSet($entityTypeId, $requisitePresetId);
if (!$set)
{
return $result;
}
$values = Crm\WebForm\Requisite::instance()
->load($entityTypeId, $entityId, $requisitePresetId)
->getData()
;
if (!$values)
{
return $result;
}
$entityTypeName = \CCrmOwnerType::resolveName($entityTypeId);
foreach ($values as $key => $value)
{
unset($values[$key]);
$values["{$entityTypeName}_{$key}"] = $value;
}
$entityKeys = [];
$prefix = "{$entityTypeName}_";
$prefixRq = "{$entityTypeName}_RQ_";
foreach ($set->getFields() as $field)
{
$name = $field['name'];
if (mb_strpos($name, $prefix) === 0 && mb_strpos($name, $prefixRq) !== 0)
{
$entityKeys[] = mb_substr($name, mb_strlen($prefix));
continue;
}
$value = $values[$name] ?? '';
if ($value === null || $value === false)
{
continue;
}
$result[$name] = $value;
}
foreach ($entityKeys as $key)
{
$name = "{$entityTypeName}_$key";
$value = $values[$name] ?? '';
if ($value === false || !empty($result[$name]))
{
continue;
}
$result[$name] = $value ?? '';
}
if (!empty($options['appendExtended']))
{
$title = '';
if (!empty($values["{$prefix}RQ_NAME"]) || !empty($values["{$prefix}RQ_LAST_NAME"]))
{
$title = trim(str_replace(
['#NAME#', '#LAST_NAME#'],
[$values["{$prefix}RQ_NAME"], $values["{$prefix}RQ_LAST_NAME"]],
Main\Context::getCurrent()->getCulture()->getFormatName()
));
}
elseif (!empty($values["{$prefix}RQ_COMPANY_NAME"]))
{
$title = $values["{$prefix}RQ_COMPANY_NAME"];
}
$result['extended'] = [
'presetId' => $values[$prefix . 'presetId'] ?? 0,
'requisiteId' => $values[$prefix . 'requisiteId'] ?? 0,
'title' => $title,
];
}
if (!$entityKeys)
{
return $result;
}
$entityFactory = Crm\Service\Container::getInstance()->getFactory($entityTypeId);
if (!$entityFactory)
{
return $result;
}
$item = $entityFactory->getItem($entityId);
if (!$item)
{
return $result;
}
$values = $item->getData();
foreach ($item->getFm()->getAll() as $fmItem)
{
$type = $fmItem->getTypeId();
$value = $fmItem->getValue();
if ($value && empty($values[$type]))
{
$values[$type] = $value;
}
}
foreach ($entityKeys as $key)
{
$name = "{$entityTypeName}_$key";
if (!empty($result[$name]))
{
continue;
}
$value = isset($values[$key]) && !empty($values[$key])
? $entityFactory->getFieldValueCaption($key, $values[$key])
: null;
$value ??= '';
$result[$name] = $value ?? '';
}
return $result;
}