Теперь предположим, что нам нужно изменить некоторые поля (а именно: Код, ДатаРождения и Должность) у конкретного элемента справочника Сотрудники. Поскольку мы хотим изменить не все, а только часть полей записи справочника, для этого нужно обратиться к элементу справочника с конкретной ссылкой и отправить на сервер 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. Данные справочника «Сотрудники»