OpenAlgResult OpenAlg(OdId tOb, OpenAlgArg tArg)
tOb. Моникёр объекта репозитория, являющегося алгоритмом расчёта показателей.
tArg. Параметры выполнения операции.
Операция OpenAlg открывает алгоритм расчёта показателей.
Операция позволяет получить доступ к структуре алгоритма показателей. Также операция может применяться для блоков, используемых в алгоритме расчёта, но которые созданы как внешние объекты в репозитории: блоки расчёта и блоки функции.
Для выполнения операции укажите в поле tOb моникёр объекта, являющегося алгоритмом расчёта, блоком расчёта или блоком функции, а в поле tArg укажите параметры открытия. Моникёр объекта может быть получен при выполнении операции GetObjects. В поле tArg могут быть указаны режим (просмотр или редактирование), значения параметров и шаблон для извлечения метаданных. В шаблоне указывается та информация, которая должна быть получена при выполнении операции. Результатом работы операции будет моникёр открытого экземпляра объекта, а также метаданные, если при выполнении операции в поле tArg.metaGet был задан соответствующий шаблон.
Дальнейшая работа с открытым экземпляром объекта осуществляется с помощью операций GetAlg и SetAlg. Для сохранения изменений используйте операцию SaveAlg.
Для закрытия открытого экземпляра объекта используйте операцию CloseAlg.
Ниже приведен пример использования операции для открытия алгоритма расчёта показателей. В запросе передается моникёр объекта, являющегося алгоритмом расчёта. В ответе приходит моникёр открытого экземпляра алгоритма расчёта, открытый на редактирование. Какие-либо дополнительные метаданные не извлекаются.
В примере C# используется функция FindObjectById, код которой приведен в примере «Получение описания объекта по его идентификатору».
{
"OpenAlg" :
{
"tOb" :
{
"id" : "S1!M!231264"
},
"tArg" :
{
"args" :
{
"openForEdit" : "true"
}
}
}
}
{
"OpenAlgResult" :
{
"id" :
{
"id" : "S1!M!S!C1"
},
"readOnly" : "0"
}
}
public static OpenAlgResult OpenAlg(MbId mb, string algId)
{
var somClient = new SomPortTypeClient(); //Прокси-объект для выполнения операций
//Параметры выполнения операции
var tOpen = new OpenAlg()
{
tArg = new OpenAlgArg()
{
args = new AlgOpenArgs()
{
openForEdit = true
}
},
//Формирование моникёра объекта
tOb = new OdId() { id = mb.id + "!" + FindObjectById(mb, algId).k }
};
//Открытие алгоритма расчёта показателей
var result = somClient.OpenAlg(tOpen);
return result;
}
См. также: