REST API: Сложные фильтры задач: различия между версиями
Материал из Planfix
Artem (обсуждение | вклад) (Новая страница: «{{#seo: |title=REST API: Сложные фильтры |titlemode=append |keywords=планфикс, Фильтры задач апи, api, rest, rest api |descri…») |
Artem (обсуждение | вклад) Нет описания правки |
||
(не показано 37 промежуточных версий 2 участников) | |||
Строка 5: | Строка 5: | ||
|description=REST API: Сложные фильтры | |description=REST API: Сложные фильтры | ||
}} | }} | ||
Сложные фильтры | Сложные фильтры в [[REST API]] ПланФикса применяются в методе «/task/list» при получении списка задач. Фильтры задач задаются следующим набором параметров: | ||
*'''type''' — числовой идентификатор типа фильтра. Он определяется типом поля, по которому выполняется отбор в фильтре. Колонка «Тип» в таблице ниже. | |||
Фильтры задач задаются следующим набором параметров: | *'''operator''' — оператор фильтра, одно из значений из списка (equal, notequal, gt, lt), у разных фильтров могут быть разные допустимые операторы, для полей типа «Дата» можно также использовать операторы gtAndEqual, ltAndEqual. | ||
*'''type''' — числовой идентификатор фильтра. | |||
*'''operator''' — оператор фильтра, одно из значений из списка (equal, notequal, gt, lt), у разных фильтров могут быть разные допустимые операторы. | |||
*'''value''' — значение фильтра, может быть строкой, числом или сложным объектом, в зависимости от типа фильтра. | *'''value''' — значение фильтра, может быть строкой, числом или сложным объектом, в зависимости от типа фильтра. | ||
*'''field''' — идентификатор пользовательского поля, для фильтров по пользовательским полям. | *'''field''' — идентификатор пользовательского поля, для фильтров по пользовательским полям. | ||
*'''subfilter''' — вложенный фильтр для фильтрации по значениям полей записи аналитик. | |||
<pre> | |||
< | |||
{ | { | ||
"type": 12, | "type": 12, | ||
Строка 23: | Строка 21: | ||
} | } | ||
} | } | ||
</ | </pre> | ||
Пример запроса получения списка задач с передачей нескольких фильтров (используется логика И): | |||
<pre> | |||
{ | |||
"fields": "name", | |||
"filters": [{ | |||
"type": 2, | |||
"operator": "equal", | |||
"value": "user:5" | |||
}, | |||
{ | |||
"type": 2, | |||
"operator": "equal", | |||
"value": "contact:7" | |||
}, | |||
{ | |||
"type": 2, | |||
"operator": "equal", | |||
"value": "group:8" | |||
} | |||
] | |||
} | |||
</pre> | |||
{| class="wikitable" style="margin-top: 1em; width:100% " | |||
!width="40"|Тип !!width="200"| Название !! Операторы !! Формат value | |||
|- | |||
|12 || Дата создания | |||
| rowspan="9" | | |||
*equal | |||
*notequal | |||
*gt | |||
*lt | |||
| rowspan="9" | | |||
Объект : | |||
<pre> | |||
"value": { | |||
"dateType": string, | |||
"dateValue": string, | |||
"dateFrom": string, | |||
"dateTo": string | |||
} | |||
</pre> | |||
dateType принимает следующие значения: | |||
*today - сегодня | |||
*yesterday - вчера | |||
*tomorrow - завтра | |||
*thisWeek - текущая неделя | |||
*lastWeek | |||
*nextWeek | |||
*thisMonth | |||
*lastMonth | |||
*nextMonth | |||
*last - последние n дней, n передается в dateValue | |||
*next - следующие n дней, n передается в dateValue | |||
*in - через n дней, n передается в dateValue | |||
*otherDate - точная дата, дата передается в формате дд-мм-гггг в dateFrom | |||
*otherRange - точный период, даты передаются в формате дд-мм-гггг в dateFrom и dateTo | |||
*otherDate_withTime - точная дата-время, дата передается в формате "дд-мм-гггг чч:мм" в dateFrom | |||
*otherRange_withTime - точный период с заданным временем, даты передаются в формате "дд-мм-гггг чч:мм" в dateFrom и dateTo | |||
Даты считаются переданными в часовом поясе сотрудника, от имени которого сделан запрос. | |||
Примеры: | |||
<pre> | |||
"value": { | |||
"dateType": "thisWeek" | |||
} | |||
</pre> | |||
<pre> | |||
"value": { | |||
"dateType": "otherRange", | |||
"dateFrom": "20-03-2022", | |||
"dateTo": "22-03-2022" | |||
} | |||
</pre> | |||
<pre> | |||
"value": { | |||
"dateType": "otherDate_withTime", | |||
"dateFrom": "20-03-2022 12:00", | |||
} | |||
</pre> | |||
|- | |||
|13 || Дата планируемого начала | |||
|- | |||
|14 || Дата планируемого завершения | |||
|- | |||
|21 || Дата последней активности (последнего добавленного комментария) | |||
|- | |||
|19 || Дата фактического завершения | |||
|- | |||
|20 || Дата выполнения | |||
|- | |||
|38 || Дата последнего изменения | |||
|- | |||
|79 || Дата последнего изменения или комментария | |||
|- | |||
|103|| Пользовательское поле типа Дата | |||
|- | |||
|1 || Постановщик | |||
| rowspan="10" | | |||
*equal | |||
*notequal | |||
| rowspan="10" | string - номер сотрудника/контакта/группы с префиксом. | |||
Например: “user:1”, “contact:5”, “group:3” | |||
|- | |||
|2 || Исполнитель | |||
|- | |||
|39 || Участник | |||
|- | |||
|3 || Аудитор задачи или проекта | |||
|- | |||
|59 || Аудитор проекта | |||
|- | |||
|60 || Аудитор задачи | |||
|- | |||
|108 || Пользовательское поле типа Контакт | |||
|- | |||
|109 || Пользовательское поле типа Сотрудник | |||
|- | |||
|112 || Пользовательское поле типа Группа, сотрудник, контакт | |||
|- | |||
|113 || Пользовательское поле типа Список сотрудников | |||
|- | |||
|22 || Без даты начала | |||
| rowspan="16" | | |||
*equal | |||
| rowspan="16" | int - 1 | |||
boolean - true | |||
|- | |||
|23 || Без даты завершения | |||
|- | |||
|25 || С датой начала | |||
|- | |||
|26 || С датой завершения | |||
|- | |||
|16 || Повторяющаяся | |||
|- | |||
|28 || Не повторяющаяся | |||
|- | |||
|17 || Просроченная | |||
|- | |||
|29 || Не просроченная | |||
|- | |||
|33 || Без исполнителей | |||
|- | |||
|41 || Без участников | |||
|- | |||
|34 || Постановщик - сотрудник | |||
|- | |||
|35 || Постановщик - контакт | |||
|- | |||
|71 || Исполнитель - сотрудник | |||
|- | |||
|69 || Исполнитель - контакт | |||
|- | |||
|72 || Участник - сотрудник | |||
|- | |||
|70 || Участник - контакт | |||
|- | |||
|8 || Название задачи | |||
| | |||
*equal | |||
*notequal | |||
| string - осуществляется фильтр содержит / не содержит | |||
|- | |||
|101 || Пользовательское поле типа Строка | |||
| | |||
*equal | |||
*notequal | |||
*have | |||
*nothave | |||
| string - осуществляется фильтр равно / не равно / содержит / не содержит | |||
|- | |||
|102 || Пользовательское поле типа Число | |||
| | |||
*equal | |||
*notequal | |||
*gt | |||
*lt | |||
| int | |||
|- | |||
|105 || Пользовательское поле типа Чек-бокс | |||
| | |||
*equal | |||
*notequal | |||
| int - 1 / 0 | |||
boolean | |||
|- | |||
|106 || Пользовательское поле типа Список | |||
| | |||
*equal | |||
*notequal | |||
| string | |||
|- | |||
|107 || Пользовательское поле типа Запись справочника | |||
| | |||
*equal | |||
*notequal | |||
| int - идентификатор записи | |||
|- | |||
|114 || Пользовательское поле типа Набор записей справочника | |||
| | |||
*equal | |||
*notequal | |||
| int - идентификатор записи, для условия по нескольким записям — идентификаторы через ; (точку с запятой) | |||
|- | |||
|111 || Пользовательское поле типа Набор значений | |||
| | |||
*equal | |||
*notequal | |||
| string - значение, для условия по нескольким значениям - значения через ; (точку с запятой) | |||
|- | |||
|152 || Содержит значение в пользовательском поле | |||
| | |||
*equal | |||
| int - идентификатор поля | |||
|- | |||
|153 || Не содержит значение в пользовательском поле | |||
| | |||
*equal | |||
| int - идентификатор поля | |||
|- | |||
|11 || Содержит аналитику | |||
| | |||
*equal | |||
| int - идентификатор аналитики | |||
|- | |||
|18 || Не содержит аналитику | |||
| | |||
*equal | |||
| int - идентификатор аналитики | |||
|- | |||
|73 || Непосредственная надзадача | |||
| | |||
*equal | |||
*notequal | |||
| int - номер надзадачи | |||
|- | |||
|57 || Номер задачи | |||
| rowspan="2"| | |||
*equal | |||
*notequal | |||
| rowspan="2"| int - номер задачи или массив номеров задач для условия по нескольким номерам (ИЛИ) | |||
|- | |||
|115 || Пользовательское поле типа Задача | |||
|- | |||
|117 || Пользовательское поле типа Проект | |||
| | |||
*equal | |||
*notequal | |||
|int - номер проекта | |||
|- | |||
|51 || Шаблон | |||
| | |||
*equal | |||
*notequal | |||
| int - номер шаблона или массив номеров шаблонов для условия по нескольким шаблонам (ИЛИ) | |||
|- | |||
|5 || Проект | |||
| | |||
*equal | |||
*notequal | |||
| int - номер проекта | |||
|- | |||
|10 || Статус | |||
| | |||
*equal | |||
*notequal | |||
| int - идентификатор статуса или массив идентификаторов статусов для условия по нескольким статусам (ИЛИ) | |||
|- | |||
|7 || Контрагент | |||
| rowspan="2"| | |||
*equal | |||
*notequal | |||
| rowspan="2"| int - номер контрагента | |||
string - номер контрагента с префиксом, пример: “contact:1” | |||
|- | |||
|110 || Пользовательское поле Контрагент | |||
|- | |||
|24 || Процесс | |||
| | |||
*equal | |||
*notequal | |||
| int - идентификатор процесса | |||
|- | |||
|307 || Дерево подзадач | |||
| | |||
*equal | |||
*notequal | |||
| int - номер надзадачи | |||
|- | |||
|9 || Срочность | |||
| | |||
*equal | |||
*notequal | |||
| string - Urgent или NotUrgent | |||
|- | |||
|93 || Значение поля записи аналитики | |||
| | |||
(в зависимости от типа поля) | |||
*equal | |||
*notequal | |||
*gt | |||
*lt | |||
*have | |||
*nothave | |||
| Значение поля аналитики по которому выполняется фильтрация, дополнительно в структуре фильтра надо передать поле subfilter, пример для фильтра поля аналитики типа Строка: | |||
<pre> | |||
{ | |||
"offset": 0, | |||
"pageSize": 100, | |||
"filters": [ | |||
{ | |||
"type": 93, | |||
"operator": "equal", | |||
"value": "Test value", | |||
"subfilter": { | |||
"dataTagId": 6, | |||
"filter": { | |||
"type": 3108, | |||
"field": 20 | |||
} | |||
} | |||
} | |||
], | |||
"fields": "id,name,dataTags" | |||
} | |||
</pre> | |||
где: | |||
*dataTagId — идентификатор аналитики. | |||
*filter — объект фильтра по этой аналитике. | |||
*type — тип фильтра, в данном случае сложный фильтр аналитики по полю типа Строка. | |||
*field — идентификатор поля аналитики, по которому выполняется фильтр. | |||
|} | |||
== Перейти == | |||
*[[REST API]] |
Текущая версия от 11:26, 12 ноября 2024
Сложные фильтры в REST API ПланФикса применяются в методе «/task/list» при получении списка задач. Фильтры задач задаются следующим набором параметров:
- type — числовой идентификатор типа фильтра. Он определяется типом поля, по которому выполняется отбор в фильтре. Колонка «Тип» в таблице ниже.
- operator — оператор фильтра, одно из значений из списка (equal, notequal, gt, lt), у разных фильтров могут быть разные допустимые операторы, для полей типа «Дата» можно также использовать операторы gtAndEqual, ltAndEqual.
- value — значение фильтра, может быть строкой, числом или сложным объектом, в зависимости от типа фильтра.
- field — идентификатор пользовательского поля, для фильтров по пользовательским полям.
- subfilter — вложенный фильтр для фильтрации по значениям полей записи аналитик.
{ "type": 12, "operator": "equal", "value": { "dateType": "otherDate", "dateValue": "22-03-2022" } }
Пример запроса получения списка задач с передачей нескольких фильтров (используется логика И):
{ "fields": "name", "filters": [{ "type": 2, "operator": "equal", "value": "user:5" }, { "type": 2, "operator": "equal", "value": "contact:7" }, { "type": 2, "operator": "equal", "value": "group:8" } ] }
Тип | Название | Операторы | Формат value |
---|---|---|---|
12 | Дата создания |
|
Объект : "value": { "dateType": string, "dateValue": string, "dateFrom": string, "dateTo": string } dateType принимает следующие значения:
Даты считаются переданными в часовом поясе сотрудника, от имени которого сделан запрос. Примеры: "value": { "dateType": "thisWeek" } "value": { "dateType": "otherRange", "dateFrom": "20-03-2022", "dateTo": "22-03-2022" } "value": { "dateType": "otherDate_withTime", "dateFrom": "20-03-2022 12:00", } |
13 | Дата планируемого начала | ||
14 | Дата планируемого завершения | ||
21 | Дата последней активности (последнего добавленного комментария) | ||
19 | Дата фактического завершения | ||
20 | Дата выполнения | ||
38 | Дата последнего изменения | ||
79 | Дата последнего изменения или комментария | ||
103 | Пользовательское поле типа Дата | ||
1 | Постановщик |
|
string - номер сотрудника/контакта/группы с префиксом.
Например: “user:1”, “contact:5”, “group:3” |
2 | Исполнитель | ||
39 | Участник | ||
3 | Аудитор задачи или проекта | ||
59 | Аудитор проекта | ||
60 | Аудитор задачи | ||
108 | Пользовательское поле типа Контакт | ||
109 | Пользовательское поле типа Сотрудник | ||
112 | Пользовательское поле типа Группа, сотрудник, контакт | ||
113 | Пользовательское поле типа Список сотрудников | ||
22 | Без даты начала |
|
int - 1
boolean - true |
23 | Без даты завершения | ||
25 | С датой начала | ||
26 | С датой завершения | ||
16 | Повторяющаяся | ||
28 | Не повторяющаяся | ||
17 | Просроченная | ||
29 | Не просроченная | ||
33 | Без исполнителей | ||
41 | Без участников | ||
34 | Постановщик - сотрудник | ||
35 | Постановщик - контакт | ||
71 | Исполнитель - сотрудник | ||
69 | Исполнитель - контакт | ||
72 | Участник - сотрудник | ||
70 | Участник - контакт | ||
8 | Название задачи |
|
string - осуществляется фильтр содержит / не содержит |
101 | Пользовательское поле типа Строка |
|
string - осуществляется фильтр равно / не равно / содержит / не содержит |
102 | Пользовательское поле типа Число |
|
int |
105 | Пользовательское поле типа Чек-бокс |
|
int - 1 / 0
boolean |
106 | Пользовательское поле типа Список |
|
string |
107 | Пользовательское поле типа Запись справочника |
|
int - идентификатор записи |
114 | Пользовательское поле типа Набор записей справочника |
|
int - идентификатор записи, для условия по нескольким записям — идентификаторы через ; (точку с запятой) |
111 | Пользовательское поле типа Набор значений |
|
string - значение, для условия по нескольким значениям - значения через ; (точку с запятой) |
152 | Содержит значение в пользовательском поле |
|
int - идентификатор поля |
153 | Не содержит значение в пользовательском поле |
|
int - идентификатор поля |
11 | Содержит аналитику |
|
int - идентификатор аналитики |
18 | Не содержит аналитику |
|
int - идентификатор аналитики |
73 | Непосредственная надзадача |
|
int - номер надзадачи |
57 | Номер задачи |
|
int - номер задачи или массив номеров задач для условия по нескольким номерам (ИЛИ) |
115 | Пользовательское поле типа Задача | ||
117 | Пользовательское поле типа Проект |
|
int - номер проекта |
51 | Шаблон |
|
int - номер шаблона или массив номеров шаблонов для условия по нескольким шаблонам (ИЛИ) |
5 | Проект |
|
int - номер проекта |
10 | Статус |
|
int - идентификатор статуса или массив идентификаторов статусов для условия по нескольким статусам (ИЛИ) |
7 | Контрагент |
|
int - номер контрагента
string - номер контрагента с префиксом, пример: “contact:1” |
110 | Пользовательское поле Контрагент | ||
24 | Процесс |
|
int - идентификатор процесса |
307 | Дерево подзадач |
|
int - номер надзадачи |
9 | Срочность |
|
string - Urgent или NotUrgent |
93 | Значение поля записи аналитики |
(в зависимости от типа поля)
|
Значение поля аналитики по которому выполняется фильтрация, дополнительно в структуре фильтра надо передать поле subfilter, пример для фильтра поля аналитики типа Строка:
{ "offset": 0, "pageSize": 100, "filters": [ { "type": 93, "operator": "equal", "value": "Test value", "subfilter": { "dataTagId": 6, "filter": { "type": 3108, "field": 20 } } } ], "fields": "id,name,dataTags" } где:
|