CCrmDocument::GetFieldInputControl

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CCrmDocument
  4. GetFieldInputControl
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_document.php
  • Класс: \CCrmDocument
  • Вызов: CCrmDocument::GetFieldInputControl
static function GetFieldInputControl($documentType, $arFieldType, $arFieldName, $fieldValue, $bAllowSelection = false, $publicMode = false)
{
	global $USER_FIELD_MANAGER, $APPLICATION;

	$arDocumentID = static::GetDocumentInfo($documentType.'_0');
	if (empty($arDocumentID))
	{
		throw new CBPArgumentNullException('documentId');
	}

	static $arDocumentFieldTypes = array();
	if (!array_key_exists($documentType, $arDocumentFieldTypes))
		$arDocumentFieldTypes[$documentType] = static::GetDocumentFieldTypes($documentType);

	$arFieldType["BaseType"] = "string";
	$arFieldType["Complex"] = false;
	if (array_key_exists($arFieldType["Type"], $arDocumentFieldTypes[$documentType]))
	{
		$arFieldType["BaseType"] = $arDocumentFieldTypes[$documentType][$arFieldType["Type"]]["BaseType"];
		$arFieldType["Complex"] = $arDocumentFieldTypes[$documentType][$arFieldType["Type"]]["Complex"];
	}

	//$customMethodName = '';
	$_fieldValue = $fieldValue;
	if (!is_array($fieldValue) || is_array($fieldValue) && CBPHelper::IsAssociativeArray($fieldValue))
		$fieldValue = array($fieldValue);

	ob_start();
	if ($arFieldType['Type'] == 'select')
	{
		$fieldValueTmp = $fieldValue;
		?>
		
		
			
IncludeComponent('bitrix:crm.field_multi.edit', '', Array( 'FM_MNEMONIC' => $arFieldName['Field'], 'ENTITY_ID' => $arDocumentID['TYPE'], 'ELEMENT_ID' => $arDocumentID['ID'], 'TYPE_ID' => mb_strtoupper($arFieldType['Type']), 'VALUES' => $value1 ), null, array('HIDE_ICONS' => 'Y') ); if ($bAllowSelection) { ?>
'; $fieldValueTmp = $fieldValue; if (sizeof($fieldValue) == 0) $fieldValue[] = null; $ind = -1; if($arFieldType['Type'] == 'UF:disk_file') { $arUserFieldType = $USER_FIELD_MANAGER->GetUserType('disk_file'); $arUserField = array( 'ENTITY_ID' => 'CRM_'.$arDocumentID['TYPE'], 'FIELD_NAME' => $arFieldName['Field'], 'USER_TYPE_ID' => 'disk_file', 'SORT' => 100, 'MULTIPLE' => 'Y', 'MANDATORY' => $arFieldType['Required'] ? 'Y' : 'N', 'EDIT_IN_LIST' => 'Y', 'EDIT_FORM_LABEL' => $arUserFieldType['DESCRIPTION'], 'VALUE' => $fieldValue, 'USER_TYPE' => $arUserFieldType, 'SETTINGS' => array(), 'ENTITY_VALUE_ID' => 1, ); $APPLICATION->IncludeComponent( 'bitrix:system.field.edit', 'disk_file', array( 'arUserField' => $arUserField, 'bVarsFromForm' => false, 'form_name' => $arFieldName['Form'], 'FILE_MAX_HEIGHT' => 400, 'FILE_MAX_WIDTH' => 400, 'FILE_SHOW_POPUP' => true ), false, array('HIDE_ICONS' => 'Y') ); } else { foreach ($fieldValue as $key => $value) { $ind++; $fieldNameId = 'id_'.htmlspecialcharsbx($arFieldName['Field']).'__n'.$ind.'_'; $fieldNameName = htmlspecialcharsbx($arFieldName['Field']).($arFieldType['Multiple'] ? '[n'.$ind.']' : ''); if ($arFieldType['Multiple']) echo ''; if (mb_strpos($arFieldType['Type'], 'UF:') === 0) { $value1 = $value; if ($bAllowSelection && CBPDocument::IsExpression(trim($value1))) $value1 = null; else unset($fieldValueTmp[$key]); $sType = str_replace('UF:', '', $arFieldType['Type']); $_REQUEST[$arFieldName['Field']] = $value1; if ($sType == 'crm') { ?> GetUserType($sType); $fields = $USER_FIELD_MANAGER->GetUserFields('CRM_'.$arDocumentID['TYPE']); $ufId = isset($fields[$fieldNameName]) ? $fields[$fieldNameName]['ID'] : null; $arUserField = array( 'ID' => $ufId, 'ENTITY_ID' => 'CRM_'.$arDocumentID['TYPE'], 'FIELD_NAME' => $arFieldName['Field'], 'USER_TYPE_ID' => $sType, 'SORT' => 100, 'MULTIPLE' => $arFieldType['Multiple'] ? 'Y' : 'N', 'MANDATORY' => $arFieldType['Required'] ? 'Y' : 'N', 'EDIT_IN_LIST' => 'Y', 'EDIT_FORM_LABEL' => $arUserFieldType['DESCRIPTION'], 'VALUE' => $value1, 'USER_TYPE' => $arUserFieldType, 'SETTINGS' => array(), 'ENTITY_VALUE_ID' => 1, ); if ($arFieldType['Type'] == 'UF:boolean' && ($arUserField['VALUE'] == "Y" || $arUserField['VALUE'] == "N")) $arUserField['VALUE'] = ($arUserField['VALUE'] == "Y") ? 1 : 0; if ( $arFieldType['Type'] == 'UF:iblock_element' || $arFieldType['Type'] == 'UF:iblock_section' || $arFieldType['Type'] == 'UF:crm_status' || $arFieldType['Type'] == 'UF:boolean' ) { $options = $arFieldType['Options']; if(is_string($options)) { if ($arFieldType['Type'] == 'UF:crm_status') { $arUserField['SETTINGS']['ENTITY_TYPE'] = $options; } else { $arUserField['SETTINGS']['IBLOCK_ID'] = $options; } } elseif(is_array($options)) { $arUserField['SETTINGS']= $options; } } elseif ($arFieldType['Type'] == 'UF:crm') { $arUserField['SETTINGS'] = $arFieldType['Options']; if (empty($arUserField['SETTINGS'])) $arUserField['SETTINGS'] = array('LEAD' => 'Y', 'CONTACT' => 'Y', 'COMPANY' => 'Y', 'DEAL' => 'Y'); } $APPLICATION->IncludeComponent( 'bitrix:system.field.edit', $sType, array( 'arUserField' => $arUserField, 'bVarsFromForm' => false, 'form_name' => $arFieldName['Form'], 'FILE_MAX_HEIGHT' => 400, 'FILE_MAX_WIDTH' => 400, 'FILE_SHOW_POPUP' => true ), false, array('HIDE_ICONS' => 'Y') ); } else { switch ($arFieldType['Type']) { case 'int': unset($fieldValueTmp[$key]); ?> IncludeComponent( 'bitrix:main.calendar', '', array( 'SHOW_INPUT' => 'Y', 'FORM_NAME' => $arFieldName['Form'], 'INPUT_NAME' => $fieldNameName, 'INPUT_VALUE' => $v, 'SHOW_TIME' => $arFieldType['Type'] === 'datetime' ? 'Y' : 'N' ), false, array('HIDE_ICONS' => 'Y') ); break; case 'text': unset($fieldValueTmp[$key]); ?>');">'; } } if ($arFieldType['Multiple']) echo ''; if ( $arFieldType["Multiple"] && (($arFieldType["Type"] != "file") || $publicMode) && $arFieldType["Type"] !== 'UF:date' && $arFieldType["Type"] !== 'UF:iblock_element' ) { echo '
'; } if ($bAllowSelection) { if (in_array($arFieldType['Type'], array('file', 'bool', "date", "datetime")) || (mb_strpos($arFieldType['Type'], 'UF:') === 0)) { ?> _text" name="_text" value=" 0) { $a = array_values($fieldValueTmp); echo htmlspecialcharsbx($a[0]); } ?>"> _text', '');">

Добавить комментарий