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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.02.2015, 04:43   #1  
lvan is offline
lvan
Участник
Аватар для lvan
Лучший по профессии 2014
 
858 / 82 (4) ++++
Регистрация: 15.04.2011
Записей в блоге: 1
Интерпретатор напишу. Не хочу парсер писать - вроде есть в dll
надо только понять, как его использовать
Старый 18.03.2015, 03:33   #2  
lvan is offline
lvan
Участник
Аватар для lvan
Лучший по профессии 2014
 
858 / 82 (4) ++++
Регистрация: 15.04.2011
Записей в блоге: 1
Цитата:
Сообщение от lvan Посмотреть сообщение
Интерпретатор напишу. Не хочу парсер писать - вроде есть в dll
надо только понять, как его использовать
написал
выглядит примерно так:

X++:
private anytype evalBinary(Microsoft.Dynamics.AX.Framework.Tools.CodeUpgradeTool.Parser.BinaryExpression _expr)
{
    switch (true)
    {
        case _expr is Microsoft.Dynamics.AX.Framework.Tools.CodeUpgradeTool.Parser.AddExpression :
            return this.evalExpression(_expr.get_Left()) + this.evalExpression(_expr.get_Right());

        case _expr is Microsoft.Dynamics.AX.Framework.Tools.CodeUpgradeTool.Parser.SubtractExpression :
            return this.evalExpression(_expr.get_Left()) - this.evalExpression(_expr.get_Right());

        case _expr is Microsoft.Dynamics.AX.Framework.Tools.CodeUpgradeTool.Parser.MultiplyExpression :
            return this.evalExpression(_expr.get_Left()) * this.evalExpression(_expr.get_Right());

        case _expr is Microsoft.Dynamics.AX.Framework.Tools.CodeUpgradeTool.Parser.DivideExpression :
            return this.evalExpression(_expr.get_Left()) / this.evalExpression(_expr.get_Right());


        case _expr is Microsoft.Dynamics.AX.Framework.Tools.CodeUpgradeTool.Parser.OrExpression :
            return this.evalExpression(_expr.get_Left()) || this.evalExpression(_expr.get_Right());

        case _expr is Microsoft.Dynamics.AX.Framework.Tools.CodeUpgradeTool.Parser.AndExpression :
            return this.evalExpression(_expr.get_Left()) && this.evalExpression(_expr.get_Right());


        case _expr is Microsoft.Dynamics.AX.Framework.Tools.CodeUpgradeTool.Parser.EqualExpression :
            return this.evalExpression(_expr.get_Left()) == this.evalExpression(_expr.get_Right());

        case _expr is Microsoft.Dynamics.AX.Framework.Tools.CodeUpgradeTool.Parser.NotEqualExpression :
            return this.evalExpression(_expr.get_Left()) != this.evalExpression(_expr.get_Right());

        case _expr is Microsoft.Dynamics.AX.Framework.Tools.CodeUpgradeTool.Parser.LessThanExpression :
            return this.evalExpression(_expr.get_Left()) < this.evalExpression(_expr.get_Right());

        case _expr is Microsoft.Dynamics.AX.Framework.Tools.CodeUpgradeTool.Parser.LessThanOrEqualExpression :
            return this.evalExpression(_expr.get_Left()) <= this.evalExpression(_expr.get_Right());

        case _expr is Microsoft.Dynamics.AX.Framework.Tools.CodeUpgradeTool.Parser.GreaterThanExpression :
            return this.evalExpression(_expr.get_Left()) > this.evalExpression(_expr.get_Right());

        case _expr is Microsoft.Dynamics.AX.Framework.Tools.CodeUpgradeTool.Parser.GreaterThanOrEqualExpression :
            return this.evalExpression(_expr.get_Left()) >= this.evalExpression(_expr.get_Right());

        default:
            type = _expr.GetType();
            throw error(strFmt("Expression %1 not implemented", CLRInterop::getAnyTypeForObject(type.get_Name())));
    }
}
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Опыт: синхронизация справочников через AIF в AX2012 EVGL DAX: Функционал 14 28.08.2020 17:52
Ax3 - Модуль Учет затрат egorych DAX: Функционал 15 12.12.2013 17:58
emeadaxsupport: Inventory closing differences between AX4.0 and AX2012 using weighted average costing method Blog bot DAX Blogs 0 27.12.2012 19:11
axblog4u: Display Web Image Content in Forms using Dynamics AX2012 Blog bot DAX Blogs 0 28.05.2012 19:12
emeadaxsupport: AX2012 and AX2009 or AX4 side by side - AOS performance counters overwritten Blog bot DAX Blogs 0 13.03.2012 18:11
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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