Имя: Пароль:
1C
1C 7.7
v7: Программное открытие формы списка подчиненного справочника для выбора элемента.
0 Anyman
 
21.11.18
12:26
В документе реквизит "Клиент" и связанный с ним реквизит "Контракт"(подчиненный справочник "Контракты").
В свойствах "Клиента" вставлена процедура "ПриВыбореКлиента()"

Процедура ПриВыбореКлиента()
    ОткрытьПодбор("Контракты","ФормаСписка",,0);
КонецПроцедуры

Форма списка подчиненного справочника открывается но не поверх всех окон, а за окном документа.
Как сделать сверху всех окон?
1 Масянька
 
21.11.18
12:27
(0) ОткрытьМодально
2 АЛьФ
 
21.11.18
12:29
Если нужен подбор, то не надо сам документ открывать модально.
3 Карст
 
21.11.18
12:39
вообще то нужно владельца передавать и всйо
4 Anyman
 
21.11.18
12:41
(1) В "ОткрытьПодбор()" нет праметра ОткрытьМодально.
5 Anyman
 
21.11.18
12:42
(2) Документ создается интерактивно, пользователем.
6 Anyman
 
21.11.18
12:43
(3) Зачем передавать владельца? И так открываются нужные элементы подчиненного справочника.
7 Злопчинский
 
21.11.18
14:43
(5) ну и что? или форма нового документ аоткрывается модально или после открытия формы подбора активизируется форма документа. Что у вас там понаписано - нам отсюда не видно...
8 Anyman
 
22.11.18
08:30
(7) Ничего от себя для открытия документа я не писал. По умолчанию, интерактивно созданный, он открывается не модально.
Проверил - могу перемещяться по открытым окнам.Форму документа нигде не ативизирую. Вот, код:

Процедура ОбработкаПодбора(Выб)
    Контракт=Выб;
КонецПроцедуры

Процедура ПриВыбореКлиента()
    ОткрытьПодбор("Контракты","ФормаСписка",,0);
КонецПроцедуры

Может по другому можно как-то сделать?
9 Злопчинский
 
22.11.18
15:52
При чем здесь ОбработкаПодбора?
Смотри ОткрытьПодбор.
Смотри где в коде есть что-то типа активизации родителського окна (откуда вызывал подбор) или есть Активизировать(ЗдесьПолеРодительскойФормы);
10 Злопчинский
 
22.11.18
15:58
(8) зачем подбор для выбора ЕДИНИЧНОГО значения?

Процедура ПриВыбореКлиента()
  СпрКонракты = СоздатьОбъект("Справочник.Контракты");
  СпрКонтракты.ИспользоватьВладельца(ВыбКонтрагент);
  Если СпрКонтракты.Выбрать("Будь мужиком, выбери контракт!","ФормаВыбора") = 0 Тогда
    Возврат; //чтото делаем если контракт не выбран
  КонецЕсли;
  ВыбКонтракт = СпрКонтракты.ТекущийЭлемент();
КонецПроцедуры
11 Anyman
 
26.11.18
06:57
(9) Это ВЕСЬ код в модуле, никакого "Активизировать" там нет.

(10) Выбрать() работает! А, почему ОткрытьПодбор() открывает окно заднем плане непонятно.
12 MadDAD
 
26.11.18
08:11
(11) В формулах текста на форме нет "Активизировать()" ?

Выбрать() работает потому, что окновыбора открываетя модально. А окно подбора не модально. потому и не работает. Релиз платформы, кстати какой?
13 MadDAD
 
26.11.18
08:13
(12) В формулах текста на форме нет "Активизировать()" ? - имелось в виду на форме документа
14 vcv
 
26.11.18
08:18
(11) >> Выбрать() работает! А, почему ОткрытьПодбор() открывает окно заднем плане непонятно
15 vcv
 
26.11.18
08:18
Вполне вероятно, что при завершении выбора в поле ввода происходит неявная активизация этого поля ввода.
16 Ёпрст
 
26.11.18
10:35
(11) потому, что (2)
17 Anyman
 
26.11.18
11:09
(12) В форме ничего не Активизируется. Создал "чистый" экспериментальный документ :) Релиз 27.
18 Anyman
 
26.11.18
11:10
(15) И как ее отключить?
19 MadDAD
 
26.11.18
11:36
(18) Процедура ПриВыбореКлиента() откуда вызывается?
20 MadDAD
 
26.11.18
11:41
(19) Если ПриВыбореКлиента() вызывается из формулы реквизита, то после открытия подбора, управление возвращается активному реквизиту на форме документа и, соответственно активизируется форма документа. Нужно перевесить вызов ПриВыбореКлиента() на отдельную кнопку.

Но в (10) - абсолютно верное решение для подбора единственного элемента справочника.
21 Kigo_Kigo
 
26.11.18
13:01
потому чо надо использовать ПриНачалеВыбораЗначения()
22 Anyman
 
27.11.18
05:35
(20) Да, вызывается из формулы реквизита.

Меня (10), в данном случае вполне, устраивает.