Имя: Пароль:
1C
1C 7.7
v7: Перехват выбора значения в модальном режиме
,
0 AliAksA
 
14.06.17
09:42
Привет всем !

При выборе значения элемента на форме документа использованы две штатные процедуры "ПриНачалеВыбораЗначения" и "ОбработкаВыбораЗначения", которые по идее работают только в немодальном режиме ...

В связи со спецификой понадобилось обработать документ в модальном режиме: код в "ПриНачалеВыбораЗначения" сработал - вызвался журнал с определенными параметрами, а вот "ОбработкаВыбораЗначения" не взлетела -
в неё тупо не попадает ...

Может кто-нить подскажет выход из ситуации? Заранее благодарю.
1 Ёпрст
 
14.06.17
09:44
поймать что-то после открытия модальной формы, в этом же методе.
2 Ёпрст
 
14.06.17
09:45
в твоём случае, лови всё в ПриНачалеВыбораЗначения, сразу после закрытия модальной формы.
3 Рэйв
 
14.06.17
09:53
(0)Открытая модально форма возвращает выбранное.
Сделай чтото вроде
Выбор=ТвояФорма.ОткрытьМодально();
4 AliAksA
 
14.06.17
09:53
(2) там журнал открывается в немодальном режиме - не перехватишь ... попробую в моде открыть ...
5 AliAksA
 
14.06.17
09:54
(3) это не 8-ка) знать бы как ...
6 Рэйв
 
14.06.17
09:54
(5)Насколько я помню и в 7.7 оно работало
7 Ёпрст
 
14.06.17
09:55
(5)
Конт = "";
ОткрытьФормуМодально("Вася",Конт);
Сообщить(Конт.Вася);
8 HawkEye
 
14.06.17
09:55
(5) <КонтекстФормы> - имя переменной, куда можно задать значение любого типа для передачи в открываемую форму. Данное значение будет доступно в открытой форме как атрибут Форма.Параметр. После исполнения данного метода система вернет в данную переменную контекст открытой формы (необязателен).
9 HawkEye
 
14.06.17
09:56
(6) Открывает визуальную форму журнала документов.
Возвращает: 1 - если действие выполнено, 0 - иначе.
10 Рэйв
 
14.06.17
09:58
(9)Не дословно по синтаксису, а впринципе можно было я помню:-)
11 Масянька
 
14.06.17
10:00
А можно спросить: а что нужно делать в "ОбработкаВыбораЗначения"?
12 AliAksA
 
14.06.17
10:02
Гы, нашел выход - когда-то давно завел глПеременная Экспорт - для различных извратов

В форме журнала:

Процедура ПриВыбореСтроки()
    
    глПеременная = ТекущийДокумент;

КонецПроцедуры // ПриВыбореСтроки()

В форме документа:

Процедура ДокОснованиеФормула() // при изменении

    Если ПустоеЗначение(глПеременная) = 0 Тогда
        ДокОснование = глПеременная;
        глПеременная = "";
    КонецЕсли;
    
КонецПроцедуры // ДокОснованиеФормула()

На самом деле изменение значения элемента документа происходит на выходе, а вот при модальном режиме оно типа - невидимка.

Ребят, спасибо за подсказки - просто Журнал в модальном режиме открывать было нежелательно.

ТЕМА ЗАКРЫТА
13 HawkEye
 
14.06.17
10:14
(12)
как-то так...

В форме журнала:

Процедура ПриВыбореСтроки()
    
    Форма.Параметр = ТекущийДокумент;

КонецПроцедуры// ПриВыбореСтроки()


В форме документа:
    конт = "";
    открытьФормуМодально("нужныйЖурнал", конт);
    Сообщить(конт);
КонецПроцедуры// ДокОснование
14 AliAksA
 
14.06.17
10:19
(13)Ещё раз спасибо - открывать форму Журнала модально - очень нежелательно - хотя бы из-за огран.размеров окна: при множестве значимых колонок это очень неудобно.

P.S. маленькое неудобство - после выбора элемента документа из Журнала (оно пустым/прежним отображено будет) обязательно на Ентер ткнуть надо, чтобы функция "ПриИзмененииЭлемента" отработала ...