REST API: Сложные фильтры задач: различия между версиями

Материал из Planfix
Перейти к: навигация, поиск
Нет описания правки
Нет описания правки
 
(не показана 31 промежуточная версия 2 участников)
Строка 5: Строка 5:
|description=REST API: Сложные фильтры
|description=REST API: Сложные фильтры
}}
}}
Сложные фильтры применяются в методе «/task/list» при получении списка задач. Фильтры задач задаются следующим набором параметров:
Сложные фильтры в [[REST API]] ПланФикса применяются в методе «/task/list» при получении списка задач. Фильтры задач задаются следующим набором параметров:
*'''type''' — числовой идентификатор фильтра.
*'''type''' — числовой идентификатор типа фильтра. Он определяется типом поля, по которому выполняется отбор в фильтре. Колонка «Тип» в таблице ниже.
*'''operator''' — оператор фильтра, одно из значений из списка (equal, notequal, gt, lt), у разных фильтров могут быть разные допустимые операторы.
*'''operator''' — оператор фильтра, одно из значений из списка (equal, notequal, gt, lt), у разных фильтров могут быть разные допустимые операторы, для полей типа «Дата» можно также использовать операторы gtAndEqual, ltAndEqual.
*'''value''' — значение фильтра, может быть строкой, числом или сложным объектом, в зависимости от типа фильтра.
*'''value''' — значение фильтра, может быть строкой, числом или сложным объектом, в зависимости от типа фильтра.
*'''field''' — идентификатор пользовательского поля, для фильтров по пользовательским полям.
*'''field''' — идентификатор пользовательского поля, для фильтров по пользовательским полям.
*'''subfilter''' — вложенный фильтр для фильтрации по значениям полей записи аналитик.


<pre>
<pre>
Строка 45: Строка 46:
}
}
</pre>
</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 Дата создания
  • equal
  • notequal
  • gt
  • lt

Объект :

 
"value": {
    "dateType": string,
    "dateValue": string,
    "dateFrom": string,
    "dateTo": string
}

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

Даты считаются переданными в часовом поясе сотрудника, от имени которого сделан запрос.

Примеры:

"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 Постановщик
  • equal
  • notequal
string - номер сотрудника/контакта/группы с префиксом.

Например: “user:1”, “contact:5”, “group:3”

2 Исполнитель
39 Участник
3 Аудитор задачи или проекта
59 Аудитор проекта
60 Аудитор задачи
108 Пользовательское поле типа Контакт
109 Пользовательское поле типа Сотрудник
112 Пользовательское поле типа Группа, сотрудник, контакт
113 Пользовательское поле типа Список сотрудников
22 Без даты начала
  • equal
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 Номер задачи
  • equal
  • notequal
int - номер задачи или массив номеров задач для условия по нескольким номерам (ИЛИ)
115 Пользовательское поле типа Задача
117 Пользовательское поле типа Проект
  • equal
  • notequal
int - номер проекта
51 Шаблон
  • equal
  • notequal
int - номер шаблона или массив номеров шаблонов для условия по нескольким шаблонам (ИЛИ)
5 Проект
  • equal
  • notequal
int - номер проекта
10 Статус
  • equal
  • notequal
int - идентификатор статуса или массив идентификаторов статусов для условия по нескольким статусам (ИЛИ)
7 Контрагент
  • equal
  • notequal
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, пример для фильтра поля аналитики типа Строка:
{
  "offset": 0,
  "pageSize": 100,
  "filters": [
    {
      "type": 93,
      "operator": "equal",
      "value": "Test value",
      "subfilter": {
        "dataTagId": 6,
        "filter": {
          "type": 3108,
          "field": 20
        }
      }
    }
  ],
  "fields": "id,name,dataTags"
}

где:

  • dataTagId — идентификатор аналитики.
  • filter — объект фильтра по этой аналитике.
  • type — тип фильтра, в данном случае сложный фильтр аналитики по полю типа Строка.
  • field — идентификатор поля аналитики, по которому выполняется фильтр.

Перейти