REST API: Сложные фильтры задач: различия между версиями
Материал из Planfix
								
												
				Artem (обсуждение | вклад)  (Новая страница: «{{#seo: |title=REST API: Сложные фильтры |titlemode=append |keywords=планфикс, Фильтры задач апи, api, rest, rest api |descri…»)  | 
				Artem (обсуждение | вклад)  Нет описания правки  | 
				||
| (не показана 41 промежуточная версия 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="11" |    | |||
*equal   | |||
*notequal   | |||
| rowspan="11" | string - номер сотрудника/контакта/группы с префиксом.   | |||
Например: “user:1”, “contact:5”, “group:3”  | |||
|-  | |||
|2 || Исполнитель  | |||
|-  | |||
|97 || Исполнитель персонально (без учета групп, в которые он входит)  | |||
|-  | |||
|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="3"|   | |||
*equal  | |||
*notequal   | |||
| rowspan="3"| int - номер задачи или массив номеров задач для условия по нескольким номерам (ИЛИ)  | |||
|-  | |||
|115 || Пользовательское поле типа Задача    | |||
|-  | |||
|116 || Пользовательское поле типа Набор задач    | |||
|-  | |||
|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]]  | |||
Текущая версия от 07:12, 27 октября 2025
Сложные фильтры в 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 | Исполнитель | ||
| 97 | Исполнитель персонально (без учета групп, в которые он входит) | ||
| 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 | Пользовательское поле типа Задача | ||
| 116 | Пользовательское поле типа Набор задач | ||
| 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"
}
где: 
  |