Предположим, нам нужно добавить новую запись в справочник Должности.
Обработчик команды, добавляющей данные, заполним следующим образом (листинг 1.114).
Листинг 1.114. Обработчик команды «ДобавитьДанные»
&НаКлиенте
Процедура ДобавитьДанные(Команда)
Сообщение = Новый СообщениеПользователю;
// Сформировать строку URL.
АдресРесурса = "/REST/odata/standard.odata/Catalog_Должности?$format=json";
// Получить строку JSON с добавляемыми данными.
СтрокаТелаЗапроса = СформироватьДобавляемыеДанные();
Сообщение.Текст = СтрокаТелаЗапроса;
Сообщение.Сообщить();
// Отправить запрос на сервер.
ВыполнитьЗапрос("POST", АдресРесурса, СтрокаТелаЗапроса);
КонецПроцедуры
В этом обработчике в переменной АдресРесурса мы формируем URL запроса для обращения к данным нашего справочника.
Затем с помощью функции СформироватьДобавляемыеДанные(), которая будет рассмотрена ниже, в листинге 1.116, мы записываем добавляемые данные в строку JSON и возвращаем ее в переменную СтрокаТелаЗапроса.
После этого вызываем процедуру ВыполнитьЗапрос() и передаем в нее в качестве параметров адрес ресурса, строку тела запроса и имя метода ("POST"), котoрый надо выполнить на сервере (листинг 1.115).
Листинг 1.115. Процедура «ВыполнитьЗапрос»
&НаКлиенте
Процедура ВыполнитьЗапрос(ИмяМетода, АдресРесурса, СтрокаТелаЗапроса)
Сообщение = Новый СообщениеПользователю;
// Установить имя сервера.
СерверИсточник = "localhost";
Попытка
// Создать HTTP-соединение с сервером localhost.
HTTPСоединение = Новый HTTPСоединение(СерверИсточник);
Исключение
// Вывести сообщение об ошибке соединения с сервером.
Сообщение.Текст = "Не удалось соединиться с сервером: " + СерверИсточник;
Сообщение.Сообщить();
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();
Возврат;
КонецПопытки;
// Создать HTTP-запрос на основе URL.
HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса);
// Установить тело запроса из строки JSON.
Если ИмяМетода <> "DELETE" И ИмяМетода <> "GET" Тогда
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаТелаЗапроса);
КонецЕсли;
Попытка
// Получить ответ сервера в виде объекта HTTPОтвет.
Результат = HTTPСоединение.ВызватьHTTPМетод(ИмяМетода, HTTPЗапрос);
//получить содержимое ответа сервера в виде строки
Сообщение.Текст = Результат.ПолучитьТелоКакСтроку();
Сообщение.Сообщить();
Исключение
// Вывести сообщение об ошибке при получении ответа сервера.
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();
Возврат;
КонецПопытки;
КонецПроцедуры
В этой процедуре в качестве имени сервера мы указываем "localhost", создаем на его основе объект HTTPСоединение и соединяемся с этим сервером.
Далее на основе URL, содержащегося в параметре АдресРесурса, создаем HTTPЗапрос. Затем, в случае если это не DELETE- и не GET-запрос, устанавливаем тело запроса из строки JSON, содержащейся в параметре СтрокаТелаЗапроса.
После этого при помощи метода ВызватьHTTPМетод() объекта HTTPСоединение отправляем на сервер POST-запрос к информационной базе. Ответ сервера в виде объекта HTTPОтвет будет возвращен в переменную Результат. C помощью метода ПолучитьТелоКакСтроку() объекта HTTPОтвет мы получаем тело ответа в виде строки и выводим его в сообщение.
В результате в справочник будут добавлены новые данные, записанные в строку JSON в функции СформироватьДобавляемыеДанные(). Заполним эту функцию следующим образом (листинг 1.116).
Листинг 1.116. Функция «СформироватьДобавляемыеДанные»
&НаСервереБезКонтекста
Функция СформироватьДобавляемыеДанные()
// Создать объект записи и записать строковое значение в строку JSON.
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
// Записать начало корневого объекта.
Запись.ЗаписатьНачалоОбъекта();
// Записать наименование новой должности.
Запись.ЗаписатьИмяСвойства("Description");
Запись.ЗаписатьЗначение("Новая должность - REST");
// Записать конец корневого объекта.
Запись.ЗаписатьКонецОбъекта();
СтрокаJSON = Запись.Закрыть();
Возврат СтрокаJSON;
КонецФункции
В этой функции методом потоковой записи с помощью объекта ЗаписьJSON мы записываем в строку JSON наименование (свойство Description) новой должности, которую мы хотим добавить в справочник Должности.
В результате при выполнении команды по добавлению данных на сервер будет отправлен POST-запрос к информационной базе. Ответ сервера в виде строки будет содержать данные нового элемента, добавленного в справочник (рис. 1.25).
Рис. 1.25. Ответ сервера
Таким образом, содержимое справочника теперь выглядит следующим образом (рис. 1.26).
Рис. 1.26. Данные справочника «Должности»