Обновление DVP By OS

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