Удаление неиспользуемых спецификаций единиц продукции

Удаление неиспользуемых спецификаций единиц продукции#

Удаляет спецификации, связанные с ТМЦ по заданным условиям, если они не используются в списках единиц продукции. Перед удалением последняя версия переводится в редактируемое состояние и удаляется из структуры.

Место применения: Сервис > Инструменты > Выполнить JEXL-скрипт

Внимание

Скрипт привязан к объектам конкретного модуля и требует проверки на целевой базе. Перед запуском проверьте идентификаторы, SQL-запросы, API-классы и условия обработки.

Тип: JEXL-скрипт

var nvCount = 400
var nvIter = nvCount / 10 + 1;
for (i : (1 .. nvIter)){
	var ropList =  sql(`
		select distinct
			s.id  
		from bs_goods g 
		join bs_goodssrc gs on g.id = gs.idgds 
		join mct_specification s on gs.gidsrc = s.gid 
		left join mct_unitprodsheetlist ul on s.id = ul.idspecification 
		where (upper(g.sdesignation) like 'ТЛИШ.745311.001%'
		or upper(g.sdesignation) like 'ТЛИШ.745311.001%'
		or upper(g.sdesignation) like 'ТЛИШ.363621.069%'
		or upper(g.sdesignation) like 'ТЛИШ.363621.058-%'
		or upper(g.sdesignation) like 'ВПИЕ.632721.012%'
		or upper(g.sdesignation) like 'ИЕАШ.632731.018%'
		or upper(g.sdesignation) like 'ТЛИШ.363611.059%'
		or upper(g.sdesignation) like 'НИМБ.324219.210%'
		or upper(g.sdesignation) like '22350.363212.009%')
		and ul.id is null 
		order by s.id
		limit 10
		`).batchObjLoad(Mct_SpecificationApi, "id");
		for (rop : ropList){
			//@begin{
				var gidvLastVer = Mct_SpecificationApi.getGidLastVer(rop.idJ())
				var idvLastVer = parseId(gidvLastVer);
				var ropLastVer = Mct_SpecificationVerApi.load(idvLastVer);
				Mct_SpecificationVerApi.setidState(ropLastVer, Mct_SpecificationVerApi.idEditState());
				Mct_StructureGenPkg.deleteFromStructure(gidvLastVer);
				flush();
				Mct_SpecificationApi.delete(rop);
			//	commit();
			//}
			//@exception
			// function(exp){
			//	println('there was an exception');
			//	rollback();
			//	}end;
			}
			commit();
}