Массовое изменение
Назначение
Сервис обеспечивает пакетное обновление значений и атрибутов у набора объектов. Включает функцию массового обновления в списках и возможность пакетных операций над данными через API и скрипты .
Цели и задачи
- Менять значение одного или нескольких полей у выбранных документов из списка.
- Выполнять массовые операции без поштучного редактирования (смена статуса, ответственного, проекта и т.д.).
- Обеспечивать контроль прав и валидацию при массовом обновлении.
- Использовать массовое изменение в связке с фильтрами списка для целевого набора документов.
- Снижать трудозатраты на рутинные обновления.
Для кого
- Пользователи, регулярно обновляющие группы документов (задачи, обращения, проекты).
- Координаторы и руководители при массовой смене статусов или назначений.
- Администраторы при массовых корректировках данных (с соблюдением регламента).
Основные понятия
- Bulk Update — действие в списке: выбор записей, выбор поля и новое значение, применение ко всем выбранным.
- Пакетное обновление — обновление нескольких документов в одном запросе или цикле с валидацией; может быть реализовано через API или server script.
- Валидация — проверка прав и бизнес-правил для каждого документа при массовом обновлении; при ошибке по одному документу результат может быть частичным (успешные/неуспешные).
- В Dinext пакетные операции в коде: обход списка и обновление через doc.save() или Dinext.db.set_value с учетом прав.
Основные сущности / объекты
- Интерфейс Bulk Update в списках .
- database.py — низкоуровневые операции; предпочтительно использовать тип документа.save() с проверкой прав.
- API: массовое обновление через скрипт или вызов метода с массивом документов (при реализации в приложении).
Основные сценарии / процессов
Массовое обновление из списка (Bulk Update)
- Открыть список документов (например, Task, Issue); применить фильтры, чтобы оставить нужное подмножество.
- Отметить строки (checkbox) или выбрать «Все на странице» / «Все по фильтру» при поддержке.
- Выбрать действие «Bulk Update» или «Массовое обновление».
- В диалоге выбрать поле и новое значение (или несколько полей при поддержке).
- Подтвердить; система обновит выбранные документы. При ошибке по части документов отобразится отчет (успешно/ошибки).
- Проверить результат выборочно; при необходимости откатить вручную или повторить только для ошибочных.
Ограничения и валидация
- Массовое обновление выполняется в контексте текущего пользователя; права проверяются для каждого документа. Документы, на которые нет права Write, будут пропущены или вернут ошибку.
- Workflow и обязательные поля: при смене статуса через Bulk Update должны выполняться переходы workflow (если применимо); иначе обновляются только поля, не затрагивающие статус. Уточните поведение в вашей версии.
- Для критичных данных (финансы, статусы согласования) рекомендуется ограничить массовое обновление ролями или отключить для отдельных тип документа; проверьте настройки прав на действие Bulk Update.
Правила и ограничения
- Не все поля могут быть доступны для массового обновления (например, ссылочные поля со сложной валидацией); список полей зависит от реализации в интерфейсе.
- Большой объем выбранных документов может привести к таймауту; разбивайте на части (несколько сотен за раз) или выполняйте массовое обновление через фоновую задачу при реализации в приложении.
- Аудит: массовые изменения могут логироваться в Activity Log по каждому документу; для расследования используйте историю изменений и логи.
Результаты / отчетность
- Обновленные документы в списке с новыми значениями полей.
- Сообщение об успешном обновлении или список ошибок по документам.
- История изменений по каждому обновленному документу (Activity Log / Version при включенном версионировании).
Типовые вопросы и ошибки (FAQ)
Действие «Bulk Update» не отображается
Проверьте права на тип документа (нужно право Write); в некоторых версиях Bulk Update включается в настройках списка или роли. Убедитесь, что выбран хотя бы один документ.
Часть документов не обновилась
Возможные причины: нет права Write на часть документов (например, из-за User Permission); валидация или workflow не позволили изменить поле для части записей. Просмотрите сообщения об ошибках в диалоге результата и проверьте права/настройки по ошибочным документам.
Как массово обновить через API?
Написать скрипт: получить список name документов (фильтр по API или экспорт), в цикле для каждого вызвать GET документа, изменить поле, PUT обратно — с проверкой прав. Либо вызвать whitelisted-метод, принимающий список name и поле+значение и обновляющий документы на сервере (реализовать в приложении с учетом прав и валидации).