Jexl дата последнего изменения Qj Question

Jexl дата последнего изменения Qj Question#

Используется для массовой обработки набора записей, найденных запросом или обработанных по пачкам.

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

Внимание

Требует адаптации под конкретную базу и версию системы. Перед запуском проверьте идентификаторы, SQL-запросы, API-классы и условия обработки.

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

var nvCount = sql(`select count(*) as "nCount" from qj_question qq where qq.dmodifydate is null`).asSingle().nCount;

var nvIter = nvCount / 1000 + 1;

for (i : (1 .. nvIter)){
	var ropList =  sql(`
        with t as (select distinct greatest(qq.dmodifydate_dz, qf.dmodifydate_dz, qa.dmodifydate_dz) as dd, qq.id
				   from qj_question qq
				   left join qj_questionfile qf on qf.idquestion = qq.id 
				   left join qj_answer qa on qa.idquestion = qq.id
				   where coalesce(qq.dmodifydate_dz, qf.dmodifydate_dz, qa.dmodifydate_dz) is not null and qq.dmodifydate is null
				   order by dd desc)
		select t.id, max(t.dd) date
		from t
		group by t.id
		limit 1000
		`);
		ropList.batchObjLoad(Qj_QuestionApi, "id");
		ropList.foreach(function (r){ 
		var rop = Qj_QuestionApi.load(r.id);		
		Qj_QuestionApi.setdModifyDate(rop, r.date)
		});
	commit();
}