OpenAlg

Синтаксис

OpenAlgResult OpenAlg(OdId tOb, OpenAlgArg tArg)

Параметры

tOb. Моникёр объекта репозитория, являющегося алгоритмом расчёта показателей.

tArg. Параметры выполнения операции.

Описание

Операция OpenAlg открывает алгоритм расчёта показателей.

Комментарии

Операция позволяет получить доступ к структуре алгоритма показателей. Также операция может применяться для блоков, используемых в алгоритме расчёта, но которые созданы как внешние объекты в репозитории: блоки расчёта и блоки функции.

Для выполнения операции укажите в поле tOb моникёр объекта, являющегося алгоритмом расчёта, блоком расчёта или блоком функции, а в поле tArg укажите параметры открытия. Моникёр объекта может быть получен при выполнении операции GetObjects. В поле tArg могут быть указаны режим (просмотр или редактирование), значения параметров и шаблон для извлечения метаданных. В шаблоне указывается та информация, которая должна быть получена при выполнении операции. Результатом работы операции будет моникёр открытого экземпляра объекта, а также метаданные, если при выполнении операции в поле tArg.metaGet был задан соответствующий шаблон.

Дальнейшая работа с открытым экземпляром объекта осуществляется с помощью операций GetAlg и SetAlg. Для сохранения изменений используйте операцию SaveAlg.

Для закрытия открытого экземпляра объекта используйте операцию CloseAlg.

Пример

Ниже приведен пример использования операции для открытия алгоритма расчёта показателей. В запросе передается моникёр объекта, являющегося алгоритмом расчёта. В ответе приходит моникёр открытого экземпляра алгоритма расчёта, открытый на редактирование. Какие-либо дополнительные метаданные не извлекаются.

В примере C# используется функция FindObjectById, код которой приведен в примере «Получение описания объекта по его идентификатору».

SOAP-запрос:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<OpenAlg xmlns="http://www.fsight.ru/PP.SOM.Som">
<tOb xmlns="">
  <id>S1!M!231264</id>
  </tOb>
<tArg xmlns="">
<args>
  <openForEdit>true</openForEdit>
  </args>
  </tArg>
  </OpenAlg>
  </s:Body>
  </s:Envelope>

SOAP-ответ:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<OpenAlgResult xmlns="http://www.fsight.ru/PP.SOM.Som" xmlns:q1="http://www.fsight.ru/PP.SOM.Som" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<id xmlns="">
  <id>S1!M!S!C1</id>
  </id>
  <readOnly xmlns="">0</readOnly>
  </OpenAlgResult>
  </soapenv:Body>
  </soapenv:Envelope>

JSON-запрос:

{
"OpenAlg" :
{
"tOb" :
{
"id" : "S1!M!231264"
},
"tArg" :
{
"args" :
{
"openForEdit" : "true"
}
}
}
}

JSON-ответ:

{
"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;
}

См. также:

Работа с алгоритмами расчёта показателей