Обработчики используются для вмешательства в ход работы модуля без вмешательства в его исходные файла. В модуле имеется поддержка довольно большого списка событий. Кратко опишем их ниже.

Системные события:
  • OnFindPlugins - при поиске плагинов, можно добавить свои плагины,
  • OnAfterFindPlugins - после поиска плагинов, некоторые плагины можно убрать,
  • OnBeforeProcessField - при обработке поля, можно выгрузить в любом поле любые свои данные (т.е. как бы переопределить),
  • OnAfterProcessField - после обработки поля, можно произвольным образом обработать полученные в соответствии с настройками поля,
  • onGetProcessEntities - при получении режима работы с ТП, можно переопределить (с вероятностью 99.9% это вам не нужно),
  • OnGetElementArray - при получении данных товара, можно изменить данные, т.е. чтобы каждый товар модуль "видел" иначе (изменить название, цены и т.п.),
  • OnGetSteps - при получении шагов обработки - можно добавить свои шаги или удалить некоторые стандартные (большинство стандартных полей удалить нельзя),


События при настройке профилей:
  • OnGetAdditionalTabs - при получении вкладок, можно добавить свои вкладки в настройки профиля,
  • OnGetCategoryRedefinitions - при получении сопоставления категорий,
  • OnBeforeProcessElementField - при обработке значения поля для конкретного элемента,
  • OnAfterProcessElementField - после обработки значения поля для конкретного элемента,
  • OnBuildFilter - при сборке фильтра (можно влиять на фильтр, но осторожно),
  • OnBuildFilterItem - при сборке отдельного элемента фильтра,
  • OnGetAllSettings - при получении настроек, можно добавить свои настройки в обработку полей,
  • OnAfterGetAllSettings - после получения настроек, можно удалить некоторые настройки,
  • OnCustomHtmlToText - при преобразовании html в текст,
  • OnGetIBlockList - при получении списка инфоблоков,


Также в каждом плагине есть свои обработчики, например:
  • OnYandexMarketXml
  • OnYandexMarketResult
  • OnGoogleMerchantXml
  • OnGoogleMerchantResult

В каждом обработчике - свои аргументы, узнать которые можно несложно, например: напишите свой обработчик, добавьте несколько аргументов $a, $b, $c, и в коде обработчика делайте, например, var_dump($a), при этом аргументов может быть много.


Обработчики в универсальных плагинах

Необходимо знать, что некоторые плагины в модуле - универсальные, т.е. основаны не на классе Plugin, а на классе UniversalPlugin (а он, в свою очередь, основан на Plugin). Соответственно, вся работа с такими плагинами строится абсолютно иначе, в т.ч. обработчики.

В универсальных плагинах обработчики имеют названия, начинающиеся с "onUp" (означает on Universal Plugin some action), они могут быть обработаны как обычным для 1С-Битрикс способом, так и с помощью методов плагина - например, при срабатывании события onUpBeforeProcessElement сначала вызывается метод onUpBeforeProcessElement текущего плагина, после него - вызываются обычные обработчики 1С-Битрикс.

При обработке событий имейте в виду, что первым аргументом всегда добавляется $this - т.е. объект текущего плагина. Например, если Вы видите что в коде происходит вызов события

$this->handler('onUpShowSettings', array(&$arSettings));

Значит в функции-обработчике аргументы должны быть $obPlugin, &$arSettings.


Обработчиков в универсальных плагинах достаточно много, вот некоторые из них (жирным шрифтом отмечены те, которые, на наш взгляд, могут быть наиболее востребованными):

  • onUpShowSettings (&$arSettings) - при показе настроек плагина. Позволяет добавить или удалить собственные настройки,
  • onUpGetFields (&$arResult, $intProfileID, $intIBlockID, $bAdmin) - при получении списка полей плагина (по каждому инфоблоку),
  • onUpAfterGetFields (&$arResult, $intProfileID, $intIBlockID, $bAdmin) - после составления списка полей и сортировки,
  • onUpBeforeProcessElement (&$arResult, &$arElement, &$arFields, &$arElementSections, $intMainIBlockId, &$bStop) - перед обработкой элемента для выгрузки, позволяет управлять данными товаров перед выгрузкой,
  • onUpAfterProcessElement (&$arResult, $arElement, $arFields, $arElementSections, $intMainIBlockId) - после обработки одного элемента, можно изменить сгенерированные данные перед их сохранением для последующей выгрузки,
  • onUpStepCheck (&$arSession) - при старте выгрузки, в момент проверки всех систем,
  • onUpGetXmlStructure (&$strXml) - при получении базовой структуры XML (в виде строки),
  • onUpGetJsonStructure(&$arJson) - при получении базогово JSON (в виде массива),
  • onUpGetExportSteps (&$arExportSteps, &$arSession) - при определении списка шагов выгрузки - можно добавить собственные шаги выгрузки,
  • onUpBeforeExportItems (&$arStep) - непосредственно перед выгрузкой элементов (из сохранённых данных),
  • onUpAfterExportItems (&$arStep, &$bBreaked) - непосредственно после выгрузки элементов,
  • onUpBeforeBuildXml (&$arResult, &$arElement, &$arFields, &$arElementSections) - при подготовке к сборке итогового XML,
  • onUpBuildXmlTag (&$arXmlTags, &$arElement, &$arFields, &$arElementSections, &$key, &$mValue) - при сборке одного тега (выполняется для каждого поля),
  • onUpBuildXmlAttr (&$arXmlTags, &$arElement, &$arFields, &$arElementSections, &$key, &$mValue) - при сборке каждого атрибута (для каждого поля-атрибута [начинающегося с символа @]),
  • onUpBuildXml (&$arXmlTags, &$arXmlAttr, &$strXmlItem, &$arElement, &$arFields, &$arElementSections) - в момент сборки конечного XML,
  • onUpGetDataMore (&$arElement, &$arFields, &$arElementSections, &$mDataMore, $arXml) - при получении дополнительных данных для выгрузки для каждого товара,
  • onUpAfterBuildXml (&$arResult, $arElement, $arFields, $arElementSections) - сразу после сборки XML, при необходимости можно непосредственно редактировать полученный XML,
  • onUpGetXmlCategoryTag (&$strCategoryXml, $intCategoryID, $arCategory, $arCategories) - при сборке одного тега-категории,
  • onUpGetXmlCurrencyTag (&$strCurrencyXml, $arCurrency, $strRate) - при сборке одного тега-валюты,
  • onUpXmlExportItem (&$arItem, &$strXml) - непосредственно при записи одного товара в файл,
  • onUpBeforeBuildJson (&$arResult, &$arElement, &$arFields, &$arElementSections) - при подготовке к сборке JSON,
  • onUpBuildJsonTag (&$arJson, &$arElement, &$arFields, &$arElementSections, &$key, &$mValue) - при сборке одного элемента JSON,
  • onUpBuildJson (&$arJson, &$arElement, &$arFields, &$arElementSections) - в момент начала сборки JSON,
  • onUpAfterBuildJson (&$arResult, $arElement, $arFields, $arElementSections) - непосредственно после окончания сборки JSON,
  • onUpJsonExportHeader (&$strJsonHeader, &$arSession, &$bWrite) - при выгрузке основной части JSON (над товарами),
  • onUpJsonExportItem (&$arItem, &$strJson, &$arSession, &$bWrite) - при записи одного товара в JSON,
  • onUpJsonExportFooter (&$strJsonFooter, &$arSession, &$bWrite) - при записи завершающей части JSON (после товаров),
  • onUpBeforeBuildExcel (&$arResult, &$arElement, &$arFields, &$arElementSections) - перед выгрузкой в Excel,
  • onUpBuildExcel (&$arJson, &$arElement, &$arFields, &$arElementSections) - в момент сборки Excel,
  • onUpAfterBuildExcel (&$arResult, $arElement, $arFields, $arElementSections) - после сборки Excel,
  • onUpBeforeExcelOpen (&$strFilename) - перед открытием файла Excel,
  • onUpAfterExcelOpen (&$strFilename) - после открытия файла Excel,
  • onUpBeforeExcelSave (&$strFilename, &$strFilenameUpdated) - перед сохранением файла Excel,
  • onUpAfterExcelSave (&$strFilename, &$strFilenameUpdated) - после сохранение файла Excel,
  • onUpZipSuccess ($strFilenameArchive) - при упаковке файла в архив,
  • onUpWriteToFile (&$strContent, &$strFilenameSuffix, &$bAutoConvert) - перед записью в файл
  • onSetProfileArray () - при установке массива профиля в текущий объект, позволяет отследить данные профиля и скорректировать на основе них другие данные.


Возврат к списку