SetAlgResult SetAlg(AlgId tAlg, SetAlgArg tArg)
tAlg. Моникёр экземпляра алгоритма расчёта показателей или его блока.
tArg. Параметры выполнения операции.
Операция SetAlg изменяет метаданные алгоритма расчёта показателей или его блоков.
Данная операция позволяет изменить настройки блока расчёта, алгоритма расчёта и блока функций. Для выполнения операции укажите в поле tAlg моникёр экземпляра объекта, а в поле tArg укажите параметры, в соответствии с которыми будут изменяться объекты. Моникёр может быть получен при выполнении операции OpenAlg. В поле tArg.pattern указывается шаблон, в соответствии с которым будет производиться изменение, а в поле tArg.meta обновлённые метаданные.
После внесения изменений для сохранения объекта используйте операцию SaveAlg.
Результатом операции будут обновлённые метаданные, если при выполнении операции также было определено поле tArg.metaGet.
Ниже приведён пример создания нового параметра в алгоритме расчёта. В запросе передаётся моникёр экземпляра алгоритма расчёта, шаблон, определяющий необходимость создания нового параметра, и метаданные с базовыми свойствами параметра. В ответе приходит обновлённая информация о параметрах алгоритма расчёта.
{
"SetAlg" :
{
"tAlg" :
{
"id" : "S1!M!S!C1"
},
"tArg" :
{
"pattern" :
{
"obInst" : "true",
"params" : "Add"
},
"meta" :
{
"calcObject" :
{
"k" : "0",
"params" :
{
"its" :
{
"it" :
[
{
"k" : "-1",
"id" : "START_PARAM",
"n" : "Новый параметр"
}
]
}
}
}
},
"metaGet" :
{
"obInst" : "true",
"params" : "Get"
}
}
}
}
{
"SetAlgResult" :
{
"id" :
{
"id" : "S1!M!S!C1"
},
"meta" :
{
"obInst" :
{
"obDesc" :
{
"@ds" : "",
"@isShortcut" : "0",
"@isLink" : "0",
"@ver" : "40",
"@hf" : "0",
"i" : "AREA_ALG",
"n" : "Алгоритм для выч.показателей области данных",
"k" : "231264",
"c" : "268033",
"p" : "231226",
"h" : "0",
"hasPrv" : "0",
"ic" : "0",
"trackElementDependents" : "0",
"isPermanent" : "1",
"isTemp" : "0"
}
},
"dirty" : "0",
"calcObject" :
{
"k" : "231264",
"id" : "AREA_ALG",
"n" : "Алгоритм для выч.показателей области данных",
"vis" : "1",
"type" : "Algorithm",
"params" :
{
"its" :
{
"it" :
[
{
"k" : "1",
"id" : "PARAM0",
"n" : "Период",
"vis" : "1",
"dataType" : "2",
"defaultValueSelection" : "S1!M!S!S6",
"linkedObjectKey" : "104891",
"linkedStubKey" : "-1",
"hidden" : "0",
"tag" : "",
"attrs" :
{
"its" :
{
"it" :
[
{
"k" : "1",
"id" : "BLOCK_TYPE",
"n" : "Тип блока календаря",
"vis" : "1",
"dt" : "2"
},
{
"k" : "2",
"id" : "START_DATE",
"n" : "Дата начала периода",
"vis" : "1",
"dt" : "4"
},
{
"k" : "3",
"id" : "NAME",
"n" : "Имя элемента календаря",
"vis" : "1",
"dt" : "1"
},
{
"k" : "4",
"id" : "ID",
"n" : "Идентификатор",
"vis" : "1",
"dt" : "1"
},
{
"k" : "5",
"id" : "ORDER",
"n" : "Порядок",
"vis" : "1",
"dt" : "2"
},
{
"k" : "6",
"id" : "PERIOD",
"n" : "Период",
"vis" : "1",
"dt" : "4"
},
{
"k" : "7",
"id" : "YEAR",
"n" : "Номер года",
"vis" : "1",
"dt" : "2"
},
{
"k" : "8",
"id" : "HALF_OF_YEAR",
"n" : "Номер полугодия",
"vis" : "1",
"dt" : "2"
},
{
"k" : "9",
"id" : "QUARTER",
"n" : "Номер квартала",
"vis" : "1",
"dt" : "2"
},
{
"k" : "10",
"id" : "MONTH",
"n" : "Номер месяца",
"vis" : "1",
"dt" : "2"
}
]
}
},
"index" : "0"
},
{
"k" : "2",
"id" : "START_PARAM",
"n" : "Новый параметр",
"vis" : "1",
"dataType" : "2",
"defaultValue" : "",
"linkedStubKey" : "-1",
"hidden" : "0",
"tag" : "",
"index" : "1"
}
]
}
},
"paramsValidationMessage" : "В параметре Новый параметр (START_PARAM) не задана ссылка на справочник",
"algorithm" :
{
"workspace" : "S1!M!S!C1!W"
}
}
}
}
}
public static SetAlgResult AlgoAddParam(string moniker)
{
var somClient = new SomPortTypeClient(); //Прокси-объект для выполнения операций
//Параметры выполнения операции
var tSet = new SetAlg()
{
tArg = new SetAlgArg()
{
pattern = new AlgMdPattern()
{
@params = ListOperation.Add
},
meta = new AlgMd()
{
calcObject = new AlgCalcObject()
{
@params = new MsModelParams()
{
its = new MsModelParam[1]
{
new MsModelParam()
{
k = ulong.MaxValue,
n = "Новый параметр",
id = "START_PARAM"
}
}
}
}
},
metaGet = new AlgMdPattern()
{
@params = ListOperation.Get
}
},
tAlg = new AlgId() { id = moniker }
};
//Изменение метаданных
var result = somClient.SetAlg(tSet);
return result;
}
См. также: