HTTP Сервисы: Путь к своему сервису. Часть 4
Продолжение статьи «HTTP Сервисы: Путь к своему сервису. Часть 3». В предыдущих частях мы уже о многом поговорили. В этой части поговорим про размер сообщений, о файлах, о порциях и немножко, о регламентах.
- Описание
- Подробнее
Описание
- В первой части мы создали каркас для Get метода в расширении конфигурации.
- Во второй части мы поработали с OData и создали обработку, получающую через HTTP-Сервис используя метод Get данные сформированные при помощи СКД.
- В третьей части мы поработали со всеми методами. Сделали пример формирующий данные при помощи СКД, работающий как через Get, так и через Post. Также поработали с длительными операциями.
В этой части поговорим о такой важной вещи как порционная передача данных. Работать будем в основном с методами GET и POST, немножко затронем OData.
HTTP-сервис будет в расширении конфигурации БСП 3.0.1.231 на платформе 8.3.12.1595.
Начнем.
Немножко про OData и порции.
Есть у OData сильный недостаток, если хотите его испытать сделайте запрос к самому большему объекту в вашей боевой базе, ну и попробуйте поработать. Вскоре пользователи прибегут к вам сами.
Для того чтобы такого не происходило нужно делать следующие вещи:
- Делайте выборку только по тем реквизитам, которые вам нужны. Для этого используйте $select.
- Перед тем как делать запрос уточните количество записей. Для этого используйте $count.
- count — Позволяет получить в качестве результата запроса размер выборки. При успешном выполнении, тело ответа должно содержать только число элементов коллекции, отформатированное как обычное число.
- Если записей много забирайте их порциями через $top и $skip.
- top — Ограничивает количество записей, возвращаемых при обращении к ресурсу.
- skip — Позволяет исключить из результата запроса первые несколько записей. Если параметры $top и $skip указываются одновременно, то параметр $skip будет применен раньше, чем параметр $top. Приоритет применения параметров не зависит от порядка их указания в теле запроса.
- Я бы еще рекомендовал использовать JSON, так как меньше весит, но тут на вкус и цвет…
Предлагаю сделать небольшую обработку, которая будет забирать порциями данные из справочника КлассификаторБанков, он самый большой в БСП. Порция по умолчанию будет равна 1000 элементов.
Воспользуемся обработкой Доступный состав стандартного интерфейса OData и дадим доступ к нужному нам справочнику.

Узнаем сколько в справочнике элементов. Наш запрос будет таким: http://127.0.0.1/DemoSSL3_0_1_231/odata/standard.odata/Catalog_КлассификаторБанков/$count?$select=Ref_Key,Description,Code,DeletionMark,IsFolder&$format=json;odata=nometadata
4774 элемента. Далее набросаем обработку.
Создаем реквизиты:
- КоличествоСтраниц – Число. Получаем путем округления в большую сторону количество элементов\Порцию
- КоличествоЭлементов – Число. Количество элементов полученных по OData.
- ОбъектКонфигурации – Строка. Представление элемента в OData.
- Порция – Число. Количество элементов на странице.
- Результат – Строка.
- ТекущаяСтраница – Число.
- Селект — Строка. Кусок запроса с параметрами выборки. В нашем примере "$select=Ref_Key,Description,Code,DeletionMark,IsFolder&"
Создаем Команды:
- НачальнаяЗагрузка – Загружаем количество элементов и рассчитываем количество страниц.
- Вперед – Загружаем следующую порцию.
- Назад – загружаем предыдущую порцию.


