AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.03.2004, 15:52   #1  
Prof is offline
Prof
Участник
 
732 / 64 (4) ++++
Регистрация: 18.10.2002
Адрес: Москва
? Исполнение функций передаваемых через строку
Вообще возможно ли такое?

Задача следующая: скажем, юзер вбил куда-то выражение типа, скажем, endmth(x)
Я это выражение имею в виде стринговой переменной
Мне надо это выражение исполнить вслепую, что-то вроде

PHP код:
str strfunc 'endmth(x)'
date result;
//
 
.. здесь меняем Х на значение 
//
result  = <exec>(strfunc); 
Старый 04.03.2004, 16:41   #2  
france is offline
france
Участник
 
159 / 11 (1) +
Регистрация: 24.11.2003
Адрес: Москва
endmth(x)' - какая либо стандартная функция, или же надо и его создавать в RunTime?
Старый 04.03.2004, 16:46   #3  
Prof is offline
Prof
Участник
 
732 / 64 (4) ++++
Регистрация: 18.10.2002
Адрес: Москва
Да, в данном случае стандартная, тело самой функции формировать не надо (хотя это по-моему как раз более или менее решаемая задача)
Старый 04.03.2004, 17:37   #4  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
PHP код:
static void Job1(Args _args)
{
    
XppCompiler     compiler = new XppCompiler();
    
str             argres;
    ;

    
arg strfmt("anytype myfunc() { return %1; }""systemDateGet()");

    
compiler.compile(arg);
    
res compiler.execute(arg);

    print 
res;
    
pause;

Это код. Вот только не могу представить себе юзера, более-менее ориентирующегося в синтаксисе и помнящего хотя бы пару десятков стандартных функций. Плюс головняк с обработкой ошибок. Оно Вам надо?
Старый 04.03.2004, 17:48   #5  
Prof is offline
Prof
Участник
 
732 / 64 (4) ++++
Регистрация: 18.10.2002
Адрес: Москва
О, спасибо, очень похоже на правду, попробую

Что касается юзеров, то это я выразился фигурально. Если Вам так уж хочется знать, я хочу немного надстроить стандартную систему формирования отчетов и уже прилично продвинулся в этом направлении.
Вы знаете юзера который сам под себя сможет сделать отчет? Наверное такие есть но их очень мало. Данная опция предназначена скорее для внедренца (в данном случае меня) для более или менее быстрого и корректного воссоздания нестандартной отчетности на предприятии.

Что касается обработки ошибок, то, ее в данном случае можно и вообще не делать. Один раз получили результат и потом уже ничего не меняем.
Старый 04.03.2004, 20:26   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано Vadik
PHP код:
arg strfmt("anytype myfunc() { return %1; }""systemDateGet()"); 
О! Сразу видно 1Совца!
Помните, что использование функции Шаблон не является 1С:Совместимым

на самом деле, в Аксапте для этих целей есть функция runbuf.
Старый 04.03.2004, 23:03   #7  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
на самом деле, в Аксапте для этих целей есть функция runbuf
Да, спасибо. На самом деле так никогда еще серьезно не пользовался ни своим, ни этим способом. Просто XppCompiler чуть-чуть больше нравится, как-никак возможность отреагировать на некорректный код, а не вывалиться по ошибке
P.S. насчет 1Совца - это воспринимать как комплимент или .. ?
Старый 05.03.2004, 01:29   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
как констатацию, что человек не в первый раз решает эту проблему
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Построчный импорт из Excel через COM olesh DAX: Программирование 20 23.10.2008 14:01
Table Scan через QueryRun maximka DAX: Программирование 8 05.10.2007 10:46
Запуск программы из Аксапты через 2-хзвенку Migel_84 DAX: Программирование 25 27.04.2006 09:41
Как удалить строку из таблицы через QueryRun? vasiliy DAX: Программирование 4 09.01.2006 15:40
Передача параметров через адресную строку? Dronas DAX: Программирование 0 17.01.2005 08:48

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:27.