Обновление DVP By OS#
Локальный скрипт модуля MCT. Используется для служебной настройки, миграции, очистки или восстановления данных, связанных с объектами модуля.
Место применения: Сервис > Инструменты > Выполнить JEXL-скрипт
Внимание
Скрипт привязан к объектам конкретного модуля и требует проверки на целевой базе. Перед запуском проверьте идентификаторы, SQL-запросы, API-классы и условия обработки.
Тип: JEXL-скрипт
var idvOS = null;
if (idvOS != null) {
var gidvDoc = Mct_OrderSheetApi.getGid(idvOS);
var idvEskd = Mct_EskdApi.findByMnemoCode("NotInESKD");
//проставляем в документ группу ескд "NotInEskd"
tsql("update Mct_Document set idEskd = " + idvEskd + " where gidRef = '" + gidvDoc + "' ").execute();
var gidvDocVer = Mct_OrderSheetApi.getGidLastVer(idvOS);
//генерим записи в Mct_DocumentVerPos по последней версии
tsql(`with ver as (
select '` + gidvDocVer + `' as gid
)
,d as (
select
(select gid from ver) as gidVer
,getGidId((select gid from ver)) as idVer
,(select id from Btk_Class where sName = 'Mct_OrderSheetVerDet') as idOSVDClass
,(select id from Btk_Class where sName = 'Mct_DocumentVerPos') as idDVPClass
)
, ins as (
select
osvd.*
from MCt_OrderSheetVerDet osvd
left join Mct_DocumentVerPos as dvp on osvd.gid = dvp.gidRef
where osvd.idordersheetver = (select idVer from d)
and dvp.gidRef is null
)
insert into Mct_DocumentVerPos(
gidRef
,idClass
,gidMctDocumentVer
,gidParent
,idPosType
,sPosition
,sDesignation
,sCaption
,nQtyTotal
,nQty
,nNormPerUnit
,nUseCoef
,nMass
,idMsr
,idMsrNorm
,idGoods
,sNote
,nMassFull
,sLocatedPlace
,dcreatedate_dz
)
select
i.gid
,(select idDVPClass from d)
,(select gidVer from d)
,(select idOSVDClass from d)||'/'||i.idParent
,i.idPosType
,i.sPosition
,i.sDesignation
,i.sMatCaption
,i.nQty
,i.nNetQty
,i.nQty / nullif(i.nNetQty, 0)
,i.nUseCoef
,i.nMass
,i.idMsrQty
,i.idMsrQty
,i.idGoods
,i.sNote
,i.nMassFull
,i.sLocatedPlace
,now()
from ins i`).execute();
//генерим КС
Mct_StructureGenPkg.checkExistanceInStruct(gidvDocVer);
Mct_StructureGenPkg.structGenFromDoc(gidvDocVer);
commit();
};