Изменение данных
Запуск процесса при изменении данных в Бипиуме: создании, изменении, удалении записей.
Last updated
Запуск процесса при изменении данных в Бипиуме: создании, изменении, удалении записей.
Last updated
В отделе «Управление» в каталоге «События» добавьте новую запись (событие, по которому будет запускаться процесс).
Укажите название для быстрой идентификации. Например, кратко опишите задачу, которую выполняет процесс.
Выберите каталог, в котором хотите отслеживать изменение записей.
Выберите тип события для запуска сценария. Подробнее в статье «События».
В поле «Выполнить» выберите или создайте новый сценарий.
События делятся на уведомления, запросы и действия:
Уведомления (after) срабатывают после сохранения изменений в базу, то есть поле того, когда запись уже создана, изменена или удалена
Запросы (before) срабатывают перед тем как данные сохранены в базу, то есть непосредственно во время срабатывания события в данных в базе еще нет. Эти события могут отменить операцию сохранения/изменения/удаления записи.
Действия срабатывают во время редактирования записи сотрудником, еще до того как он отправил данные на сохранения. Эти события могут подменять значения полей в карточке на экране сотрудника без сохранения их в базу.
Срабатывает ПОСЛЕ того как создана новая запись в каталоге, и эта операция сохранена в базу.
Общие параметры событий
event
(объект) — параметры сработавшего события. Доступно с версии 1.5.2.
id
(строка) — идентификатор события в каталоге События.
type
(строка) — название типа события.
async
(булево) — признак запуска: true
— асинхронно, false
— синхронно.
script
(объект) — параметры запущенного сценария. Доступно с версии 1.5.2.
id
(строка) — идентификатор сценария в каталоге Сценарии.
user
(объект) — сотрудник, вызвавший событие.
id
(строка) — идентификатор сотрудника или null
, если вызвал другой процесс (событие вызвано системой).
Дополнительные параметры события
catalogId
(строка) — идентификатор каталога, в котором создана запись.
recordId
(строка) — идентификатор созданной записи.
values
(объект) — коллекция значений заполненных полей созданной записи.
Ключи объекта — идентификаторы (ID) заполненных полей. Формат описан ниже.
Срабатывает ПОСЛЕ того как запись в каталоге была изменена, и эта операция сохранена в базу.
Общие параметры событий
event
(объект) — параметры сработавшего события. Доступно с версии 1.5.2.
id
(строка) — идентификатор события в каталоге Событий.
type
(строка) — название типа события.
async
(булево) — признак запуска: true
— асинхронно, false
— синхронно.
script
(объект) — параметры запущенного сценария. Доступно с версии 1.5.2.
id
(строка) — идентификатор сценария в каталоге Сценарии.
user
(объект) — сотрудник вызвавший событие.
id
(строка) — идентификатор сотрудника или null
, если вызвал другой процесс (событие вызвано системой).
Дополнительные параметры события
catalogId
(строка) — идентификатор каталога, в котором изменили запись.
recordId
(строка) — идентификатор измененной записи.
values
(объект) — коллекция значений измененных полей измененной записи.
Ключи объекта — идентификаторы (ID) измененных полей. Формат описан ниже.
prevValues
(объект) — коллекция предыдущих значений всех полей записи.
Формат аналогичен объекту values
.
Срабатывает ПОСЛЕ того как запись в каталоге была удалена и эта операция сохранена в базу.
Общие параметры событий
event
(объект) — параметры сработавшего события. Доступно с версии 1.5.2.
id
(строка) — идентификатор события в каталоге Событий.
type
(строка) — название типа события.
async
(булево) — признак запуска: true
— асинхронно, false
— синхронно.
script
(объект) — параметры запущенного сценария. Доступно с версии 1.5.2.
id
(строка) — идентификатор сценария в каталоге Сценарии.
user
(объект) — сотрудник вызвавший событие.
id
(строка) — идентификатор сотрудника или null
, если вызвал другой процесс.
Дополнительные параметры события
catalogId
(строка) — идентификатор каталога, в котором удалили запись
recordId
(строка) — идентификатор удаленной записи
values
(объект) — коллекция значений всех полей удаленной записи.
Ключи объекта — идентификаторы (ID) всех полей. Формат описан ниже.
Срабатывает ДО того как создана новая запись в каталоге, данные еще не сохранены в базу и могут быть отменены событием.
Общие параметры событий
event
(объект) — параметры сработавшего события. Доступно с версии 1.5.2.
id
(строка) — идентификатор события в каталоге Событий.
type
(строка) — название типа события.
async
(булево) — признак запуска: true
— асинхронно, false
— синхронно.
script
(объект) — параметры запущенного сценария. Доступно с версии 1.5.2.
id
(строка) — идентификатор сценария в каталоге Сценарии.
user
(объект) — сотрудник вызвавший событие.
id
(строка) — идентификатор сотрудника или null
, если вызвал другой процесс (событие вызвано системой).
Дополнительные параметры события
catalogId
(строка) — идентификатор каталога, в котором хотят создать запись
values
(объект) — коллекция значений заполненных полей созданной записи.
Ключи объекта — идентификаторы (ID) заполненных полей. Формат описан ниже.
recordId
отсутствует, так как запись в базе еще не создана и ей не присвоен ID.
Как проверить задан ли recordId?
Если вы используете один и тот же сценарий на изменение записи и на создание, то вероятно захотите узнать, задан ли recordId
или нет. Если вы проверите наличие выражением ! recordId
, то процесс завершится с ошибкой, когда параметр не задан. Так происходит так как переменная не определена.
Проверить наличие входного параметра можно с помощью шлюза «или».
Для этого на выходящую из шлюза ветку, которая соответствует отсутствию параметра recordId
, нужно задать условиеtypeof recordId === 'undefined'
.
А на вторую ветку, которая соответствует ситуации, когда параметр recordId
задан: typeof recordId !== 'undefined'
.
Срабатывает ДО того как изменения записи сохранены в базу, и могут быть отменены событием.
Общие параметры событий
event
(объект) — параметры сработавшего события. Доступно с версии 1.5.2.
id
(строка) — идентификатор события в каталоге Событий.
type
(строка) — название типа события.
async
(булево) — признак запуска: true
— асинхронно, false
— синхронно.
script
(объект) — параметры запущенного сценария. Доступно с версии 1.5.2.
id
(строка) — идентификатор сценария в каталоге Сценарии.
user
(объект) — сотрудник вызвавший событие.
id
(строка) — идентификатор сотрудника или null
, если вызвал другой процесс (событие вызвано системой).
Дополнительные параметры события
catalogId
(строка) — идентификатор каталога, в котором изменили запись.
recordId
(строка) — идентификатор измененной записи.
values
(объект) — коллекция значений измененных полей измененной записи.
Ключи объекта — идентификаторы (ID) измененных полей. Формат описан ниже.
prevValues
(объект) — коллекция предыдущих значений всех полей записи.
Формат аналогичен объекту values
.
Срабатывает ДО того как изменения записи сохранены в базу, и могут быть отменены событием.
Общие параметры событий
event
(объект) — параметры сработавшего события. Доступно с версии 1.5.2.
id
(строка) — идентификатор события в каталоге Событий.
type
(строка) — название типа события.
async
(булево) — признак запуска: true
— асинхронно, false
— синхронно.
script
(объект) — параметры запущенного сценария. Доступно с версии 1.5.2.
id
(строка) — идентификатор сценария в каталоге Сценарии.
user
(объект) — сотрудник вызвавший событие.
id
(строка) — идентификатор сотрудника или null
, если вызвал другой процесс.
Дополнительные параметры события
catalogId
(строка) — идентификатор каталога, в котором удалили запись
recordId
(строка) — идентификатор удаленной записи
values
(объект) — коллекция значений всех полей удаленной записи.
Ключи объекта — идентификаторы (ID) всех полей. Формат описан ниже.
Срабатывает ВО ВРЕМЯ того как сотрудник редактирует карточку записи. Изменения еще не отправлены на сервер и вообще могут быть не сохранены. Событие может вернуть новые данные полей, которые будут подставлены в карточку на экране сотрудника.
Событие поддерживается начиная с версии 1.5.2.
Общие параметры событий
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
может отсутствовать для новых записей.
Как проверить задан ли recordId?
Если вы проверите наличие recordId
выражением ! recordId
, то процесс завершится с ошибкой, когда параметр не задан. Так происходит так как переменная не определена.
Проверить наличие входного параметра можно с помощью шлюза «или».
Для этого на выходящую из шлюза ветку, которая соответствует отсутствию параметра recordId
, нужно задать условиеtypeof recordId === 'undefined'
.
А на вторую ветку, которая соответствует ситуации, когда параметр recordId
задан: typeof recordId !== 'undefined'
.
Все события во входных параметрах содержат объект 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
— допустимые значения
Как получить значение измененного поля?
Чтобы получить значение, например, 4-го поля в измененных данных, используйте компонент назначение переменных и укажите выражение values['4']
. Если 4-е поле было изменено, вы получите его значение, если нет, то переменная будет пуста.
Как получить значение сложного поля?
Для сложных типов полей (значения которых представлены массивом, например: категория, связанный объект, контакт, сотрудник, файл) значение переменной будет равно массиву. Чтобы узнать сколько значений в массиве используйте выражение values['4'].length
, а чтобы получить значение, например, 0-го элемента массива: values['4'][0]
, чтобы обратится к его свойству, например recordId у поля типа связанный объект: values['4'][0].recordId
.
Однако, если вы обратитесь к параметру (например recordId) к элементу массива, которого нет (например, когда поле не было изменено, и в values нет ключа с идентификатором поля), то сценарий прервется с ошибкой. Поэтому, прежде чем получить свойство у объекта в массиве, нужно сначала проверить что массив не пустой. А прежде чем проверить, что он не пустой, нужно проверить что он существует (поле было изменено и в values есть ключ с этим идентификатором). Это можно сделать с помощью компонентов ветвления сценария (шлюзов) и проверки условий на исходящих соединительных линиях, или с помощью выражения: values['4'] && values['4'].length && values['4'][0].recordId
.
Это выражение проверяет наличие изменения в 4-м поле, и если оно есть, то проверяет что в 4-м поле в массиве есть они элементы, и если есть хотя бы одно, то берется значение свойства recordId в 0-м элементе. Именно это значение будет присвоено переменной. Если что-то не выполняется, то переменной будет присвоено false.