|
v7: Получить Контекст документа из процедуры глобального модуля | ☑ | ||
---|---|---|---|---|
0
IgorA100
07.09.21
✎
17:10
|
Открываем документ, меняем реквизит "Склад", в момент выбора нового склада попадаем в глобальную процедуру.
Как из глобальной процедуры, безгючно и стабильно, получить контекст документа ? :) К = глВзятьКонтекст(Контекст) - не работает. глСервис.АктивныйКонтекст(Конт) - я получаю контекст Склада, а мне нужно того объекта из которого я вызвал изменение склада. глСервис.ПолучитьСтекВызова() - я могу найти там "ИДМодуля". Но не более того, как на основе этого ИД достучаться до его контекста не понимаю. Есть мысли? ЗЫ: Передать контекст самого документа в глобальную процедуру не предлагать :) |
|||
1
ДенисЧ
07.09.21
✎
17:13
|
Передавай контекст документа, а потом слушай "Валенки"
|
|||
2
IgorA100
07.09.21
✎
17:17
|
(1) Я же написал выше: ЗЫ: Передать контекст самого документа в глобальную процедуру не предлагать
Так-же не предлагать передавать контекст через глобальную переменную. Ну т.е. передавать контекст в момент вызова глобальной процедуры - не вариант. |
|||
3
Ёпрст
07.09.21
✎
18:05
|
||||
4
IgorA100
07.09.21
✎
18:05
|
Еще, как вариант, можно сделать так:
глСервис.СписокВсехОткрытыхОкон() Но как найти то самое окно, из которого кликнули для выбора реквизита? |
|||
5
Ёпрст
07.09.21
✎
18:06
|
Ну или проще. Использовать класс.Перехватчик и там уже, что угодно и как угодно
|
|||
6
IgorA100
07.09.21
✎
18:10
|
(3) Пойду осмысливать, ибо при тупом вызове в отладчике "Шаблон("[РеквизитФормы]")" - рухнул и отладчик и сама конфа :)
(5) Ни разу его не пользовал, пойду почитаю... Спасибо, Ёпрст! |
|||
7
IgorA100
07.09.21
✎
18:16
|
(3) Что-то не прокатывает. Рушится с ошибкой на "BLang.dll" :(
|
|||
8
Ёпрст
07.09.21
✎
18:39
|
(6)Ну вот, как пример использования
https://infostart.ru/public/20038/ |
|||
9
Злопчинский
07.09.21
✎
20:03
|
(6) я вроде пробовал эту фичу, вроде работало.
сейчас проверю еще раз. |
|||
10
Злопчинский
07.09.21
✎
20:08
|
(6) проверил фичу, работает как описано норм.
при тупом вызове в отладчике "Шаблон("[РеквизитФормы]")" - тут непонятно в каком месте на какjй точке вызывается это |
|||
11
IgorA100
07.09.21
✎
20:28
|
(10) В глобальной процедуре вызываемой из формы документа по клику на изменение реквизита формы "склад".
По поводу перехватчика - я вспомнил, что ранее уже внедрялась в систему "Фабрика событий" https://infostart.ru/public/71084/ Там есть перехват и ГК и ГМ. Я с ней глобально не разбирался, работает и фиг с ней. Читал, думал.. Наверное конечно интересно, но пока у меня пасьянс в голове не сложился, как с перехватом ничего старого не сломать и новое сделать. Как-то там все довольно сложно... |
|||
12
IgorA100
07.09.21
✎
20:42
|
(9) В классическом режиме как описано по ссылке - работает без проблем.
Кстати, вот написано: сообщить(Шаблон("[РеквизитФормы]")); // получаем переменную модуля формы А по факту, мы получаем НЕ переменную формы, как объект, а просто его наименование. Пользы от этого маловато.... Кстати, сейчас почему-то перестало "падать" и при вызове Шаблон("[РеквизитФормы]") из глобальной процедуры. Может глюк какой был.... |
|||
13
Злопчинский
07.09.21
✎
23:39
|
(12) "А по факту, мы получаем НЕ переменную формы, как объект, а просто его наименование. Пользы от этого маловато...."
тю... попробуй Результат = Шаблон("[ЗначениеВСтрокуВнутр(РеквизитФормы)]"; Результат = ЗначениеИзСтрокиВнутр(Результат); |
|||
14
Злопчинский
07.09.21
✎
23:46
|
Процедура глТест() Экспорт
сообщить(Шаблон("[ПеременнаяМодуля]")); // получаем переменную модуля сообщить(Шаблон("[РеквизитФормы]")); // получаем переменную модуля формы Результат = Шаблон("[ЗначениеВСтрокуВнутр(РеквизитФормы)]"); Результат = ЗначениеИзСтрокиВнутр(Результат); Сообщить("Объект = "+Результат+", "+ТипЗначенияСтр(Результат)+"."+Результат.Вид()); сообщить(Шаблон("[ФункцияМодуля()]")); // вызываем функцию модуля формы КонецПроцедуры // глТест() . Это значение ПеременнойМодуля Журнал "Русский дом" №1 Объект = Журнал "Русский дом" №1, Справочник.Номенклатура Сработала функция модуля |
|||
15
Злопчинский
07.09.21
✎
23:53
|
Гораздо интереснее почему вообще эта фича без передачи контекста с Шаблон работает..
|
|||
16
Злопчинский
08.09.21
✎
00:04
|
(12) Опять же, что мешает передавать контекст в ГМ через глоб.переменную?
что мешает вместо вызова глМояГлобПроц(); написать глРасшифровка = глВзятьКонтекст(Контекст); глМояГлобПроц(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |