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

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