Публиковать стандартный интерфейс odata 1с что это
REST интерфейс OData в 1C
В технологической платформе версии 8.3.5 была реализована возможность автоматически формировать REST интерфейс OData для всего прикладного решения. Таким образом у нас появилась возможность предоставить полный доступ стороннему приложению к базе 1С буквально за пару кликов.
Данный механизм предназначен для решения нескольких часто встречающихся задач:
REST интерфейс OData можно использовать для обмена данными между базами 1С, но так как для этого уже существуют другие, более удобные, механизмы, то основное предназначение REST интерфейса OData видится в интеграции со сторонними системами.
И это действительно удобно, если учесть, что клиенты OData существуют на всех основных платформах, соответствующие библиотеки можно скачать тут.
В этой статья я попробую подробно рассказать о том, что такое REST интерфейс OData и как его можно использовать.
Публикация REST интерфейса OData
Для использования интерфейса OData его нужно опубликовать, а для этого нам потребуется веб-сервер — Apache 2.2 или IIS (начиная с версии платформы 8.3.8 еще и Apache 2.4). Затем, нужно зайти в меню «Администрирование»->»Публикация на веб-сервере…».
В открывшемся окне заполняем нужные поля и жмем «Опубликовать»:
После этого нужно будет определить состав интерфейса OData, т.е. указать — какие объекты конфигурации в него входят, а какие нет (изначально в составе нет ни одного объекта).
Сделать это можно примерно так:
На Инфостарте есть отличная обработка на эту тему.
Если конфигурация работает в режиме совместимости с версией 8.3.4 и ниже, то установить состав интерфейса OData нельзя — в это случае автоматически доступны все объекты конфигурации.
Все, стандартный интерфейс OData настроен, запущен и ожидает клиентских подключений.
Пример использования
Для различных операций используются различные HTTP-методы:
Проверить состав стандартного интерфейса можно, получив описание этого самого интерфейса при помощи браузера:
http://localhost/HTTPTest/odata/standard.odata/$metadata
Для проверки получения данных, введем вот такой запрос:
http://localhost/HTTPTest/odata/standard.odata/Catalog_Товары?$format=json
Результат выполнения запроса выглядит так:
Правила доступа к ресурсам
Имя ресурса формируется по следующему правилу:
ПрефиксИмени_ИмяОбъектаКонфигурации_СуффиксИмени.
С помощью стандартного интерфейса OData можно получить доступ к следующим объектам (ПрефиксИмени):
ИмяОбъектаКонфигурации — свойство «Имя» объекта конфигурации так, как оно задано в конфигураторе.
СуффиксИмени — нужен для уточнения имени ресурса, необязателен, может принимать следующие значения:
Параметры обращения к ресурсам
После формирования имени ресурса нужно определить параметры обращения к ресурсу, некоторые из параметров доступны только начиная с релиза платформы 8.3.8.1652:
Арифметические и логические операции
Кроме этого, для обозначения приоритета операции могут использоваться «скобки».
Формируя условия отбора важно не забывать о том, что логические и арифметические операции имеют разный приоритет, при этом операции с одинаковым приоритетом исполняются слева направо. Ниже приведен список логических и арифметических операций в порядке уменьшения приоритета:
Функции
При формировании условий запроса (filter) или формировании реквизита по которому выполняется сортировка (orderby) могут применяться следующие функции. Все функции доступны только начиная с релиза 8.3.8.1652.
Функции работы с датами:
Коды ошибок
При возникновении ошибочных ситуаций возвращается ответ с HTTP-статусом 4XX или 5XX. Статус 5XX означает ошибку на стороне сервера (само собой исправлять эту ошибку нужно тоже на сервере), а вот статус 4XX означает ошибку на нашей, клиентской, стороне и в ряде случаев вместе со статусом может быть предан код ошибки и информационное сообщение. Ниже перечислены внутренние коды ошибок и их описание:
На этом все, обзор основных моментов использования технологии OData в 1С завершен. Надеюсь что данный материал Вам помог.
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Стандартный интерфейс OData. Регистры бухгалтерии
Стандартный интерфейс OData в «1С:Предприятии» предназначен для получения доступа к данным системы из внешнего приложения без модификации кода прикладного решения. О настройке поддержки стандартного интерфейса OData можно посмотреть здесь
В данной статье я показываю как научиться работать с регистром бухгалтерии через стандартной интерфейс OData. Для этой цели, я опубликовал демонстрационную версию библиотеки стандартных подсистем 3.0 локально на моем компьютере и включил интерфейс
OData
Рис 1 Публикация ИБ на веб – сервере
Обращение к стандартному интерфейсу OData выполняется с помощью HTTP-запроса, выполнено по определенному URL. URL формируется специальным образом и состоит из следующих частей:
Для получения описания стандартного интерфейса OData необходимо выполнить в браузере URL
В результате будет получен полный список доступных сущностей, их атрибутов и функций в виде XML-документа. Подробное описание структуры XML- документа можно получить по адресу http://www.odata.org/documentation/odata-version-3-0/common-schema-definition-language-csdl/ (на английском языке).
Для работы с регистрами бухгалтерии нужно прежде всего научиться работать с планом счетов ( см рис 1) в стандартном интерфейсе OData
Рис 2 Доступные в запросы атрибуты плана счетов
Результат в формате json :
Запись, возвращаемая в этом XML- документе соответствует элементу плана счетов на рис 2 :
Рис 3
Поиск счета по уникальному номеру (Ref_Key ) :
Поиск счета по коду (Code):
Поиск счета по предопреленному значению (PredefinedDataName)
Обращение к регистрам бухгалтерии
У регистра бухгалтерии кроме основной таблицы есть еще виртуальные таблицы ( См рис 4)
Рис 4
При обращении к виртуальным таблицам можно также получить аналогичный XML- документ, который позволить имена полей таблицы:
Примеры использования параметров
$expand
Данный параметр позволяет вместе с результатами основного запроса получать значения связанных сущностей, что позволит не запрашивать каждую сущность отдельно.
В результате исполнения этого запроса будет добавлен на каждый запись следующий результат:
$select
Допускается совместное использование параметров запроса $select и $expand. В этом случае необходимо указать в выражении оператора $select перечень (через запятую) всех необходимых полей.
В параметре $select, при использовании совместно с параметром $expand,поддерживается использование символов * и **. Указание символа * означает, что необходимо развернуть все реквизиты получаемого объекта. Указание символа ** означает, что необходимо развернуть все реквизиты получаемого объекта, кроме табличных частей.
В результате исполнения этого запроса будет получено все реквизиты регистра и еще добавлен следующий результат:
$Cast(expr, type)
Возвращает объект, на который указывает параметр expr, приведенный к типу, указанному параметром type. В качестве типа значения принимается строка, обозначающая имя данного типа, например: String, Number, Boolean, Date,Catalog_Товары и т. д.
Пример получения остатков на счете из регистра бухгалтерии с условием по конкретному контрагенту:
Balance(), Turnovers() и BalanceAndTurnovers()
Для регистра накопления и регистра бухгалтерии – Balance(), Turnovers() и BalanceAndTurnovers()
Пример использования функции Balance() с параметрами показан в примере выше
Большая инструкция по работе с интерфейсом OData
Начиная с версии 8.3.5 1С Предприятие умеет генерировать REST интерфейс для всей конфигурации, используя протокол OData. Это значит, что стороннее приложение может получить доступ ко всей базе 1С буквально за пару кликов.
Базы данных, которые размещаются на Платформе42, поддерживаются автоматическим REST-сервисом по протоколу OData версии 3.0. И мы подготовили для вас большую инструкцию – знакомство с OData. Чтобы не пугать вас «простыней», мы разбили ее на 11 блоков. В этой статье вы найдете краткие обзоры блоков и ссылки на подробную информацию.
Возможности и настройка
Из этой инструкции вы получите общее представление об интерфейсе OData. Тут мы рассказываем об основных возможностях протокола и о том, как настроить автоматический REST-сервис для запроса и обновления данных. Если хотите познакомиться и узнать, какие задачи можно решить при помощи OData – вам сюда.
Общие принципы работы
Здесь мы разбираем специальную терминологию OData. Рассмотрим в отдельности каждый термин из тех, которыми будем оперировать в дальнейшем, узнаем, как выполнить обращение к стандартному интерфейсу OData и подробно разберем верный URL-запрос.
Представление данных
В этой инструкции посмотрим, в каком виде стандартный интерфейс OData возвращает данные, и взглянем на соответствие между типом данных «1С:Предприятия» и типом OData. И отдельно разберем различные суффиксы, на которые могут оканчиваться имена свойств.
Правила формирования имени ресурса
Из этого текста вы узнаете, по какому принципу формируется идентификатор имени ресурса, к каким объектам можно получить доступ при помощи стандартного интерфейса OData и как уточняется имя ресурса при помощи суффикса. Возможные виды суффиксов тоже разберем.
Правила формирования условия отбора
В данном разделе мы приводим информации по различным способам формирования отбора получаемых данных, которые используются в стандартном интерфейсе OData системы «1С:Предприятие». Инструкция большая и детальная, советуем ознакомиться «с чувством, с толком, с расстановкой».
Параметры запроса
Способы получения описания стандартного интерфейса OData
Способы получения данных
А в этой инструкции расскажем, как получать и списки сущностей, и сами сущности. Эти способы получения данных отличаются URL, по которому происходит обращение к данным. Вы узнаете, чем отличается URL набора сущностей от канонического URL экземпляра сущности.
Выполнение функций и действий
Посмотрим, как формируется URL ресурса, если с сущностью или с набором сущностей связана функция (например, работа с виртуальными таблицами регистров выполняется именно через функции).
Ошибочные ситуации
Вот мы и подошли к самому интересному – к кодам ошибок, их описанию. Посмотрим, как происходит информирование об ошибках со стороны клиентского приложения и об ошибках со стороны сервера, какие коды назначаются и что с этим делать.
Примеры типовых операций
И немного практики напоследок. Рассмотрим несколько типовых операций в их практическом применении. Пошагово разберем работу с одним объектом, работу с планами обмена и другие вещи, с которыми вам наверняка придется столкнуться.
Чтобы иметь полное представление о стандартном интерфейсе OData, ознакомьтесь со всеми представленными выше инструкциями. Или сохраняйте в закладки, чтобы обращаться к этому тексту по мере необходимости.
Интерфейс OData: возможности и настройка
Для баз данных, размещенных в сервисе Платформа42, включена поддержка автоматического REST-сервиса по протоколу OData версии 3.0.
OData — это открытый веб-протокол для запроса и обновления данных. Он позволяет оперировать данными, используя в качестве запросов HTTP-команды.
Интерфейс OData позволяет настроить REST-сервис для обмена со сторонними программами, например, для решения таких задач:
Настройка OData
Для настройки интерфейса в разделе Администрирование → Синхронизация данных перейдите по ссылке Настройки стандартного интерфейса OData, для того чтобы произвести настройки автоматического REST-сервиса для запроса и обновления данных.
REST-сервис позволяет читать данные 1С:Предприятия, изменять их, создавать новые объекты данных и удалять существующие. При этом синхронизация данных может быть отключена.
Для работы с REST-сервисом не рекомендуется использовать какие-либо уже существующие учетные записи с целью защиты данных программы от взлома, т.к. REST-сервис предназначен для работы со сторонними программами. На странице настройки размещено напоминание об этом.
На вкладке Авторизация включите флажок Создать для использования автоматического REST-сервиса отдельные имя пользователя и пароль (рекомендуется).
Напишите Имя пользователя, Пароль и Подтверждение пароля. Нажмите кнопку Сохранить.
В разделе Информация для разработчиков можно подробнее ознакомиться с описанием технологии REST-сервиса и с документацией по его использованию с помощью гиперссылок.
На вкладке Состав можно определить, какие данные будут участвовать в работе автоматического REST-сервиса. По умолчанию список пуст.
Нажмите кнопку Загрузить метаданные, для того чтобы отобразить данные программы.
С помощью флажков предоставьте доступ к основным и подчиненным данным, которые будут участвовать в работе REST-сервиса. Например, если выбрать список Валюты, то программа автоматически подбирает зависимое перечисление Способы установки курса валюты, без которого сторонняя программа не сможет работать со списком.
После предоставления доступа к данным нажмите Сохранить и закрыть для продолжения работы в программе. Теперь сторонние программы получат доступ к выбранным данным.
Общие принципы работы
При работе с протоколом OData используется специальная терминология.
При применении протокола используются следующие термины:
Обращение к стандартному интерфейсу OData выполняется с помощью HTTP-запроса, выполнено по определенному URL. URL формируется специальным образом и состоит из следующих частей:
Само обращение выполняется с помощью HTTP-запроса определенного вида. При более подробном описании работы со стандартным интерфейсом OData вид запроса будет указываться отдельно.
Рассмотрим части URL более подробно:
Адрес информационной базы
Признак обращения к стандартному интерфейсу OData
Имя ресурса, к которому выполняется обращение
Параметры обращения к ресурсу
При обращении к ресурсу могут использоваться специальные ключевые слова, имеющие специальное назначение:
После того, как сформирован URL необходимого ресурса, следует выполнить HTTP-запрос нужного вида. В зависимости от того, какая операция выполняется, используется соответствующий HTTP-метод:
В результате выполнения запроса клиентское приложение получает ответ сервера, который кроме кода состояния может содержать различные данные, предоставленные сервером, в виде XML-документа.
При обращении к стандартному интерфейсу OData следует учитывать, что для указания значений некоторых типов необходимо соблюдать специальную нотацию:
Представление данных
Данные, возвращаемые стандартным интерфейсом OData, могут быть представлены в виде XML-документа или JSON-документа. Это зависит от того, в каком формате запрашиваются данные.
Для различных типов данных используется следующее соответствие между типом «1С:Предприятия» и типом OData:
Автоматический REST-сервис в «1С:Предприятии». OData. Пример работы из Jscript/AJAX
Общая информация
REST (сокр. от англ. Representational State Transfer — «передача репрезентативного состояния») — метод взаимодействия компонентов распределённого приложения в сети Интернет, при котором вызов удаленной процедуры представляет собой обычный HTTP-запрос (обычно GET или POST; такой запрос называют REST-запрос), а необходимые данные передаются в качестве параметров запроса. Этот способ является альтернативой более сложным методам, таким как SOAP, CORBA и RPC.
Open Data Protocol (OData) — это открытый веб-протокол для запроса и обновления данных. Протокол позволяет выполнять операции с ресурсами, используя в качестве запросов HTTP-команды, и получать ответы в форматах Atom, JSON или XML.
Ajax (от англ. Asynchronous Javascript and XML — «асинхронный JavaScript и XML») — подход к построению интерактивных пользовательских интерфейсов веб-приложений, заключающийся в «фоновом» обмене данными браузера с веб-сервером. В результате, при обновлении данных веб-страница не перезагружается полностью, и веб-приложения становятся быстрее и удобнее.
В 1С Предприятие 8.3 появилась поддержка автоматического REST-сервиса. Для доступа к данным используется протокол OData версии 3. Поддерживается единственный формат представления данных: atom-xml. Для доступа к данным, при публикации, автоматически генерируется REST-сервис, который позволяет читать данные «1С:Предприятия», изменять их, создавать новые объекты данных и удалять существующие. Прикладное решение на базе «1С:Предприятия» может выступать как клиентом, так и сервером при работе с REST-сервисами. Для работы сервером практически никаких дополнительных действий осуществлять не надо (эта возможность предоставляется автоматически), для того, чтобы стать клиентом REST-сервиса, необходимо в прикладном решении реализовать программный слой, который будет использовать данные сервера REST с использованием стандартных интерфейсов «1С:Предприятия», например объекта HTTPСоединение.
REST-сервер
В качестве сервера будет выступать опубликованная на веб-сервере БД (Демо-база «Управление торговлей 11»)
Теперь прикладное решение выступает как REST-сервер и мы можем получать и изменять данные, отправляя http-запросы, сформированные соответствующим образом.
В зависимости от того, какая операция выполняется, используется соответствующий HTTP-метод:
Итак, получим список организаций
http://localhost/DemoTrd/odata/standard.odata/Catalog_Организации
Получим список накладных с отбором по организации
http://localhost/DemoTrd/odata/standard.odata/Document_РеализацияТоваровУслуг?$filter=Организация_Key eq guid’87ec13fb-f611-11df-aeca-0015e9b8c48d
Логические операции отбора
Чтение объекта
Для чтения объекта необходимо отправить сформированный определенным способом запрос к сервису(URL сущности), используя метод GET
http://mysite/DemoTrd/odata/standard.odata/Document_РеализацияТоваровУслуг(guid’c019c02d-5462-11e0-af18-0015e9b8c48d’)
Обновление объекта
Для обновления объекта необходимо выполнить PUT-/PATCH-запрос с использованием канонического URL сущности (аналогично запросу GET для получения сущности), передав в теле запроса XML-документ (в формате atom), который содержит значения свойств сущности.
В случае PATCH-запроса пропущенные свойства сущности будут проигнорированы, т. е. будут изменены только те свойства, которые переданы в запросе на изменение. Для PUT-запроса необходимо указывать значения всех свойств обновляемой сущности.
PUT-/PATCH-запрос просто так из строки браузера отправить не получиться, поэтому приступим к написанию мини-клиента для REST-сервиса
REST-Клиент
Клиент будет представлять собой обычную html-страницу, с подключенными к ней js-скриптами. Это в первую очередь библиотека JQuery, также пригодятся скрипты для удобной работы с форматами дат и календарем
На странице реализуем следующие функции:
В результате наш мини-клиент выглядит так:
Изменим несколько документов и проверим результат в УТ:
Объекты конфигурации
В нашем простом примере рассмотрено чтение коллекций справочников и документов, запись реквизита документа.
На самом деле список объектов, к котором можно получить доступ через REST-сервис, намного шире:
Механизм позволяет читать и записывать данные, работать с виртуальными таблицами (например, срезы регистров), выполнять функции и действия описанные в конфигурации с передачей параметров.
Ссылки
Что в архиве
В архиве сам REST-клиент: html страница, js-скрипты, файл стилей css
Как настроить
Как работает клиент? При открытии страницы загружается список организаций в список выбора.
После загрузки выбираем для отбора организацию, интервал дат, жмем кнопку «Обновить». На страницу выводится список документов, одновременно заполняется список выбора внизу страницы.
Выбираем документ из списка, заполняем поле «Комментарий», жмем кнопку «Сохранить». После сохранения список документов обновится и изменения документа станут видны в нем:)
Подгрузка данных в страницу бывает работает не очень быстро (особенно в файловой версии, и/или при первом запуске 🙂 )
Поэтому список организаций при открытии страницы в браузере заплняется спустя некоторое время. По хорошему, можно сделать, чтобы отображались картинка ожидания во время подгрузки ajax (часики или крутился кружок). Этот прием даёт пользователю понять, что страница не просто висит, а нужно немного подождать. Он используется на многих сайтах, в т.ч. на Инфостарте 🙂
Из Заметок из зазеркалья стало ясно, что автоматический REST скоро будет доступен также в формате JSON.