search_items
Функция search_items используется для поиска элементов по определенным свойствам.
svc = core/search_items
params = {
"spec": {
"itemsType": "<text>",
"propName": "<text>",
"propValueMask": "<text>",
"sortType": "<text>",
"propType": "<text>",
"or_logic": <uint>
},
"force": <uint>,
"flags": <long>,
"from": <uint>,
"to": <uint>
}
Параметры
| Название | Описание |
|---|---|
| spec | Условия поиска. |
| itemsType | Тип элементов (см. список ниже). |
| propName | Имя свойства, по значению которого выполняется поиск (см. список возможных свойств ниже). Можно использовать символ |. |
| propValueMask | Маска значения свойства. Можно использовать следующие символы: * | , > < =. |
| sortType | Имя свойства, используемого для сортировки. |
| propType | Тип свойства (см. список ниже). |
| or_logic | Флаг логики ИЛИ для параметра propName: 1 — использовать логику ИЛИ, 0 — использовать логику И (см. раздел Поиск по нескольким свойствам). Если параметр не указан или не является целым числом, используется 0. |
| force | В зависимости от значения:
|
| flags | Флаги со свойствами для возвращаемого результата. Значение этого параметра зависит от типа элемента. Используйте таблицу флагов того типа, который запрашиваете: Объекты, Группы объектов, Ресурсы, Ретрансляторы, Маршруты, Пользователи. |
| from | Индекс первого возвращаемого элемента. Для нового поиска укажите 0. Если значение больше индекса последнего найденного элемента или больше to, когда to не равен 0, возвращается ошибка 4. Если элементы не найдены, массив items пустой ([]), а ошибка не возвращается. |
| to | Индекс последнего возвращаемого элемента. Если указано 0 или значение больше индекса последнего найденного элемента, возвращаются все элементы, начиная с индекса, указанного в параметре from. |
Запрос не проверяет, существуют ли значения itemsType, propName, propType и sortType. Неизвестное значение не вызывает ошибку. Например, если itemsType содержит неизвестный тип элемента или ни у одного найденного элемента нет свойства, указанного в propName, массив items пустой. Неизвестное значение propType обрабатывается как property.
Значения флагов зависят от типа элемента. Значения до
0x80у большинства типов совпадают, но начиная с0x100одно и то же число выбирает разные данные. Например,0x100 (256)дляavl_unitвозвращает расширенные свойства, а дляavl_resource— водителей. Флаг, который не относится к запрошенному типу, игнорируется без ошибки, и в ответе просто не будет соответствующих данных.
Типы элементов
Типы элементов (параметр itemsType):
avl_resource— ресурс;avl_retranslator— ретранслятор;avl_unit— объект;avl_unit_group— группа объектов;user— пользователь;avl_route— маршрут.
Чтобы получить список типов оборудования, используйте core/get_hw_types.
Свойства элементов
Свойства элементов (параметры propName и sortType):
sys_name— имя элемента;sys_id— ID элемента;sys_unique_id— уникальный ID объекта (IMEI);sys_phone_number— телефонный номер объекта;sys_phone_number2— второй телефонный номер объекта;sys_user_creator— ID создателя;rel_user_creator_name— имя создателя;sys_billing_account_guid— ID учетной записи;rel_billing_account_name— имя учетной записи;rel_billing_parent_account_name— имя родительской учетной записи;rel_billing_plan_name— имя тарифного плана;sys_comm_state— состояние оборудования (1 — подключено, 0 — отключено);rel_hw_type_name— имя оборудования;rel_hw_type_id— ID оборудования;sys_account_balance— баланс учетной записи;sys_account_days— количество дней для учетной записи;sys_account_enable_parent— права дилера (1 — есть, 0 — нет);sys_account_disabled— учетная запись заблокирована (1 — да, 0 — нет);rel_account_disabled_mod_time— время последнего изменения свойстваsys_account_disabled, время UNIX;rel_account_units_usage— количество объектов в учетной записи;rel_last_msg_date— время последнего сообщения, время UNIX;rel_is_account— является ли ресурс учетной записью (1 — да, 0 — нет);login_date— время последнего входа в систему, время UNIX;retranslator_enabled— состояние ретранслятора (1 — запущен, 0 — остановлен);rel_creation_time— время создания;rel_group_unit_count— количество объектов в группе;rel_customfield_name— имя произвольного поля элемента;rel_customfield_value— значение произвольного поля элемента;rel_profilefield_name— имя характеристики объекта;rel_profilefield_value— значение поля характеристики объекта;rel_adminfield_name— имя административного поля элемента;rel_adminfield_value— значение административного поля элемента;rel_customfield_name_value— имя и значение произвольного поля элемента, разделены:;rel_profilefield_name_value— имя и значение поля характеристики объекта, разделены:;rel_adminfield_name_value— имя и значение административного поля элемента, разделены:.
Произвольные и административные поля есть у объектов, групп объектов, пользователей и ресурсов. Характеристики есть только у объектов.
Другие значения этого параметра описаны в таблице ниже.
Тип свойства
Типы свойств (параметр propType):
property— свойство;list— список;propitemname— имя подэлемента (например, геозона является подэлементом ресурса);creatortree— цепочка создателей (в результате поиска такого типа возвращается список элементов, в цепочке создателей которых есть пользователь, указанный в параметреpropValueMask);accounttree— цепочка учетных записей (в результате поиска такого типа возвращается список элементов, в цепочке учетных записей которых есть учетная запись, указанная в параметреpropValueMask);customfield— произвольные поля;profilefield— характеристики объекта;adminfield— административные поля;servicename— услуги.
Если параметр propType не указан или имеет неизвестное значение, используется property.
Подэлементы
Для поиска подэлементов укажите значение propitemname в параметре propType. Другие параметры могут иметь следующие значения:
Элемент (параметр itemsType) |
Подэлемент (параметры propName и sortType) |
Описание |
|---|---|---|
avl_unit |
unit_sensors |
Датчики. |
avl_unit |
unit_commands |
Команды. |
avl_unit |
service_intervals |
Интервалы техобслуживания. |
avl_resource |
drivers |
Водители. |
avl_resource |
driver_groups |
Группы водителей. |
avl_resource |
jobs |
Задания. |
avl_resource |
notifications |
Уведомления. |
avl_resource |
trailers |
Прицепы. |
avl_resource |
trailer_groups |
Группы прицепов. |
avl_resource |
zones_library |
Геозоны. |
avl_resource |
reporttemplates |
Шаблоны отчетов. |
avl_resource |
orders |
Заявки. |
avl_route |
rounds |
Рейсы. |
avl_route |
route_schedules |
Расписания. |
avl_retranslator |
retranslator_units |
Ретранслируемые объекты. |
avl_unitavl_unit_groupuseravl_resource |
custom_fields |
Произвольные поля. |
avl_unitavl_unit_groupuseravl_resource |
admin_fields |
Административные поля. |
Типы сортировки
По умолчанию прямая сортировка работает следующим образом:
- любое имя разбивается на составляющие для сортировки (символы и числа);
- сначала сортируются числа, а затем символы;
- символ
-считается дефисом и сортируется до символов и чисел (см. специальную сортировку); - в системе поддерживается сортировка чисел с точкой (3.12) и чисел с плавающей точкой (2e10; 5.1E-2).
Доступны следующие типы сортировки:
| Сортировка | Описание |
|---|---|
| Прямая | Возвращаются значения, отсортированные по возрастанию:"sortType":"<item_property>" |
| Обратная | Возвращаются значения, отсортированные по убыванию:"sortType":"!<item_property>" |
| Комбинированная | Возвращаются значения, отсортированные по первому свойству, а в случае равенства значений — по второму свойству и т. д.:"sortType":"<property1>,!<property2>" |
| Специальная | Согласно этому типу сортировки символ - считается обозначением отрицательного числа. По умолчанию символ - считается дефисом, а не минусом."sortType":"-<item_property>" |
Поиск по нескольким свойствам
Можно искать элементы по нескольким свойствам сразу. Например:
"itemsType":"avl_resource",
"propName":"rel_is_account,*",
"propValueMask":"1,qwe",
"sortType":"sys_name",
"propType":"property,customfield"
Количество свойств в параметрах propName, propType и propValueMask должно быть одинаковым, поскольку они учитываются вместе. Система это не проверяет: если количество различается, ошибка не возвращается, но результат поиска может оказаться не таким, как ожидается.
По умолчанию для параметра propName работает логика И. В примере выше система находит все учетные записи (rel_is_account равно 1), у которых есть произвольное поле с именем или значением qwe.
Чтобы включить логику ИЛИ для параметра propName, укажите "or_logic":1 в запросе.
Использование операторов сравнения в поиске
В параметре propValueMask можно использовать следующие операторы сравнения: <, >, =, >=, <=. Если поле для поиска строковое, числа ищутся только в начале значения. Если поле числовое, анализируется все значение.
Пример 1
"itemsType": "avl_unit",
"propName": "sys_name,sys_name",
"propValueMask": ">=32,<33.5"
В результате поиска перечисляются все объекты, имена которых начинаются с чисел в диапазоне от 32 до 33.5.
Пример 2
"itemsType": "avl_resource",
"propName": "sys_account_balance,sys_account_balance",
"propValueMask": ">2,<=23"
В результате поиска перечисляются все ресурсы и учетные записи, баланс которых больше 2, но меньше или равен 23.
Вы также можете использовать оператор =, если значение поля начинается с > или <.
Пример 3
"itemsType":"avl_unit",
"propName":"sys_name",
"propValueMask":"=>123<,=<123>"
В результате поиска перечисляются все доступные объекты с именами >123< и <123>.
Ответ
{
"searchSpec": { /* условия поиска */
"itemsType": "<text>", /* тип элементов */
"propName": "<text>", /* имя свойства */
"propValueMask": "<text>", /* маска значения */
"sortType": "<text>", /* свойство для сортировки */
"propType": "<text>", /* тип свойства */
"or_logic": "<text>" /* флаг логики ИЛИ: "0" или "1" */
},
"dataFlags": <uint>, /* примененные флаги */
"totalItemsCount": <uint>, /* количество найденных элементов */
"indexFrom": <uint>, /* начальный индекс */
"indexTo": <uint>, /* конечный индекс */
"items": [
{ ... } /* найденные элементы */
]
}
Значение indexTo равно значению to из запроса, ограниченному индексом последнего найденного элемента. Если в запросе to равен 0 или ничего не найдено, indexTo равен 0.
Формат массива items зависит от типа элемента. Все форматы описаны в разделе Формат данных.
Коды ошибок:
| Код | Описание |
|---|---|
| 4 | Неверные входные параметры. Например, не указан обязательный параметр либо значение from больше индекса последнего найденного элемента или больше значения to, когда to не равен 0. |