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

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

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

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

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

```1c
    &НаСервере
    Процедура БазоваяЕдиницаПриИзмененииНаСервере(БазоваяЕдиница, Наименование)

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

    Запрос.УстановитьПараметр("Наименование", Наименование);

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    // Вставить обработку выборки ВыборкаДетальныеЗаписи
    КонецЦикла;

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

    &НаКлиенте
    Процедура БазоваяЕдиницаПриИзменении(Элемент)

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

    КонецПроцедуры
```
---
Если правильно понял, то как-то так:

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

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

    &НаКлиенте
    Процедура БазоваяЕдиницаПриИзменении(Элемент)

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

    КонецПроцедуры
```
---
Можно сказать, что синхронизирую.Хочу напомнить, что 1С - это многопользовательская система.
---
Если правильно понял, то как-то так:

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

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

    &НаКлиенте
    Процедура БазоваяЕдиницаПриИзменении(Элемент)

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

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