- Модуль: 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;
}