Изменить данные в результате запроса

1. G_109127900112192765884 19.03.24 20:54 Сейчас в теме
Здравствуйте. Я пытаюсь поменять значение реквизита ЕдиницаПоКлассификатору справочника ЕдиницыИзмеренияНоменклатуры на значения из справочника Номенклатура реквизита БазоваяЕдиница.

Т.е. Когда пользователь выбирает значение в поле БазоваяЕдиница для Номенклатуры, то я программно изменяю значение поля ЕдиницаПоКлассифкатору Владельца. Можно сказать, что синхронизирую.

(Справочник ЕдиницаПоКлассифкатору подчинен Номенклатуре).

В запросе нужного владельца нахожу по наименованию в номенклатуре.

Но как в результате запроса можно изменить поле уже существующей записи? Т.е. Я понимаю, что нужно сперва выгрузить в таблицу, а потом как-то заменить и обратно загрузить. Но как это сделать? И еще вопрос: Можно ли изменить уже существующее поле элемента прямо в запросе, чтобы не делать выгрузку и загрузку? Заранее спасибо за ответы


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

&НаКлиенте
Процедура БазоваяЕдиницаПриИзменении(Элемент)
	
	БазоваяЕдиницаПриИзмененииНаСервере(Объект.БазоваяЕдиница, Объект.Наименование);
	
КонецПроцедуры

Показать
По теме из базы знаний
Найденные решения
2. nomad_irk 76 20.03.24 08:21 Сейчас в теме
(1)Если правильно понял, то как-то так:
&НаСервереБезКонтекста
Процедура БазоваяЕдиницаПриИзмененииНаСервере(БазоваяЕдиница, Владелец)
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Владелец", Владелец);
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ЕдиницыИзмеренияНоменклатуры.Ссылка КАК Как ЕдиницаИзмерения
    |ИЗ
    |    Справочник.ЕдиницыИзмеренияНоменклатуры КАК ЕдиницыИзмеренияНоменклатуры
    |ГДЕ
    |    ЕдиницыИзмеренияНоменклатуры.Владелец = &Владелец";

   РезультатЗапроса = Запрос.Выполнить();
   ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       ЕдиницаИзмеренияОбъект = ВыборкаДетальныеЗаписи.ЕдиницаИзмерения.ПолучитьОбъект();
       ЕдиницаИзмеренияОбъект.ЕдиницаПоКлассификатору = БазоваяЕдиница;
       ЕдиницаИзмеренияОбъект.Записать();
   КонецЦикла;

&НаКлиенте
Процедура БазоваяЕдиницаПриИзменении(Элемент)
    
    БазоваяЕдиницаПриИзмененииНаСервере(Объект.БазоваяЕдиница, Объект.Ссылка);
    
КонецПроцедуры
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. user1880116 20.03.24 13:53 Сейчас в теме
(1)
Можно сказать, что синхронизирую.
Хочу напомнить, что 1С - это многопользовательская система.
2. nomad_irk 76 20.03.24 08:21 Сейчас в теме
(1)Если правильно понял, то как-то так:
&НаСервереБезКонтекста
Процедура БазоваяЕдиницаПриИзмененииНаСервере(БазоваяЕдиница, Владелец)
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Владелец", Владелец);
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ЕдиницыИзмеренияНоменклатуры.Ссылка КАК Как ЕдиницаИзмерения
    |ИЗ
    |    Справочник.ЕдиницыИзмеренияНоменклатуры КАК ЕдиницыИзмеренияНоменклатуры
    |ГДЕ
    |    ЕдиницыИзмеренияНоменклатуры.Владелец = &Владелец";

   РезультатЗапроса = Запрос.Выполнить();
   ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       ЕдиницаИзмеренияОбъект = ВыборкаДетальныеЗаписи.ЕдиницаИзмерения.ПолучитьОбъект();
       ЕдиницаИзмеренияОбъект.ЕдиницаПоКлассификатору = БазоваяЕдиница;
       ЕдиницаИзмеренияОбъект.Записать();
   КонецЦикла;

&НаКлиенте
Процедура БазоваяЕдиницаПриИзменении(Элемент)
    
    БазоваяЕдиницаПриИзмененииНаСервере(Объект.БазоваяЕдиница, Объект.Ссылка);
    
КонецПроцедуры
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот