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