Имя: Пароль:
1C
1С v8
Динамическое создание модуля
,
0 sbabay
 
20.10.12
12:30
Хочется подгружать текст модуля объекта из внешнего файла/текстового поля. Реально ли?
Конкретней:
Есть обработка, в которой хочу сделать что-то типа:
ВнешняяОбработка = ВнешниеОбработки.Создать(ПолноеИмяФайла);
ВнешняяОбработка.МодульОбъекта = МойТекст;//Вот тут не знаю как сделать

ВнешняяОбработка.РасчетСебестоимости(); //это уже вызовов процедуры подгруженного модуля
1 ДенисЧ
 
20.10.12
12:32
Изврат.
2 sbabay
 
20.10.12
12:34
Это да или нет?
3 sbabay
 
20.10.12
12:35
Основная мысль - отладка общего модуля без перезапуска предприятия
4 ДенисЧ
 
20.10.12
12:36
Есть Выполнить()
5 shuhard
 
20.10.12
12:37
(3) код из текстового файла и код в общем модуле не имеют между собой ни чего общего

Выполнить (Execute)
Выполнить (Execute)
Синтаксис:
   Выполнить(<Строка>)

Параметры:
   <Строка>
   Строка, содержащая текст исполняемого кода.

Описание:
Позволяет выполнить фрагмент кода, который передается ему в качестве строкового значения.
6 sbabay
 
20.10.12
12:43
Вы издеваетесь что ль? Какой "Выполнить"?

Допустим есть общий модуль:
&НаСервере
Процедура РасчетСебестоимости() Экспорт
   Цена = ПолучитьЦены();
   ПолучитьПродажи(Цена);
КонецПроцедуры

&НаСервере
Функция ПолучитьЦены()
   Возврат 1;
КонецФункции

&НаСервере
Процедура ПолучитьПродажи(Цена)
   Цена = Цена + 20;
КонецПроцедуры


Подозреваю, что ошибка в строке:
Цена = Цена + 20;
хочу исправить её на следующую:
Цена = Цена + 120;
и посмотреть результат

Как мне тут поможет "Выполнить" ?
7 koreav
 
20.10.12
12:46
#ЗагрузитьИзФайла <?>
Синтаксис:
#ЗагрузитьИзФайла <ИмяФайла>
Назначение:
Переключение загрузки программного модуля на загрузку из текстового файла.
Параметры:
<ИмяФайла> - имя файла, содержащего исходный текст программного модуля (записывается без кавычек и скобок).
Замечание:
Конструкция #ЗагрузитьИзФайла должна записываться в первой строке программного модуля с первой позиции.
Подробнее см. в документации, глава 'Управляющие операторы'

жалко что под 8-ку нет аналога, да?)
8 sbabay
 
20.10.12
12:49
да, жалко. Но наверняка ж кто-то уже задавался сим вопросом.
В 7-ке вообще TurboMD был. эххх
9 sbabay
 
20.10.12
12:52
А вообще в 7-ке есть 1С++ - вот с этим ей реально повезло. Там бы это в два счета через "ВыполняемыйМодуль": http://www.1cpp.ru/docum/icpp/html/extobjs.html#id27
10 koreav
 
20.10.12
12:55
в 7.7 код на сервере не выполняется, поэтому вариантов было действительно много. Если нет возможности вести отладку на сервере, сделайте файловый вариант.
11 ДенисЧ
 
20.10.12
12:56
Демоническое обновление - не предлагать?
12 sbabay
 
20.10.12
12:56
на крайний случай буду вставлять текст в модуль внешней обработки ручками. А в отладке уже подключать и вызывать из неё
13 sbabay
 
20.10.12
12:57
(11) Это что такое?
14 sbabay
 
20.10.12
12:57
.. а всё, понял. Нет, не предлагать
15 1Страх
 
20.10.12
12:59
программа сама себя обновляет. Потом сцены из терминатора
16 wertyu
 
20.10.12
13:30
17 sbabay
 
20.10.12
14:29
(16) да, мне тоже кажется, что там должно быть что-то такое.
А можите в двух словах рассказать как там это сделано?
18 TormozIT
 
гуру
20.10.12
15:58
ирПлатформа.СформироватьВнешнююОбработку(ИмяОбработки, ФайлОбработки, ТекстМодуля, ТекстМакета = Неопределено, ДляИДВерсииПлатформы = "") Экспорт
19 sbabay
 
20.10.12
23:40
Спасибо!
Программист всегда исправляет последнюю ошибку.