Имя: Пароль:
1C
1C 7.7
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) есть команда:
#ЗагрузитьИзФайла <?>
Синтаксис:
#ЗагрузитьИзФайла <ИмяФайла>
Назначение:
Переключение загрузки программного модуля на загрузку из текстового файла.

но тут одно но, модуль в котором стоит эта команда дальше выполняться перестанет, т.к. система переключится на команду из файла, поэтому эту команду нужно повесить в какой-нибудь модуль, создай например отчет или обработку и ее вызывай.
Код соответственно перед выполнением записывай в текстовый файл и его то и вызывай этой командой ;)
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший