Обновление Ver Expiry Date#
Локальный скрипт модуля MCT. Используется для служебной настройки, миграции, очистки или восстановления данных, связанных с объектами модуля.
Место применения: Сервис > Инструменты > Выполнить JEXL-скрипт
Внимание
Скрипт привязан к объектам конкретного модуля и требует проверки на целевой базе. Перед запуском проверьте идентификаторы, SQL-запросы, API-классы и условия обработки.
Тип: JEXL-скрипт
var nvRowPerIter = 25
sql(`
select
c.sname as "sName"
from btk_classmixin cm
join btk_class c on cm.idbtkclass = c.id
where cm.ssystemname = 'Mct_DocumentVersion'
`).foreach(function(r){
var svClass = r.sName;
var api = Btk_ClassApi.getApiBySimpleClassName(svClass);
var nvCount = sql(`
select
count(*) as "nCount"
from ` + svClass +` v
join mct_documentversion dv on v.gid = dv.gidref
join mct_documentversion dvn on (dvn.gidmctdocument = dv.gidmctdocument and dvn.nnumber = dv.nnumber + 1)
where v.idstatemc = 300
and dvn.idstatemc = 300
and dvn.daccept is not null
and dv.dexpirydate is null
`).asSingle().nCount;
var nvIter = nvCount / nvRowPerIter + 1;
for (i : (1 .. nvIter)){
var select = sql(`
select
v.id
,dv.gidRef as "gidRef"
,dvn.daccept as "dExpiryDate"
,dv.gidmctdocument
from ` + svClass +` v
join mct_documentversion dv on v.gid = dv.gidref
join mct_documentversion dvn on (dvn.gidmctdocument = dv.gidmctdocument and dvn.nnumber = dv.nnumber + 1)
where v.idstatemc = 300
and dvn.idstatemc = 300
and dvn.daccept is not null
and dv.dexpirydate is null
order by v.id
limit ` + nvRowPerIter.toString());
select.batchObjLoad(api, "id");
select.foreach(function(r){
var rop = api .load(r.id);
api .setdExpiryDate(rop, r.dExpiryDate);
});
commit();
};
});