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