Имя: Пароль:
1C
1С v8
Результат закрытия формы выбора
0 gul_Sayan
 
30.11.22
10:52
По нажатии кнопки хочу получить список выбранных подразделений.
Делаю так.
&НаКлиенте
Процедура ПодборПодразделений(Команда)  
    
    ПараметрыОткрытия = Новый Структура;
       ПараметрыОткрытия.Вставить("ЗакрыватьПриВыборе", Ложь);
    ПараметрыОткрытия.Вставить("ЗакрыватьПриЗакрытииВладельца",    Истина);
    ПараметрыОткрытия.Вставить("МножественныйВыбор", Истина);
    ПараметрыОткрытия.Вставить("РазрешитьВыборКорня", Ложь);
    ПараметрыОткрытия.Вставить("РежимВыбора", Истина);

    ткОповещение = Новый ОписаниеОповещения("ПодборПодразделенийЗавершение", ЭтотОбъект);    
    ОткрытьФорму("Справочник.ПодразделенияОрганизаций.ФормаВыбора", ПараметрыОткрытия, ЭтотОбъект,,,,ткОповещение);
    
КонецПроцедуры

&НаКлиенте
Процедура ПодборПодразделенийЗавершение(РезультатВыбора, Параметры) Экспорт
    
    ткИмяСобытия = "";    
    
КонецПроцедуры

Но результат выбора - неопределено, хотя в форме выбора что-то выбирал. Что делаю не так?
1 Максим Нижегородец
 
30.11.22
11:32
&НаКлиенте
Процедура ВыборКонтрагента(Команда)
    ткОповещение = Новый ОписаниеОповещения("ПодборКонтрагента", ЭтаФорма);
    ОткрытьФорму("Справочник.Контрагенты.Форма.ФормаВыбора", , ЭтаФорма,,,,ткОповещение);
КонецПроцедуры

&НаКлиенте
Процедура ПодборКонтрагента(РезультатВыбора, Параметры) Экспорт
    Сообщить(РезультатВыбора);
КонецПроцедур

Так работает. Либо нужно ЭтотОбъект на ЭтаФорма поменять. Либо явно указывать открываемую форму (На пример: "Справочник.ПодразделенияОрганизаций.Форма.ФормаВыбора").
2 gul_Sayan
 
30.11.22
11:45
(1) От Изменения Этот объект на Эта форма ничего не меняется. Если указать Справочник.ПодразделенияОрганизаций.Форма.ФормаВыбора вылетает ошибка. Да Базу ЗУП 3.1.23.165.
3 gul_Sayan
 
30.11.22
12:15
При закрытии формы выбора подразделений При закрытии формы
Процедура ПриЗакрытии(ЗавершениеРаботы)
    
    Если ЗавершениеРаботы Тогда
        Возврат;
    КонецЕсли;
    
    Если ВыбранныеПодразделения.Количество() > 0 Тогда
        ОповеститьОВыборе(ВыбранныеПодразделения.ВыгрузитьЗначения());
    КонецЕсли;
    
КонецПроцедуры
В оповестить о выборе - массив.
А в мою процедуру почему то попадает - неопределено :-(
4 Максим Нижегородец
 
30.11.22
12:56
//    РезультатВыбора отправляем одним из способов
    Закрыть(РезультатВыбора);
    Оповестить("ВыборТипаДанных",РезультатВыбора,"ФормаВыбораТипа");


//Можем вот так забрать то , что выбрали:


&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
    Если (ИмяСобытия="ВыборТипаДанных") И (Источник="ФормаВыбораТипа") Тогда
РезультатВыбора = Параметр;
    КонецЕсли;
КонецПроцедуры
5 Галахад
 
гуру
30.11.22
12:59
(3) ОповеститьОВыборе передает в ОбработкаВыбора
6 Максим Нижегородец
 
30.11.22
13:01
(5) Согласен, можно так. Третий вариант.
7 gul_Sayan
 
30.11.22
13:04
(5) В событие формы ОбработкаВыбора, я по завершению выбора в подразделении вообще не попадаю, иначе я бы вообще не начал городить с ОписаниемОповещения :-(
Вот в него я попадаю, но без результата выбора :-(
Процедура закрытия формы выбора подразделений стандартная, конфа вообще на поддержке без внесения изменений.
8 Максим Нижегородец
 
30.11.22
13:16
(7) Еще раз. Если форма выбора самописная, то нужно позаботится, чтобы по завершению выбора отработало "Закрыть(РезультатВыбора);".
Если не самописная, то и так должно прокатить. Т.к. это работает (я проверил):

Процедура ВыборКонтрагента(Команда)
    ткОповещение = Новый ОписаниеОповещения("ПодборКонтрагента", ЭтаФорма);
    ОткрытьФорму("Справочник.Контрагенты.Форма.ФормаВыбора", , ЭтаФорма,,,,ткОповещение);
КонецПроцедуры

&НаКлиенте
Процедура ПодборКонтрагента(РезультатВыбора, Параметры) Экспорт
    Сообщить(РезультатВыбора);
КонецПроцедур
9 1Сергей
 
30.11.22
13:23
(7) ОбработкаВыбора должна быть в получающей форме, не в открываемой
10 Максим Нижегородец
 
30.11.22
13:31
КОРОЧЕ ДЕЛО ВОТ В ЧЕМ (ЗУП пришлось искать):

В ЗуПе не формы выбора у справочника "ПодразделенияОрганизаций" и событие ВЫБОРА ни как не обрабатывается - вот и ни чего не возвращается.

Была бы форма "Выбора" (с кнопкой выбора и обработкой события выбора), тогда все взлетело.
11 Максим Нижегородец
 
30.11.22
13:43
Скорей всего для справочника "ПодразделенияОрганизаций" используется быстрый выбор из выпадающего списка (справочник обычно небольшой).
12 gul_Sayan
 
30.11.22
15:28
(9) В получающей и смотрел.
(10) при этом если на форме есть список значений(подразделения) то можно нажать на кнопку подбор, попадаешь именно в форму выбора и заполняется в списке всё нормально, так и пришлось сделать, сначала заполнить список (в ручную), а затем его обрабатывать (2 действия заместо 1го).