В ELMA365 вы можете массово добавлять элементы и обновлять их поля через скрипт, используя методы на языке TypeScript. Это позволяет снизить нагрузку на систему и уменьшить влияние установленных лимитов, когда нужно обработать большое количество данных. Например, если у вас настроена интеграция со сторонней системой, можно из неё загрузить каталог товаров в приложение.
Вы можете задать следующие методы в скриптах:
app.batch().save()
— массовое добавление элементов приложения;app.batch().update()
— массовое обновление полей элементов приложения.
начало внимание
Указанные методы доступны в поставке ELMA365 SaaS. В ближайших релизах они станут доступны и в поставке ELMA365 On-Premises.
конец внимание
Обратите внимание, за один запрос обрабатывается не более 10000 элементов. Это ограничение применяется ко всем указанным методам.
В статье рассмотрим на примерах, как использовать методы в скриптах.
Массовое добавление элементов
С помощью app.batch().save()
пакет элементов приложения обрабатывается за один запрос.
Используйте этот метод, чтобы:
- сохранить новые элементы в приложение;
- обновить поля существующих элементов. В этом случае укажите их идентификаторы, чтобы по ним найти нужные элементы, внести в них изменения и сохранить отредактированные элементы в базе данных.
Пример 1
Предположим, компания использует для работы систему ELMA365. Сотрудники маркетинга также применяют сторонний сервис, в котором хранятся публикации по продукту и комментарии от клиентов.
Чтобы работники смежных отделов могли увидеть все данные в одном месте, информацию из этого внешнего сервиса можно массово перенести в ELMA365. Для этого нужно:
- Создать приложения для загрузки публикаций и комментариев.
- Настроить интеграцию через пользовательский модуль и добавить в интерфейс модуля две кнопки со скриптами:
- Добавить посты — для массового переноса всех публикаций из стороннего сервиса в ELMA365;
- Добавить комментарии — для загрузки всех комментариев к этим публикациям.
Шаг 1: Создать два приложения
Для начала создайте приложения, чтобы импортировать в них данные. При этом добавляйте свойства приложений в соответствии с полями публикаций и комментариев в сторонней системе. Рассмотрим на примере:
- Посты — содержит свойства:
- Название (
__name
) — системное свойство, создаётся автоматически; - Номер (
postID
) — тип Число (целое) для идентификационного номера, по которому во внешней системе определяется связь между публикацией и комментариями к ней, т. е. значения этого поля равны в связанных элементах; - Заголовок (
title
) — тип Строка (строка) для заголовка публикации; - Текст (
body
) — тип Строка (текст) для текста публикации; - Комментарии (
comments
) — тип Приложение (один) для ссылки на связанный комментарий.
- Комментарии — содержит свойства:
- Название (
__name
) — системное свойство, создаётся автоматически; - Номер (
postID
) — тип Число (целое) для идентификационного номера, по которому во внешней системе определяется связь между публикацией и комментариями к ней, т. е. значения этого поля равны в связанных элементах; - Электронная почта пользователя (
email
) — тип Электронная почта для электронной почты пользователя, оставившего комментарий; - Сообщение (
body
) — тип Строка (текст) для текста комментария; - Посты (
post
) — тип Приложение (один) для ссылки на связанный пост.
С помощью этих свойств далее в скрипте определяются поля, в которые запишутся значения, переданные из внешнего сервиса. Подробнее про заполнение полей Комментарии и Посты типа Приложение (один) читайте в разделе «Пример 2».
Шаг 2: Настроить загрузку данных через скрипт
После создания приложений настройте импорт данных из сторонней системы.
Для этого:
- В настроенном модуле интеграции перейдите на вкладку Настройки и нажмите кнопку Изменить форму.
- В открывшемся дизайнере интерфейсов:
- создайте кнопки Добавить посты и Добавить комментарии;
- на вкладке Скрипты на стороне клиента пропишите код, используя
app.batch().save()
. Этот код позволит импортировать данные в приложения, когда пользователь нажмёт кнопку Добавить посты или Добавить комментарии.
/* Client scripts module */ |
- Сохраните и опубликуйте изменения.
После этого кнопки отобразятся в настройках модуля интеграции. Теперь пользователь может использовать их, чтобы добавить новые элементы в приложения Посты и Комментарии.
Массовое обновление полей элементов
Чтобы обновить множество полей элементов за один запрос, используйте в скрипте метод app.batch().update()
. При этом вы можете:
- указать правила такого обновления;
- определить критерии поиска элементов, которые нужно обновить;
- ограничить количество обновляемых элементов.
Пример 2
В примере 1 мы перенесли из сторонней системы данные в приложения Посты и Комментарии, используя в скрипте метод app.batch().save()
. При этом поля Посты в карточках комментариев и Комментарии в карточках публикаций пока остались пустыми, т. к. ссылки на связанные элементы не передаются из внешней системы, а создаются в ELMA365.
Чтобы сотрудники при работе в этих приложениях могли быстро находить нужную информацию, заполним эти пустые поля ссылками на связанные элементы.
Рассмотрим, как массово обновить поля, используя метод app.batch().update()
.
В сторонней системе связь между публикациями и комментариями определяется через поле Номер (postID
). Значение в нём одинаково в связанных элементах. Используем это свойство в скрипте, чтобы по нему найти нужные публикации и добавить ссылки в поле Посты на карточки комментариев.
Для этого:
- В настроенном модуле интеграции перейдите на вкладку Настройки и нажмите кнопку Изменить форму.
- В открывшемся дизайнере интерфейсов добавьте виджет Кнопка с названием Обновить поля.
- На вкладке Скрипты пропишите код, с помощью которого пользователь обновит связи между элементами приложений Посты и Комментарии. Если нажать кнопку Обновить поля, в карточках комментариев появятся ссылки в полях Пост.
// Асинхронная функция, чтобы обновить поле Посты в комментариях |
- Сохраните и опубликуйте изменения.
После этого кнопка Обновить поля отобразится в настройках модуля интеграции. Теперь пользователь может использовать её, чтобы обновить поле Посты в карточках комментариев.