08-04-2019 17:17

Поиск по операциям

POST   /bs-core/main/operations/partial-load

Метод предназначен для поиска по операциям с возможностью задавать набор полей в ответе и порядок сортировки элементов.

Запрос

POST /bs-core/main/operations/partial-load
{
    "fields" : [
               "contract.id", 
               "date", 
               "amountType.id", 
               "actionType.id", 
               "paymentType.id", 
               "outBalance", 
               "totalAmount.local", 
               "document.id", 
               "fundTransaction.id", 
               "user.id", 
               "realDate", 
               "autoAccept"
               ],
   "searchFields": [
     { 
     	"field": "contract.id", 
        "value": ">=111" 
     	
     }
   ],
   "orderBy": "date",
   "orderDirection": "ASC"
}
Описание параметров
Параметр Обязателен Тип данных Описание
fields R [collection] Коллекция полей, которые должны вернуться в результатах поиска.
fields.{fieldName} М [string][255]

В качестве элементов списка могут быть указаны любые поля из сущности операция, которые не являются внешними ключами.

Например: "date", "id" и так далее. 

Признаком внешнего ключа является указание в описании параметра на метод, который позволяет по ID (по значению параметра - получить объект). Пример: contractId.

Для полей, которые являются внешними ключами - возможно получение любых полей объекта, ID которого указано в поле. Например: в объекте операция есть поле contractId, которое является внешним ключом. Это значит, что мы можем запросить любое поле объекта contract: contract.id, contract.name и так далее. Также возможны варианты, при которых мы можем запросить поля из более глубоких сущностей, при наличии внешних ключей в объекте. 

Например: contract.client.passport.seria - позволяет получить серию паспорта клиента.

orderBy R [string][255] Название поля, по которому надо делать сортировку. С релиза 2.0.0-65 для сортировки следует использовать коллецию orderByFields. ​
orderDirection R [enum ]

Направление сортировки результатов поиска

  • DESC - по убыванию
  • ASC - по позрастанию

С релиза 2.0.0-65 для направления сортировки следует передавать направление в коллекции orderByFields.

orderByFields R [collection]

Массив полей, по которым происходит сортировка.

"orderByFields": [
     { "field": "date" },
     { "field": "id", "direction": "desc" }
    ]

В этом примере сортировка происходит по полям date и id. Также результат сортируется по убыванию. В этом примере сортировка по убыванию происходит  по id. Если поле direction не указано, то сортировка по полю выполняется по возрастанию. Если в запросе на ядро переданы оба способа сортировки, то старый способ задания сортировки игнорируется. Эти изменения действуют с релиза 2.0.0-65. Смотрите также описание параметров orderBy и orderDirection.

searchFields R [collection ] Условия поиска (фильтрации) операций, наличие параметра searchFields является обязательным, однако это может быть пустая коллекция (условия поиска могут быть не заданы). Строго рекомендуется задавать параметры фильтрации. 
searchFields._.field М [string][255 ]

Название поля, по которому нужно сделать фильтрацию. Правила формирования этого поля следующие: 

В качестве элементов списка могут быть указаны любые поля из сущности операция, которые не являются внешними ключами.

Например: "date", "outBalance" и так далее. 

Признаком внешнего ключа является указание в описание параметра на метод, который позволяет по ID (по значению параметра - получить объект). Пример: contractId.

Для полей, которые являются внешними ключами - возможно получение любых полей объекта, ID котрого указано в поле. Например: в объекте контракт есть поле Id, котрое является внешним ключом. Это значит, что мы можем запросить любое поле объекта контракта: contract.id, contract.client.lastName и так далее. Также возможны варианты, при которых мы можем запросить поля из более глубоких сущностей, при наличии внешних ключей в объекте. 

Например: contract.client.passport.seria - позволяет получить серию паспорта клиента.

searchFields._.value М [string][255]

Значение для фильтрации. 

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

Для указания значений этого параметра можно использовать следующие операторы: %, like, !=, null, not null, >, <, >=, <=.

Для передачи даты используется следующий формат YYYY-MM-DD (действует с 2.0.0-65 релиза) например 2018-05-25, а для передачи даты и времени YYYY-MM-DD hh:mm:ss (например 2018-05-25 12:22:35).

Пример: 

      {
           "field": "contract.id",
           "value": "123"
       },

Так и условия строгого и нестрогого неравенства, например: 

      {
           "field": "contract.id",
           "value": ">=123"
       }

searchFields._.ornumber М [string][255]

Значение для группировки параметров поиска (фильтрации) в условии OR.
Поле не обязательное и используется в случаях когда нужно искать не все условия по И, но и в том числе условия по ИЛИ.
Например, нужно найти все записи у которых в поле1 указано значение XXXX, при этом в поле2 указано YYYY или ZZZZ.
В этом случае можно использовать поле ornumber. Значение может быть числом или символом, но уникальным в рамках одной группы условий ИЛИ. Зарезервированным значением является  -1

Пример 1

      {
           "field": "contract.id",
           "value": "10134756",

          "ornumber": "1"
       },

      {
           "field": "contract.client.lastName​",
           "value": "Иван",
           "ornumber": "
1"
       }
 В этом примере будут искаться все записи, у которых в поле contract.id указано 10134756 или поле contract.client.lastName​​ начинается с "Иван".
То есть, в выражении языка SQL : contract.id = 10134756 OR contract.client.lastName​​ like "Иван"

Пример 2

      {
           "field": "name",
           "value": "1%",
           "ornumber": "
1",
       },

     {
           "field": "name",
           "value": "5%",
           "ornumber": "
1",
       },

    {
           "field": "loanAmount",
           "value": "10000",
           "ornumber": "
2",
       },

     {
           "field": "loanAmount",
           "value": "20000",
           "ornumber": "
2",
       },

 В  выражении языка SQL : (name like "1%" OR name like "5%) AND (loanAmount = 10000 OR loanAmount = 20000).

countFrom R [int] Смещение от начала поиска, т.е. если хотим получить с 10-ой записи, то передаем 10.
countTo R [int] Лимит (сколько записей будет возвращено).

Ответ

У данной функции отсутствует описание параметров ответа