• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_document.php
  • Класс: \CCrmDocument
  • Вызов: CCrmDocument::PreparePrintableValue
static function PreparePrintableValue($arDocumentID, $fieldName, $arFieldType, $fieldValue)
{
	global $USER_FIELD_MANAGER, $APPLICATION;
	if (empty($arDocumentID))
		throw new CBPArgumentNullException('documentId');

	$result = $fieldValue;
	switch ($arFieldType['Type'])
	{
		case 'date':
		case 'datetime':
			if (is_array($fieldValue))
			{
				$result = array();
				foreach ($fieldValue as $_fieldValue)
					$result[] = !empty($_fieldValue) ? FormatDate('x', MakeTimeStamp($_fieldValue)) : '';
			}
			else
				$result = !empty($fieldValue) ? FormatDate('x', MakeTimeStamp($fieldValue)) : '';
			break;

		case 'user':
			if (!is_array($fieldValue))
				$fieldValue = array($fieldValue);

			$result = CBPHelper::UsersArrayToString($fieldValue, null, $arDocumentID["DOCUMENT_TYPE"]);
			break;

		case 'bool':
			if (is_array($fieldValue))
			{
				$result = array();
				foreach ($fieldValue as $r)
					$result[] = ((mb_strtoupper($r) != "N" && !empty($r)) ? GetMessage('BPVDX_YES') : GetMessage('BPVDX_NO'));
			}
			else
			{
				$result = ((mb_strtoupper($fieldValue) != "N" && !empty($fieldValue)) ? GetMessage('BPVDX_YES') : GetMessage('BPVDX_NO'));
			}
			break;

		case 'file':
			if (is_array($fieldValue))
			{
				$result = array();
				foreach ($fieldValue as $r)
				{
					$r = intval($r);
					$dbImg = CFile::GetByID($r);
					if ($arImg = $dbImg->Fetch())
						$result[] = "[url=/bitrix/tools/bizproc_show_file.php?f=".urlencode($arImg["FILE_NAME"])."&i=".$r."&h=".md5($arImg["SUBDIR"])."]".htmlspecialcharsbx($arImg["ORIGINAL_NAME"])."[/url]";
				}
			}
			else
			{
				$fieldValue = intval($fieldValue);
				$dbImg = CFile::GetByID($fieldValue);
				if ($arImg = $dbImg->Fetch())
					$result = "[url=/bitrix/tools/bizproc_show_file.php?f=".urlencode($arImg["FILE_NAME"])."&i=".$fieldValue."&h=".md5($arImg["SUBDIR"])."]".htmlspecialcharsbx($arImg["ORIGINAL_NAME"])."[/url]";
			}
			break;

		case 'UF:url':
			if (is_array($fieldValue))
			{
				$result = array();
				foreach ($fieldValue as $r)
				{
					$result[] = sprintf('[url=%s]%s[/url]', $r, $r);
				}
			}
			else
			{
				$result = sprintf('[url=%s]%s[/url]', $fieldValue, $fieldValue);
			}
			return $result;
		break;

		case 'select':
			if (is_array($arFieldType["Options"]))
			{
				if (is_array($fieldValue))
				{
					$result = array();
					foreach ($fieldValue as $r)
					{
						if (array_key_exists($r, $arFieldType["Options"]))
							$result[] = $arFieldType["Options"][$r];
					}
				}
				else
				{
					if (array_key_exists($fieldValue, $arFieldType["Options"]))
						$result = $arFieldType["Options"][$fieldValue];
				}
			}

			break;
		case 'web':
		case 'im':
		case 'email':
		case 'phone':
				$result = array();

				if (is_array($fieldValue) && !CBPHelper::IsAssociativeArray($fieldValue))
					$fieldValue = $fieldValue[0];

				if (is_array($fieldValue) && is_array($fieldValue[mb_strtoupper($arFieldType['Type'])]))
				{
					foreach ($fieldValue[mb_strtoupper($arFieldType['Type'])] as $val)
					{
						if (!empty($val))
							$result[] = CCrmFieldMulti::GetEntityNameByComplex(mb_strtoupper($arFieldType['Type']).'_'.$val['VALUE_TYPE'], false).': '.$val['VALUE'];
					}
				}
			break;
	}

	if (mb_strpos($arFieldType['Type'], 'UF:') === 0)
	{
		$sType = str_replace('UF:', '', $arFieldType['Type']);
		if($sType === 'crm')
		{
			$options = isset($arFieldType['Options']) && is_array($arFieldType['Options'])
					? $arFieldType['Options'] : array();
			$defaultTypeName = '';
			foreach($options as $typeName => $flag)
			{
				if($flag === 'Y')
				{
					$defaultTypeName = $typeName;
					break;
				}
			}

			if($defaultTypeName === '')
			{
				$defaultTypeName = 'LEAD';
			}

			if(isset($arFieldType['Multiple']) && $arFieldType['Multiple'] > 0 && is_array($fieldValue))
			{
				$result = array();
				foreach($fieldValue as $value)
				{
					$result[] = static::PrepareCrmUserTypeValueView($value, $defaultTypeName);
				}
			}
			else
			{
				$result = static::PrepareCrmUserTypeValueView($fieldValue, $defaultTypeName);
			}
		}
		else
		{
			$arUserFieldType = $USER_FIELD_MANAGER->GetUserType($sType);
			$arUserField = array(
				'ENTITY_ID' => 'CRM_LEAD',
				'FIELD_NAME' => 'UF_XXXXXXX',
				'USER_TYPE_ID' => $sType,
				'SORT' => 100,
				'MULTIPLE' => $arFieldType['Multiple'] ? 'Y' : 'N',
				'MANDATORY' => $arFieldType['Required'] ? 'Y' : 'N',
				'EDIT_FORM_LABEL' => $arUserFieldType['DESCRIPTION'],
				'VALUE' => $fieldValue,
				'USER_TYPE' => $arUserFieldType
			);
			if ($arFieldType['Type'] == 'UF:iblock_element' || $arFieldType['Type'] == 'UF:iblock_section')
			{
				if (is_array($arFieldType['Options']))
				{
					$arUserField['SETTINGS'] = $arFieldType['Options'];
				}
				else
				{
					$arUserField['SETTINGS']['IBLOCK_ID'] = $arFieldType['Options'];
				}
			}
			elseif ($arFieldType['Type'] == 'UF:crm_status')
				$arUserField['SETTINGS']['ENTITY_TYPE'] = $arFieldType['Options'];
			elseif ($arFieldType['Type'] == 'UF:boolean' && ($fieldValue === 'Y' || $fieldValue === 'N'))
			{
				//Convert bizproc boolean values (Y/N) in to UF boolean values (1/0)
				$arUserField['VALUE'] = $fieldValue = ($fieldValue === 'Y') ? 1 : 0;
			}

			ob_start();
			$APPLICATION->IncludeComponent(
				'bitrix:system.field.view',
				$sType,
				array(
					'arUserField' => $arUserField,
					'bVarsFromForm' => false,
					'form_name' => "",
					'printable' => true,
					'FILE_MAX_HEIGHT' => 400,
					'FILE_MAX_WIDTH' => 400,
					'FILE_SHOW_POPUP' => true
				),
				false,
				array('HIDE_ICONS' => 'Y')
			);
			$result = ob_get_contents();
			$result = HTMLToTxt($result);
			ob_end_clean();
		}
	}
	return $result;
}