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

# Обновление 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();
    };