В нашей демонстрационной базе существует справочник Поставщики. Это справочник содержит следующие данные (рис. 1.20).
Рис. 1.20. Данные справочника «Поставщики»
Предположим, нам нужно получить все данные из этого справочника.
Процедура, которая выполняет запрос к данным справочника и получает ответ в формате JSON, может иметь следующий вид (листинг 1.81).
Листинг 1.81. Пример получения данных из справочника
&НаКлиенте
Процедура Команда1(Команда)
СерверИсточник = "localhost";
Сообщение = Новый СообщениеПользователю;
Попытка
// Создать HTTP-соединение с сервером localhost.
HTTPСоединение = Новый HTTPСоединение(СерверИсточник);
Исключение
// Вывести сообщение об ошибке соединения с сервером.
Сообщение.Текст = "Не удалось соединиться с сервером: " + СерверИсточник;
Сообщение.Сообщить();
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();
Возврат;
КонецПопытки;
// Сформировать строку URL.
АдресРесурса = "/REST/odata/standard.odata/Catalog_Поставщики?$format=json";
// Создать HTTP-запрос на основе URL.
HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса);
Попытка
// Получить ответ сервера в виде объекта HTTPОтвет.
Результат = HTTPСоединение.Получить(HTTPЗапрос);
// Получить содержимое ответа сервера в виде строки.
Сообщение.Текст = Результат.ПолучитьТелоКакСтроку();
Сообщение.Сообщить();
Исключение
// Вывести сообщение об ошибке при получении ответа сервера.
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();
Возврат;
КонецПопытки;
КонецПроцедуры
В качестве имени сервера мы просто указываем "localhost" и создаем на его основе объект HTTPСоединение.
Затем в переменной АдресРесурса мы формируем URL запроса для обращения к данным нашего справочника (…/Catalog_Поставщики?…). Поскольку нам нужно получить все данные справочника, мы просто указываем для этого префикс Catalog_ и имя справочника.
Остальные составляющие и правила формирования URL были подробно описаны в разделе «».
Далее на основе этого URL создаем HTTPЗапрос и выполняем GET-запрос к информационной базе при помощи метода Получить() объекта HTTPСоединение. Ответ сервера в виде объекта HTTPОтвет будет возвращен в переменную Результат. После этого с помощью метода ПолучитьТелоКакСтроку() объекта HTTPОтвет мы получаем тело ответа в виде строки и выводим его в сообщение.
Если при получении ответа сервера возникнут ошибки, будет вызвано исключение. Типичные ошибки клиента, возникающие при обращении к серверу, будут рассмотрены в разделе «».
Ответ сервера в виде строки, содержащий все данные справочника Поставщики, будет выглядеть следующим образом (рис. 1.21).
Рис. 1.21. Ответ сервера, содержащий все данные справочника «Поставщики»
Выше, в листинге 1.81, мы показали пример процедуры, с помощью которой устанавливается HTTP-соединение и через REST-интерфейс получаются данные информационной базы. Кроме того, аналогичным образом, как будет показано в следующих примерах, эти данные могут изменяться, удаляться или добавляться.
Но если нужно просто получить данные информационной базы методом GET, то можно набрать URL запроса (localhost/REST/odata/standard.odata/Catalog_Поставщики?$format=json) непосредственно в адресной строке браузера и сразу же в окне браузера увидеть содержимое ответа сервера (листинг 1.82).
Листинг 1.82. Содержимое ответа сервера
{
"odata.metadata": "http://localhost/REST/odata/standard.odata/$metadata#Catalog_Поставщики",
"value": [{
"Ref_Key": "9cfabfb0-4cb2-11e9-9334-642737df2048",
"DataVersion": "AAAAAQAAAAA=",
"DeletionMark": false,
"Code": "000000001",
"Description": "ОАО \"Фонтан\"",
"Predefined": false,
"PredefinedDataName": ""
},{
"Ref_Key": "9cfabfb1-4cb2-11e9-9334-642737df2048",
"DataVersion": "AAAAAgAAAAA=",
"DeletionMark": false,
"Code": "000000002",
"Description": "ООО \"Топаз\"",
"Predefined": false,
"PredefinedDataName": ""
},{
"Ref_Key": "9cfabfb2-4cb2-11e9-9334-642737df2048",
"DataVersion": "AAAAAwAAAAA=",
"DeletionMark": false,
"Code": "000000003",
"Description": "ООО \"Стиль\"",
"Predefined": false,
"PredefinedDataName": ""
}]
}
В дальнейших примерах при получении данных из информационной базы мы будем использовать именно этот метод, то есть смотреть результат запроса в браузере.