Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Загрузить процедуру, возможно ли? (число прочтений - 4078 )
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Загрузить процедуру, возможно ли?
30. Августа 2006 :: 17:22
Печать  
В 1С есть метод ЗагрузитьИзФайла, понятно, как он работает. А вот загрузить тело процедуры/функции, а то и цикла возможно ли?
Сразу скажу, метод создания КОП не подходит, я с этого и начал. Может ВыполняемыйМодуль поможет, но как всегда я не нашел ни одного приличного описания, примеров использования.
  

Константин
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Загрузить процедуру, возможно ли?
Ответ #1 - 30. Августа 2006 :: 18:07
Печать  
Модуль = СоздатьОбъект("ВыполняемыйМодуль");
Модуль.УстановитьМодуль("
     |Процедура УстановитьЗначение(НовоеЗначение)
     |      "+ ЭлементФормы + " = НовоеЗначение;
     |КонецПроцедуры
     |");
Модуль.НазначитьКонтекст(Конт);
Модуль.КомпилироватьМодуль();
Модуль.ВыполнитьМодуль();
Модуль.УстановитьЗначение(Value)
  
Наверх
 
IP записан
 
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Re: Загрузить процедуру, возможно ли?
Ответ #2 - 31. Августа 2006 :: 04:37
Печать  
Цитата:
Модуль.УстановитьЗначение(Value)

Сразу вопрос: Откуда это и что это? В документации по вып.модулю я этого не нашел.
  

Константин
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Загрузить процедуру, возможно ли?
Ответ #3 - 31. Августа 2006 :: 05:52
Печать  
Тебе показали пример.
Создаешь произвольный текст с текстом модуля, нужные процедуры описываешь как Экспорт, компилишь модуль, выполняешь его, и после этого можешь обращаться к новым процедурам этого модуля.
Все довольно просто Улыбка

ЗЫ предлагаю вместо пары КомпилироватьМодуль и ВыполнитьМодуль использовать одно выражение КомпилироватьИВыполнитьМодуль
Я специально добавил его в этот класс.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Загрузить процедуру, возможно ли?
Ответ #4 - 31. Августа 2006 :: 06:01
Печать  
Ну это когда как. Иногда надо вместе, а иногда раздельно.
  
Наверх
 
IP записан
 
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Re: Загрузить процедуру, возможно ли?
Ответ #5 - 31. Августа 2006 :: 07:06
Печать  
Вот попробовал - и нифига
Код
Выбрать все
Перем Что;
//_____________________________________________________________________________
Функция Сам(Конт)
    Возврат Конт;
КонецФункции //Сам
//_____________________________________________________________________________
Функция ТекстМодуля() Экспорт
    Возврат "Что=2";
КонецФункции //ТекстМодуля
//*******************************************
Процедура Сформировать()
	Модуль=СоздатьОбъект("ВыполняемыйМодуль");
	Модуль.НазначитьКонтекст(Контекст);
	//Модуль.НазначитьКонтекст(Сам(Контекст)); //Тоже попробовал
	Модуль.УстановитьМодуль(ТекстМодуля());
	Модуль.КомпилироватьМодуль();
	Модуль.ВыполнитьМодуль();
	Сообщить(Что);
КонецПроцедуры
 

А что не так, тем паче совсем?
  

Константин
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Загрузить процедуру, возможно ли?
Ответ #6 - 31. Августа 2006 :: 07:13
Печать  
Модуль.ПрисоединитьКонтекст - все есть в помощи и в алс-файле
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Загрузить процедуру, возможно ли?
Ответ #7 - 31. Августа 2006 :: 07:19
Печать  
Точнее, ПрисоединитьТекущийМодуль()

ЗЫ и если не получится, не забывай ставить Экспорт для переменной.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Re: Загрузить процедуру, возможно ли?
Ответ #8 - 31. Августа 2006 :: 07:29
Печать  
artbear писал(а) 31. Августа 2006 :: 07:19:
Точнее, ПрисоединитьТекущийМодуль()

ЗЫ и если не получится, не забывай ставить Экспорт для переменной.
Присоединил текущий модуль и Экспорт для переменной прицепил - пусто
  

Константин
Наверх
 
IP записан
 
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Re: Загрузить процедуру, возможно ли?
Ответ #9 - 31. Августа 2006 :: 07:38
Печать  
Все, спасибо, получилось.
Код
Выбрать все
Процедура Сформировать()
	Модуль=СоздатьОбъект("ВыполняемыйМодуль");
	Модуль.ПрисоединитьТекущийМодуль();
    Модуль.УстановитьМодуль(ТекстМодуля());
	Модуль.КомпилироватьИВыполнитьМодуль();
	Сообщить(Что);
КонецПроцедуры
 


И вдогонку: в соседней ветке идет разговор про ТурбоБЛ, переключаюсь туда, т.к. в Итленде в разговоре о Выполняемом модуле прозвучало "используй ТурбоБЛ"
  

Константин
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать