Имя: Пароль:
1C
1С v8
Управляемые формы открыть форму выбора
0 Nast
 
13.03.19
11:15
Подскажите, как в управляемых формах при нажатии на кнопку открыть форму выбора справочника и получить выбранное значение? ОткрытьФормуМодально нельзя делать.
1 Fragster
 
гуру
13.03.19
11:17
ОткрытьФорму, указав в параметрах РежимВыбора и владельцем нужный элмент управления. Тогда выбранное значение (или значение из ОповеститьОВыборе) бдет прилетать в указанный элемент управления.
2 Василий Алибабаевич
 
13.03.19
11:18
(0)
1. В ОткрытьФорму указать обработчик закрытия.
2. В открываемой форме в каком-нибудь событии прописать ЭтаФорма.Закрыть(<ЗначениеКотороеНужноВернуть>). Оно упадет в в обработчик закрытия из п 1.
3 Nast
 
13.03.19
11:20
у меня есть справочник Партнеры, надо при нажатии на созданную кнопку открывать форму выбора справочника Контрагенты с отбором по текущему Партнеру и потом получать выбранного контрагента. Можно ли сделать не внося изменения в справочник Контрагенты?
4 Fragster
 
гуру
13.03.19
11:20
(2) это сложно
5 Василий Алибабаевич
 
13.03.19
11:20
+ (2) В ОткрытьФорму указать РежимОткрытияОкна Блокировать окно владельца
6 Fragster
 
гуру
13.03.19
11:20
(3) да, в параметрах еще можно указать отбор. а лучше в свойствах реквизита указать связи параметров выбора. тогда ничего кодом вообще не надо будет делать.
7 Nast
 
13.03.19
11:24
В открываемой форме в каком-нибудь событии прописать ЭтаФорма.Закрыть(<ЗначениеКотороеНужноВернуть>). Мне надо без изменения внесения изменений в открываемую форму
8 Василий Алибабаевич
 
13.03.19
11:24
(4) Что сложно? Кому сложно?
ИМХО - это проще, чем городить огород с Оповещением о выборе и обработкой выбора. А если выбор нескольких реквизитов - нужно в обработка выбора анализировать что прилетело или от кого. А так - все укладывается в линейную логику ОткрытьМодально. Ну... почти.
9 Василий Алибабаевич
 
13.03.19
11:26
(7) ГЫ. тогда см(6).
В случае, если от батареи не отползти - тогда и (1) не поможет. Ибо оповещение никто не кинет.
10 Fragster
 
гуру
13.03.19
11:32
(8) если ты открываешь форму выбора и указываешь владельцем элемент управления - то ничего дополнительно прописывать не надо, если у тебя элемент управления того же типа, что и выбираемое значение. а вообще автору надо (6)
11 Сияющий в темноте
 
13.03.19
12:17
Форму система откроет автоматом и вернет из нее значение,а вот отбор кто то должен поставить,для этого,автомат нужно перевести в ручной режим,то есть открыть форму и установить в ней отбор,а выбор потом прилетит в обработку выбора.

блокировать основную форму не обязательно,но,если не блокировать,то пользователь может потерять форму списка.
12 Nast
 
13.03.19
14:35
Почему если делать отбор по владельцу при открытии формы, то этот отбор сохраняется даже если открыть потом другой элемент справочника?


ПараметрыФормы  = Новый Структура;
    
ПараметрыФормы.Вставить("РежимВыбора", Истина);
ПараметрыФормы.Вставить("ЗакрыватьПриВыборе", Истина);
Отбор = Новый Структура;
    Отбор.Вставить("Партнер", Объект.Ссылка);
    
    П = Новый Структура;
    П.Вставить("Параметры", ПараметрыФормы);
    
    П.Вставить("Отбор",Отбор);

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

    ОткрытьФорму("Справочник.КонтактныеЛицаПартнеров.ФормаВыбора", П, ЭтаФорма, , , , ОбработкаВыбора);
13 Nast
 
13.03.19
15:20
_
14 Fragster
 
гуру
13.03.19
15:28
То, что у тебя запихивается в П.Параметры должно запихиваться напрямую в П. Ну и см. (6)
15 Fragster
 
гуру
13.03.19
15:28
и зачем у тебя обработка выбора - тоже хз.
16 DrWatson
 
13.03.19
15:40
(15) Если Если нет элемента формы и нужно программно поймать выбор, то это правильный способ.
17 Nast
 
13.03.19
16:04
(14) а как напрямую?
18 Nast
 
13.03.19
16:11
Отбор = Новый Структура;
    Отбор.Вставить("Партнер", Объект.Ссылка);
    П = Новый Структура;
    П.Вставить("РежимВыбора", Истина);
    П.Вставить("ЗакрыватьПриВыборе", Истина);

    П.Вставить("Отбор",Отбор);

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

    ОткрытьФорму("Справочник.КонтактныеЛицаПартнеров.ФормаВыбора", П, ЭтаФорма, , , , ОбработкаВыбора);

Все равно сохраняется прежний и нет отбора по владельцу. Надо чтобы открывалась форма выбора контактных лиц с отбором по владельцу, т.е. партнеру
19 ptiz
 
13.03.19
16:15
Пример отбора по владельцу:

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