Bitrix24 (PHP): Получение списка полей смарт-процесса (по его ID)
Данная функция принимает на входе два параметра: ID смарт-процесса (ID сущности) и метку о том, что стоит выводить только пользовательские поля. В итоге возвращает массив полей.
function Get_sProcFields($entityTypeID, $UFOnly = false) {
if (!\Bitrix\Main\Loader::includeModule('crm')) return false;
if ($entityTypeID) {
try {
$container = \Bitrix\Crm\Service\Container::getInstance();
// создаем "фабрику", через которую будет выполняться взаимодействие с эл-ом смарт-процесса
$factory = $container->getFactory($entityTypeID);
// проверяем, существует ли фабрика для указанного типа
if (!$factory) {
\Bitrix\Main\Diag\Logger::log('error', 'Фабрика не найдена для типа ' . $entityTypeID);
return false;
}
$fieldsCollection = $factory->getFieldsCollection();
// массив списка полей смарт-процесса
$fact_FieldsData = [];
foreach ($fieldsCollection as $field) {
$fact_FieldsData[$field->getName()] = $field->getTitle();
}
if ($UFOnly) {
$fact_FieldsUFData = array_filter(array_keys($fact_FieldsData), function($value) {
return strpos($value, 'UF_') === 0;
});
return $fact_FieldsUFData;
} else {
return $fact_FieldsData;
}
} catch (Exception $e) {
\Bitrix\Main\Diag\Logger::log('error', 'Фабрика не найдена для типа ' .$e->getMessage());
return false;
}
} else {
\Bitrix\Main\Diag\Logger::log('error', 'Указаны некорректные параметры! ');
return false;
}
}