Документация 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" }
}