1. SantiouS 14.03.19 11:56 Сейчас в теме

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

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

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

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

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

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

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

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

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

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

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

Иначе

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

КонецЕсли;


Зачем еще Оповещение делать, если система стандартно обрабатывает выбор? (код выше)
13. VictorRGB2 9 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 292 14.03.19 12:24 Сейчас в теме
(5) нужно элемент формы передавать\

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

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

Стандартнаяобработка = ложь;
ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаВыбора",,Элемент)
SantiouS; +1 Ответить
12. Artem_007 14.03.19 12:32 Сейчас в теме
Обработка выбора вот такая должна быть
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Нижний Новгород
зарплата до 120 000 руб.
Полный день

Программист 1С
Волгоград
зарплата от 45 000 руб. до 90 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Консультант-аналитик 1С
Москва
зарплата от 70 000 руб. до 100 000 руб.
Полный день

Программист 1С
Москва
зарплата от 80 000 руб. до 120 000 руб.
Временный (на проект)