Интеграции#
Описание раздела#
Скрипты, связанные с интеграционными сценариями, определением параметров обмена и выбором логики обработки данных при интеграции.
Скрипты#
Определение вида сценария Jexl#
Определяет сценарий интеграции — значение XML-тега схемы — в зависимости от подкласса документа, например хозяйственной операции или бухгалтерской справки, и класса документа-источника.
Скрипт показывает пример определения сценария по нескольким условиям.
Полезен как пример структурирования JEXL-скрипта на логические блоки и использования функций.
Место применения: Сервис > Инструменты > Выполнить JEXL-скрипт
или в теле другого JEXL-скрипта
Тип: JEXL-скрипт
//Определение вида сценария интеграции
// Входящие параметры: id объекта интеграции
// Блок переменных
var svDocSubClass = null; // Подкласс хозяйственной операции
var svDocObjType = null; // Тип объекта хозяйственной операции
var svSrcDocClass = null; // Класс документа-источника хозяйственной операции
var svSrcDocSubClass = null; // Подкласс документа-источника хозяйственной операции
var svSrcDocObjType = null; // Тип объекта документа-источника хозяйственной операции
var svScenario = null; // Сценарии бухгалтерской справки
// Блок функций
// Функция для получения кода сценария бухгалтерской справки
var procGetScenarioCode = function(rop) {
svScenario = nvl(Act_TransDocApi.getObjAttrValue(rop, 'sScenarioSng'), 'NOTDEFINED');
if (svScenario != 'NOTDEFINED') {
@begin{
let selectScenarioCode = `select
cast(scen.scode as varchar) as scode
from zsngbs_expscenarioname scen
where scen.scaption = '`+svScenario+`'`;
svScenario = sql(selectScenarioCode).asSingle().scode;
}
}
return svScenario;
}
// Функция получения подкласса документа
var procGetSubClass = function(rop) {
let result = null;
@begin{
result = Btk_ObjectTypeApi.load(rop.getByAttrName("idObjectType")).idSubClass;
}
return result;
}
// Блок создания объектов
var rop = Act_TransDocApi.load(id); // Хозяйственная операция
svDocSubClass = Btk_SubClassApi.load(procGetSubClass(rop)).sCode;
svDocObjType = Btk_ObjectTypeApi.load(rop.idObjectType).sCode;
if (isNotNull(rop.gidSrc)) {
var ropDoc = Btk_ClassApi.loadObject(rop.gidSrc); // Документ-источник
svSrcDocClass = Btk_ClassApi.load(parseIdClass(rop.gidSrc)).sName;
svSrcDocSubClass = Btk_SubClassApi.load(procGetSubClass(rop)).sCode;
svSrcDocObjType = Btk_ObjectTypeApi.load(ropDoc.idObjectType).sCode;
}
// Блок определения вида сценария
if (svDocSubClass == 'Act_TransDoc_BusinessOperation') {
if(svSrcDocClass = 'Pm_AdvRep') {
return 'ACC_AO';
}
}
else if (svDocSubClass == 'Act_TransDoc_AccountingInfo') {
return procGetScenarioCode(rop);
}
else return 'NOTDEFINED';