# Основы работы OData

Для начала нам необходимо освоить специальную терминологию работы с OData. <br>
Будут использованы следующие термины:<br>
* **Сущность** – объект, который обладает уникальностью (аналог объектов в системе «1С Предприятие»). Сущность имеет набор свойств, по которым и можно определить её уникальность. Поиск объекта осуществляется по уникальному ключу.<br>
* **Набор сущностей** – коллекция сущностей определенного типа.<br>
* **Составной тип** – набор свойств, не обладающих идентичностью.<br>
* **Функция** - набор некоторых операций, выполняемых на стороне сервера, возвращающий данные (не обязательно сущность или набор сущностей) и не приводящий к наблюдаемым побочным эффектам (изменениям данных). Функция обязательно связана с сущностью или набором сущностей.<br>
* **Действие** – функция, которая изменяет данные.<br>

Также стоит отдельно   отдельно рассмотреть **свойства** сущности.<br> 
Свойства сущности - это реквизиты объектов «1С Предприятия». В некоторых случаях (например, реквизит объекта конфигурации составного типа) реквизит может быть представлен несколькими свойствами, одно из которых будет **навигационным**. <br>
Такое свойство содержит в качестве значения ссылку (URL) на сущность, описывающую объект «1С:Предприятия». <br>
 
Для подключения к OData используем HTTP-запрос и URL, который будет состоять из следующих частей:<br>
* Адрес информационной базы;<br>
* Признак обращения к стандартному интерфейсу OData;<br>
* Имя ресурса, к которому выполняется обращение;<br>
* Параметры запроса обращения к ресурсу.<br>
 
Теперь рассмотрим каждую из частей отдельно:<br>
**Адрес информационной базы.**<br>
Указываем имя, которое было указано во время публикации информационной базы (в примере – *smallbusiness*).<br>
 
**Признак обращения к стандартному интерфейсу OData.**<br>
Используем строку:<br>
*/odata/standard.odata*<br>

**Имя ресурса, к которому выполняется обращение.**<br>
Указываем ресурс, по которому нужно получить или изменить данные. Так же можно ввести идентификатор ресурса (возможно с параметрами):<br>
*$metadata, Catalog_Контрагент(guid'value'*<br>

**Параметры запроса обращения к ресурсу.**<br>
В качестве параметров обращения выступают параметры в виде, принятом для HTTP-запросов:<br>
*?ключ=значение&ключ2=значение2*<br>
При обращении к ресурсу могут использоваться специальные ключевые слова, имеющие специальное назначение:<br>
* *$format* – указывает, в каком формате необходимо получить данные. Если ключевое слово не указано, данные получаются в формате atom-xml.<br>
* *$format=atom* – возвращает данные в формате atom-xml.<br>
* *$format=json* – возвращает данные в формате json. Для указания того, что данные должны возвращаться в формате json, можно указать MIME-тип application/json в заголовке Accept HTTP-запроса на получение данных.<br>
* *$metadata* – указывает, что требуется получить описание стандартного интерфейса OData.<br>
* *$filter* – описывает отбор, применяемый при получении данных.<br>
* *$select* – описывает перечень свойств сущности, которые получаются при обращении к стандартному интерфейсу OData.<br>
 
После того, как сформирован URL необходимого ресурса, следует выполнить HTTP-запрос нужного вида. В зависимости от того, какая операция выполняется, используется соответствующий HTTP-метод:<br>
* Получение данных – метод **GET**;<br>
* Создание объекта – метод **POST**;<br>
  
В результате выполнения запроса клиентское приложение получает ответ сервера, который кроме кода состояния может содержать различные данные, предоставленные сервером, в виде XML-документа.<br>
В примерах URL, которые используются в данном разделе, выражение *guid'value'* означает выражение OData, которое описывает конкретное значение GUID (тип *Edm.Guid*).<br>
 
