Есть два способа получения списка элементов:

  1. URL: api/item/getList/{parentId}
    Метод: POST
    Описание: получить информацию о всех дочерних элементах по ID родительского элемента
    Входные параметры:
    parentId - ID родительского элемента (ID списка или ID папки внутри списка)
  2. 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.ContentTypeIdGuidID типа элемента
item.InsertDateДата/времяДата/время создания элемента
item.UpdateDateДата/времяДата/время обновления элемента
item.GetValueAsDateTime("название поля")Дата/времяПолучить значение поля типа "дата"
item.GetValueAsString("название поля") СтрокаПолучить значение поля типа "однострочный текст"/"многострочный текст"
item.GetValueAsBool("название поля")ФлагПолучить значение поля типа "флаг"
item.GetValueAsInt("название поля") Целое числоПолучить значение поля типа "целое число"
item.GetLookupId("название поля")GuidПолучить значение поля типа "ссылка на элемент списка"
item.GetValueAsGuid("название поля")GuidПолучить значение поля типа "Guid" (например, поле "source")

Операторы сравнения

ОператорОписаниеПример
==Равно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")
}
Создать объект типа массив GUIDnew 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")

Примеры

  1. Найти в подразделении пользователя с указанным именем.
    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

  2. Найти во всем списке пользователей пользователя с указанным 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 типа контента пользователей

  3. В списке "Файлы" найти элемент по имени в заданной папке.
    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

  4. В списке "Файлы" найти элементы, у которых имя заканчивается  на ".pdf".
    URL: /api/item/GetList/202b3ffa-48b9-4040-a7db-f8d688166f51
    {"query": "item => item.GetValueAsString(\"name\").EndsWith(\".pdf\")"}
  5. В списке "Файлы" найти все элементы, у которых атрибут "Статус документа" = "Размещено".
    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 папки проекта, например). В этом случае поиск будет проводится внутри заданной папки

  6.  В списке "Файлы" найти все элементы, у которых атрибут "Статус документа" = "Размещено" или "На входном контроле".
    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\"))"}
  7. В списке "Файлы" найти элементы, у которых значение поля "Трудозатраты этап 2" больше 1.
    URL: /api/item/GetRecursive/966e62c5-a803-49a0-a1be-e680d130c481
    Тело запроса: {"query": "item =>  item.GetValueAsInt(\"duration_plan_stage_2\") > 1"}
  8. В списке "Файлы" найти элементы по дате создания >= 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
  9. Нужно выводить только пользователей (не подразделения и не группы):
    item => item.ContentTypeId = Guid("99c92e22-4e60-48c0-ab70-add500e71a45")
    Здесь 99c92e22-4e60-48c0-ab70-add500e71a45 - это ID типа элемента "Пользователь"