Примеры работы с 1с Odata

В последнее время все чаще для различных интеграций между 1С и внешними системами я использую 1С Odata. Причина такого выбора проста — нежелание писать лишний код. Ведь уже нет необходимости писать http — или web — сервисы для получения данных из 1с, потому что разработчики платформы уже о нас позаботились. Более подробно о механизме oData от 1с можете почитать в блоге разработчиков. Первая ссылка, вторая ссылка.

Есть документация в 1С, но она не такая подробная как хотелось, некоторые моменты к сожалению не рассмотрены. Рассмотрению такие неочевидных нюансов которых нет в документации 1с я и посвящаю свою статью.

Получение данных из регистра сведение с отбором по владельцу

Итак для того, чтобы просто получить данные без отбора регистра сведений нам нужно обратиться к ресурсу.

http://<сервер>/<имя публикации>/odata/standard.odata/InformationRegister_Штрихкоды?$top=5&$format=application/json;odata=nometadata

Параметр $top=5 ограничивает выборку первыми 5-ми записями, так как у нас данные получаются из регистра сведений Штрихкоды который содержит десятки тысяч записей.
Параметр $format=application/json;odata=nometadata нужен для получения записей в формате json и без метаданных. При выполнении get запроса сервер вернет.

Отлично даннные получены. Теперь мы хотим их отфильтровать по владельцу. Для этого применим $filter. url запроса в итоге пример вид:

http://<сервер>/<имя публикации>/odata/standard.odata/InformationRegister_Штрихкоды?$filter=Владелец eq cast (guid'7e718efc-85f2-11e9-9bec-e0d55e5ecc06', 'Catalog_Номенклатура') and startswith(Штрихкод, '2') eq false&$format=application/json;odata=nometadata

Тут следует отметить что просто указать

$filter=Владелец eq guid'7e718efc-85f2-11e9-9bec-e0d55e5ecc06'

недостаточно, нужно обязательно применить функцию cast.

cast

Приводит значение к указанному типу. Может использоваться при отборе по полям составного типа. В следующем примере эта функция создаёт значение ссылки на справочник Товары, которая имеет указанный уникальный идентификатор.

Также вы в запросе выше мы использовали функцию startswitch() для того, чтоб отсечь штрихкоды начинающиеся на 2. Такие штрихкоды генерит система для характеристик номенклатуры в типовых конфигурациях.

Posted in 1C

Добавить комментарий

Ваш адрес email не будет опубликован.