Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Получить Контекст документа из процедуры глобального модуля

v7: Получить Контекст документа из процедуры глобального модуля
Я
   IgorA100
 
07.09.21 - 17:10
Открываем документ, меняем реквизит "Склад", в момент выбора нового склада попадаем в глобальную процедуру.
Как из глобальной процедуры, безгючно и стабильно, получить контекст документа ? :)

К = глВзятьКонтекст(Контекст) - не работает.
глСервис.АктивныйКонтекст(Конт) - я получаю контекст Склада, а мне нужно того объекта из которого я вызвал изменение склада.
глСервис.ПолучитьСтекВызова() - я могу найти там "ИДМодуля". Но не более того, как на основе этого ИД достучаться до его контекста не понимаю.

Есть мысли?

ЗЫ: Передать контекст самого документа в глобальную процедуру не предлагать  :)
   ДенисЧ
 
1 - 07.09.21 - 17:13
Передавай контекст документа, а потом слушай "Валенки"
   IgorA100
 
2 - 07.09.21 - 17:17
(1) Я же написал выше: ЗЫ: Передать контекст самого документа в глобальную процедуру не предлагать
Так-же не предлагать передавать контекст через глобальную переменную.
Ну т.е. передавать контекст в момент вызова глобальной процедуры - не вариант.
   Ёпрст
 
3 - 07.09.21 - 18:05
   IgorA100
 
4 - 07.09.21 - 18:05
Еще, как вариант, можно сделать так:
глСервис.СписокВсехОткрытыхОкон()
Но как найти то самое окно, из которого кликнули для выбора реквизита?
   Ёпрст
 
5 - 07.09.21 - 18:06
Ну или проще. Использовать класс.Перехватчик и там уже, что угодно и как угодно
   IgorA100
 
6 - 07.09.21 - 18:10
(3) Пойду осмысливать, ибо при тупом вызове в отладчике "Шаблон("[РеквизитФормы]")" - рухнул и отладчик и сама конфа :)
(5) Ни разу его не пользовал, пойду почитаю...
Спасибо, Ёпрст!
   IgorA100
 
7 - 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й точке вызывается это
   IgorA100
 
11 - 07.09.21 - 20:28
(10) В глобальной процедуре вызываемой из формы документа по клику на изменение реквизита формы "склад".
По поводу перехватчика - я вспомнил, что ранее уже внедрялась в систему "Фабрика событий" https://infostart.ru/public/71084/ Там есть перехват и ГК и ГМ. Я с ней глобально не разбирался, работает и фиг с ней. Читал, думал.. Наверное конечно интересно, но пока у меня пасьянс в голове не сложился, как с перехватом ничего старого не сломать и новое сделать. Как-то там все довольно сложно...
   IgorA100
 
12 - 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) Опять же, что мешает передавать контекст в ГМ через глоб.переменную?
что мешает вместо вызова
глМояГлобПроц();
написать
глРасшифровка = глВзятьКонтекст(Контекст);
глМояГлобПроц();

Список тем форума
 
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Э. Йодан
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.