static function GetAdditionalFields($entityType, $fieldValue = Array())
{
global $APPLICATION;
$arFields = Array();
switch ($entityType)
{
case 'string':
$arFields[] = array(
'id' => 'ROWS',
'name' => GetMessage('CRM_FIELDS_TEXT_ROW_COUNT'),
'type' => 'text',
);
$arFields[] = array(
'id' => 'DEFAULT_VALUE',
'name' => GetMessage('CRM_FIELDS_DEFAULT_VALUE'),
'type' => 'text',
);
break;
case 'url':
$arFields[] = array(
'id' => 'DEFAULT_VALUE',
'name' => GetMessage('CRM_FIELDS_DEFAULT_VALUE'),
'type' => 'text',
);
break;
case 'integer':
case 'double':
$arFields[] = array(
'id' => 'DEFAULT_VALUE',
'name' => GetMessage('CRM_FIELDS_DEFAULT_VALUE'),
'type' => 'text',
);
break;
case 'boolean':
$arFields[] = array(
'id' => 'B_DEFAULT_VALUE',
'name' => GetMessage('CRM_FIELDS_TYPE_B_VALUE'),
'type' => 'list',
'items' => array(
'1' => GetMessage('CRM_FIELDS_TYPE_B_VALUE_YES'),
'0' => GetMessage('CRM_FIELDS_TYPE_B_VALUE_NO')
),
);
$arFields[] = array(
'id' => 'B_DISPLAY',
'name' => GetMessage('CRM_FIELDS_TYPE_B_DISPLAY'),
'type' => 'list',
'items' => array(
'CHECKBOX' => GetMessage('CRM_FIELDS_TYPE_B_DISPLAY_CHECKBOX'),
'RADIO' => GetMessage('CRM_FIELDS_TYPE_B_DISPLAY_RADIO'),
'DROPDOWN' => GetMessage('CRM_FIELDS_TYPE_B_DISPLAY_DROPDOWN'),
),
);
break;
case 'datetime':
case 'date':
{
$arFields[] = array(
'id' => 'DT_TYPE',
'name' => GetMessage('CRM_FIELDS_TYPE_DT_TYPE'),
'type' => 'list',
'items' => array(
'NONE' => GetMessage('CRM_FIELDS_TYPE_DT_TYPE_NONE'),
'NOW' => GetMessage($entityType === 'datetime'
? 'CRM_FIELDS_TYPE_DT_TYPE_NOW' : 'CRM_FIELDS_TYPE_DATE_TYPE_NOW'),
'FIXED' => GetMessage('CRM_FIELDS_TYPE_DT_TYPE_FIXED'),
),
);
if ($entityType === 'datetime')
{
$arFields[] = array(
'id' => 'DT_DEFAULT_VALUE',
'name' => GetMessage('CRM_FIELDS_TYPE_DT_FIXED'),
'type' => 'date',
'params' => array('size' => 25)
);
}
else
{
$arFields[] = [
'id' => 'DT_DEFAULT_VALUE',
'name' => Loc::getMessage('CRM_FIELDS_TYPE_DT_FIXED'),
'type' => 'date_short',
'params' => [
'size' => 10,
],
];
}
}
break;
case 'enumeration':
$arFields[] = [
'id' => 'E_DISPLAY',
'name' => Loc::getMessage('CRM_FIELDS_TYPE_E_DISPLAY'),
'type' => 'list',
'items' => [
'LIST' => Loc::getMessage('CRM_FIELDS_TYPE_E_DISPLAY_LIST'),
'UI' => Loc::getMessage('CRM_FIELDS_TYPE_E_DISPLAY_UI'),
'CHECKBOX' => Loc::getMessage('CRM_FIELDS_TYPE_E_DISPLAY_CHECKBOX'),
'DIALOG' => Loc::getMessage('CRM_FIELDS_TYPE_E_DISPLAY_DIALOG'),
],
];
$arFields[] = [
'id' => 'E_LIST_HEIGHT',
'name' => Loc::getMessage('CRM_FIELDS_TYPE_E_LIST_HEIGHT'),
'type' => 'text',
];
$arFields[] = [
'id' => 'E_CAPTION_NO_VALUE',
'name' => Loc::getMessage('CRM_FIELDS_TYPE_E_CAPTION_NO_VALUE'),
'type' => 'text',
];
break;
case 'money':
if (Loader::includeModule('currency'))
{
ob_start();
$APPLICATION->IncludeComponent(
'bitrix:currency.money.input',
'',
array(
'CONTROL_ID' => 'DEFAULT_VALUE_'.Main\Security\Random::getString(5),
'FIELD_NAME' => 'DEFAULT_VALUE',
'VALUE' => (isset($fieldValue['DEFAULT_VALUE']) ? $fieldValue['DEFAULT_VALUE'] : ''),
'EXTENDED_CURRENCY_SELECTOR' => 'N'
),
null,
array('HIDE_ICONS' => 'Y')
);
$moneyContent = ob_get_contents();
ob_end_clean();
$arFields[] = array(
'id' => 'DEFAULT_VALUE',
'name' => GetMessage('CRM_FIELDS_DEFAULT_VALUE'),
'type' => 'custom',
'value' => $moneyContent
);
}
else
{
$arFields[] = array(
'id' => 'DEFAULT_VALUE',
'name' => GetMessage('CRM_FIELDS_DEFAULT_VALUE'),
'type' => 'text',
);
}
break;
case 'iblock_section':
$id = isset($fieldValue['IB_IBLOCK_ID']) ? (int)$fieldValue['IB_IBLOCK_ID'] : 0;
$bActiveFilter = isset($fieldValue['IB_ACTIVE_FILTER']) && $fieldValue['IB_ACTIVE_FILTER'] == 'Y' ? 'Y' : 'N';
$arFields[] = array(
'id' => 'IB_IBLOCK_TYPE_ID',
'name' => GetMessage('CRM_FIELDS_TYPE_IB_IBLOCK_TYPE_ID'),
'type' => 'custom',
'value' => GetIBlockDropDownList($id, 'IB_IBLOCK_TYPE_ID', 'IB_IBLOCK_ID')
);
$arDefault = Array('' => GetMessage('CRM_FIELDS_TYPE_IB_DEFAULT_VALUE_ANY'));
$found = false;
if ($id > 0)
{
$arFilter = Array("IBLOCK_ID" => $id);
if ($bActiveFilter === "Y")
$arFilter["GLOBAL_ACTIVE"] = "Y";
$rsSections = CIBlockSection::GetList(
Array("LEFT_MARGIN" => "ASC"),
$arFilter,
false,
array("ID", "DEPTH_LEVEL", "NAME", "LEFT_MARGIN")
);
while ($arSection = $rsSections->Fetch())
{
$arDefault[$arSection["ID"]] = str_repeat(". ", $arSection["DEPTH_LEVEL"] - 1).$arSection["NAME"];
$found = true;
}
unset($arSection, $rsSections);
}
if ($found)
{
$arFields[] = array(
'id' => 'IB_DEFAULT_VALUE',
'name' => GetMessage('CRM_FIELDS_TYPE_IB_DEFAULT_VALUE'),
'items' => $arDefault,
'type' => 'list',
);
}
else
{
$arFields[] = array(
'id' => 'IB_DEFAULT_VALUE',
'name' => GetMessage('CRM_FIELDS_TYPE_IB_DEFAULT_VALUE'),
'type' => 'text',
);
}
unset($arDefault);
$arFields[] = array(
'id' => 'IB_DISPLAY',
'name' => GetMessage('CRM_FIELDS_TYPE_IB_DISPLAY'),
'type' => 'list',
'items' => array(
'LIST' => GetMessage('CRM_FIELDS_TYPE_IB_DISPLAY_LIST'),
'CHECKBOX' => GetMessage('CRM_FIELDS_TYPE_IB_DISPLAY_CHECKBOX'),
),
);
$arFields[] = array(
'id' => 'IB_LIST_HEIGHT',
'name' => GetMessage('CRM_FIELDS_TYPE_IB_LIST_HEIGHT'),
'type' => 'text',
);
$arFields[] = array(
'id' => 'IB_ACTIVE_FILTER',
'name' => GetMessage('CRM_FIELDS_TYPE_IB_ACTIVE_FILTER'),
'type' => 'checkbox',
);
break;
case 'iblock_element':
$id = isset($fieldValue['IB_IBLOCK_ID'])? (int)$fieldValue['IB_IBLOCK_ID']: 0;
$bActiveFilter = isset($fieldValue['IB_ACTIVE_FILTER']) && $fieldValue['IB_ACTIVE_FILTER'] == 'Y'? 'Y': 'N';
$arFields[] = array(
'id' => 'IB_IBLOCK_TYPE_ID',
'name' => GetMessage('CRM_FIELDS_TYPE_IB_IBLOCK_TYPE_ID'),
'type' => 'custom',
'value' => GetIBlockDropDownList($id, 'IB_IBLOCK_TYPE_ID', 'IB_IBLOCK_ID')
);
$arDefault = Array(''=>GetMessage('CRM_FIELDS_TYPE_IB_DEFAULT_VALUE_ANY'));
$found = false;
if ($id > 0)
{
$arFilter = Array("IBLOCK_ID" => $id);
if ($bActiveFilter === "Y")
$arFilter["ACTIVE"] = "Y";
$rs = CIBlockElement::GetList(
array("SORT" => "DESC", "NAME" => "ASC"),
$arFilter,
false,
false,
array("ID", "NAME", "SORT")
);
while ($ar = $rs->Fetch())
{
$found = true;
$arDefault[$ar["ID"]] = $ar["NAME"];
}
unset($sr, $rs);
}
if ($found)
{
$arFields[] = array(
'id' => 'IB_DEFAULT_VALUE',
'name' => GetMessage('CRM_FIELDS_TYPE_IB_DEFAULT_VALUE'),
'items' => $arDefault,
'type' => 'list',
);
}
else
{
$arFields[] = array(
'id' => 'IB_DEFAULT_VALUE',
'name' => GetMessage('CRM_FIELDS_TYPE_IB_DEFAULT_VALUE'),
'type' => 'text',
);
}
unset($arDefault);
$arFields[] = array(
'id' => 'IB_DISPLAY',
'name' => GetMessage('CRM_FIELDS_TYPE_IB_DISPLAY'),
'type' => 'list',
'items' => array(
'LIST' => GetMessage('CRM_FIELDS_TYPE_IB_DISPLAY_LIST'),
'CHECKBOX' => GetMessage('CRM_FIELDS_TYPE_IB_DISPLAY_CHECKBOX'),
),
);
$arFields[] = array(
'id' => 'IB_LIST_HEIGHT',
'name' => GetMessage('CRM_FIELDS_TYPE_IB_LIST_HEIGHT'),
'type' => 'text',
);
$arFields[] = array(
'id' => 'IB_ACTIVE_FILTER',
'name' => GetMessage('CRM_FIELDS_TYPE_IB_ACTIVE_FILTER'),
'type' => 'checkbox',
);
break;
case 'crm_status':
$arItems = Array();
$ar = CCrmStatus::GetEntityTypes();
foreach ($ar as $data)
$arItems[$data['ID']] = $data['NAME'];
$arFields[] = array(
'id' => 'ENTITY_TYPE',
'name' => GetMessage('CRM_FIELDS_TYPE_CRM_STATUS_ENTITY_TYPE'),
'type' => 'list',
'items' => $arItems,
);
break;
case 'crm':
$settings = $fieldValue['SETTINGS'] ?? [];
$entityTypeLead = isset($settings['LEAD']) && $settings['LEAD'] === 'Y'? 'Y': 'N';
$entityTypeContact = isset($settings['CONTACT']) && $settings['CONTACT'] === 'Y'? 'Y': 'N';
$entityTypeCompany = isset($settings['COMPANY']) && $settings['COMPANY'] === 'Y'? 'Y': 'N';
$entityTypeDeal = isset($settings['DEAL']) && $settings['DEAL'] === 'Y'? 'Y': 'N';
$entityTypeQuote = isset($settings['QUOTE']) && $settings['QUOTE'] === 'Y'? 'Y': 'N';
$sVal = '
'.GetMessage('USER_TYPE_CRM_ENTITY_TYPE_LEAD').'
'.GetMessage('USER_TYPE_CRM_ENTITY_TYPE_CONTACT').'
'.GetMessage('USER_TYPE_CRM_ENTITY_TYPE_COMPANY').'
'.GetMessage('USER_TYPE_CRM_ENTITY_TYPE_DEAL').'
'.GetMessage('USER_TYPE_CRM_ENTITY_TYPE_QUOTE_MSGVER_1').'
';
$dynamicTypes = \Bitrix\Crm\UserField\Types\ElementType::getUseInUserfieldTypes();
foreach ($dynamicTypes as $dynamicId => $dynamicTitle)
{
$dynamicTypeName = \CCrmOwnerType::ResolveName($dynamicId);
$sVal .= ' '.Main\Text\HtmlFilter::encode($dynamicTitle).' ';
}
if (\Bitrix\Crm\Settings\InvoiceSettings::getCurrent()->isSmartInvoiceEnabled())
{
$sVal .= ' '.Main\Text\HtmlFilter::encode(\CCrmOwnerType::GetCategoryCaption(\CCrmOwnerType::SmartInvoice)).' ';
}
$arFields[] = array(
'id' => 'ENTITY_TYPE',
'name' => GetMessage('CRM_FIELDS_TYPE_CRM_ELEMENT_ENTITY_TYPE'),
'type' => 'custom',
'value' => $sVal
);
break;
}
return $arFields;
}