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

# Обновление Sfi Struct

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

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

Внимание

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

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

    sql(`
    	select
    		pv.id as "id"
    	from bs_prj  p
    	join bs_prjver pv on pv.idproj = p.id
    	where sCDClassifier = 'SFI'
    	and exists (
    		select 1
    		from mct_document d
    		where d.idprjver = pv.id
    		and d.gidlastverinuse is not null
    		)
    	order by pv.id
    `).foreach(function(r){
    	var nvCount = sql(`
    		select count(*) as "nCount"
    		from mct_specification s
    		join mct_document d on s.gid = d.gidref
    		where s.idprjver = `+r.id+`
    		and d.gidlastverinuse is not null
    		`).asSingle().nCount;
    	var nvIter = nvCount / 200 + 1;
    	for (i : (1 .. nvIter)){
    		var nvOffset = (i-1) * 200
    		sql(`
    			select s.gid as "gid"
    			from mct_specification s
    			join mct_document d on s.gid = d.gidref
    			where s.idprjver = `+r.id+`
    			and d.gidlastverinuse is not null
    			order by s.id
    			`
    			+ "offset " + nvOffset + " limit 200").foreach(function(f){
    				flush();
    				Mct_StructureGenPkg.updateStructureByDoc(f.gid, Mct_StructViewTypeApi.idSFI());
    			});
    		commit();
    	}
    });