Перейти к основному содержанию
`Ctrl`+`K`

# Шаблон массовой обработки через ElExpOQuery

Используется как основа для написания производительных JEXL-скриптов, обрабатывающих тысячи записей. Демонстрирует использование объектного запроса `ElExpOQuery` для пакетной загрузки сущностей и обработки по чанкам.

Место применения: `Сервис > Инструменты > Выполнить JEXL-скрипт`

Внимание

Требует адаптации под конкретную сущность и версию системы. Перед использованием убедитесь, что целевой API и соответствующие Scala-объекты доступны в вашей версии платформы.

Тип: JEXL-скрипт

    const vDocApi = Co_ProdCostDocEntryApi;

    const mkDocOQuery = (idap) => {
      const vOQ = new ru.bitec.app.gtk.eclipse.query.ElExpOQuery(vDocApi);
      const idavAL = new java.util.ArrayList();
      idap.foreach(idv => idavAL.add(idv));

      vOQ.forWhere(vBuilder => vBuilder.get("id").in(idavAL.toArray()) );
      vOQ.batchIn(
        asScala([session.sbtClassLoader().loadClass("ru.bitec.app.co.prodcostdocentry.Co_ProdCostDocEntryDetAta$").MODULE$, ...])
      );
      return vOQ;
    };

    asScala(sql(`
      select t.id
        from Co_ProdCostDocEntry t
       where t.dDoc is not null
         and t.idStateMC >= 300
    `).asList()).grouped(400).foreach(ravBatch => {
      mkDocOQuery(ravBatch.map(r => r.id)).foreach(ropDoc => {
        Co_ProdCostRegFullApi.createItemsByDoc(ropDoc, ropDoc.dDoc);
      });
      commit();
    });