Изменение данных
Запуск процесса при изменении данных в Бипиуме: создании, изменении, удалении записей.
Подписка на событие
В отделе «Управление» в каталоге «События» добавьте новую запись (событие, по которому будет запускаться процесс).
Укажите название для быстрой идентификации. Например, кратко опишите задачу, которую выполняет процесс.
Выберите каталог, в котором хотите отслеживать изменение записей.
Выберите тип события для запуска сценария. Подробнее в статье «События».
В поле «Выполнить» выберите или создайте новый сценарий.

События
События делятся на уведомления, запросы и действия:
Уведомления (after) срабатывают после сохранения изменений в базу, то есть поле того, когда запись уже создана, изменена или удалена
Запросы (before) срабатывают перед тем как данные сохранены в базу, то есть непосредственно во время срабатывания события в данных в базе еще нет. Эти события могут отменить операцию сохранения/изменения/удаления записи.
Действия срабатывают во время редактирования записи сотрудником, еще до того как он отправил данные на сохранения. Эти события могут подменять значения полей в карточке на экране сотрудника без сохранения их в базу.
Уведомление о создании записи (after create)
Срабатывает ПОСЛЕ того как создана новая запись в каталоге, и эта операция сохранена в базу.
event: {
id: "1",
type: "$record.after.create",
async: true
},
script: {
id: "7"
},
user: {
id: "2"
},
catalogId: "15",
recordId: "1234",
values: {
"2": "Record Title", // текстовое поле
"14": 123 // числовое поле
}Общие параметры событий
event(объект) — параметры сработавшего события. Доступно с версии 1.5.2.id(строка) — идентификатор события в каталоге События.type(строка) — название типа события.async(булево) — признак запуска:true— асинхронно,false— синхронно.
script(объект) — параметры запущенного сценария. Доступно с версии 1.5.2.id(строка) — идентификатор сценария в каталоге Сценарии.
user(объект) — сотрудник, вызвавший событие.id(строка) — идентификатор сотрудника илиnull, если вызвал другой процесс (событие вызвано системой).
Дополнительные параметры события
catalogId(строка) — идентификатор каталога, в котором создана запись.recordId(строка) — идентификатор созданной записи.values(объект) — коллекция значений заполненных полей созданной записи. Ключи объекта — идентификаторы (ID) заполненных полей. Формат описан ниже.
События типа уведомлений (after) не ожидают ответа.
Уведомление об изменении записи (after update)
Срабатывает ПОСЛЕ того как запись в каталоге была изменена, и эта операция сохранена в базу.
event: {
id: "2",
type: "$record.after.update",
async: true
},
script: {
id: "7"
},
user: {
id: "2"
},
catalogId: "15",
recordId: "1234",
values: {
"2": "Title", // текстовое поле
"14": 4562, // поле число
"15": "2017-10-11T08:01:28:000Z1" // поле дата
},
prevValues: {
"2": "Record Title", // текстовое поле
"14": 123 // числовое поле
}Общие параметры событий
event(объект) — параметры сработавшего события. Доступно с версии 1.5.2.id(строка) — идентификатор события в каталоге Событий.type(строка) — название типа события.async(булево) — признак запуска:true— асинхронно,false— синхронно.
script(объект) — параметры запущенного сценария. Доступно с версии 1.5.2.id(строка) — идентификатор сценария в каталоге Сценарии.
user(объект) — сотрудник вызвавший событие.id(строка) — идентификатор сотрудника илиnull, если вызвал другой процесс (событие вызвано системой).
Дополнительные параметры события
catalogId(строка) — идентификатор каталога, в котором изменили запись.recordId(строка) — идентификатор измененной записи.values(объект) — коллекция значений измененных полей измененной записи. Ключи объекта — идентификаторы (ID) измененных полей. Формат описан ниже.prevValues(объект) — коллекция предыдущих значений всех полей записи. Формат аналогичен объектуvalues.
События типа уведомлений (after) не ожидают ответа.
Уведомление об удалении записи (after delete)
Срабатывает ПОСЛЕ того как запись в каталоге была удалена и эта операция сохранена в базу.
event: {
id: "3",
type: "$record.after.delete",
async: true
},
script: {
id: "7"
},
user: {
id: "2"
},
catalogId: "15",
recordId: "1234",
values: {
"2": "Title", // текстовое поле
"14": 4562, // поле число
"15": "2017-10-11T08:01:28:000Z1", // поле дата
"16": [ // поле связанный объект
{
"sectionId": "3",
"catalogId": "5",
"catalogTitle": "Клиенты",
"catalogIcon": "users-10",
"recordId": "33",
"recordTitle": "Место работы"
}
]
}Общие параметры событий
event(объект) — параметры сработавшего события. Доступно с версии 1.5.2.id(строка) — идентификатор события в каталоге Событий.type(строка) — название типа события.async(булево) — признак запуска:true— асинхронно,false— синхронно.
script(объект) — параметры запущенного сценария. Доступно с версии 1.5.2.id(строка) — идентификатор сценария в каталоге Сценарии.
user(объект) — сотрудник вызвавший событие.id(строка) — идентификатор сотрудника илиnull, если вызвал другой процесс.
Дополнительные параметры события
catalogId(строка) — идентификатор каталога, в котором удалили записьrecordId(строка) — идентификатор удаленной записиvalues(объект) — коллекция значений всех полей удаленной записи. Ключи объекта — идентификаторы (ID) всех полей. Формат описан ниже.
События типа уведомлений (after) не ожидают ответа.
Запрос на создание записи (before create)
Срабатывает ДО того как создана новая запись в каталоге, данные еще не сохранены в базу и могут быть отменены событием.
event: {
id: "4",
type: "$record.before.create",
async: false
},
script: {
id: "7"
},
user: {
id: "2"
},
catalogId: "15",
values: {
"2": "Record Title", // текстовое поле
"14": 123 // числовое поле
}Общие параметры событий
event(объект) — параметры сработавшего события. Доступно с версии 1.5.2.id(строка) — идентификатор события в каталоге Событий.type(строка) — название типа события.async(булево) — признак запуска:true— асинхронно,false— синхронно.
script(объект) — параметры запущенного сценария. Доступно с версии 1.5.2.id(строка) — идентификатор сценария в каталоге Сценарии.
user(объект) — сотрудник вызвавший событие.id(строка) — идентификатор сотрудника илиnull, если вызвал другой процесс (событие вызвано системой).
Дополнительные параметры события
catalogId(строка) — идентификатор каталога, в котором хотят создать записьvalues(объект) — коллекция значений заполненных полей созданной записи. Ключи объекта — идентификаторы (ID) заполненных полей. Формат описан ниже.
recordId отсутствует, так как запись в базе еще не создана и ей не присвоен ID.
Событие ожидает разрешения применить или заблокировать сохранение данных.
Чтобы вернуть значения как результат процесса, нужно создать переменные в сценарии с такими названиями до компонента «Конец процесса», например с помощью компонента «Назначение переменных».
$status = 400
$body = {
"message": "Не верно указано поле 2",
"values": {
"2": "Extra new Title", //Текстовое поле
"14": 999, //Поле число
}
}$status(число) — код http-ответа:200 — разрешить операцию
4xx (например, 400) — запретить операцию и выдать ошибку
$body(объект) — объект с дополнительными параметрами:message(строка) — сообщение для отображения сотруднику, в случае запрета.values (объект) — коллекция значений полей для подстановки в карточку. Ключи объекта — идентификаторы (ID) полей. Формат описан ниже.
Запрос на изменение записи (before update)
Срабатывает ДО того как изменения записи сохранены в базу, и могут быть отменены событием.
event: {
id: "5",
type: "$record.before.update",
async: false
},
script: {
id: "7"
},
user: {
id: "2"
},
catalogId: "15",
recordId: "1234",
values: {
"2": "Title", // текстовое поле
"14": 4562, // поле число
"15": "2017-10-11T08:01:28:000Z1" // поле дата
},
prevValues: {
"2": "Record Title", // текстовое поле
"14": 123 // числовое поле
}Общие параметры событий
event(объект) — параметры сработавшего события. Доступно с версии 1.5.2.id(строка) — идентификатор события в каталоге Событий.type(строка) — название типа события.async(булево) — признак запуска:true— асинхронно,false— синхронно.
script(объект) — параметры запущенного сценария. Доступно с версии 1.5.2.id(строка) — идентификатор сценария в каталоге Сценарии.
user(объект) — сотрудник вызвавший событие.id(строка) — идентификатор сотрудника илиnull, если вызвал другой процесс (событие вызвано системой).
Дополнительные параметры события
catalogId(строка) — идентификатор каталога, в котором изменили запись.recordId(строка) — идентификатор измененной записи.values(объект) — коллекция значений измененных полей измененной записи. Ключи объекта — идентификаторы (ID) измененных полей. Формат описан ниже.prevValues(объект) — коллекция предыдущих значений всех полей записи. Формат аналогичен объектуvalues.
Событие ожидает разрешения применить или заблокировать сохранение данных.
Чтобы вернуть значения как результат процесса, нужно создать переменные в сценарии с такими названиями до компонента «Конец процесса», например с помощью компонента «Назначение переменных».
$status = 400
$body = {
"message": "Не верно указано поле 2",
"values": {
"2": "Extra new Title", //Текстовое поле
"14": 999, //Поле число
}
}$status(число) — код http-ответа:200 — разрешить операцию
4xx (например, 400) — запретить операцию и выдать ошибку
$body(объект) — объект с дополнительными параметрами:message(строка) — сообщение для отображения сотруднику, в случае запрета.values (объект) — коллекция значений полей для подстановки в карточку. Ключи объекта — идентификаторы (ID) полей. Формат описан ниже.
Запрос на удаление записи (before delete)
Срабатывает ДО того как изменения записи сохранены в базу, и могут быть отменены событием.
event: {
id: "6",
type: "$record.before.delete",
async: false
},
script: {
id: "7"
},
user: {
id: "2"
},
catalogId: "15",
recordId: "1234",
values: {
"2": "Title", // текстовое поле
"14": 4562, // поле число
"15": "2017-10-11T08:01:28:000Z1", // поле дата
"16": [ // поле связанный объект
{
"sectionId": "3",
"catalogId": "5",
"catalogTitle": "Клиенты",
"catalogIcon": "users-10",
"recordId": "33",
"recordTitle": "Место работы"
}
]
}Общие параметры событий
event(объект) — параметры сработавшего события. Доступно с версии 1.5.2.id(строка) — идентификатор события в каталоге Событий.type(строка) — название типа события.async(булево) — признак запуска:true— асинхронно,false— синхронно.
script(объект) — параметры запущенного сценария. Доступно с версии 1.5.2.id(строка) — идентификатор сценария в каталоге Сценарии.
user(объект) — сотрудник вызвавший событие.id(строка) — идентификатор сотрудника илиnull, если вызвал другой процесс.
Дополнительные параметры события
catalogId(строка) — идентификатор каталога, в котором удалили записьrecordId(строка) — идентификатор удаленной записиvalues(объект) — коллекция значений всех полей удаленной записи. Ключи объекта — идентификаторы (ID) всех полей. Формат описан ниже.
Событие ожидает разрешения применить или заблокировать сохранение данных.
Чтобы вернуть значения как результат процесса, нужно создать переменные в сценарии с такими названиями до компонента «Конец процесса», например с помощью компонента «Назначение переменных».
$status = 400
$body = {
"message": "Не верно указано поле 2"
}$status(число) — код http-ответа:200 — разрешить операцию
4xx (например, 400) — запретить операцию и выдать ошибку
$body(объект) — объект с дополнительными параметрами:message(строка) — сообщение для отображения сотруднику, в случае запрета.
Изменено поле во время редактирования (updating)
Срабатывает ВО ВРЕМЯ того как сотрудник редактирует карточку записи. Изменения еще не отправлены на сервер и вообще могут быть не сохранены. Событие может вернуть новые данные полей, которые будут подставлены в карточку на экране сотрудника.
Событие поддерживается начиная с версии 1.5.2.
event: {
id: "7",
type: "$record.updating",
async: false
},
script: {
id: "7"
},
user: {
id: "2"
},
catalogId: "15",
recordId: "1234",
values: {
"2": "New title" // текстовое поле
}
allValues: {
"2": "Title", // текстовое поле
"14": 4562, // поле число
"15": "2017-10-11T08:01:28:000Z1", // поле дата
"16": [] // категории, набор галочек
}Общие параметры событий
event(объект) — параметры сработавшего события. Доступно с версии 1.5.2.id(строка) — идентификатор события в каталоге Событий.type(строка) — название типа события.async(булево) — признак запуска:true— асинхронно,false— синхронно.
script(объект) — параметры запущенного сценария. Доступно с версии 1.5.2.id(строка) — идентификатор сценария в каталоге Сценарии.
user(объект) — сотрудник вызвавший событие.id(строка) — идентификатор сотрудника илиnull, если вызвал другой процесс (событие вызвано системой).
Дополнительные параметры события
catalogId(строка) — идентификатор каталога, в котором редактируют записьrecordId(строка) — идентификатор редактируемой записи. Если сотрудник редактирует новую запись, то переменнаяrecordIdбудет не задана.values(объект) — коллекция значений измененных полей, вызвавших событие. Позволяет узнать какое именно поле менял сотрудник, изменяя запись. Ключи объекта — идентификаторы (ID) измененных полей. Формат описан ниже.allValues(объект) — коллекция значений всех полей редактируемой записи. Ключи объекта — идентификаторы (ID) всех полей. Формат аналогиченvalues.
recordId может отсутствовать для новых записей.
Событие возвращает значения, для подстановки в карточку записи на экране сотрудника.
Чтобы вернуть значения как результат процесса, нужно создать переменные в сценарии с такими названиями до компонента «Конец процесса», например с помощью компонента «Назначение переменных».
$body = {
"message": "Не верно указано поле 2",
"values": {
"2": "Extra new Title", // текстовое поле
"14": 999, // поле число
}
}$body(объект) — объект с дополнительными параметрами:message(строка) — сообщение для отображения сотруднику, в случае запрета.values(объект) — коллекция значений полей для подстановки в карточку. Ключи объекта — идентификаторы (ID) полей. Формат описан ниже.
Этот тип события не поддерживался в версиях Бипиума ранее 1.5.2. Реализовать поддержку события можно было используя механизм вебхуков.
Структура объекта values, allValues, prevValues
Все события во входных параметрах содержат объект values — значения всех полей созданной/измененной записи. Ключи объекта — идентификаторы полей. Формат значений для разных типов полей разный:
Однострочный текст =
"Однострочный текст"Многострочный текст =
"Многострочный текст"Дата =
"2015-11-06T21:00:00.000Z"Категория / набор галочек =
[2]или несколько значений[2,3,4], без значения[]Вопрос =
2Число =
3.2Прогресс =
28(допустимо от 0 до 100)Звезды =
5(допустимо от 0 до 5)Контакт = массив объектов:
[ {"contact": "8-901-234-56-78", comment: "Секретарь"}, {...} ]Связанная запись = массив объектов:
[ {catalogId: '11', recordId: '91', catalogTitle: 'Название каталога', recordTitle: 'Название записи', isRemoved: false}, {...} ]Сотрудник = массив объектов:
[ {id: '21', title: 'Имя', isRemoved: false}, {...} ]Файл = массив объектов:
[ {title: "имя", url: "http://путь", size: 45654, mimeType: "image/png"}, {...} ]гдеmimeType— допустимые значения
Last updated