- Главная [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
- Начало работы
- Работа с типами
- Глобальный контекст и изоляция
- Работа с приложениями
- Массовые действия с элементами приложения
- Работа с внешними сервисами
- Скрипты в виджетах
- Веб компоненты
- Права доступа
- Начало работы с процессами
- Начало работы с подписями
- Начало работы с предпросмотром файлов
- Начало работы с организационной структурой
- Начало работы с пользователями и группами
- Начало работы с типом данных Таблица
- Как решить вашу задачу
- Как сделать пользовательское отображение элементов приложений
- Как сделать динамическое отображение полей/виджетов со сложным условием
- Как регистрировать документ
- Как рассчитывать интервал между датами
- Как создать замещение пользователя
- Как использовать пагинацию и сортировку при поиске элементов приложения
- API
- Типы объектов
- Типы данных
- Глобальные константы
- Работа с приложениями
- Веб-запросы
- Права доступа
- Документооборот
- Линии
- Виджет «Код»
- Подписи
- Рабочие календари
- Интеграция с IP-телефонией
- Интеграция с сервисами рассылок
В этой статье
Массовые действия с элементами приложения
Когда нужно обработать большое количество элементов приложения за один запрос, вы можете написать скрипт, используя методы массового добавления элементов или обновления их полей:
Application.batch().save()
— массовое добавление элементов приложения;Application.batch().update()
— массовое обновление полей элементов приложения.Обратите внимание, за один запрос обрабатывается не более 10000 элементов. Это ограничение применяется ко всем указанным методам.
Массовое добавление элементов
Используя
Application.batch().save()
, вы можете за один запрос:При перечислении создаваемых элементов вы можете использовать в методе:
await Application.batch().save().items(orders).all(); // Тут `orders` — это массив элементов приложения, в которые внесены изменения
Подробнее об использованииawait Application.batch().save().items((function*(){ // Задаём пакетное сохранение элементов и получаем в метод items элементы, создаваемые функцией-генератором for (var i = 0; i < 500; i++) { // Выполняем цикл 500 раз, чтобы создать 500 элементов var item = Application.create(); // Каждый раз создаём элемент yield item // Возвращаем созданный элемент из генератора } })()).all(); // Сохраняем все элементы
Application.batch().save()
читайте также в статьях:Массовое обновление полей элементов
С помощью метода
Application.batch().update()
обновляется множество полей за один запрос. При этом вы можете:При написании скрипта с
Application.batch().update()
вы можете определить критерии для обновляемых элементов, используя методset()
, в котором:заполнить определённым значением. При этом для поля типа Число можно указать только число, для поля типа Строка – текст и т. д.;
Application.batch().update().set('numberField', (f, op) => 1); // OK. Константа соответствует типу поля `numberField` – Число Application.batch().update().set('numberField', (f, op) => ''); // Ошибка. Строковая константа не соответствует типу поля Число
заполнить значением другого поля того же типа;
Application.batch().update().set('numberField1', (f, op) => f.numberField2); // OK. Типы полей приложения `numberField1` и `numberField2` — числа Application.batch().update().set('numberField1', (f, op) => f.strField); // Ошибка. Строковое поле `strField` не может быть приравнено к числовому полю `numberField1`
выполнить действие над значением в поле:
увеличить поле типа Число на заданное значение;
Application.batch().update().set('numberField', (f, op) => op.inc(f.numberField, 1)); // Увеличение значение поля `numberField` на 1
объединить два или более поля типа Строка;
Application.batch().update().set('strLocation', (f, op) => op.concat(f.strCountry, ',', f.strCity)); // Поле `strLocation` обновится как '{strCountry}, {strCity}', т. е. в нём будет записано два значения через запятую: страна, город
Application.batch().update().set('users', (f, op) => op.remove(user)); // Удалили пользователя
Application.batch().update().set('users', (f, op) => op.push(user, user1)); // Добавляем в конец массива двух пользователей. При этом тип полей `user`, `user1` должен быть того же типа, что и одиночный элемент поля `users`
При использовании метода
Application.batch().update()
обратите внимание на следующие особенности:set()
независимы и не влияют друг на друга. Поэтому порядок их расположения не имеет значения.Пример:
var rows1 = await Application.batch() .update() .set('number', _ => 100) .set('another_number', f => t.number) .all(); var rows2 = await Application.batch() .update() .set('another_number', f => t.number) .set('number', _ => 100) .all(); // В обоих случаях `number` = 100, а `another_number` = значение поля `number` до обновления
Подробнее об использовании
Application.batch().update()
читайте также в статьях: