Книга: Технологии интеграции "1С:Предприятия 8.3""
Назад: Модификация данных прикладного решения
Дальше: Изменение данных
Добавление данных

Предположим, нам нужно добавить новую запись в справочник Должности.

Обработчик команды, добавляющей данные, заполним следующим образом (листинг 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. Данные справочника «Должности»

Назад: Модификация данных прикладного решения
Дальше: Изменение данных