Не срабатывает ОбработкаВыбора

1. qux 25 22.02.25 20:45 Сейчас в теме
Необходимо выбрать значения в ТЧ нетиповой формой выбора. Форма выбора создана в ней прописано оповещение
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	ОповеститьОВыборе(Элементы.Список.ТекущиеДанные);
КонецПроцедуры


Но в форме владельца не срабатывает событие ОбработкаВыбора. Владельца у вызываемой формы выбора менял, ставил таблицу, поле и всю форму, обработка выбора не срабатывает и все.

&НаКлиенте
Процедура ХР1_ХР_НоменклатураСерийныеНомераНоменклатураНачалоВыбораПос­ле(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
	СтандартнаяОбработка=Ложь;
	ФормаВыборки=ПолучитьФорму("Справочник.Претензии.Форма.ХР1_ФормаВыбораНоменклатуры");
	ФормаВыборки.ЗакрыватьПриВыборе=Истина;
	ФормаВыборки.ЗакрыватьПриЗакрытииВладельца=Истина;
	ПараметрКомпоновки=Новый ПараметрКомпоновкиДанных("Основание");
	ПараметрСКД=ФормаВыборки.Список.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(ПараметрКомпоновки);
	ПараметрСКД.Значение=Объект.Основание;
	ПараметрСКД.Использование=Истина;             
	ОткрытьФорму(ФормаВыборки,,Элемент,,,,);
КонецПроцедуры

&НаКлиенте
Процедура ХР1_ХР_НоменклатураСерийныеНомераНоменклатураОбработкаВыбора­После(Элемент, ВыбранноеЗначение, ДополнительныеДанные, СтандартнаяОбработка)
	Р=1;
КонецПроцедуры

&НаКлиенте
Процедура ХР1_ХР_НоменклатураСерийныеНомераОбработкаВыбораПосле(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
	H=1;
КонецПроцедуры

&НаКлиенте
Процедура ХР1_ОбработкаВыбораПосле(ВыбранноеЗначение, ИсточникВыбора)
	Р=1;
КонецПроцедуры
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. spacecraft 22.02.25 23:15 Сейчас в теме
(1) у варианта ОткрытьФорму По форме нет столько параметров метода. Их нужно в ПолучитьФорму передавать.
ФормаВыборки=ПолучитьФорму("Справочник.Претензии.Форма.ХР1_ФормаВыбораНоменклатуры",,Элемент);
    ...            
    ОткрытьФорму(ФормаВыборки);
Al3x; user1936660; +2 Ответить
2. user2116971 22.02.25 20:56 Сейчас в теме
А форма вообще в курсе, что она является именно формой выбора?
5. qux 25 22.02.25 21:28 Сейчас в теме
(2) Да, при создании формы было выбрано "Форма выбора справочника"
Прикрепленные файлы:
3. miniogn 45 22.02.25 21:02 Сейчас в теме
Возможно обработка выбора должна быть у элемента, не у формы, судя по написанному коду в ТС
&НаКлиенте
Процедура СписокОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
	// Вставить содержимое обработчика.
КонецПроцедуры
4. qux 25 22.02.25 21:24 Сейчас в теме
(3) пробовал и у элемента и у формы, везде пробовал
6. miniogn 45 22.02.25 21:40 Сейчас в теме
Попробуй в оповещение добавить СтандартнаяОбработка = Ложь;
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    ОповеститьОВыборе(Элементы.Список.ТекущиеДанные);
КонецПроцедуры
8. qux 25 23.02.25 09:31 Сейчас в теме
9. qux 25 23.02.25 11:16 Сейчас в теме
Сделал через оповестить. Не пойму почему ОбработкаВыбора не сработала.

Форма выбора:
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	Оповестить("ВыборНоменклатуры",Элементы.Список.ТекущиеДанные);
	//ОповеститьОВыборе(Элементы.Список.ТекущиеДанные);
КонецПроцедуры


Форма владелец:
&НаКлиенте
Процедура ХР1_ОбработкаОповещенияПеред(ИмяСобытия, Параметр, Источник)
	Если ИмяСобытия="ВыборНоменклатуры" Тогда
		Элементы.ХР_НоменклатураСерийныеНомера.ТекущиеДанные.Номенклатура=Параметр.Номенклатура;
		Элементы.ХР_НоменклатураСерийныеНомера.ТекущиеДанные.СерийныйНомер=Параметр.СерийныйНомер;
	КонецЕсли;
КонецПроцедуры
11. user1936660 23.02.25 14:10 Сейчас в теме
(9)
Оповестить("ВыборНоменклатуры",Элементы.Список.ТекущиеДанные);
Умничка! Теперь ты оповещаешь все открытые формы. И если у тебя несколько экземпляров чего у тебя там - все изменят в себе значения. Продолжай!
VyacheslavShilov; +1 Ответить
14. qux 25 24.02.25 09:46 Сейчас в теме
(11) Умничка! Описал как щас все будет работать. А по существу вопроса будут мысли? (и если не заметил условие отрабатывает имя события)
19. user1936660 26.02.25 07:41 Сейчас в теме
(14)
и если не заметил условие отрабатывает имя события
Гениально! Одинаковое для всех открытых форм всех твоих объектов.
10. miniogn 45 23.02.25 11:58 Сейчас в теме
Не тот тип передаёшь, надо ссылку отправлять (ТекущаяСтрока).
И с учётом ценных замечаний из (7) и (6):

&НаКлиенте
Процедура НоменклатураНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
	СтандартнаяОбработка=Ложь;
    ФормаВыборки=ПолучитьФорму("Справочник.Претензии.Форма.ХР1_ФормаВыбораНоменклатуры",,Элемент);
//...
КонецПроцедуры


&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	ОповеститьОВыборе(Элементы.Список.ТекущаяСтрока);
КонецПроцедуры
12. Chameleon1980 23.02.25 19:02 Сейчас в теме
Владельца передайте в открыть форму и сработает обработка выбора.
когда не передали владельца - не понятно где должна сработать обработка выбора.
см. параметр ОткрытьФорму
13. qux 25 24.02.25 09:45 Сейчас в теме
(12) читайте в теме: "Владельца у вызываемой формы выбора менял, ставил таблицу, поле и всю форму, обработка выбора не срабатывает и все."
16. VmvLer 24.02.25 09:52 Сейчас в теме
(13) покажите скрин отладки при создании формы выбора со значением свойства ВладелецФормы

и код обработчика
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
из формы выбора.

А код есть выше. Значит, нет владельца у вызываемой.

Зачем вообще сначала получать форму, а затем ее же открывать? Затолкайте в параметры формы 100500 значений, не забыть установить свойство выбора, и при создании формы делайте с ней всякое. Владельца передавайте в команде ОткрытьФорму().
17. spacecraft 24.02.25 09:58 Сейчас в теме
(13)
Владельца у вызываемой формы выбора менял

Владелец изначально не передавался.
15. VmvLer 24.02.25 09:48 Сейчас в теме
Очевидно же, что владелец не определен. Да и форму обычно открывают, а не получают.
18. skeptik2105 24.02.25 12:20 Сейчас в теме
ФормаВыборки=ПолучитьФорму("Справочник.Претензии.Форма.ХР1_ФормаВыбораНоменклатуры");

Правильно:
ОткрытьФорму("Справочник.Претензии.Форма.ХР1_ФормаВыбораНоменклатуры", 
Новый Структура("Основание", Объект.Основание), 
ВладелецОткрываемойФормы );


ПараметрКомпоновки=Новый ПараметрКомпоновкиДанных("Основание");
ПараметрСКД=ФормаВыборки.Список.КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(ПараметрКомпоновки);
ПараметрСКД.Значение=Объект.Основание;
ПараметрСКД.Использование=Истина;

Правильно:
ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список, 
"Основание", 
Параметры.Основание, 
Истина)


Но в форме владельца не срабатывает событие ОбработкаВыбора

Вероятно, ОбработкаВыбора описана у формы, а необходимо описать у реквизита Элементы.СерийныеНомераНоменклатура.

ОбработкаВыбора должна быть описана у ВладелецОткрываемойФормы. ВладелецОткрываемойФормы может быть:
1. Реквизит формы - ВладелецОткрываемойФормы = Элементы.СерийныеНомераНоменклатура
2. Сама форма - ВладелецОткрываемойФормы = ЭтаФормы
3. Табличная часть - ВладелецОткрываемойФормы = Элементы.СерийныеНомера

Все 3 случая можно использовать при открытии формы. Но ОбработкаВыбора будет срабатывать только для вариантов 1 и 2 при использовании ОповеститьОВыборе.

Можно описать ОбработкаВыбора и у формы, но тогда ВладелецОткрываемойФормы должен быть ЭтаФормы, т.е:
ОткрытьФорму("Справочник.Претензии.Форма.ХР1_ФормаВыбораНоменклатуры", 
Новый Структура("Основание", Объект.Основание), 
ЭтаФорма)

Если открываемая форма будет закрыта сразу после выбора значения, рекомендуется использовать ОпианиеОповещения при открытии формы.
Оставьте свое сообщение

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