Есть два способа получения списка элементов:
- URL: api/item/getList/{parentId}
Метод: POST
Описание: получить информацию о всех дочерних элементах по ID родительского элемента
Входные параметры:
parentId - ID родительского элемента (ID списка или ID папки внутри списка) - URL: api/item/getRecursive/{parentId}
Метод: POST
Описание: рекурсивно получить информацию о всех дочерних элементах по ID родительского элемента (дочерние элементы + их дочерние элементы и т.д.)
Входные параметры:
parentId - ID родительского элемента (ID списка или ID папки внутри списка)
В теле POST запроса для этих методов можно передать строку с фильтром, который будет применяться для поиска элементов:
{ "query": "item => условия, которым должны удовлетворять искомые элементы"}
Синтаксис строки фильтра
Пример. Найти всех пользователей, у которых email равен "test@vitrocad.ru".
URL: /api/item/GetRecursive/e3a94bde-0ca9-456f-b338-4465d40389ee
Тело POST запроса:
{"query": "item => item.ContentTypeId == Guid(\"99c92e22-4e60-48c0-ab70-add500e71a45\") && item.GetValueAsString(\"email\") == \"test@vitrocad.test\""}
e3a94bde-0ca9-456f-b338-4465d40389ee - ID списка "Пользователи"
99c92e22-4e60-48c0-ab70-add500e71a45 - это ID типа контента пользователей
Поля и методы, которые доступны у item:
| Поле или метод | Тип | Описание |
|---|---|---|
| item.ContentTypeId | Guid | ID типа элемента |
| item.InsertDate | Дата/время | Дата/время создания элемента |
| item.UpdateDate | Дата/время | Дата/время обновления элемента |
| item.GetValueAsDateTime("название поля") | Дата/время | Получить значение поля типа "дата" |
| item.GetValueAsString("название поля") | Строка | Получить значение поля типа "однострочный текст"/"многострочный текст" |
| item.GetValueAsBool("название поля") | Флаг | Получить значение поля типа "флаг" |
| item.GetValueAsInt("название поля") | Целое число | Получить значение поля типа "целое число" |
| item.GetLookupId("название поля") | Guid | Получить значение поля типа "ссылка на элемент списка" |
| item.GetValueAsLookupIdList("название поля") | [Guid] | Получить значения поля типа "ссылка на элемент списка" с флагом "Множественный выбор из списка" |
| item.GetValueAsGuid("название поля") | Guid | Получить значение поля типа "Guid" (например, поле "source") |
| item.InsertUser.Id | Guid | Guid пользователя создавшего элемент |
| item.UpdateUser.Id | Guid | Guid пользователя изменившего элемент |
Операторы сравнения
| Оператор | Описание | Пример |
|---|---|---|
| == | Равно | item.GetValueAsString("email") == "test@vitrocad.ru" |
| != | Не равно | item.ContentTypeId != Guid("99c92e22-4e60-48c0-ab70-add500e71a45") |
| > | Больше | item => item.InsertDate > DateTime(2024, 10, 1, 10, 0, 0) |
| >= | Больше или равно | item => item.InsertDate >= DateTime(2024, 10, 1, 10, 0, 0) |
| < | Меньше | item => item.InsertDate < DateTime(2024, 10, 1, 10, 0, 0) |
| <= | Меньше или равно | item => item.InsertDate <= DateTime(2024, 10, 1, 10, 0, 0) |
Искомые значения
| Значения | Описание | Пример |
|---|---|---|
| "Строка" | Строка текста | item.GetValueAsString("email") == "test@vitrocad.ru" |
| Guid("99c92e22-4e60-48c0-ab70-add500e71a45") | Создать объект типа GUID из указанной строки | item.ContentTypeId == Guid("99c92e22-4e60-48c0-ab70-add500e71a45") |
| DateTime(2024, 10, 1, 10, 0, 0) | Создать объект типа Дата/Время По указанным параметрам DateTime(Год, Месяц, День, Час, Минута, Секунда) Обратите внимание: время передается в UTC | item.InsertDate > DateTime(2024, 10, 1, 10, 0, 0) |
| new Guid[] { Guid("b9d061b1-7ce7-4756-8230-e502cfe3d8d8"), Guid("5cd0640c-1e57-4e09-b0ec-babfb5c72680") } | Создать объект типа массив GUID | new Guid[] { Guid("b9d061b1-7ce7-4756-8230-e502cfe3d8d8"), Guid("5cd0640c-1e57-4e09-b0ec-babfb5c72680") }.Contains(item.GetLookupId("document_status")) |
Логические операторы
| Оператор | Описание | Пример |
|---|---|---|
| && | Логическое И | item.ContentTypeId == Guid("99c92e22-4e60-48c0-ab70-add500e71a45") && item.GetValueAsString("email") == "admin@email.test" |
| || | Логическое ИЛИ | item.ContentTypeId == Guid("99c92e22-4e60-48c0-ab70-add500e71a45") || item.ContentTypeId == Guid("733af6e2-e187-4e75-8a2b-ae4072f402e0") |
Функции поиска по подстроке
| Функция | Описание | Пример |
|---|---|---|
| Contains | Значение содержит подстроку | item.GetValueAsString("email").Contains("test") |
| StartsWith | Значение начинается со строки | item.GetValueAsString("email").StartsWith("test") |
| EndsWith | Значение заканчивается на строку | item.GetValueAsString("name").EndsWith(".pdf") |
Примеры
- Найти в подразделении пользователя с указанным именем.
URL: /api/item/GetList/c0857f66-fbfa-448f-a35d-afac00a3a9cb
Тело запроса: {"query": "item => item.ContentTypeId = Guid(\"99c92e22-4e60-48c0-ab70-add500e71a45\") && item.GetValueAsString(\"name\") == \"admin\""}c0857f66-fbfa-448f-a35d-afac00a3a9cb - ID подразделения пользователя
Обратите внимание: GetList ищет только тех пользователей, которые находятся непосредственно в самом подразделении. Если требуется искать по всей структуре подразделения, то нужно вместо GetList использовать GetRecursive
Найти во всем списке пользователей пользователя с указанным Email.
URL: /api/item/GetRecursive/e3a94bde-0ca9-456f-b338-4465d40389ee
Тело запроса: {"query": "item => item.ContentTypeId = Guid(\"99c92e22-4e60-48c0-ab70-add500e71a45\") && item.GetValueAsString(\"email\") == \"admin@email.test\""}e3a94bde-0ca9-456f-b338-4465d40389ee - ID списка "Пользователи"
99c92e22-4e60-48c0-ab70-add500e71a45 - это ID типа контента пользователейВ списке "Файлы" найти элемент по имени в заданной папке.
URL: /api/item/GetList/202b3ffa-48b9-4040-a7db-f8d688166f51
Тело запроса: {"query": "item => item.GetValueAsString(\"name\") == \"Test 002-0.1.pdf\""}202b3ffa-48b9-4040-a7db-f8d688166f51 - ID папки
Обратите внимание: GetList ищет только те элементы, которые лежат непосредственно в указанной папке. Если требуется искать во вложенных папках, то нужно вместо GetList использовать GetRecursive
- В списке "Файлы" найти элементы, у которых имя заканчивается на ".pdf".
URL: /api/item/GetList/202b3ffa-48b9-4040-a7db-f8d688166f51
{"query": "item => item.GetValueAsString(\"name\").EndsWith(\".pdf\")"} В списке "Файлы" найти все элементы, у которых атрибут "Статус документа" = "Размещено".
URL: /api/item/GetRecursive/966e62c5-a803-49a0-a1be-e680d130c481
Тело запроса: {"query": "item => item.GetLookupId(\"document_status\") == Guid(\"b9d061b1-7ce7-4756-8230-e502cfe3d8d8\")"}966e62c5-a803-49a0-a1be-e680d130c481 - ID списка "Файлы"
b9d061b1-7ce7-4756-8230-e502cfe3d8d8 - ID статуса "Размещено"Вместо ID списка "Файлы" можно передать ID папки (ID папки проекта, например). В этом случае поиск будет проводится внутри заданной папки
- В списке "Файлы" найти все элементы, у которых атрибут "Статус документа" = "Размещено" или "На входном контроле".
URL: /api/item/GetRecursive/966e62c5-a803-49a0-a1be-e680d130c481
Тело запроса: {"query": "item => new Guid[] { Guid(\"b9d061b1-7ce7-4756-8230-e502cfe3d8d8\"), Guid(\"5cd0640c-1e57-4e09-b0ec-babfb5c72680\") }.Contains(item.GetLookupId(\"document_status\"))"} - В списке "Файлы" найти элементы, у которых значение поля "Трудозатраты этап 2" больше 1.
URL: /api/item/GetRecursive/966e62c5-a803-49a0-a1be-e680d130c481
Тело запроса: {"query": "item => item.GetValueAsInt(\"duration_plan_stage_2\") > 1"} - В списке "Файлы" найти элементы по дате создания >= 01.10.2024 10:00:00.
URL: /api/item/GetRecursive/966e62c5-a803-49a0-a1be-e680d130c481
Тело запроса: {"query": "item => item.InsertDate >= DateTime(2024, 10, 1, 10, 0, 0)"}
Обратите внимание: время передается в UTC - Нужно выводить только пользователей (не подразделения и не группы):
item => item.ContentTypeId = Guid("99c92e22-4e60-48c0-ab70-add500e71a45")
Здесь99c92e22-4e60-48c0-ab70-add500e71a45- это ID типа элемента "Пользователь" - Получить список элементов, у которых поле "Заблокирован" пустое (null) или Ложь (false):
URL: /api/item/GetRecursive/966e62c5-a803-49a0-a1be-e680d130c481
Тело запроса: {"query": "item => item.GetValueAsBool(\"disabled\") == null || item.GetValueAsBool(\"disabled\") == false"}