• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_field_multi.php
  • Класс: \CCrmFieldMulti
  • Вызов: CCrmFieldMulti::CompareFields
static function CompareFields($arFieldsOrig, $arFieldsModif)
{
	$arMsg = Array();

	// prepare diff format
	$arField = Array();
	foreach($arFieldsOrig as $typeId => $arTypes)
		foreach($arTypes as $valueId => $arValues)
			$arField['original'][$valueId] = array_merge($arValues, Array('COMPLEX'=>$typeId.'_'.$arValues['VALUE_TYPE']));

	$addCnt = 1;
	foreach($arFieldsModif as $typeId => $arTypes)
		foreach($arTypes as $valueId => $arValues)
		{
			if(mb_substr($valueId, 0, 1) == 'n')
			{
				$arField['modified']['add'.($addCnt++)] = array_merge($arValues, Array('COMPLEX'=>$typeId.'_'.$arValues['VALUE_TYPE']));
			}
			else
			{
				$arField['modified'][$valueId] = array_merge($arValues, Array('COMPLEX'=>$typeId.'_'.$arValues['VALUE_TYPE']));
			}
		}

	if(isset($arField['modified']))
	{
		foreach ($arField['modified'] as $fieldId => $arValue)
		{
			if (isset($arField['original'][$fieldId]))
			{
				if ($arValue['VALUE'] == "")
				{
					$arMsg[] = Array(
						'EVENT_NAME' => GetMessage('CRM_CF_FIELD_DELETE', Array('#FIELD_NAME#' => self::GetEntityNameByComplex($arField['original'][$fieldId]['COMPLEX']))),
						'EVENT_TEXT_1' => $arField['original'][$fieldId]['VALUE'],
					);
				}
				else if ($arField['original'][$fieldId]['COMPLEX'] != $arValue['COMPLEX']
				&& $arField['original'][$fieldId]['VALUE'] != $arValue['VALUE'] && $arValue['VALUE'] != "")
				{

					$arMsg[] = Array(
						'EVENT_NAME' => GetMessage('CRM_CF_FIELD_DELETE', Array('#FIELD_NAME#' => self::GetEntityNameByComplex($arField['original'][$fieldId]['COMPLEX']))),
						'EVENT_TEXT_1' => $arField['original'][$fieldId]['VALUE'],
					);
					$arMsg[] = Array(
						'EVENT_NAME' => GetMessage('CRM_CF_FIELD_ADD', Array('#FIELD_NAME#' => self::GetEntityNameByComplex($arValue['COMPLEX']))),
						'EVENT_TEXT_1' => $arValue['VALUE'],
					);
				}
				else if ($arField['original'][$fieldId]['COMPLEX'] != $arValue['COMPLEX'])
				{
					$arMsg[] = Array(
						'EVENT_NAME' => GetMessage('CRM_CF_FIELD_MODIFY_TYPE', Array('#FIELD_NAME#' => self::GetEntityNameByComplex($arField['original'][$fieldId]['COMPLEX']))),
						'EVENT_TEXT_1' => self::GetEntityNameByComplex($arField['original'][$fieldId]['COMPLEX']),
						'EVENT_TEXT_2' => self::GetEntityNameByComplex($arValue['COMPLEX']),
					);
				}
				else if ($arField['original'][$fieldId]['VALUE'] != $arValue['VALUE'])
				{
					$arMsg[] = Array(
						'EVENT_NAME' => GetMessage('CRM_CF_FIELD_MODIFY_VALUE', Array('#FIELD_NAME#' => self::GetEntityNameByComplex($arValue['COMPLEX']))),
						'EVENT_TEXT_1' => $arField['original'][$fieldId]['VALUE'],
						'EVENT_TEXT_2' => $arValue['VALUE'],
					);
				}
			}
			elseif ($arValue['VALUE'] != "")
			{
				$arMsg[] = Array(
					'EVENT_NAME' => GetMessage('CRM_CF_FIELD_ADD', Array('#FIELD_NAME#' => self::GetEntityNameByComplex($arValue['COMPLEX']))),
					'EVENT_TEXT_1' => $arValue['VALUE'],
				);
			}
		}
	}
	return $arMsg;
}