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