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

Шаблон массовой обработки через 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();
});