373  /  380
Справочник

Пример изменения работы модуля

Просмотров: 33818
Дата последнего изменения: 16.11.2023
Роберт Басыров
Сложность урока:
3 уровень - средняя сложность. Необходимо внимание и немного подумать.
1
2
3
4
5
Недоступно в лицензиях:
Ограничений нет
Внимание! Перед тем как начать модифицировать работу модуля (то есть модифицировать ядро системы) необходимо быть уверенным, что иными средствами стоящую перед вами задачу не решить. При первом же обновлении продукта все добавленные вами изменения затрутся, и вам придется заново вносить их.

Пример модификации модуля для версии 11.5. В более поздних версиях этот функционал работает по другому.

Решим задачу выгрузки контактов из корпоративного портала в Outlook 2003. Напомним, что в стандартной поставке «1С-Битрикс: Корпоративный портал» рассчитан на взаимодействие с Outlook 2007.

За формирование и подготовку данных для Outlook отвечает файл /bitrix/modules/intranet/classes/general/ws_contacts.php.

Есть две стандартные проблемы:

  • В Outlook 2003 не выгружаются аватарки - вследствие чего сразу же возникает ошибка.
  • Не для всех пользователей выгружается компания, к которой они принадлежат (поле в Outlook - Организация).

Решаем первую проблему с помощью функции __getRow($arRes, $listName, &$last_change). Комментируем строки установки атрибута картинки:

/*if ($this->bGetImages && $arRes['PERSONAL_PHOTO'] > 0)
	{
		$arImage = CIntranetUtils::InitImage($arRes['PERSONAL_PHOTO'], 100, 100);

		$obRow->setAttribute('ows_Attachments', ';#'.($APPLICATION->IsHTTPS() ? 'https://' : 'http://')
			.$_SERVER['HTTP_HOST'].$arImage['CACHE']['src'].';#'.CIntranetUtils::makeGUID(md5($arRes['PERSONAL_PHOTO'])).',1;#');
		$obRow->setAttribute('ows_MetaInfo_AttachProps', '<File Photo="-1">'.$arImage['FILE']['FILE_NAME'].'</File>');
	}
	else
	{*/
		$obRow->setAttribute('ows_Attachments', 0);
	//}

Решаем вторую проблему с помощью функции GetListItemChangesSinceToken($listName, $viewFields = '', $query = '', $rowLimit = 0, $changeToken = ''). В цикле while ($arUser = $obUsers->NavNext()) комментируем все строки, начинающиеся с $arUser['WORK_COMPANY'] (т.е. где просто меняется значение этого атрибута).

Примечание: В функции GetList происходит формирование схемы аттрибутов. Если перед строчкой: return array('GetListResult' => $data); сделать вывод массива $data, то можно ознакомиться со схемой выгрузки.

24
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии