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

# Обновление 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();
    	};
    });