Интерфейс OData: представление данных

Данные, возвращаемые стандартным интерфейсом OData, могут быть представлены в виде XML-документа или JSON-документа. Это зависит от того, в каком формате запрашиваются данные.

Интерфейс OData: представление данных

Данные, возвращаемые стандартным интерфейсом OData, могут быть представлены в виде XML-документа или JSON-документа. Это зависит от того, в каком формате запрашиваются данные.

Для различных типов данных используется следующее соответствие между типом «1С:Предприятия» и типом OData:

Тип «1С:Предприятия» Тип свойства OData

Строка

Edm.String

Дата

Edm.DateTime

Число (целое)

Edm.Int16, Edm.Int32, Edm.Int64

Число (дробное)

Edm.Double

Булево

Edm.Boolean

Ссылка, УникальныйИдентификатор

Edm.Guid

Перечисление

Edm.String

ХранилищеЗначения

Состоит из трех свойств*:

  • 1. Навигационное свойство;
  • 2. <Имя свойства>_Base64Data;
  • 3. <Имя свойства>_Type.

Ссылочный тип

Два свойства:

  • Собственно значение ссылки на объект типа Edm.Guid;
  • Навигационное свойство.

Составные типы

Два свойства типа Edm.String:

  • Значение фактического типа, выраженное в виде строки;
  • Имя фактического типа.

В таблице символ * означает, что:

  • С помощью навигационного свойства можно получить данные, хранящиеся в реквизите:
    • Для типа Картинка – будет получена собственно картинка с соответствующим значением HTTP-заголовка content-type;
    • Для типа ДвоичныеДанные – будет получен байтовый поток;
    • Для остальных типов – XDTO-сериализованное значение хранимых данных.
  • Свойство <Имя свойства>_Base64Data хранит данные, которые могут быть получены с помощью навигационного свойства, только закодированные в Base64. Редактировать данные реквизита типа ХранилищеЗначения можно только с помощью этого свойства.
  • Свойство <Имя свойства>_Type описывает тип данных, хранимых в реквизите. Может принимать одно и трех значений:
    • application/octet-stream – двоичные данные;
    • application/xml+xdto – XDTO-сериализованный объект;
    • значение HTTP-заголовка content-type, соответствующего картинке, хранящейся в реквизите, например, image/jpeg для картинки формата JPEG.

Остальные типы не поддерживаются, и при попытке их чтения будет сгенерирована ошибка c кодом 501.

Имена свойств могут оканчиваться на различные суффиксы. Такие свойства имеют специальный смысл. Далее будут более подробно рассмотрены возможные суффиксы:

  • Key;
  • Type;
  • Base64Data;
  • ____Presentation.

Key

Свойство с таким суффиксом содержит значение ключа соответствующего ссылочного реквизита объекта (без такого суффикса) или независимого регистра сведений без измерений. Имя с таким суффиксом используется для установки отбора в качестве имени реквизита, по которому выполняется отбор. Например, для установки отбора по ссылочному полю Контрагент, условие будет выглядеть следующим образом: Контрагент_Key=guid’value’. При этом свойство Контрагент будет содержать представление контрагента с указанным значением ссылки.

Type

Данный суффикс используется для описания реквизита составного типа. Так, если в данных есть поле составного типа Контрагент, то в документе, который возвращает стандартный интерфейс OData, этому полю будет соответствовать два свойства:

  • Контрагент_Type – будет содержать описание типа значения реквизита в виде строки (тип Edm.String, диспетчеризационное свойство);
  • Контрагент – будет содержать значение реквизита (соответствующего типа).

Перечень допустимых типов, которые могут быть использованы в поле с таким суффиксом, определяется схемой сервиса, который можно получить при запросе полного описания стандартного интерфейса OData (см. здесь). Таким образом, при необходимости установить тип Документ.РасходТовара, в элемент с суффиксом _Type должно быть записано значение StandardODATA.Document_РасходТовара.

Если значение реквизита составного типа в информационной базе «1С:Предприятия» имеет значение Неопределено, то диспетчеризационное свойство будет иметь значение StandardODATA.Undefined, а само значение свойства должно игнорироваться.

Пример представления реквизита составного типа:

<d:РеквизитСоставной/>
						<d:РеквизитСоставной_Type>StandardODATA.Undefined</d:РеквизитСоставной_Type>
					

Base64Data

Данный суффикс используется при указании имени свойства, содержащего данные, расположенные в реквизите типа ХранилищеЗначения, в виде строки Base64. Так, если в объекте конфигурации есть реквизит Файл, который имеет тип ХранилищеЗначения, то в документе, который возвращает стандартный интерфейс OData, этому полю будет соответствовать два свойства:

  • Файл_Type – содержит наименование типа данных, хранимых реквизитом;
  • Файл_Base64Data – содержит строку Base64, содержащую сами данные.

____Presentation

Свойство <Имя свойства>____Presentation содержит представление реквизита (между именем свойства и Presentation находятся 4 символа «_»). Значение поля эквивалентно значению, которое является результатом работы функции языка запросов Представление().

Поля представлений не включаются в результаты запроса с пустым параметром $select и при указании в параметре $select значений * и **. Таким образом, если необходимо получить все реквизиты объекта и представления некоторых реквизитов, необходимо указать значение *, а затем отдельно перечислить поля представлений требуемых реквизитов, разделяя их запятыми: $select=*, РеквизитСсылка____Presentation.

Для получения представлений всех реквизитов объекта, следует в параметре $select указать значение *____Presentation: $select=*____Presentation.

Для получения значений всех полей и представлений для всех полей, следует использовать следующее выражение: $select=*, *____Presentation.

Для получения представления текущей сущности имеется возможность указывать в списке запрашиваемых полей поле Presentation: $select=Ref_Key, Presentation. В этом случае будет получено значение ссылки и представление этой ссылки.

Поля представлений не содержатся в описании метаданных, которое возвращается в описании стандартного интерфейса OData (параметр $metadata). Получение представления не поддерживается для табличных частей и реквизитов типа ХранилищеЗначения. Не поддерживается модификация значений для полей представлений.

Уже более 10 000 компаний работают в облачной 1С от 42Clouds

– Консультация по 1С Бесплатно!

– Поддержка 24/7 по техническим вопросам: в чате, по телефону, по почте

– Все типовые конфигурации онлайн, доступ через RDP, Remote App, Web

Смотрите также

Оставьте заявку. Мы свяжемся с вами в самое ближайшее время.

*нажимая на кнопку, Вы даете согласие на обработку персональных данных

Оставьте отзыв о нас

Расскажите, как сервис 42Clouds помог вашему бизнесу.

Отзыв будет опубликован после проверки модератором.

Оставьте заявку. Мы свяжемся с вами в самое ближайшее время.

*нажимая на кнопку, Вы даете согласие на обработку персональных данных