|
v7: Выполнить код из строкового значения
| ☑ |
0
yur4egg
11.06.14
✎
07:26
|
Можно ли в 7-ке с вместо кода, например
Стоим = Перерасч(Цена,Количество);
Сумма = Окр(Стоим,2);
выполнить данный код, если он является текстовым значением переменной
ТекстПерем = "Стоим = Перерасч(Цена,Количество);Сумма = Окр(Стоим,2);";
КакТоВыполнить(ТекстПерем);
|
|
1
Андрей_Андреич
naïve
11.06.14
✎
07:28
|
Кури функцию Шаблон()
|
|
2
dk
11.06.14
✎
07:36
|
для присвоения значения переменной понадобится добавить фун-цию Присвоить(Чему,Что)
т.к. шиблон работает только с ф-циями
|
|
3
yur4egg
11.06.14
✎
07:46
|
Поясню, для чего это надо.
Есть некая сложная навороченная обработка. Нужно запускать ее с параметрами, чтобы заданные реквизиты формы были уже заполнены.
СписПар=СоздатьОбъект("СписокЗначений");
СписПар.Установить(ИдентРекв,ЗначРекв);
......
и т.д.
......
ОткрытьФорму("ИмяОбработки",СписПар);
В самой обработке приходится перечислять в ПриОткрытии()
проверку на значения элементов переданного списка, если - то - иначе, и переписывать код из формул реквизитов.
Хотя можно изящнее через ВК одним блоком найти реквизит по имени, присвоить ему значение, даже получить его формулу, и хорошо бы тут же ее и выполнить, но как?
|
|
4
yur4egg
11.06.14
✎
09:09
|
Надо было курить "ПодключаемыйМодуль".ВОт:
рф = СоздатьОбъект("РасширениеФормы");
рф.УстановитьФорму(Форма);
Для Сч=0 По рф.КоличествоАтрибутов() - 1 Цикл
ЗначПарам=Форма.Параметр.Получить(рф.ПолучитьАтрибут(Сч).Идентификатор);
Формула=рф.ПолучитьАтрибут(Сч).Формула;
Формула=СтрЗаменить(Формула,"ПоказатьКвиток()","");
Если ПустоеЗначение(ЗначПарам)=0 Тогда
рф.ПолучитьАтрибут(Сч).Значение=ЗначПарам;
Модуль = СоздатьОбъект("ВыполняемыйМодуль");
Модуль.НазначитьКонтекст(Контекст);
Модуль.УстановитьМодуль(Формула);
Модуль.КомпилироватьИВыполнитьМодуль();
КонецЕсли;
КонецЦикла;
Всем спасибо.
|
|
5
an-korot
11.06.14
✎
10:20
|
(4) можно и без сторонних преблуд.
|
|
6
an-korot
11.06.14
✎
10:23
|
(0) есть команда:
#ЗагрузитьИзФайла <?>
Синтаксис:
#ЗагрузитьИзФайла <ИмяФайла>
Назначение:
Переключение загрузки программного модуля на загрузку из текстового файла.
но тут одно но, модуль в котором стоит эта команда дальше выполняться перестанет, т.к. система переключится на команду из файла, поэтому эту команду нужно повесить в какой-нибудь модуль, создай например отчет или обработку и ее вызывай.
Код соответственно перед выполнением записывай в текстовый файл и его то и вызывай этой командой ;)
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший