Книга: Технологии интеграции "1С:Предприятия 8.3""
Назад: Получение данных связанных сущностей (ссылок)
Дальше: Условие отбора по реквизитам табличных частей

Получение данных из табличной части документа

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

Для того чтобы увидеть только данные табличной части, наберем в адресной строке браузера следующий URL (листинг 1.97).

Листинг 1.97. URL запроса

localhost/REST/odata/standard.odata/Document_ПоступлениеТоваров_Товары?$format=json

В результате в окне браузера мы увидим содержимое ответа сервера (листинг 1.98).

Листинг 1.98. Содержимое ответа сервера

{

"odata.metadata": "http://localhost/REST/odata/standard.odata/$metadata#Document_ПоступлениеТоваров_Товары",

"value": [{

"Ref_Key": "34c5d79a-7636-11e9-88b7-642737df2048",

"LineNumber": "2",

"Товар_Key": "34c5d798-7636-11e9-88b7-642737df2048",

"Количество": 5,

"Цена": "2000",

"Сумма": "10000"

},{

"Ref_Key": "34c5d79a-7636-11e9-88b7-642737df2048",

"LineNumber": "1",

"Товар_Key": "34c5d799-7636-11e9-88b7-642737df2048",

"Количество": 3,

"Цена": "5000",

"Сумма": "15000"

},{

"Ref_Key": "34c5d79b-7636-11e9-88b7-642737df2048",

"LineNumber": "1",

"Товар_Key": "34c5d799-7636-11e9-88b7-642737df2048",

"Количество": 3,

"Цена": "5500",

"Сумма": "16500"

},{

"Ref_Key": "34c5d79b-7636-11e9-88b7-642737df2048",

"LineNumber": "2",

"Товар_Key": "34c5d797-7636-11e9-88b7-642737df2048",

"Количество": 3,

"Цена": "3300",

"Сумма": "9900"

},{

"Ref_Key": "34c5d79c-7636-11e9-88b7-642737df2048",

"LineNumber": "1",

"Товар_Key": "34c5d797-7636-11e9-88b7-642737df2048",

"Количество": 5,

"Цена": "3000",

"Сумма": "15000"

},{

"Ref_Key": "34c5d79c-7636-11e9-88b7-642737df2048",

"LineNumber": "2",

"Товар_Key": "34c5d798-7636-11e9-88b7-642737df2048",

"Количество": 5,

"Цена": "2000",

"Сумма": "10000"

}]

}

Как мы видим, в ответе сервера содержатся по две строки табличной части для каждого из трех документов ПоступлениеТоваров.

Чтобы получить данные конкретной строки табличной части документа, нужно иметь в виду, что у нее не одно, а два ключевых поля: ссылка на сам документ (Ref_Key) и номер строки табличной части (LineNumber). И все эти поля, и их значения нужно перечислить через запятую в скобках после имени ресурса.

Итак, наберем в адресной строке браузера следующий URL (листинг 1.99).

Листинг 1.99. URL запроса

localhost/REST/odata/standard.odata/Document_ПоступлениеТоваров_Товары(Ref_Key=guid'34c5d79b-7636-11e9-88b7-642737df2048', LineNumber=2)?$format=json

В результате в ответе сервера будут содержаться данные второй строки табличной части документа с указанной выше ссылкой (листинг 1.100).

Листинг 1.100. Содержимое ответа сервера

{

"odata.metadata": "http://localhost/REST/odata/standard.odata/$metadata#Document_ПоступлениеТоваров_Товары/@Element",

"Ref_Key": "34c5d79b-7636-11e9-88b7-642737df2048",

"LineNumber": "2",

"Товар_Key": "34c5d797-7636-11e9-88b7-642737df2048",

"Количество": 3,

"Цена": "3300",

"Сумма": "9900"

}

Без указания номера строки табличной части никакие данные получены не будут, а в окне браузера мы увидим сообщение, что запрашиваемая страница не найдена.

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

Составим условие отбора на равенство для обоих ключевых полей (листинг 1.101).

Листинг 1.101. URL запроса

localhost/REST/odata/standard.odata/Document_ПоступлениеТоваров_Товары?$format=json&$filter=Ref_Key eq guid'34c5d79b-7636-11e9-88b7-642737df2048' and LineNumber eq 2

Мы получим тот же результат, что и раньше, то есть данные второй строки табличной части конкретного документа (см. листинг 1.100).

Опустим в условии отбора номер строки табличной части (листинг 1.102).

Листинг 1.102. URL запроса

localhost/REST/odata/standard.odata/Document_ПоступлениеТоваров_Товары?$format=json&$filter=Ref_Key eq guid'34c5d79b-7636-11e9-88b7-642737df2048'

Тогда в ответе сервера будут содержаться данные обеих строк табличной части документа с указанной в условии отбора ссылкой (листинг 1.103).

Листинг 1.103. Содержимое ответа сервера

{

"odata.metadata": "http://localhost/REST/odata/standard.odata/$metadata#Document_ПоступлениеТоваров_Товары",

"value": [{

"Ref_Key": "34c5d79b-7636-11e9-88b7-642737df2048",

"LineNumber": "1",

"Товар_Key": "34c5d799-7636-11e9-88b7-642737df2048",

"Количество": 3,

"Цена": "5500",

"Сумма": "16500"

},{

"Ref_Key": "34c5d79b-7636-11e9-88b7-642737df2048",

"LineNumber": "2",

"Товар_Key": "34c5d797-7636-11e9-88b7-642737df2048",

"Количество": 3,

"Цена": "3300",

"Сумма": "9900"

}]

}

Назад: Получение данных связанных сущностей (ссылок)
Дальше: Условие отбора по реквизитам табличных частей