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

# Обновление WS Journal

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

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

Внимание

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

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

    var nvCount = sql(`
    	with states as (
    		select
    			cast(jsonb_array_elements(jWSJournalFillState) as bigint) as id
    		from mct_setting ms
    		)
    	,ws as (
    		select
    			ws.gid
    		from mct_workstructure ws
    		join states s on ws.idstate = s.id
    		join Mct_WrkStructSet wss on ws.idPostype = wss.idpostype
    		join  mct_workstructuregds wsg on wsg.gidSrc = ws.gid
    		where coalesce(ws.bImpExtSystem, 0) = 0
    		and wss.bFillMaterialJournal = 1
    		--and not exists (select 1 from mct_materiallistSrc mls where mls.gidsrc = wsg.gid)
    		group by ws.gid
    	)
    	select count(*) as "nCount" from ws
    	`).asSingle().nCount;
    var nvIter = nvCount / 100 + 1;
    for (i : (1 .. nvIter)){
    	var nvOffset = (i-1) * 100
    	var sel =  sql(`
    		with states as (
    			select
    				cast(jsonb_array_elements(jWSJournalFillState) as bigint) as id
    			from mct_setting ms
    			)
    			select
    				ws.id
    				,ws.gid
    			from mct_workstructure ws
    			join states s on ws.idstate = s.id
    			join Mct_WrkStructSet wss on ws.idPostype = wss.idpostype
    			join  mct_workstructuregds wsg on wsg.gidSrc = ws.gid
    			where coalesce(ws.bImpExtSystem, 0) = 0
    			and wss.bFillMaterialJournal = 1
    			group by ws.id
    			order by ws.id
    			`
    			+ "offset " + nvOffset + " limit 100")
    	sel.batchObjLoad(Mct_WorkStructureApi, "id");
    	sel.foreach(function(r){
    		Mct_JournalPkg.fillByWorkStructure(r.gid, true);
    	});
    	commit();
    }