Сортировка
Для большинства коллекций, возвращаемых JSON API, доступна сортировка.
Сортировка поддерживается для следующих типов полей:
- числовой,
- строковый,
- дата-время,
- логический,
- uuid.
Доступные поля для сортировки
В зависимости от вызываемого endpoint’а сортируемые поля могут отличаться. В таблицах ниже представлены сортируемые поля справочников и документов.
| Endpoint (справочники) | Сортируемые поля |
|---|---|
| Контрагент | id, version, updated, updatedBy, name, description, code, externalCode, archived, created, phone, email, fax |
| Ассортимент | name, code |
| Валюта | id, name, archived, default, fullname, code, isoCode, multiplicity |
| Товар | id, version, updated, updatedBy, name, code, externalCode, archived, pathName, isSerialTrackable, weighed, weight, volume, syncId |
| Услуга | id, version, updated, updatedBy, name, code, externalCode, archived, pathName, syncId |
| Комплект | id, version, updated, updatedBy, name, description, code, externalCode, archived, pathName, article, weight, volume, syncId |
| Модификация | id,version, updated,updatedBy, name, description, code,externalCode |
| Группа товаров | id, version, updated, updatedBy, name, externalCode, archived, pathName |
| Серия | id,version, updated,updatedBy, name, description, code,externalCode |
| Договор | id, version, updated, updatedBy, name, description, code, externalCode, archived, moment |
| Проект | id,version, updated,updatedBy, name, code,externalCode, archived |
| Статья расходов | id,version, updated,updatedBy, name, description, code,externalCode |
| Страна | id,version, updated,updatedBy, name, description, code,externalCode |
| Отдел | id |
| Единица измерения | id, version, updated, name, description, code, externalCode |
| Сотрудник | id, version, updated, updatedBy, name, description, externalCode,archived,email,phone,lastname, firstname, middlename, uid |
| Склад | id,version, updated,updatedBy, name, description, code, externalCode, address, archived, pathName |
| Юрлицо | id,version, updated,updatedBy, name, description, code,externalCode, archived, created, inn, actualAddress, legalTitle, legalAddress, kpp, phone, email, fax |
| Точка продаж | id,version, updated,updatedBy, name, description, externalCode, address, active |
| Задача | id, created, version, updated, description, dueToDate, done |
| Endpoint (документы) | Сортируемые поля |
|---|---|
| Розничная смена | id, syncId, version, updated, updatedBy, name, description, externalCode, moment, applicable, sum, created, closeDate |
| Оприходования | id, syncId,version, updated,updatedBy,name, description, externalCode,moment, applicable,sum, created |
| Заказ покупателя | id, syncId,version, updated,updatedBy,name, description, externalCode,moment, applicable,sum, created, deliveryPlannedMoment |
| Заказ поставщику | id, syncId,version, updated,updatedBy,name, description, externalCode,moment, applicable,sum, created, deliveryPlannedMoment |
| Счет покупателю | id, syncId, version, updated, updatedBy, name, description, externalCode, moment, applicable, sum, created |
| Счет поставщика | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created, incomingNumber, incomingDate, paymentPlannedMoment |
| Входящий платеж | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created, paymentPurpose, incomingNumber, incomingDate |
| Исходящий платеж | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created, paymentPurpose |
| Приходный ордер | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created, paymentPurpose |
| Расходный ордер | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created, paymentPurpose |
| Отгрузка | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created |
| Приемка | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created |
| Списание | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created |
| Перемещение | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created |
| Розничная продажа | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created |
| Розничный возврат | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created |
| Внесение денег | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created |
| Выплата денег | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created |
| Возврат покупателя | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created |
| Возврат поставщику | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created |
| Счет-фактура выданный | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created |
| Счет-фактура полученный | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created |
| Инвентаризация | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created |
| Полученный отчет комиссионера | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created, incomingDate |
| Выданный отчет комиссионера | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created |
| Прайс-лист | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created |
| Тех. карта | id, syncId, version, updated, updatedBy, name, description, externalCode |
| Заказ на производство | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created, deliveryPlannedMoment, quantity |
| Тех. операция | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created, quantity |
| Внутренний заказ | id, syncId,version, updated,updatedBy, name, description, externalCode,moment, applicable, sum, created, quantity |
Как использовать сортировку через JSON API
Для применения сортировки к коллекции необходимо добавить в запрос order=[field name],[asc/desc], где field name - имя поля для сортировки. Опционально через запятую можно указать направление сортировки:
asc- по возрастанию, значение по умолчанию,desc- по убыванию. Например, для сортировки поляnameпо возрастанию нужно использовать?order=name, ascили?order=name, а по убыванию?order=name,desc.
Сортировка также доступна одновременно для нескольких полей, поля для сортировки необходимо указывать через разделитель ;. Например, ?order=name,asc;code,desc.
Рассмотрим применение сортировки. Предварительно создадим товары с различными наименованиями, которые могут начинаться с латиницы, кириллицы, цифр или специальных символов.
curl -X POST \
https://online.moysklad.ru/api/remap/1.1/entity/product \
-H 'Authorization: Basic token=' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-d '[
{
"name":"12345",
"weight":0.1,
"weighed":true,
"syncId":"8b7c97cf-cf77-4f7e-b200-d264125578ab"
},
{
"name":"Pencil",
"weight":0.01,
"syncId":"5b7c97cf-cf77-4f7e-b200-d264125578ab"
},
{
"name":"Pencil 123",
"weight":0.01,
"syncId":"3b7c97cf-cf77-4f7e-b200-d264125578ab"
},
{
"name":"Pencil Blue",
"weight":0.11,
"weighed":true
},
{
"name":"Pencil Red",
"weight":0.2,
"syncId":"1b7c97cf-cf77-4f7e-b200-d264125578ab"
},
{
"name":"Карандаш",
"weight":0.1,
"syncId":"2b7c97cf-cf77-4f7e-b200-d264125578ab"
},
{
"name":"Карандаш 123",
"weight":0.32,
"syncId":"4b7c97cf-cf77-4f7e-b200-d264125578ab"
},
{
"name":"Карандаш желтый",
"weight":0.12,
"weighed":true,
"syncId":"7b7c97cf-cf77-4f7e-b200-d264125578ab"
},
{
"name":"Карандаш зеленый",
"weight":0.4,
"syncId":"8c7c97cf-cf77-4f7e-b200-d264125578ab"
},
{
"name":"!!! Это карандаш",
"weight":0.1,
"syncId":"3d7c97cf-cf77-4f7e-b200-d264125578ab"
}
]'
Чтобы получить коллекцию товаров, отсортированных по имени, необходимо указать поле name и направление сортировки, как в примере ниже
curl -X GET \
'https://online.moysklad.ru/api/remap/1.1/entity/product?order=name' \
-H 'Authorization: Basic token==' \
-H 'Cache-Control: no-cache'
Ответ будет содержать следующий порядок по возрастанию:
| name |
|---|
| 12345 |
| Pencil |
| Pencil 123 |
| Pencil Blue |
| Pencil Red |
| Карандаш |
| Карандаш 123 |
| Карандаш желтый |
| Карандаш зеленый |
| !!! Это карандаш |
Изменим направление сортировки
curl -X GET \
'https://online.moysklad.ru/api/remap/1.1/entity/product?order=name,desc' \
-H 'Authorization: Basic token==' \
-H 'Cache-Control: no-cache'
| name |
|---|
| !!! Это карандаш |
| Карандаш зеленый |
| Карандаш желтый |
| Карандаш 123 |
| Карандаш |
| Pencil Red |
| Pencil Blue |
| Pencil 123 |
| Pencil |
| 12345 |
Попробуем отсортировать товары одновременно по убыванию логического поля weighed и по возрастанию поля name.
curl -X GET \
'https://online.moysklad.ru/api/remap/1.1/entity/product?order=weighed,desc;name' \
-H 'Authorization: Basic token=' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json'
| weighed | name |
|---|---|
| true | 12345 |
| true | Pencil Blue |
| true | Карандаш желтый |
| false | Pencil |
| false | Pencil 123 |
| false | Pencil Red |
| false | Карандаш |
| false | Карандаш 123 |
| false | Карандаш зеленый |
| false | !!! Это карандаш |
Добавим еще сортировку по числовому полю weight.
curl -X GET \
'https://online.moysklad.ru/api/remap/1.1/entity/product?order=weighed,desc;weight,desc;name' \
-H 'Authorization: Basic token=' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json'
| weighed | weight | name |
|---|---|---|
| true | 0.12 | Карандаш желтый |
| true | 0.11 | Pencil Blue |
| true | 0.1 | 12345 |
| false | 0.4 | Карандаш зеленый |
| false | 0.32 | Карандаш 123 |
| false | 0.2 | Pencil Red |
| false | 0.1 | Карандаш |
| false | 0.1 | !!! Это карандаш |
| false | 0.01 | Pencil |
| false | 0.01 | Pencil 123 |
Кроме текстовых, числовых и логических полей доступна сортировка по полям типов uuid и дата-время.
Например, применим сортировку по полю syncId.
curl -X GET \
'https://online.moysklad.ru/api/remap/1.1/entity/product?order=syncId' \
-H 'Authorization: Basic token=' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json'
| syncId | name |
|---|---|
| 1b7c97cf-cf77-4f7e-b200-d264125578ab | Pencil Red |
| 2b7c97cf-cf77-4f7e-b200-d264125578ab | Карандаш |
| 3b7c97cf-cf77-4f7e-b200-d264125578ab | Pencil 123 |
| 3d7c97cf-cf77-4f7e-b200-d264125578ab | !!! Это карандаш |
| 4b7c97cf-cf77-4f7e-b200-d264125578ab | Карандаш 123 |
| 5b7c97cf-cf77-4f7e-b200-d264125578ab | Pencil |
| 7b7c97cf-cf77-4f7e-b200-d264125578ab | Карандаш желтый |
| 8b7c97cf-cf77-4f7e-b200-d264125578ab | 12345 |
| 8c7c97cf-cf77-4f7e-b200-d264125578ab | Карандаш зеленый |
| null | Pencil Blue |
У товара Pencil Blue отсутствует значение поля поэтому при сортировке по возрастанию, оно выводится в конце. Аналогичное поведение и для других полей со значением null.