Сортировка
Для большинства коллекций, возвращаемых 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
.