Блог разработчика 1С-Битрикс

Руководство по EventManager в 1С-Битрикс: управление событиями и обработчиками

EventManager - это класс, предназначенный для краткосрочной и долгосрочной регистрации обработчиков событий. Он реализует паттерн Singleton (Одиночка), что означает, что существует только один экземпляр этого класса в приложении. Доступ к этому экземпляру осуществляется через метод getInstance().

EventManager в 1С-Битрикс: управление событиями и обработчиками

Оглавление

Описание

EventManager управляет событиями и их обработчиками в приложении. Он позволяет регистрировать обработчики для определенных событий, удалять их и вызывать события, чтобы все зарегистрированные обработчики были уведомлены.

Методы

getInstance

@staticmethod
def getInstance():
    # Возвращает единственный экземпляр EventManager

Описание: Метод getInstance возвращает единственный экземпляр класса EventManager. Если экземпляр еще не создан, он будет создан при первом вызове этого метода.

Возвращаемое значение:

  • EventManager: Единственный экземпляр класса EventManager.

registerHandler

def registerHandler(self, event_name, handler):
    # Регистрирует обработчик для указанного события

Описание: Метод registerHandler регистрирует обработчик для указанного события. Обработчик будет вызван каждый раз, когда событие будет вызвано.

Параметры:

  • event_name (str): Имя события, для которого регистрируется обработчик.
  • handler (callable): Функция или метод, который будет вызван при возникновении события.

unregisterHandler

def unregisterHandler(self, event_name, handler):
    # Удаляет обработчик для указанного события

Описание: Метод unregisterHandler удаляет обработчик для указанного события. Обработчик больше не будет вызван при возникновении этого события.

Параметры:

  • event_name (str): Имя события, для которого удаляется обработчик.
  • handler (callable): Функция или метод, который будет удален.

triggerEvent

def triggerEvent(self, event_name, *args, **kwargs):
    # Вызывает все зарегистрированные обработчики для указанного события

Описание: Метод triggerEvent вызывает все зарегистрированные обработчики для указанного события. Все аргументы, переданные в этот метод, будут переданы обработчикам.

Параметры:

  • event_name (str): Имя события, которое нужно вызвать.
  • *args: Позиционные аргументы, которые будут переданы обработчикам.
  • **kwargs: Именованные аргументы, которые будут переданы обработчикам.

Примеры использования

Регистрация и удаление обработчиков

def on_event_triggered(arg1, arg2):
    print(f"Event triggered with args: {arg1}, {arg2}")

# Получаем экземпляр EventManager
event_manager = EventManager.getInstance()

# Регистрируем обработчик
event_manager.registerHandler("my_event", on_event_triggered)

# Удаляем обработчик
event_manager.unregisterHandler("my_event", on_event_triggered)

Вызов события

def on_event_triggered(arg1, arg2):
    print(f"Event triggered with args: {arg1}, {arg2}")

# Получаем экземпляр EventManager
event_manager = EventManager.getInstance()

# Регистрируем обработчик
event_manager.registerHandler("my_event", on_event_triggered)

# Вызываем событие
event_manager.triggerEvent("my_event", "arg1_value", "arg2_value")

В этом примере при вызове события my_event будет вызван обработчик on_event_triggered с аргументами arg1_value и arg2_value.

Теги:  D7, справочник


Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Участие в проекте

привлечение в проект на part-time основе

от 20 000 рублей / неделя

Возможно участие в проекте на ежедневной основе, как разработчика. Занятость - до 20 часов в неделю
Минимальный срок - одна неделя.

* сумма фиксированная

Аутсорсинг

готов помочь, если нет времени

договорная

Могу взять на себя работы по full-stack на основе готовой верстки

* если нет верстки, то возможность верстать с Figma в режиме редактора

Модули и компоненты для «1С-Битрикс»

оценка производится на основе предоставленного Технического Задания

от 20 000 рублей
Разработка дополнительных модулей для 1С-Битрикс, расширение функционала, внедрение любых решений, требующихся для выполнения ваших бизнес-задач.

* стоимость зависит от конкретной задачи, ее объема и сложности выполняемых работ.