Очистка Spaces Gds Lotos

Очистка Spaces Gds Lotos#

Используется для создания, обновления или нормализации справочных данных. Требует проверки исходных условий, идентификаторов и используемых справочников.

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

Внимание

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

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

sql(`
with changed as (
	select 
		gds.id as id
		,gds.sArticle as sArticle
		,regexp_replace(trim(gds.sArticle), '[\s]{2,}', ' ', 'g') as sArticleNew
		,gds.sDesignation as sDesignation
		,regexp_replace(trim(gds.sDesignation), '[\s]{2,}', ' ', 'g') as sDesignationNew
		,gds.sDesignationOld as sDesignationOld
		,regexp_replace(trim(gds.sDesignationOld), '[\s]{2,}', ' ', 'g') as sDesignationOldNew
		,gds.sName as sName
		,regexp_replace(trim(gds.sName), '[\s]{2,}', ' ', 'g') as sNameNew
	from Bs_Goods gds )
select 	
	ch.id as "id"
	,ch.sArticle as "sArticle"
	,ch.sArticleNew as "sArticleNew"
	,ch.sDesignation as "sDesignation"
	,ch.sDesignationNew as "sDesignationNew"
	,ch.sDesignationOld as "sDesignationOld"
	,ch.sDesignationOldNew as "sDesignationOldNew"
	,ch.sName as "sName"
	,ch.sNameNew as "sNameNew"
from changed ch
where (ch.sArticle != ch.sArticleNew 
		or ch.sDesignation != ch.sDesignationNew
		or ch.sDesignationOld != ch.sDesignationOldNew
		or ch.sName != ch.sNameNew)
 `).foreach(function(r){
@begin{
	var rop = Bs_GoodsApi.load(r.id);
	//правим код
	if(r.sArticle != r.sArticleNew){
		Bs_GoodsApi.setsArticle(rop, r.sArticleNew);
	}
	//правим Обозначение
	if(r.sDesignation != r.sDesignationNew){
		Bs_GoodsApi.setsDesignation(rop, r.sDesignationNew);
	}
	//правим Старое обозначение
	if(r.sDesignationOld != r.sDesignationOldNew){
		Bs_GoodsApi.setsDesignationOld(rop, r.sDesignationOldNew);
	}
	//правим наименование
	if(r.sName != r.sNameNew){
		Bs_GoodsApi.setsName(rop, r.sNameNew);
	}
	commit();
  }
@exception
function(exp){
	println("[JEXL Exception] " + exp.getCause());
}end;
}) ;