Wiki

Clone wiki

OCTitbit / samplejax1

Объекты данных 1С как REST-сервисы

Если Вы не знакомы с JAX-RS, то можно прочитать про нее на wiki. Спецификация весьма большая и со всеми тонкостями сразу не разберешься. Но пока нам это и не потребуется.
Итак, представьте, что у Вас есть объект данных 1С, например документ. Есть некий "ресурс", который обслуживает объекты данных в том числе и документы. За ресурсом закреплен определенный URL, собственно по которому к нему и осуществляется доступ. Пусть URL для этого ресурса выглядит как http://localhost:9998/OCTitbit/objects. localhost и номер порта зависят от того контейнера, в котором вы разворачиваете ресурсы. Для данного примера использовался Grizzly Framework.
Ресурс обладает HTTP-методами:

  • GET (получение объекта)
  • POST (обновление объекта)
  • PUT (создание объекта)
  • DELETE (удаление объекта)

Метод GET

С помощью метода GET осуществляется чтение (получение) объекта.
Параметрами метода являются:

  • metaType - тип объекта (например Document.СчетНаОплатуПокупателю)
  • uuid - UUID объекта, его уникальный номер в 1С. (например d4e79cf7-77cc-11e0-8e67-001f1638e043)
    Таким образом отправив запрос HTTP-GET на URL
    http://localhost:9998/OCTitbit/objects?uuid=d4e79cf7-77cc-11e0-8e67-001f1638e043&metaType=Document.СчетНаОплатуПокупателю
    Вы получите сериализованный объект Document.СчетНаОплатуПокупателю с uuid d4e79cf7-77cc-11e0-8e67-001f1638e043 в формате XML. Content-type: text/xml. Сам XML находится в BODY ответа. Сериализация производится с помощью XDTO, т.е. штатными средствами на стороне 1С.

Метод POST

Метод POST выполняет обновление объекта. Он не требует параметров. Отправив HTTP-POST запрос на
http://localhost:9998/OCTitbit/objects
и поместив в HTTP-BODY сериализованный объект 1С, ресурс десериализует объект и сохраняет его в базу 1С.

Сценарий работы может быть таким:

  1. Методом GET Вы получаете объект в XML формате.
  2. В своей программе его модифицируете.
  3. Методом POST отправляете объект обратно в 1С - сохраняете изменения.

Метод PUT

Метод PUT работает аналогично методу POST и является его частным случаем. Стоит сказать только то, что для создания объекта нужно, чтобы тэг Ref был с пустой ссылкой( <Ref>00000000-0000-0000-0000-000000000000</Ref> ).

Метод DELETE

Метод DELETE также как и POST, и PUT принимает в HTTP-BODY сериализованный объект 1С. Полнота объекта должна быть достаточна для востановления объекта. Например для удаления документа, необязательно передавать табличную часть. После востановления объект удаляется из базы 1С. Именно удаляется - выполняется метод delete. Поэтому, если Вам нужно поставить флаг DeletionMark = true, то нужно воспользоваться методом обновления объекта - POST.


Заключение:

  • мы можем создавать (CREATE), читать (READ), изменять (UPDATE) и удалять (DELETE) объекты данных 1С через HTTP(S) с помощью REST-сервисов.
  • Все объекты сериализуются в соответствии со схемой XML current-config.
  • В примере использовался контейнер Grizzly как сервер и Firefox RESTClient как клиент.
  • Фактически ресурсы REST это менеджеры объектов 1С + XDTO с той лишь разницей, что доступ к первым осуществляется через HTTP(S), а ко вторым по DCOM.

    В других примерах данной серии мы рассмотрим работу с сервисом запросов (SELECT), сервисом поиска документов по номеру и т.д.

Updated