18-02-2021 17:02

Поиск ДДС

POST   /bs-core/main/fund-transactions/partial-load

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

Поле externalAction является вычисляемым, поэтому в запросах типа partial-load получить его, к сожалению, нельзя.

Запрос

POST /bs-core/main/fund-transactions/partial-load
{
   "fields": [
       "orderId",
       "amountMovingDirection.id",
       "amount",
       "date",
       "contract.id",
       "paymentType.id",
       "settlementAccount.id",
       "cashOffice.id",
       "comment",
       "account.id",
       "client.id",
       "linkedCashOffice.id"
   ],
   "orderBy": "id",
   "orderDirection": "ASC",
   "searchFields": [
   ]
}

Для неполного набора полей по ДДС можно воспользоваться вот таким примером:

{
   "fields": [
       "orderId",
       "contract.id",
       "amount.local"
   ],
   "orderBy": "id",
   "orderDirection": "ASC",
   "orderByFields": [
     { "field": "orderId" },
     { "field": "contract.id", "direction": "desc" }
   ],
   "searchFields": [
       {
           "field": "date",
           "value": ">=2017-09-01 00:00:00"
       },
       {
           "field": "controlAmount.local",
           "value": ">0"
       }
   ]
}
Описание параметров
Параметр Обязателен Тип данных Описание
fields R [collection] Коллекция полей, которые должны вернуться в результатах поиска.
fields.{fieldName} М [string][255]

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

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

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

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

Например: settlementAccount.bank.name - позволяет получить название банка, по счету которого была проведена ДДС (в самом ДДС указан только settlementAccountId - идентификатор счета)

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

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

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

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

orderByFields R [collection]

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

"orderByFields": [
     { "field": "orderId" },
     { "field": "contract.id", "direction": "desc" }
   ]

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

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

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

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

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

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

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

Например: settlementAccount.bank.name - позволяет получить название банка, по счету которого была проведена ДДС (в самом ДДС указан только settlementAccountId - идентификатор счета)

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": "10134756"
       },

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

      {
           "field": "date",
           "value": ">=2017-09-01 00:00:00"
       },

      {
           "field": "date",
           "value": "<=2017-09-01 00:00:00"
       }

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

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

Пример 1: 

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

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

     {
           "field": "comment",
           "value": "5%",
           "ornumber": "1",
       },
 В этом примере будут искаться все записи, у которых в поле contract.id указано 10134756 и при этом одновременно выполняется одно из условий поле orderId  начинается с 1 или поле comment начинается с 5.
То есть, в выражении языка SQL : contract.id = 10134756 AND (orderId like "1%" OR comment like "5%")

Пример 2: 

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

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

    {
           "field": "comment",
           "value": "TEST%",
           "ornumber": "2",
       },

     {
           "field": "comment",
           "value": "ТЕСТ%",
           "ornumber": "2",
       },

 В  выражении языка SQL : (comment like "TEST%" OR comment like "ТЕСТ%" ) AND (orderId like "1%" OR orderId like "5%")

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

Ответ


                        {
    "timestamp": 1504777747170,
    "data": [
        {
            "id": 123409746,
            "fields": {
                "orderId": "1",
                "contract.id": 5544,
                "amount.local": 1234
            }
        },
        {
            "id": 7867123,
            "fields": {
                "orderId": "2",
                "contract.id": 4455,
                "amount.local": 3212
            }
        },
        {
            "id": 0098123,
            "fields": {
                "orderId": "3",
                "contract.id": 42234,
                "amount.local": 3311
            }
        }
    ],
    "status": "ok"
}
                    
Описание параметров
Параметр Обязателен Тип данных Описание
id R [int] Идентификатор ДДС, который соотвествует заданным параметрам фильтрации
fields R [collection] коллекция полей, которые вернулись в ответ на запрос
fields.{field} R [mixed] Набор полей в ответе зависит от того, какие поля были переданы в коллекцию searchFields. Типы данных и значения следует смотреть в описании соответствующих сущностей.