# Общие сведения

**Events** - система событий, позволяющая выполнить сторонний код или отправить запрос во внешний скрипт (посредством GET или POST запросов) в зависимости от происходящих в системе событий (например, Добавление нового клиента). Доступна только для коробочного варианта поставки.

Подключить свои обработчики на те или иные события можно с помощью файла "developer/events.php", поставлемого с открытым исходным кодом в коробочном варианте. Файл содержит перечень поддерживаемых событий, а также некоторые примеры использования.

Файл "events.php" содержит подробные комментарии, но ниже мы подробнее рассмотрим каждое событие и получаемые при этом параметры.

> ### Внимание
> 
> система Events дополнена системой [Webhook](webhook), которая позволяет подключаться к событиям без необходимости включений в код
> 

# Зарегистрированные события

## Для клиентов

<a id="client.import"></a>
### client.import

Получаемые аргументы:

* array **clids** - массив clid новых записей клиентов
* array **pids** - массив pid новых записей клонтактов
* integer **autor** - id сотрудника, выполнившего действие
* integer **user** - id ответственного сотрудника

<a id="client.expressadd"></a>
### client.expressadd

Событие, срабатывающее при добавлении Клиента/Контакта через Экспресс-форму, через обработчик лидов

Получаемые аргументы:

* integer **pid** - pid новой записи клонтакта
* integer **clid** - clid новой записи клиента
* nteger **autor** - id сотрудника, выполнившего действие
* integer **user** - id ответственного сотрудника

<a id="client.add"></a>
### client.add

Событие, срабатывающее при добавлении Клиента через обычную-форму, через обращения

Получаемые аргументы:

* integer **clid** - clid новой записи клиента
* integer **autor** - id сотрудника, выполнившего действие
* integer **user** - id ответственного сотрудника

<a id="client.edit"></a>
### client.edit

Событие, срабатывающее при изменении Клиента

Получаемые аргументы:

* integer **clid** - clid новой записи клиента
* integer **autor** - id сотрудника, выполнившего действие
* integer **user** - id ответственного сотрудника
* array **newparam** - массив измененных параметров

<a id="client.delete"></a>
### client.delete
Событие, срабатывающее при удалении Клиента

Получаемые аргументы:

* integer **clid** - clid новой записи клиента
* integer **autor** - id сотрудника, выполнившего действие
* integer **user** - id ответственного сотрудника

<a id="client.change.recv"></a>
### client.change.recv

Событие, срабатывающее при изменении реквизитов Клиента

Получаемые аргументы:

* integer **clid** - clid новой записи клиента
* integer **autor** - id сотрудника, выполнившего действие
* integer **user** - id ответственного сотрудника

<a id="client.change.user"></a>
### client.change.user

Событие, срабатывающее при изменении Ответственного за Клиента

Получаемые аргументы:

* integer **clid** - clid новой записи клиента
* integer **autor** - id сотрудника, выполнившего действие
* integer **user** - id ответственного сотрудника

## Для контактов

<a id="person.add"></a>
### person.add

Событие, срабатывающее при добавлении Контакта через обычную-форму, через обращения

Получаемые аргументы:

* string **pid** - pid новой записи клонтакта
* string **autor** - id сотрудника, выполнившего действие
* string **user** - id ответственного сотрудника

<a id="person.edit"></a>
### person.edit

Событие, срабатывающее при изменении Контакта

Получаемые аргументы:

* integer **pid** - pid записи контакта
* integer **autor** - id сотрудника, выполнившего действие
* integer **user** - id ответственного сотрудника

<a id="person.delete"></a>
### person.delete

Событие, срабатывающее при удалении Контакта

Получаемые аргументы:

* integer **pid** - pid записи контакта
* integer **autor** - id сотрудника, выполнившего действие
* integer **user** - id ответственного сотрудника

<a id="person.change.user"></a>
### person.change.user

Событие, срабатывающее при изменении Ответственного за Контакт

Получаемые аргументы:

* integer **pid** - pid записи контакта
* integer **autor** - id сотрудника, выполнившего действие
* integer **user** - id ответственного сотрудника

## Для сделок

<a id="deal.add"></a>
### deal.add

Событие, срабатывающее при добавлении новой сделки

Получаемые аргументы:

* integer **did** - did записи сделки
* integer **autor** - id сотрудника, выполнившего действие
* string **userUID** - UID ответственного сотрудника во внешней системе

<a id="deal.edit"></a>
### deal.edit

Событие, срабатывающее при изменении основной информации сделки

Получаемые аргументы:

* integer **did** - did записи сделки
* integer **autor** - id сотрудника, выполнившего действие
* array **newparam** - массив измененных параметров

<a id="deal.delete"></a>
### deal.delete

Событие, срабатывающее при удалении сделки

Получаемые аргументы:

* integer **did** - did записи сделки
* integer **autor** - id сотрудника, выполнившего действие

<a id="deal.change.user"></a>
### deal.change.user

Событие, срабатывающее при изменении ответственного за сделку

Получаемые аргументы:

* integer **did** - did записи сделки
* integer **autor** - id сотрудника, выполнившего действие
* integer **olduser** - id предыдущего сотрудника, ответственного за сделку
* integer **newuser** - id нового сотрудника, ответственного за сделку
* string **comment** - комментарий внесения изменений

<a id="deal.change.step"></a>
### deal.change.step

Событие, срабатывающее при изменении ответственного за сделку

Получаемые аргументы:

* integer **did** - did записи сделки
* integer **autor** - id сотрудника, выполнившего действие
* integer **stepOld** - название предыдущего этапа (например 10)
* integer **stepNew** - название нового этапа (например 20)

<a id="deal.close"></a>
### deal.close

Событие, срабатывающее при закрытии сделки

Получаемые аргументы:

* integer **did** - did записи сделки
* integer **autor** - id сотрудника, выполнившего действие
* string **summa** - сумма закрытия сделки (фактическая, например - 10340.00)
* string **status** - статус закрытия (например Победа)

<a id="invoice.add"></a>
### invoice.add

Событие, срабатывающее при добавлении нового счета

Получаемые аргументы:

* integer **did** - did записи сделки
* integer **autor** - id сотрудника, выполнившего действие
* string **user** - id ответственного сотрудника
* string **userUID** - UID ответственного сотрудника во внешней системе
* string **summa** - сумма счета (например - 10340.00) * string invoice - номер счета

<a id="invoice.edit"></a>
### invoice.edit

Событие, срабатывающее при внесении изменений в счет

Получаемые аргументы:

* integer **did** - did записи сделки
* integer **autor** - id сотрудника, выполнившего действие
* string **user** - id ответственного сотрудника
* string **userUID** - UID ответственного сотрудника во внешней системе
* string **summa** - сумма счета (например - 10340.00) * string invoice - номер счета

<a id="invoice.doit"></a>
### invoice.doit

Событие, срабатывающее при отметке счета оплаченным

Получаемые аргументы:

* integer **did** - did записи сделки
* integer **autor** - id сотрудника, выполнившего действие
* string **userUID** - UID ответственного сотрудника во внешней системе
* string **invoice** - номер счета
* string **summa** - сумма платежа (например - 10340.00), может быть частичной
* string **summaNew** - сумма созданного платежа (например - 10340.00), вычисляется как разница сумм по счету и суммы платежа

<a id="invoice.expressadd"></a>
### invoice.expressadd

Событие, срабатывающее при внесении платежа без выставления счета

Получаемые аргументы:

* integer **did** - did записи сделки
* integer **autor** - id сотрудника, выполнившего действие
* string **userUID** - UID ответственного сотрудника во внешней системе
* string **invoice** - номер счета
* string **summa** - сумма платежа (например - 10340.00), может быть частичной
* string **summaNew** - сумма созданного платежа (например - 10340.00), вычисляется как разница сумм по счету и суммы платежа

## Для напоминаний

<a id="task.add"></a>
### task.add

Событие, срабатывающее при добавлении напоминания

* integer **id** - id записи напоминания
* integer **autor** - id сотрудника, выполнившего действие

<a id="task.edit"></a>
### task.edit

Событие, срабатывающее при изменении напоминания

* integer **id** - id записи напоминания
* integer **autor** - id сотрудника, выполнившего действие

<a id="task.doit"></a>
### task.doit

Событие, срабатывающее при выполнении напоминания

* integer **id** - id записи напоминания
* integer **autor** - id сотрудника, выполнившего действие

## Для истории активностей

<a id="history.add"></a>
### history.add

Событие, срабатывающее при добавлении записи в Историю

* integer **id** - id записи напоминания
* integer **autor** - id сотрудника, выполнившего действие

<a id="history.edit"></a>
### history.edit

Событие, срабатывающее при изменении записи в Историю

* integer **id** - id записи
* integer **autor** - id сотрудника, выполнившего действие

<a id="history.doit"></a>
### history.doit

Событие, срабатывающее при выполнении напоминания

* integer **id** - id записи напоминания
* integer **autor** - id сотрудника, выполнившего действие

## Для заявок

<a id="lead.do"></a>
### lead.do

Событие, срабатывающее при обработке заявки

> ### Внимание
> 
> при обработке заявки другие события не вызываются

* integer **id** - id записи
* integer **autor** - id сотрудника, выполнившего действие
* integer **clid** - id записи клиента, если добавлен новый клиент
* integer **pid** - id записи контакта, если добавлен новый контакт
* integer **did** - id записи сделки, если добавлена

## Для обращений

<a id="entry.add"></a>
### entry.add

Событие, срабатывающее при добавлении обращения

* integer **id** - id записи обращения
* integer **clid** - id записи клиента
* integer **pid** - id записи контакта
* integer **did** - id записи сделки, если добавлена
* integer **autor** - id сотрудника, выполнившего действие

<a id="entry.status"></a>
### entry.status

Событие, срабатывающее при отмене обращения

* integer **id** - id обращения
* integer **autor** - id сотрудника, выполнившего действие
* integer **status** = 2 ['0' => 'Новое', '1' => 'Обработано', '2' => 'Отменено'];


>
> Доступно с версии 2019.3
> 

## Для Документов

<a id="contract.add"></a>
### contract.add

Событие, срабатывающее при добавлении Документа

* integer **id** - id записи Документа
* string **number** - номер Документа
* string **datum** - дата Документа
* integer **payer** - id записи Плательщика
* integer **clid** - id записи Заказчика
* integer **pid** - id записи контакта
* integer **did** - id записи сделки, если добавлена
* integer **autor** - id сотрудника, выполнившего действие

<a id="contract.edit"></a>
### contract.edit

Событие, срабатывающее при изменении Документа

* integer **id** - id записи Документа
* string **number** - номер Документа
* string **datum** - дата Документа
* integer **payer** - id записи Плательщика
* integer **clid** - id записи Заказчика
* integer **pid** - id записи контакта
* integer **did** - id записи сделки, если добавлена
* integer **autor** - id сотрудника, выполнившего действие

<a id="contract.delete"></a>
### contract.delete

Событие, срабатывающее при удалении Документа

* integer **id** - id записи Документа
* integer **did** - id записи сделки, если добавлена
* integer **autor** - id сотрудника, выполнившего действие


## Для Актов

<a id="akt.add"></a>
### akt.add

Событие, срабатывающее при добавлении Документа

* integer **id** - id записи Документа
* string **number** - номер Документа
* string **datum** - дата Документа
* integer **payer** - id записи Плательщика
* integer **clid** - id записи Заказчика
* integer **pid** - id записи контакта
* integer **did** - id записи сделки, если добавлена
* integer **autor** - id сотрудника, выполнившего действие

<a id="akt.edit"></a>
### akt.edit

Событие, срабатывающее при изменении Документа

* integer **id** - id записи Документа
* string **number** - номер Документа
* string **datum** - дата Документа
* integer **payer** - id записи Плательщика
* integer **clid** - id записи Заказчика
* integer **pid** - id записи контакта
* integer **did** - id записи сделки, если добавлена
* integer **autor** - id сотрудника, выполнившего действие

<a id="akt.delete"></a>
### akt.delete

Событие, срабатывающее при удалении Документа

* integer **id** - id записи Документа
* integer **did** - id записи сделки, если добавлена
* integer **autor** - id сотрудника, выполнившего действие