Документация 0.4 Справочник действий
Добавить записи в отчёт
orch.reportAddMany · Оркестратор
Записывает в отчёт оркестратора список строк (до 5000 за раз) одним вызовом. Всё или ничего: при ошибке в любой строке не записывается ни одна, в тексте ошибки — номера строк и поля
Записывает в отчёт оркестратора сразу список строк — до 5000 за один вызов. Всё или ничего: если хотя бы одна строка не подходит к полям отчёта, не записывается ни одна, а текст ошибки называет номера строк и поля.
Действие работает в задании оркестратора и при запуске из студии, подключённой к оркестратору: тогда оно обращается к „области для отладки“, выбранной в «Оркестратор» → «Подключение…», и работает с настоящими данными этой области.
Свойства #
| Свойство | Имя в файле | Значение | Обязательное | По умолчанию | Описание |
|---|---|---|---|---|---|
| Отчёт | report |
текст | да | — | Ключ отчёта в оркестраторе (латиница), например payments — указан на странице отчёта в панели |
| Записи | records |
выражение | да | — | Список объектов «ключ поля: значение», например rows.map(r => ({ number: r['Номер'], amount: r['Сумма'] })) |
| Режим | mode |
выбор из списка | нет | insert |
insert — новая запись; upsert — по ключу записи отчёта: если такая запись уже есть, она обновляется, иначе добавляется. Значения: insert, upsert. |
Результат #
Значение выхода сохраняется в переменную, выбранную для него в свойствах шага (раздел выходов).
| Выход | Имя в файле |
|---|---|
| Добавлено | inserted |
| Обновлено | updated |
| Id записей | ids |
Как работает #
- Отчёт (
report) — ключ отчёта латиницей (payments), его показывает страница отчёта в панели («Отчёты»). Отчёт ищется в рабочей области задания. - Записи (
records) — выражение-список объектов „ключ поля: значение“:rows.map(r => ({ number: r['Номер'], amount: r['Сумма'] })). Пустой список — ничего не записывается. - Режим (
mode):insertилиupsert— как уorch.reportAdd. - Выходы: Добавлено и Обновлено — сколько записей, Id записей — список идентификаторов по порядку.
- Больше 5000 строк — записывайте частями в цикле:
rows.slice(i * 5000, (i + 1) * 5000).
Ошибки #
| Код | Причина и что делать |
|---|---|
InvalidArgument |
Записи — не список; элемент списка — не объект (сообщение называет номер); больше 5000 записей |
ReportNotFound |
Нет отчёта с таким ключом в области — проверьте ключ на странице отчёта |
ReportValidation |
Значения не подходят к полям отчёта: нет такого поля, не число в числовом поле, неверная дата, не заполнено обязательное поле. Это бизнес-ошибка — задание с ней не повторяется автоматически. Текст называет поле и значение |
ReportsUnavailable |
База отчётов недоступна — системная ошибка, задание можно повторить |
OrchestratorUnavailable |
Процесс запущен без оркестратора (студия не подключена) или нет связи с сервером после 4 попыток (паузы 1, 2 и 4 с). Проверьте подключение студии или что агент робота на связи |
AccessDenied |
Не хватает прав в рабочей области или задание уже завершено |
Пример #
{
"type": "orch.reportAddMany",
"props": { "report": "payments", "records": "payments", "mode": "upsert" },
"out": { "inserted": "added", "updated": "updated" }
}