Открытие формы выбора и возврат результата

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

3. Создал обработчик получения результата выбора
&НаКлиенте
Процедура ТопливоОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
	а=0;// для точки отладки и просмотра результата
КонецПроцедуры

На данном этапе целью было не стандартной обработкой, а самому открыть форму выбора и взять с нее значение, но значение не получает форма инициирующая вызов формы выбора. Процедура "ТопливоОбработкаВыбора" не отрабатывает после выбора элемента. Подскажите пожалуйста в чём проблема?
В номенклатуре на кнопку выбора в конце процедуры прописана строка кода:
ОповеститьОВыборе(НоменклатураСсылка);
Designer1C; +1
По теме из базы знаний
Найденные решения
6. SedovSU@mail.ru 297 14.03.19 12:23 Сейчас в теме
Вы когда вызываете процедуру ОткрытьФорму вам нужно передать владельца, чтобы сработала процедура ОбработкаВыбора

Стандартнаяобработка = ложь;
ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаВыбора",,Элемент)
AlexUnder; user705522_constantin_h; Designer1C; chima; 1v7; SantiouS; +6
7. SedovSU@mail.ru 297 14.03.19 12:24 Сейчас в теме
(5) нужно элемент формы передавать\

Вы когда вызываете процедуру ОткрытьФорму вам нужно передать владельца, чтобы сработала процедура ОбработкаВыбора

Стандартнаяобработка = ложь;
ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаВыбора",,Элемент)
user705522_constantin_h; Designer1C; SantiouS; +3
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. N0t_F0und 10 14.03.19 12:02 Сейчас в теме
При открытии формы Справочник.Номенклатура.Форма.ФормаВыбора посмотреть, что установлено в качестве отбора, при необходимости установить свой
+
3. SantiouS 14.03.19 12:04 Сейчас в теме
(2) Сейчас дело не в отборе, а в том что по нажатию на кнопку "Показать все" открывается форма выбора номенклатуры, но после выбора результат не возвращается в форму инициирующую вызов.
+
9. VictorRGB2 13 14.03.19 12:29 Сейчас в теме
(3) потому что в открываемую форме не передаете форму владельца, система не знает кого оповещать о выборе и не объявлете оповещение о выборе

надо так, примерно

ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаВыбора", <Параметры>, ЭтотОбъект, , , , Новый ОписаниеОповещения("ТопливоОбработкаВыбора", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);

Процедура ТопливоОбработкаВыбора(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
    
    Если РезультатЗакрытия = Неопределено Тогда
        
        // "Ничего не выбрано"
        
    Иначе
        
       // обработка РезультатЗакрытия
        
    КонецЕсли;
    
КонецПроцедуры
Показать
+
11. SantiouS 14.03.19 12:31 Сейчас в теме
(9)
Если РезультатЗакрытия = Неопределено Тогда

// "Ничего не выбрано"

Иначе

// обработка РезультатЗакрытия

КонецЕсли;


Зачем еще Оповещение делать, если система стандартно обрабатывает выбор? (код выше)
+
13. VictorRGB2 13 14.03.19 12:37 Сейчас в теме
(11) оба варианта имеют место быть
вдруг кому пригодится на случай выбора

но в общем-то вы правы, что-то я зацепился за ОповеситьОВыборе() отсюда и пример такой привел...
SantiouS; +1
4. Artem_007 14.03.19 12:19 Сейчас в теме
ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаВыбора",ЭтаФорма....
Так надо
+
5. SantiouS 14.03.19 12:22 Сейчас в теме
(4)
ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаВыбора",,ЭтаФорма);

Пробовал, результат не возвращается.
+
7. SedovSU@mail.ru 297 14.03.19 12:24 Сейчас в теме
(5) нужно элемент формы передавать\

Вы когда вызываете процедуру ОткрытьФорму вам нужно передать владельца, чтобы сработала процедура ОбработкаВыбора

Стандартнаяобработка = ложь;
ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаВыбора",,Элемент)
user705522_constantin_h; Designer1C; SantiouS; +3
8. SantiouS 14.03.19 12:25 Сейчас в теме
(7) Работает, спасибо.
"Элемент" не равносильно "Запись.Топливо" получается. Сейчас типы посмотрю в конфигураторе. Странно, но Вы помогли. Спасибо!
+
14. SedovSU@mail.ru 297 14.03.19 12:47 Сейчас в теме
(8) Да не зачто! Неееет это разное. Запись.Топливо - это значение, а Элемент - это элемент управления формы
+
10. SantiouS 14.03.19 12:29 Сейчас в теме
(7) Все - посмотрел. Я передавал сам реквизит, а нужно было передавать элемент формы.
Элемент - Тип:ПолеФормы
Запись.Топливо - Тип:СправочникСсылка.Номенклатура
В данном случае необходимо было передавать Элемент.
Еще раз спасибо!
+
6. SedovSU@mail.ru 297 14.03.19 12:23 Сейчас в теме
Вы когда вызываете процедуру ОткрытьФорму вам нужно передать владельца, чтобы сработала процедура ОбработкаВыбора

Стандартнаяобработка = ложь;
ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаВыбора",,Элемент)
AlexUnder; user705522_constantin_h; Designer1C; chima; 1v7; SantiouS; +6
12. Artem_007 14.03.19 12:32 Сейчас в теме
Обработка выбора вот такая должна быть
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
+
Внимание! Тема сдана в архив

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