Миграция Curator

Миграция Curator#

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

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

Внимание

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

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

for (i : (1 .. 200)){
	var nvOffset = (i-1) * 500
	var select = sql(`
		select 
			ss.*
			,ost.idResponsibilityCenter as "idResponsibilityCenter"
		from (
			select 
				s.*
				,(
				select
					  distinct first_value(oe.idofstructure)over(order by ot.nparentlevel) as idOFS
				  from bs_ofsemployee oe
				  left join bs_ofstree ot on oe.idofstructure = ot.idparent
				  where oe.idemployee=s."idCuratorEmployeeNew"
				  ) as "idOFSNew" 
			from (
				select 
					c.id
					,(select distinct 
						last_value (e.id) over(order by e.demployment asc ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) as idEmployee
					from Bs_Employee e
					where e.dDismissal is null
					and e.idPerson = c.idCurator) as "idCuratorEmployeeNew"
				from Cnt_Contract c   
				where c.idcurator is not null 
				) s 
			) ss
		left join bs_ofstructure ost on ss."idOFSNew" = ost.id
		order by ss.id
		offset ` + nvOffset + " limit 500"
		);
	//прогружаем записи
	var ropavContract = select.batchObjLoad(Cnt_ContractApi, "id");
	select.foreach(function(r){
	  var rop = Cnt_ContractApi.load(r.id);
	  Cnt_ContractApi.dpi().setidCuratorEmployee(rop, r.idCuratorEmployeeNew);
	  Cnt_ContractApi.dpi().setidOFSResponsible(rop, r.idOFSNew);
	  Cnt_ContractApi.dpi().setidOFSOwner(rop, r.idOFSNew);
	  if(r.idResponsibilityCenter != null) {
		Cnt_ContractApi.dpi().setidResponsibilityCenter(rop, r.idResponsibilityCenter);
	  }
    }); 
	commit();
}