C E S А Б В Г Д Е З И К Л М Н О П Р С Т У Ф Ц Ч Ш Э Я

Интеграция с сайтом/приложением через Rest API Енота

by enote-team | 26.04.2018 20:12

Оглавление

Общие сведения

API (Application Programming Interface)  это  готовый интерфейс при помощи которого данные программы  с помощью разработчика  можно связать с внешними приложениями  (например с сайтом, мобильным приложением и т.д.)

В  1с используется REST API предназначенный для работы через web. Для доступа  к данным используется протокол  OData, позволяющий приложению  работать непосредственно с данными  программы,  к которым разрешен доступ и получать нужную информацию  (например отображать в мобильном приложении время записи клиента, информацию о взаиморасчетах по нему, график работы нужного врача и т.д. из Енота, или передавать в банк информацию из ведомости по начислению зарплаты ).

В данный момент API енота открыт только для чтения информации, услуга предоставляется пользователям выделенных серверов. Расширение возможностей доступа и использование услуги для клиентов на общих серверах возможно по индивидуальной договоренности.

Техническая информация

REST интерфейс позволяет читать данные 1С:Предприятия, изменять их, создавать новые объекты данных и удалять существующие.

Вы можете использовать REST интерфейс для таких задач как:

Типичные операции, выполняемые через REST интерфейс это:

В качестве протокола доступа платформа использует протокол OData версии 3.0. Это открытый веб-протокол для запроса и обновления данных. Он позволяет оперировать данными, используя в качестве запросов HTTP-команды. Получать ответы можно в различных форматах, но пока мы поддерживаем только работу с данными в формате Atom/XML.

В платформе мы реализовали только серверную часть REST сервисов. То есть прикладное решение может автоматически поставлять свою функциональность через REST сервисы. Для взаимодействия со сторонними REST сервисами из 1С:Предприятия (для организации клиентской части) можно использовать имеющиеся в платформе средства работы с объекты HTTPСоединениеHTTPЗапрос и HTTPОтвет.

Однако основную задачу REST интерфейса прикладных решений мы видим в интеграции со сторонними системами. И тут проблемы не возникает, ведь клиенты OData существует практически для всех значимых платформ:

Использовать стандартный интерфейс OData прикладного решения просто:

В REST интерфейсе доступны практически все основные объекты конфигурации: справочники, документы, константы, перечисления, планы обмена, регистры накопления, расчета, бухгалтерии и сведений, виртуальные таблицы периодического регистра сведений, регистров бухгалтерии и регистров накопления, планы счетов, видов характеристик и видов расчета, бизнес-процессы, задачи и журналы документов.

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

В REST интерфейсе доступны реквизиты объектов конфигурации, доступны операции создания, чтения, модификации и удаления данных, а также некоторые методы встроенного языка. Например:

Чтение данных выполняется GET-запросом. Например, чтение списка справочника Goods (здесь и далее для краткости приведены только заголовки запросов):

GET /OData_Tests_Infobase/odata/standard.odata/Catalog_Goods

Например, чтение данных одного элемента справочника Goods по GUID’у:

GET /OData_Tests_Infobase/odata/standard.odata/Catalog_Goods(guid’7f4b5034-0331-11e3-b914-5404a6a68c42′)

Создание нового элемента данных выполняется POST-запросом. В качестве значения ссылки передается нулевой GUID. При создании и модификации объектов значения свойств передаются в теле запроса в формате XML (здесь текст запроса приведён полностью):

POST  /OData_Tests_Infobase/odata/standard.odata/Catalog_Goods HTTP/1.1

Content-Type: application/atom+xml

DataServiceVersion: 3.0;NetFx

MaxDataServiceVersion: 3.0;NetFx

Accept: application/atom+xml,application/xml

Accept-Charset: UTF-8

User-Agent: 1C-Enterprise

Host: test-host:8090

Content-Length: 1610

 

<?xml  version=»1.0″ encoding=»utf-8″?>

<entry  xmlns=//www.w3.org/2005/Atom

xmlns:d=//schemas.microsoft.com/ado/2007/08/dataservices

xmlns:m=//schemas.microsoft.com/ado/2007/08/dataservices/metadata

xmlns:georss=//www.georss.org/georss

xmlns:gml=//www.opengis.net/gml>

 

<category term=»EnterpriseV8.CatalogGoods»  scheme=//schemas.microsoft.com/ado/2007/08/dataservices/scheme />

<id />

<title />

<updated>2013-08-12T11:48:25Z</updated>

<author>

<name />

</author>

<content type=»application/xml»>

<m:properties>

<d:Code>157</d:Code>

<d:DeletionMark>false</d:DeletionMark>

<d:Description>Майка синяя</d:Description>

<d:IsFolder>false</d:IsFolder>

<d:Parent_Key m:null=»true» />

<d:Ref_Key m:type=»Edm.Guid»>00000000-0000-0000-0000-000000000000</d:Ref_Key>

<d:Артикул m:null=»true» />

<d:Поставщик_Key>F400322D-7AE8-4803-A7BE-0D80E525E8C2</d:Поставщик_Key>

</m:properties>

</content>

</entry>

Модификация существующих данных выполняется PATCH-запросом. Например, изменение данных одного элемента справочника Goods по GUID’у:

PATCH /OData_Tests_Infobase/odata/standard.odata/Catalog_Goods(guid’7f4b5034-0331-11e3-b914-5404a6a68c42′)

Для удаления данных используется DELETE-запрос (пометка на удаление будет реализована в дальнейшем отдельной ODATA-операцией):

DELETE /OData_Tests_Infobase/odata/standard.odata/Catalog_Goods(guid’7f4b5034-0331-11e3-b914-5404a6a68c42′)

Методы объектов встроенного языка выполняются POST-запросами. Например, проведение документа:

POST /OData_Tests_Infobase/odata/standard.odata/Document_Invoice(guid’17ed2041-0345-11e3-b914-5404a6a68c42′)/Post()

В случае ошибочной ситуации 1С:Предприятие возвращает ответ с HTTP-статусом 4XX или 5XX. Статус 4XX говорит о неверных действиях клиента, статус 5XX – об ошибке на сервере. В случае статуса 4XX 1С:Предприятие пытается помочь клиенту понять причину ошибки и может передать дополнительный внутренний код ошибки и информационное сообщение.

При чтении и записи данных с помощью REST интерфейса платформа выполняет все обычные проверки прав и вызывает обработчики событий, за исключением проверки заполнения.

При работе через REST интерфейс поддерживается оптимистическая блокировка данных. При запросе данных (одного объекта или списка) вместе с ними платформа возвращает значение поля (полей) ВерсияДанных. В последующих запросах PUT, PATCH и DELETE с этими же данными, можно передать 1С:Предприятию версию считанных данных. Если к этому моменту версия данных, находящихся в информационной базе, не изменилась, запрошенное действие выполняется.

При получении списков данных можно использовать стандартные условия фильтрации ODATA запросов. Например, получить товары, у которых цена меньше или равна 3,5 или больше 200:

GET /OData_Tests_Infobase/odata/standard.odata/Catalog_Goods?$filter=Price le 3.5 or Price gt 200

Примеры и имена метаданных

Пример работы с Rest api c реального проекта (авторизационные данные обезличены): Скачать[1]

Данные из Енота необходимые для отображения на сайте публикуются хотлайном после предварительного клиентского запроса.

В дальнейшем сам пользователь несет ответственность за опубликованные ссылки.

Примеры ссылок:

Общий вид ссылки:

 

[2]

Справочники

Для справочников на примере Каталога номенклатуры

//de.enote.link/05e4719e-ac83-11e4-ab99-00163ee5d2d3/odata/standard.odata/Catalog_Номенклатура?$format=application/json;odata=nometadata

 

Имена метаданных Справочников[3] ТУТ[4]

 

Документы

Для документов на примере Диагностических исследований

//de.enote.link/05e4719e-ac83-11e4-ab99-00163ee5d2d3/odata/standard.odata/Document_Анализы?$format=application/json;odata=nometadata

Имена метаданных документов[5] ТУТ[6]

 

Регистры сведений

Для регистров сведений на примере Состояния предварительной записи

//de.enote.link/05e4719e-ac83-11e4-ab99-00163ee5d2d3/odata/standard.odata/InformationRegister_СостояниеПредварительнойЗаписи/SliceLast()?$format=application/json;odata=nometadata

Имена метаданных регистров сведений[7] ТУТ[8]

 

Регистр накопления

Регистры накопления на примере Товаров на складах

//de.enote.link/05e4719e-ac83-11e4-ab99-00163ee5d2d3/odata/standard.odata/AccumulationRegister_ТоварыНаСкладах/Balance(Condition=’%D0%A1%D0%BA%D0%BB%D0%B0%D0%B4_Key%20eq%20guid’ccc38258-f574-11e7-769e-2e48eb60b70e»)?$format=application/json;odata=nometadata

Имена метаданных Регистров накопления[9] ТУТ[10]

Просмотров: 3 322
Endnotes:

  1. Скачать: //enote.cloud/inf/wp-content/uploads/2020/01/updater_test_php.zip
  2. [Image]: //enote.cloud/inf/wp-content/uploads/2018/04/Screenshot_1-2.jpg
  3. Имена метаданных Справочников: https://enote.cloud/inf/encyclopedia/imena-metadannyh-spravochnikov
  4. ТУТ: //enote.cloud/inf/encyclopedia/imena-metadannyh-spravochnikov
  5. Имена метаданных документов: https://enote.cloud/inf/encyclopedia/imena-metadannyh-dokumentov
  6. ТУТ: //enote.cloud/inf/encyclopedia/imena-metadannyh-dokumentov
  7. Имена метаданных регистров сведений: https://enote.cloud/inf/encyclopedia/imena-metadannyh-registrov-svedenij
  8. ТУТ: //enote.cloud/inf/encyclopedia/imena-metadannyh-registrov-svedenij
  9. Имена метаданных Регистров накопления: https://enote.cloud/inf/encyclopedia/imena-metadannyh-registrov-nakopleniya
  10. ТУТ: //enote.cloud/inf/encyclopedia/imena-metadannyh-registrov-nakopleniya

Source URL: https://enote.cloud/inf/encyclopedia/integratsiya-enota-s-sajtom-prilozheniem