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

# Миграция 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();
    }