Встала задача изменить данные в справочнике. Конкретнее, поменять местами значения двух реквизитов.
Задача осложнялась тем, что справочник иерархический, а модифицировать данные требовалось только в одной группе справочника. Получился вот такой код.
&НаКлиенте Процедура Взаимозамена(Команда) ЗаменитьНаСервере(); КонецПроцедуры &НаСервере Процедура ЗаменитьНаСервере() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Компьютеры.Ссылка, | Компьютеры.Наименование, | Компьютеры.Имя |ИЗ | Справочник.Компьютеры КАК Компьютеры |ГДЕ | Компьютеры.Родитель = &Родитель"; ПолеВводаРодитель = Справочники.Компьютеры.НайтиПоНаименованию("СистемныеБлоки"); Запрос.УстановитьПараметр("Родитель", ПолеВводаРодитель); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл КомпССылка = ВыборкаДетальныеЗаписи.Ссылка; КомпОбъект = КомпСсылка.ПолучитьОбъект(); РеквизитНаим = КомпОбъект.Наименование; РеквизитИнв = КомпОбъект.Имя; КомпОбъект.Наименование = РеквизитИнв; КомпОбъект.Имя = РеквизитНаим; КомпОбъект.Записать(); КонецЦикла; КонецПроцедуры