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

Теперь предположим, что нам нужно изменить некоторые поля (а именно: Код, ДатаРождения и Должность) у конкретного элемента справочника Сотрудники. Поскольку мы хотим изменить не все, а только часть полей записи справочника, для этого нужно обратиться к элементу справочника с конкретной ссылкой и отправить на сервер PATCH-запрос с изменяемыми данными.

Обработчик команды, изменяющей данные, заполним следующим образом (листинг 1.117).

Листинг 1.117. Обработчик команды «ИзменитьДанные»

&НаКлиенте

Процедура ИзменитьДанные(Команда)

 

Сообщение = Новый СообщениеПользователю;

 

// Сформировать строку URL.

АдресРесурса = "/REST/odata/standard.odata/Catalog_Сотрудники(guid'0b6cd7dc-36a0-11e9-8bb2-642737df2048')?$format=json";

 

// Получить строку JSON с изменяемыми данными.

СтрокаТелаЗапроса = СформироватьИзменяемыеДанные();

Сообщение.Текст = СтрокаТелаЗапроса;

Сообщение.Сообщить();

 

// Отправить запрос на сервер.

ВыполнитьЗапрос("PATCH", АдресРесурса, СтрокаТелаЗапроса);

 

КонецПроцедуры

В этом обработчике в переменной АдресРесурса мы формируем URL запроса для обращения к данным конкретного элемента нашего справочника. В скобках мы указываем ссылку на элемент, которую мы для простоты копируем из рассмотренных выше примеров чтения данных из этого справочника.

Затем с помощью функции СформироватьИзменяемыеДанные(), которая будет рассмотрена ниже, в листинге 1.118, мы записываем изменяемые данные в строку JSON и возвращаем ее в переменную СтрокаТелаЗапроса.

После этого вызываем процедуру ВыполнитьЗапрос() и передаем в нее в качестве параметров адрес ресурса, строку тела запроса и имя метода ("PATCH"), котoрый надо выполнить на сервере. Поскольку эта процедура уже была рассмотрена в листинге 1.115, не будем еще раз на этом останавливаться.

В результате у конкретного сотрудника (Артемов Игорь Владимирович) будут изменены те данные, которые мы запишем в строку JSON в функции СформироватьИзменяемыеДанные() следующим образом (листинг 1.118).

Листинг 1.118. Функция «СформироватьИзменяемыеДанные»

&НаСервереБезКонтекста

Функция СформироватьИзменяемыеДанные()

 

// Создать объект записи и записать строковое значение в строку JSON.

Запись = Новый ЗаписьJSON;

Запись.УстановитьСтроку();

 

// Записать начало корневого объекта.

Запись.ЗаписатьНачалоОбъекта();

 

// Изменить свойство Code.

Запись.ЗаписатьИмяСвойства("Code");

Запись.ЗаписатьЗначение("REST-0003");

 

// Изменить свойство ДатаРождения.

Запись.ЗаписатьИмяСвойства("ДатаРождения");

Запись.ЗаписатьЗначение(ЗаписатьДатуJSON(ТекущаяДата(), ФорматДатыJSON.ISO, ВариантЗаписиДатыJSON.УниверсальнаяДата));

 

// Изменить свойство ссылочное поле Должность.

Запись.ЗаписатьИмяСвойства("Должность@odata.bind");

Запись.ЗаписатьЗначение("Catalog_Должности(guid'524ffe8a-789f-11e9-babb-642737df2048')");

 

// Записать конец корневого объекта.

Запись.ЗаписатьКонецОбъекта();

 

СтрокаJSON = Запись.Закрыть();

 

Возврат СтрокаJSON;

 

КонецФункции

В этой функции методом потоковой записи с помощью объекта ЗаписьJSON мы записываем в строку JSON значения полей Код (свойство Code), ДатаРождения и Должность, которые мы хотим изменить у конкретного элемента справочника Сотрудники.

Код – это строковое поле, поэтому в свойство Code мы просто записываем строку "REST-0003". В поле ДатаРождения с помощью функции ЗаписатьДатуJSON() мы записываем текущую дату как универсальную дату в формате ISO. Поле Должность – это ссылочное поле, которое ссылается на справочник Должности, поэтому мы указываем для него имя свойства как "Должность@odata.bind", а значение – "Catalog_Должности(guid'524ffe8a-789f-11e9-babb-642737df2048')". Значение уникального идентификатора этой должности мы для простоты копируем из предыдущего примера (см. рис. 1.25), когда мы добавляли новую запись в справочник Должности. Таким образом, наименование должности у сотрудника теперь изменится с Менеджер на Новая должность – REST (см. рис. 1.28).

В результате при выполнении команды по изменению данных на сервер будет отправлен PATCH-запрос к информационной базе. Ответ сервера в виде строки будет содержать данные измененного элемента справочника (рис. 1.27).

Рис. 1.27. Ответ сервера

Таким образом, содержимое справочника теперь выглядит следующим образом (рис. 1.28).

Рис. 1.28. Данные справочника «Сотрудники»

Назад: Добавление данных
Дальше: Удаление данных