GetFieldValues

Синтаксис

GetFieldValuesResult GetFieldValues(OdId tOb, GetFieldValuesArg tArg)

Параметры

tOb. Моникёр открытого экземпляра реляционного объекта.

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

Описание

Операция GetFieldValues получает уникальные значения поля для использования в автофильтре.

Комментарии

Перед выполнением данной операции для соответствующего поля должна быть выполнена операция CreateFieldFilterState. Для выполнения операции GetFieldValues укажите в поле tOb моникёр открытого экземпляра реляционного объекта, а в поле tArg.pattern шаблон, в соответствии с которым будут получены уникальные значения поля. Моникёр может быть получен при выполнении операций OpenTable, OpenQuery. В tArg также будет необходимо задать моникёр кеша реляционного объекта, который может быть получен с помощью операций GetTable/GetQuery с указанным в шаблоне полем cachedDataset.

Результатом выполнения операции будут полученные уникальные значения поля реляционного источника.

Для использования значений в автофильтре предназначена операция SetFieldFilter. Применение внесённых изменений осуществляется после выполнения операции CloseFieldFilterState. Для получения отфильтрованных записей реляционного источника используйте повторный вызов операций GetTable/GetQuery.

Пример

Предполагается, что имеется открытая на просмотр таблица, получен её моникёр и моникёр кеша таблицы. В таблице имеется поле с идентификатором REGION.

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

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">
<GetFieldValues xmlns="http://www.fsight.ru/PP.SOM.Som">
<tOb xmlns="">
  <id>NLDGBACJHDEIGOAEOJMGHOOJDGJFPBFEFJEKHLKPOKBAEPOF!M!S!TABLECMPCMBCJHDEIGOAEHNKFEHGJCOOAFFIEIJCFENIDGAPBKEPP</id>
  </tOb>
<tArg xmlns="">
<pattern>
  <columnId>REGION</columnId>
<cachedDatasetId>
  <id>NLDGBACJHDEIGOAEOJMGHOOJDGJFPBFEFJEKHLKPOKBAEPOF!M!S!CACHEDDATASETOKBHDCCJHDEIGOAEPEALCLNDILEJPILEBJGJBCLICJLOHKBD</id>
  </cachedDatasetId>
  <search>край</search>
<range>
  <start>0</start>
  <count>20</count>
  </range>
  </pattern>
  </tArg>
  </GetFieldValues>
  </s:Body>
  </s:Envelope>

SOAP-ответ:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<GetFieldValuesResult 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>NLDGBACJHDEIGOAEOJMGHOOJDGJFPBFEFJEKHLKPOKBAEPOF!M!S!TABLECMPCMBCJHDEIGOAEHNKFEHGJCOOAFFIEIJCFENIDGAPBKEPP</id>
  </id>
<values xmlns="">
<it>
  <v>Алтайский край</v>
  <selected>1</selected>
  </it>
<it>
  <v>Забайкальский край</v>
  <selected>1</selected>
  </it>
<it>
  <v>Камчатский край</v>
  <selected>1</selected>
  </it>
<it>
  <v>Краснодарский край</v>
  <selected>1</selected>
  </it>
<it>
  <v>Красноярский край</v>
  <selected>1</selected>
  </it>
<it>
  <v>Пермский край</v>
  <selected>1</selected>
  </it>
<it>
  <v>Приморский край</v>
  <selected>1</selected>
  </it>
<it>
  <v>Ставропольский край</v>
  <selected>1</selected>
  </it>
<it>
  <v>Хабаровский край</v>
  <selected>1</selected>
  </it>
  </values>
  <total xmlns="">9</total>
  <selectAllState xmlns="">All</selectAllState>
  </GetFieldValuesResult>
  </soapenv:Body>
  </soapenv:Envelope>

JSON-запрос:

{
"GetFieldValues" :
{
"tOb" :
{
"id" : "NLDGBACJHDEIGOAEOJMGHOOJDGJFPBFEFJEKHLKPOKBAEPOF!M!S!TABLECMPCMBCJHDEIGOAEHNKFEHGJCOOAFFIEIJCFENIDGAPBKEPP"
},
"tArg" :
{
"pattern" :
{
"columnId" : "REGION",
"cachedDatasetId" :
{
"id" : "NLDGBACJHDEIGOAEOJMGHOOJDGJFPBFEFJEKHLKPOKBAEPOF!M!S!CACHEDDATASETOKBHDCCJHDEIGOAEPEALCLNDILEJPILEBJGJBCLICJLOHKBD"
},
"search" : "край",
"range" :
{
"start" : "0",
"count" : "20"
}
}
}
}
}

JSON-ответ:

{
"GetFieldValuesResult" :
{
"id" :
{
"id" : "NLDGBACJHDEIGOAEOJMGHOOJDGJFPBFEFJEKHLKPOKBAEPOF!M!S!TABLECMPCMBCJHDEIGOAEHNKFEHGJCOOAFFIEIJCFENIDGAPBKEPP"
},
"values" :
{
"it" :
[
{
"v" : "Алтайский край",
"selected" : "1"
},
{
"v" : "Забайкальский край",
"selected" : "1"
},
{
"v" : "Камчатский край",
"selected" : "1"
},
{
"v" : "Краснодарский край",
"selected" : "1"
},
{
"v" : "Красноярский край",
"selected" : "1"
},
{
"v" : "Пермский край",
"selected" : "1"
},
{
"v" : "Приморский край",
"selected" : "1"
},
{
"v" : "Ставропольский край",
"selected" : "1"
},
{
"v" : "Хабаровский край",
"selected" : "1"
}
]
},
"total" : "9",
"selectAllState" : "All"
}
}
public static GetFieldValuesResult GetFieldValues(string tableMoniker, string tableCacheMoniker, string fieldId)
{
var somClient = new SomPortTypeClient(); // Прокси-объект для выполнения операций
// Параметры выполнения операции
var tGet = new GetFieldValues()
{
tArg = new GetFieldValuesArg()
{
pattern = new FieldValuesPattern()
{
cachedDatasetId = new OdId() { id = tableCacheMoniker },
columnId = fieldId,
range = new ListRange() { count = 20, start = 0 },
search = "край"
}
},
tOb = new OdId() { id = tableMoniker }
};
// Получение уникальных значений поля
var result = somClient.GetFieldValues(tGet);
return result;
}

См. также:

Работа с реляционными объектами репозитория