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.
Ниже приведён пример получения уникальных значений поля таблицы, которые в дальнейшем могут быть использованы в автофильтре. В запросе передаются два моникёра, идентификатор поля и искомое в нём значение. В ответе возвращаются полученные уникальные значения поля, содержащие искомое значение.
{
"GetFieldValues" :
{
"tOb" :
{
"id" : "NLDGBACJHDEIGOAEOJMGHOOJDGJFPBFEFJEKHLKPOKBAEPOF!M!S!TABLECMPCMBCJHDEIGOAEHNKFEHGJCOOAFFIEIJCFENIDGAPBKEPP"
},
"tArg" :
{
"pattern" :
{
"columnId" : "REGION",
"cachedDatasetId" :
{
"id" : "NLDGBACJHDEIGOAEOJMGHOOJDGJFPBFEFJEKHLKPOKBAEPOF!M!S!CACHEDDATASETOKBHDCCJHDEIGOAEPEALCLNDILEJPILEBJGJBCLICJLOHKBD"
},
"search" : "край",
"range" :
{
"start" : "0",
"count" : "20"
}
}
}
}
}
{
"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;
}
См. также: