• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/classes/general/tasks_report_helper.php
  • Класс: CTasksReportHelper
  • Вызов: CTasksReportHelper::appendBooleanUserFieldsIfNull
static function appendBooleanUserFieldsIfNull(BitrixMainEntityBase $entity)
{
	/** @var BitrixMainDBSqlHelper $sqlHelper */
	$sqlHelper = null;

	// Advanced fields for boolean user fields
	$dateFields = array();
	foreach($entity->getFields() as $field)
	{
		if ($field instanceof BitrixMainEntityExpressionField)
		{
			$arUF = self::detectUserField($field);
			if ($arUF['isUF'])
			{
				$ufDataType = self::getUserFieldDataType($arUF);
				if ($ufDataType === 'boolean' && $arUF['ufInfo']['MULTIPLE'] !== 'Y')
				{
					if ($sqlHelper === null)
					{
						$sqlHelper = MainApplication::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']);
		}
	}
}