Общие сведения
Надёжность и безопасность
Покупка лицензии
Начало работы
Роли в системе
Проекты
Концепции
Компоненты
Инструкции
Задачи
Финансы
Ресурсы
Таймшиты
Клиенты
Вики
Затраты
Отчёты и аналитика
FAQ
Типы отчётов
Тип отчёта «Акты»
Тип отчёта «Баланс отсутствий»
Тип отчёта «Бронирование»
Тип отчёта «Биллинг»
Тип отчёта «Версии проектов»
Тип отчёта «Задачи»
Тип отчёта «Задачи проектов»
Тип отчёта «Затраты»
Тип отчёта «Заявки на затраты»
Тип отчёта «Заявки на отсутствия»
Тип отчёта «История ставок пользователей»
Тип отчёта «Запросы ресурсов»
Тип отчёта «Навыки пользователей»
Тип отчёта «Пользователи»
Тип отчёта «Проводки»
Тип отчёта «Ресурсный план»
Тип отчёта «Ресурсный план (по версиям)»
Тип отчёта «Проекты»
Тип отчёта «Сертификаты пользователей»
Тип отчёта «Счета»
Тип отчёта «Счета (строки)»
Тип отчёта «Таймшиты»
Тип отчёта «Таймшиты детально»
Тип отчёта «Финансы»
Тип отчёта «Структура работ»
Тип отчёта «Центры затрат проектов»
Тип отчёта «Задания воркфлоу»
Тип отчета Клиенты
Тип отчета «Контакты»
Тип отчёта «Сделки»
Тип отчёта «История состояний сделок»
Тип отчёта «Взаимодействия»
Использование отчётов
Группировка данных источника
Группировка данных в отчёте
Типы виджетов
Общие отчёты и шаблоны
Настройка отчёта
Экспорт отчётов
Пользовательские настройки отчёта
Вычисляемые поля
Особые колонки отчётов с временными рядами
Использование панелей мониторинга
Публикация панелей
Фильтры источников данных
Настройка и администрирование
Типовой порядок настройки системы
Язык формул и выражений
On-premises
API
История изменений
Термины и определения

Обработчик событий сущностей

Обновлено: 18.08.2025

Основные сценарии применения обработчика:

  • исходящие интеграции (например, отправить проект в 1С);
  • работа с данными (предварительно заполнить свойства, выполнить проверки);
  • взаимодействие с пользователями (отправить уведомление, поставить задачу на выполнение).

Обработчик представляет собой класс на C# для каждого типа сущности. В системе он наследует абстрактный класс EntityTypeCustomHooks<TEntity>. Методы в нём объявлены как virtual с реализацией по умолчанию Task.CompletedTask. Переопределять нужно только те методы, логика которых требуется.

Хуки операций с сущностью (CRUD)

В обработчике доступны четыре переопределяемых метода (хука), которые вызываются при операциях с сущностью:

Хук Когда вызывается Параметры
BeforeUpsert До вставки или обновления сущности. Используется для базовых проверок. context, detachedEntity
AfterUpsert После вставки или обновления. Предназначен для бизнес-логики: предзаполнение свойств, исходящие интеграции. context, contextEntity, detachedEntity
BeforeDelete До удаления сущности. context, detachedEntity
AfterDelete После удаления сущности. context, contextEntity

Хуки жизненного цикла и воркфлоу

Помимо CRUD-хуков в обработчике доступны три метода, связанные со сменой состояния и запуском воркфлоу:

Хук Когда вызывается Параметры
BeforeSetState До смены состояния сущности в жизненном цикле context, entity, oldStateId, newStateId
AfterSetState После смены состояния context, entity, oldStateId, newStateId
BeforeStartWorkflow Перед запуском воркфлоу по сущности context, contextEntity

Эти методы можно переопределять так же, как и остальные хуки. По умолчанию у них пустая реализация.

Параметры методов

В методы передаются следующие параметры:

  • context — контекст обработчика (CustomHooksContext). Представляет собой SDK для ограниченной работы с приложением;
  • detachedEntity — сущность, переданная через API пользователем;
  • contextEntity — сущность, извлечённая из БД для обновления. При вставке идентична detachedEntity.

Доступ к обработчику

Примечание

Для доступа требуются права на гранулу Настройки менеджера объектов.

Чтобы изменить обработчик, выполните следующие шаги:

  1. Перейти в компоненту Менеджер сущностей.
  2. Найти нужную сущность.
  3. Открыть вкладку Обработчик.

Вкладка обработчика

В настройках генерируется класс с именем CustomHooks, который наследует EntityTypeCustomHooks<ИмяТипаСущности>.

Содержание

Хуки операций с сущностью (CRUD) Хуки жизненного цикла и воркфлоу Параметры методов Доступ к обработчику
Ничего не найдено

Перейти на русскую версию?