Обновление Ver Expiry Date

Обновление Ver Expiry Date#

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

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

Внимание

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

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

var nvRowPerIter = 25
sql(`
	select 
		c.sname as "sName"
	from btk_classmixin cm 
	join btk_class c on cm.idbtkclass = c.id 
	where cm.ssystemname = 'Mct_DocumentVersion'
`).foreach(function(r){
	var svClass = r.sName;
	var api = Btk_ClassApi.getApiBySimpleClassName(svClass);
	var nvCount = sql(`
		select 
			count(*) as "nCount"
		from ` + svClass +` v 
		join mct_documentversion dv on v.gid = dv.gidref 
		join mct_documentversion dvn on (dvn.gidmctdocument = dv.gidmctdocument and dvn.nnumber = dv.nnumber + 1)
		where v.idstatemc = 300  
		and dvn.idstatemc = 300
		and dvn.daccept is not null 
		and dv.dexpirydate is null 
	`).asSingle().nCount;
	var nvIter = nvCount / nvRowPerIter + 1;
	for (i : (1 .. nvIter)){
		var select = sql(`
			select 
				v.id 
				,dv.gidRef as "gidRef"
				,dvn.daccept as "dExpiryDate"
				,dv.gidmctdocument
			from ` + svClass +` v 
			join mct_documentversion dv on v.gid = dv.gidref 
			join mct_documentversion dvn on (dvn.gidmctdocument = dv.gidmctdocument and dvn.nnumber = dv.nnumber + 1)
			where v.idstatemc = 300  
			and dvn.idstatemc = 300
			and dvn.daccept is not null 
			and dv.dexpirydate is null 
			order by v.id
			limit ` + nvRowPerIter.toString());
		select.batchObjLoad(api, "id");
		select.foreach(function(r){
			var rop = api .load(r.id);
			api .setdExpiryDate(rop, r.dExpiryDate);
		});
		commit();
	};
});