Про параметры $count, $inlinecount, $orderby, $expand: описание и примеры использования.
Интерфейс OData: параметры запроса
$count
Данный параметр позволяет получить в качестве результата запроса не выборку, а ее (выборки) размер. При успешном выполнении, тело ответа должно содержать только число элементов коллекции, отформатированное как обычное число.
Пример:
// возвращает количество элементов справочника Товары, // для которых справедливо условие: значение реквизита Цена больше 500 https://host/base/standard.odata/Catalog_Товары/$count?$filter=Цена gt 500
$inlinecount
Параметр позволяет указать, что система должна включить результат запроса не только полученные записи, но и количество этих записей. Для этого необходимо указывать значение параметра $inlinecount, равное allpages. Использование параметра $inlinecount со значением none подавляет возвращение количества записей вместе с результатом запроса. Если параметр $inlinecount не указан в теле запроса, то количество записей вместе с результатом запроса не возвращается. Использование параметра $inlinecount приводит к игнорированию параметров $skip и $top. Допускается совместное использование параметров $filter и $inlinecount.
Пример:
http://host/base/zone/odata/standard.odata/Catalog_Товары?$inlinecount=allpages0
Пример результата запроса, с параметром $inlinecount=allpages:
Формат atom-xml:
<?xml version="1.0" encoding="UTF 8"?>
<feed xmlns=http://www.w3.org/2005/Atom xmlns:at=http://purl.org/atompub/tombstones/1.0 xmlns:d=http://schemas.microsoft.com/ado/2007/08/dataservices xmlns:m=http://schemas.microsoft.com/ado/2007/08/dataservices/metadata xml:base="http://host/ODataTests/odata/standard.odata/">
<entry>
…
</entry>
…
<entry>
…
</entry>
<m:count>19</m:count>
</feed>
$orderby
Данный параметр позволяет задать упорядочивание результата запроса. Значение параметра $orderby содержит список реквизитов, разделенных запятыми. Значение реквизита может включать направление упорядочивания:
- asc – для упорядочивания по возрастанию;
- desc – для упорядочивания по убыванию.
Направление упорядочивания должно быть отделено от имени реквизита на 1 и более пробелов. Если asc или desc не указан, то считается, что требуется упорядочивание по возрастанию.
Пример:
http://host/base/zone/odata/standard.odata/Catalog_Товары?$orderby=Название asc, Производитель desc
Допускается упорядочивание по свойствам дочерних реквизитов. В этом случае полное имя реквизита, по которому выполняется упорядочивание, формируется с использованием разделителя “/”.
Пример:
http://host/base/zone/odata/standard.odata/Document_Расход?$orderby=Контрагент/ИНН asc
В этом примере упорядочивание будет произведено по возрастанию (asc) значения реквизита ИНН у сущности, на которую ссылается реквизит Контрагент документа Расход.
$expand
Данный параметр позволяет вместе с результатами основного запроса получать значения связанных сущностей, что позволит не запрашивать каждую сущность отдельно.
Значением параметра выступает список из навигационных ссылок или составных реквизитов (если составные реквизиты могут принимать ссылочное значение), разделенных запятыми. Для расширения реквизитов составных реквизитов, после имени составного реквизита должно идти название типа, на который может хранить ссылку составной реквизит, а уже после этого сам расширяемый реквизит. Тогда, если у сущности составной реквизит имеет ссылку на объект указанного типа, то в нем будет расширен указанный реквизит. Если же значение является ссылкой на объект иного типа или не является ссылкой, то расширение проводиться не будет.
Возможно использование опции для расширения сущностей из результатов функций SliceLast() и SliceFirst().
Пример:
https://host/base/zone/odata/standard.odata/Catalog_Клиенты?$expand=Сертификат
Для каждого элемента из справочника Клиенты, в результат запроса должен быть помещен объект, на который ссылается реквизит Сертификат.
Пример:
https://host/base/zone/odata/standard.odata/Catalog_Клиенты?$expand=Договор/Document_ДоговорНайма/Заявление
Для каждого элемента из справочника Клиенты, в результат запроса должен быть добавлен объект, на который ссылается реквизит составного типа Договор (если он содержит какое-либо ссылочное значение). Если реквизит Договор хранит ссылку на объект типа ДокументСсылка.ДоговорНайма, то объект, на который ссылается Договор.Заявление так же должен быть добавлен в результате запроса.
Значение * в конце пути параметра $expand означает необходимость раскрыть все навигационные ссылки внутри сущности. Однако, нельзя раскрывать навигационные поля у составного реквизита без явного указания типа ссылки.
Пример:
https://host/base/zone/odata/standard.odata/Catalog_Клиенты?$expand=Договор/Document_ДоговорНайма/*
В данном примере Договор – это составной реквизит. Данный вариант указания * не поддерживается.
Пример:
https://host/base/zone/odata/standard.odata/Catalog_Клиенты?$expand=*
Для каждого элемента из справочника Клиенты, в результат запроса должны быть добавлены объекты, на которые ссылаются все навигационные ссылки объекта Клиента.
Пример:
https://host/base/zone/odata/standard.odata/Catalog_Клиенты?$expand=Договор/*
Для каждого элемента из справочника Клиенты, в результат запроса должны быть добавлены объекты, на которые ссылаются все навигационные ссылки внутри объекта Договор и сам объект Договор. При этом реквизит Договор является реквизитом ссылочного типа.
Ограничения параметра $expand:
- Не поддерживается расширение реквизитов табличных частей.
- Не поддерживается расширение при запросе одиночных сущностей (сущность, строки табличной части, запись регистра).
- Расширение ссылочных и составных типов виртуальных таблиц не соответствует протоколу OData версии 3.
Запрос, в котором будет выполняться расширение измерения виртуальной таблицы будет выглядеть следующим образом:
https://host/base/zone/odata/standard.odata/AccountingRegister_РегистрБухгалтерии/Balance?$expand=Организация
В результате исполнения этого запроса будет получен следующий результат:
<d:Организация_Key>УникальныйИдентификатор</d:Организация_Key>
<d:Организация>
…ДанныеОбъекта…
</d:Организация>
При расширении составного типа поведение аналогично, за исключением того, что данные объекта будут представлены в элементе с суффиксом _Expanded.
- Сущность – в качестве сущности может выступать один из 4 групп объектов системы «1С:Предприятие»: объектные типы, наборы записей регистров, записи регистров и строки табличных частей объектных типов. Записи регистров и строки табличных объектных