Для получения данных из табличной части документа нужно к имени ресурса добавить имя табличной части. Например, в нашей демонстрационной базе существует документ ПоступлениеТоваров с табличной частью Товары, содержащей список поступивших товаров.
Для того чтобы увидеть только данные табличной части, наберем в адресной строке браузера следующий 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"
}]
}