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

  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.GetValueAsLookupIdList("название поля")[Guid]Получить значения поля типа "ссылка на элемент списка" с флагом "Множественный выбор из списка"
item.GetValueAsGuid("название поля")GuidПолучить значение поля типа "Guid" (например, поле "source")
item.InsertUser.IdGuidGuid пользователя создавшего элемент
item.UpdateUser.IdGuidGuid пользователя изменившего элемент

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

ОператорОписаниеПример
==Равно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 типа элемента "Пользователь"
  10. Получить список элементов, у которых поле "Заблокирован" пустое (null) или Ложь (false):
    URL: /api/item/GetRecursive/966e62c5-a803-49a0-a1be-e680d130c481
    Тело запроса: {"query": "item => item.GetValueAsBool(\"disabled\") == null || item.GetValueAsBool(\"disabled\") == false"}
  • No labels