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

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