- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_report_helper.php
- Класс: \CCrmReportHelperBase
- Вызов: CCrmReportHelperBase::appendBooleanUserFieldsIfNull
static function appendBooleanUserFieldsIfNull(\Bitrix\Main\Entity\Base $entity)
{
/** @var Bitrix\Main\DB\SqlHelper $sqlHelper */
$sqlHelper = null;
// Advanced fields for boolean user fields
$dateFields = array();
foreach($entity->getFields() as $field)
{
if (in_array($field->getName(), array('LEAD_BY', 'COMPANY_BY', 'CONTACT_BY'), true) && $field instanceof Bitrix\Main\Entity\ReferenceField)
{
self::appendBooleanUserFieldsIfNull($field->getRefEntity());
}
else if ($field instanceof Bitrix\Main\Entity\ExpressionField)
{
$arUF = self::detectUserField($field);
if ($arUF['isUF'])
{
$ufDataType = self::getUserFieldDataType($arUF);
if ($ufDataType === 'boolean' && $arUF['ufInfo']['MULTIPLE'] !== 'Y')
{
if ($sqlHelper === null)
{
$sqlHelper = Main\Application::getConnection()->getSqlHelper();
}
$blPostfix = defined('self::UF_BOOLEAN_POSTFIX') ? self::UF_BOOLEAN_POSTFIX : '_BLINL';
$dateFields[] = array(
'def' => array(
'data_type' => 'boolean',
'expression' => array(
$sqlHelper->getIsNullFunction('%s', 0), $arUF['ufInfo']['FIELD_NAME']
)
),
'name' => $arUF['ufInfo']['FIELD_NAME'].$blPostfix
);
}
}
}
}
foreach ($dateFields as $fieldInfo)
{
if (!$entity->hasField($fieldInfo['name']))
{
$entity->addField($fieldInfo['def'], $fieldInfo['name']);
}
}
}