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