Выбор элемента из формы списка регистра сведений
Делаю ДЗ по Гилеву в УТ11.4 (демо)
Есть форма списка справочника ШаблоныЗаказовКлиентов (у регистра 2 реквизита: Контрагент и ЗаказКлиента). Модуль формы:
Есть форма обработки (модуль):
В процедуре ОбработкаВыбора не могу получить значения ВыбранноеЗначение.Контрагент или ВыбранноеЗначение. ЗаказКлиента. Что не так делаю?
Есть форма списка справочника ШаблоныЗаказовКлиентов (у регистра 2 реквизита: Контрагент и ЗаказКлиента). Модуль формы:
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОповеститьОВыборе(ВыбраннаяСтрока);
СтандартнаяОбработка = Ложь;
КонецПроцедуры
Есть форма обработки (модуль):
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды) Экспорт
Отбор = Новый Структура("Контрагент",СсылкаНаКонтрагента);
ФормаСпискаРегСведенийПараметры = Новый Структура("Отбор,РежимВыбора,ТолькоПросмотр,МножественныйВыбор",Отбор,Истина,Истина,Ложь);
ОткрытьФорму("РегистрСведений.ШаблоныЗаказовКлиентов.ФормаСписка",ФормаСпискаРегСведенийПараметры,ЭтаФорма);
КонецПроцедуры // ВыполнитьКоманду()
&НаКлиенте
Процедура ВыбратьЭлементРегистра(Команда)
ВыполнитьКоманду(1);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
КонецПроцедуры
ПоказатьВ процедуре ОбработкаВыбора не могу получить значения ВыбранноеЗначение.Контрагент или ВыбранноеЗначение. ЗаказКлиента. Что не так делаю?
Прикрепленные файлы:



По теме из базы знаний
- Организация выбора из произвольной формы
- Версионирование регистров сведений
- Доработки объектов метаданных и форм (только кодом) с помощью расширений на примере типовых конфигураций: 1C:ERP Управление предприятием 2.4 и 1С:Альфа-Авто: Автосалон+Автосервис+Автозапчасти КОРП 6
- Регистр сведений как дополнение объекта
- Редактор регистров сведений для управляемых форм 8.3
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
У вас есть элемент, например Элемент.Контрагент. Есть кнопка - команда. Есть регистр сведений. При выборе значения регистра сведений, нужно подставить его в поле Элемент.Контрагент.
1. Нажимаем на команду
2. Выполняем команду
3. Выбираем значение
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОповеститьОВыборе(ВыбраннаяСтрока);
СтандартнаяОбработка = Ложь;
КонецПроцедуры
4. ОбработкаВыбора у элемента
Можно сделать через опевещения формы, подход тотже
1. Нажимаем на команду
&НаКлиенте
Процедура ВыбратьЭлементРегистра(Команда)
ВыполнитьКоманду(1);
КонецПроцедуры
2. Выполняем команду
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды) Экспорт
Отбор = Новый Структура("Контрагент",СсылкаНаКонтрагента);
ФормаСпискаРегСведенийПараметры = Новый Структура("Отбор,РежимВыбора,ТолькоПросмотр,МножественныйВыбор",Отбор,Истина,Истина,Ложь);
ОткрытьФорму("РегистрСведений.ШаблоныЗаказовКлиентов.ФормаСписка",ФормаСпискаРегСведенийПараметры,Элемент); // вот тут элемент.контрагент
КонецПроцедуры // ВыполнитьКоманду()
3. Выбираем значение
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОповеститьОВыборе(ВыбраннаяСтрока);
СтандартнаяОбработка = Ложь;
КонецПроцедуры
4. ОбработкаВыбора у элемента
Процедура КонтрагентОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Контрагент = ВыбранноеЗначение.Контрагент
КонецПроцедуры
Можно сделать через опевещения формы, подход тотже
Ключ записи содержит только значения ключевых полей. Чтобы получить значения реквизитов записи, воспользуйтесь методом СоздатьМенеджерЗаписи регистра сведений, заполните значение ключевых полей из ВыбраннаяСтрока и используйте метод Прочитать() менеджера.
Вот вы когда открываете форму списка, вы указываете владельца формы - ЭтаФорма. Следовательно у вас когда будет оповещение о выборе работать. то она оповестить форму. а вам нужно чтобы оповестила элемент. Когда открываете форму вкачестве владельца укажите ЭлементФормы. Далее когда вы выберите значение на форме списка то у вас оповестить элемент (у него в событие ОбработкаВыбора вы уже получите то что нужно)
А вот все таки у вас все верно сделано, вы просто поменяйте параметр который передаете и все получиться
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Структура = Новый Структура("Контрагент, Заказ", ВыбраннаяСтрока.Контрагент, ВыбраннаяСтрока.Заказ)
ОповеститьОВыборе(Структура);
СтандартнаяОбработка = Ложь;
КонецПроцедуры
Процедура ОбработкаВыбора(выбранноезначение, Источник)
Если ТипЗначения(ВыбранноеЗначение) = Тип("Структура) Тогда
Контрагент = ВыбранноеЗначение.Контраент
Конецесли
Конецпроцедуры
А тот пример который у вас, вы не можете получить ключзаписи на клиенте поэтому и не доступно, если передать на сервер то все получиться
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Структура = Новый Структура("Контрагент, Заказ", ВыбраннаяСтрока.Контрагент, ВыбраннаяСтрока.Заказ)
ОповеститьОВыборе(Структура);
СтандартнаяОбработка = Ложь;
КонецПроцедуры
Процедура ОбработкаВыбора(выбранноезначение, Источник)
Если ТипЗначения(ВыбранноеЗначение) = Тип("Структура) Тогда
Контрагент = ВыбранноеЗначение.Контраент
Конецесли
Конецпроцедуры
А тот пример который у вас, вы не можете получить ключзаписи на клиенте поэтому и не доступно, если передать на сервер то все получиться
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот