• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/classes/general/cml2.php
  • Класс: CUserCMLImport
  • Вызов: CUserCMLImport::CheckIBlockFields
function CheckIBlockFields()
{
	/*
	$arIBlocks = array(
		'ABSENCE' => array('USER' => 0, 'STATE' => 0, 'FINISH_STATE' => 0),
		'STATE_HISTORY' => array('USER' => 0, 'DEPARTMENT' => 0, 'POST' => 0));
	*/

	$arIBlockFields = array();

	require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/intranet/install/1c_intranet/iblock.php');

	foreach ($arIBlockFields as $IBLOCK => $arIBlockFieldsList)
	{
		$param_name = $IBLOCK.'_IBLOCK_ID';

		$dbRes = CIBlockProperty::GetList(
			array(),
			array(
				'IBLOCK_ID' => $this->$param_name
			)
		);

		while ($arRes = $dbRes->Fetch())
		{
			unset($arIBlockFieldsList[$arRes['CODE']]);
		}

		if (count($arIBlockFieldsList) > 0)
		{
			$ob = new CIBlockProperty();
			foreach ($arIBlockFieldsList as $key => $arField)
			{
				$arField['IBLOCK_ID'] = $this->$param_name;

				if ($key == 'DEPARTMENT')
					$arField['LINK_IBLOCK_ID'] = $this->DEPARTMENTS_IBLOCK_ID;

				if (!$FIELD_ID = $ob->Add($arField))
				{
					$GLOBALS['APPLICATION']->ThrowException($ob->LAST_ERROR);
					return false;
				}
			}
		}
	}
	return true;
}