zoukankan      html  css  js  c++  java
  • 产品生成器模块的问题

    今天看到设置规则这个地方,在设置本地规则时,验证类型选择 公式,在公式设置选项卡的类型处选择 已计算(这个地方那个英文为Calculated,翻译为已计算不太好理解,翻译成通过计算可能会好一些),然后点击已计算按钮,设定公式,在检查规则语法时出现了如下错误:


    跟踪代码后得知,是类PBARuleExpressionActionValue的methodName出现了问题
    str methodname()
    {
        
    return ( this.parmnameRecId() ? enum2str(PBARuleValueRelation) : '')+
               PBARuleExpressionActionValue::methodnameParm(PBAVar,PBARuleArrayIdx,PBARuleActionType) 
    +
                (
    this.parmnameRecId() ?  PBARuleChecker::methodname(this.parmnameRecId()) : '');
    }
    我们知道enum2str的结果是标签的内容,如果在中文环境下,该函数的返回结果为中文,这样该方法执行后得到函数名类似于
    "公式Table_0_false5637144582",由于在X++中函数名中不能出现汉字,因为汉字并不是合法的标识符的组成元素,于是就出现了不能在脚本中使用此符号的错误。
    将该函数更改为如下代码即可:
    str methodname()
    {
        SysDictEnum sysDictEnum 
    = new SysDictEnum(EnumNum(PBARuleValueRelation));
        
    return ( this.parmnameRecId() ? sysDictEnum.value2Symbol(PBARuleValueRelation) : '')+
               PBARuleExpressionActionValue::methodnameParm(PBAVar,PBARuleArrayIdx,PBARuleActionType) 
    +
                (
    this.parmnameRecId() ?  PBARuleChecker::methodname(this.parmnameRecId()) : '');
    }
    既然中文不能作为标识符,又用Enum2Str的返回结果当成函数名的一部分,不报错才怪。

  • 相关阅读:
    Linux 系统中 sudo 命令的 10 个技巧
    如何在 Linux 中配置基于密钥认证的 SSH
    选择 NoSQL 数据库需要考虑的 10 个问题
    10 个 Linux 中方便的 Bash 别名
    扒一扒 EventServiceProvider 源代码
    [Binary Hacking] ABI and EABI
    瀑布流 ajax 预载入 json
    PHP5+标准函数库观察者之实现
    使用汇编分析c代码的内存分布
    but no declaration can be found for element 'aop:aspectj-autoproxy'.
  • 原文地址:https://www.cnblogs.com/Farseer1215/p/789847.html
Copyright © 2011-2022 走看看