Имя: Пароль:
1C
 
ВыполнитьПроцедуру и FormEX
,
0 Volodja
 
30.06.20
10:40
Можно ли из Formex вызвать процедуру глобального модуля?
   //Сервис=СоздатьОбъект("Сервис");
   //ПутьОбработчика="ТестоваяОбработка"; в глобальном модуле есть Процедура ТестоваяОбработка()

    Сервис.ВыполнитьПроцедуру(,СокрЛП(спрРЗ.ПутьОбработчика));
1 Волшебник
 
модератор
30.06.20
10:44
Экспорт добавь
2 Volodja
 
30.06.20
10:47
Добавлен. не проходит
3 Mikeware
 
30.06.20
11:33
(0) так ты в текущем контексте пытаешься найти выполняемую процедуру
4 Volodja
 
30.06.20
16:33
(3) Да верно. а как задать контекст глобального метода?
5 Volodja
 
30.06.20
16:34
модуля
6 Ёпрст
 
30.06.20
16:41
(0) для этого формекс не нужен, она и так доступна везде, если экспортная
7 Volodja
 
30.06.20
16:45
У меня название процедуры в переменной
8 Djelf
 
30.06.20
18:00
(0) Не работает это с глобальными процедурами, а только с процедурами Контекста, а в ГМ - ГлобальныйКонтекст, а вот получить его, насколько я знаю, никому не удалось.
Используй ВыполняемыйМодуль из 1с++

ВМ = СоздатьОбъект("ВыполняемыйМодуль");
ВМ.УстановитьМодуль("глПроцедура();");
ВМ.КомпилироватьИВыполнитьМодуль();
9 mikecool
 
30.06.20
18:04
(7) Выполнить() в помощь
10 Djelf
 
30.06.20
18:04
+(8) А можно и без FormEx и 1C++.
Нужна пустая форма с кодом #ЗагрузитьИзФайла ВыполняемыйКод.txt, а в ВыполняемыйКод.txt пишешь вызов процедуры.
11 Djelf
 
30.06.20
18:07
(9) Выполнить()? В клюшках? Протрезвей!
12 Ёпрст
 
30.06.20
22:22
(7) открой для себя Шаблон
13 Ёпрст
 
30.06.20
22:22
(11) шаблон же, считай, выполнить в снеговике
14 Djelf
 
01.07.20
15:15
(12) Шаблон не выполняет Процедуры, только Функции. Будет ошибка: "Процедура вызывается как функция (глПроцедура)"
15 Ёпрст
 
01.07.20
15:18
(14) ну ты как маленький..одну функцию заглушку и привет.
16 Ёпрст
 
01.07.20
15:20
Ну а так, раз есть формекс, то проще добавить свой глобальник со своими процами ифункциями..
17 Ёпрст
 
01.07.20
15:20
Да и вообще, не понятно, как у автора есть имя, и почему не может просто написать его в коде
18 Djelf
 
01.07.20
15:39
(17) Заглушку то можно, но предположим что в конкретной конфигурации нет процедуры, для которую мы пишем заглушку - не сработает.
Тогда решение только в (16) - собирать доп.гм с заглушками и через шаблон.
Это если 1c++ нет, хотя это сомнительно, использовать formex без 1c++, решение довольно странное.
19 Volodja
 
02.07.20
07:13
Спасибо.
Я так пока и выкрутился через Шаблон
Вызываю глВыполнитьФункцию(_ИмяПроцедуры)
а в ней через Шаблон.
Пока переписал вызовы нужных процедур как функции

позже переделаю под ВыполняемыйМодуль
(17) глобальник постоянно дописывается новыми процедурами и функциями. и постоянно делать что-то вроде:

Если _ИмяПроцедуры="Процедура1" Тогда
   Процедура1();
КонецЕсли;
не хочется
А имя процедуры в переменной - это у меня планировщик заданий.
20 Volodja
 
02.07.20
07:21
Если бы Альфа была бы реализация ВыполнитьПроцедуру() типа такой
Сервис.ВыполнитьПроцедуру("ВыполнятьВГлобалномМодуле",_ИмяПроцедуры), но видимо там есть какие-то тонкости...
21 Mikeware
 
02.07.20
07:34
(19) Ну сделал бы через ВыполняемыйМодуль, да не мучился.
Видимо, какие-то проблемы с взятием глобального контекста. А может, это ему просто не нужно
Закон Брукера: Даже маленькая практика стоит большой теории.