RickyJen 发表于 2024-7-3 09:00:01

Wyn7.0.01209.0自定义函数一直编译不结束

问题描述:
在Wyn版本:7.0.01209.0 中,我使用了以下帖子的自定义函数,但是当我复制代码进去,并点击编译之后,一直加载编译不结束。
目前不清楚是否所有的自定义函数都会这样
自定义函数地址:


【报表-表达式】巧用自定义函数,实现动态单位
https://gcdn.grapecity.com.cn/showtopic-156044-1-1.html
(出处: 葡萄城开发者社区)



lucas.Yan 发表于 2024-9-27 13:58:01

您好,新版本已经修复这个问题。欢迎下载新版本体验。
最新版本下载地址: https://www.grapecity.com.cn/solutions/wyn/download

Eden.Sun 发表于 2024-7-3 12:04:20


您好,您在浏览器控制台看一下,编译的时候有没有报错信息:

RickyJen 发表于 2024-7-3 15:23:05

Eden.Sun 发表于 2024-7-3 12:04
您好,您在浏览器控制台看一下,编译的时候有没有报错信息:


有以下报错信息:

Felix.Li 发表于 2024-7-3 18:28:00

您好,这个目前确实有点问题,这个我们看着能不能改一下,做一个新的方法看能不能实现。有新结果了给您再分享

RickyJen 发表于 2024-7-4 09:42:55

Felix.Li 发表于 2024-7-3 18:28
您好,这个目前确实有点问题,这个我们看着能不能改一下,做一个新的方法看能不能实现。有新结果了给您再分 ...

好的,那现在这个错误是因为“自定义函数本身有问题需要升版”是吧?

Felix.Li 发表于 2024-7-3 09:00:02

是的,新的已经修改,是缺少了类型定义。您可以使用以下代码:
/// <function name="AutoFormat">
/// <culture>
/// <label>AutoFormat</label>
/// <syntax>AutoFormat(object number, string unit = "", string format = "")</syntax>
/// <description>自动转换中文单位</description>
/// <example>AutoFormat(100) = 100
/// AutoFormat(100000,"万") = 10.0万 (万与亿自动单位 1位小数)
/// AutoFormat(100000,"万","0:0.00") = 10.00万 (可以用第二个参数自定义小数位数和格式化)
/// </example>
/// </culture>
/// </function>
public string AutoFormat(object number, string unit = "", string format = "")
{
    // 文本对应的数值单位
    System.Collections.Generic.Dictionary<string, decimal> unitDic = new System.Collections.Generic.Dictionary<string, decimal>() {
      {"百",100},{"千",1000},{"万",10000},{"十万",100000},{"百万",1000000},{"千万",10000000},{"亿",100000000},{"十亿",1000000000},{"万亿",1000000000000}
    };

    if (number == null)
      return string.Empty;
    try
    {
      // 如果不传单位,就根据数值自动判断单位(亿和万)
      var result = Convert.ToDecimal(number);
      if (string.IsNullOrWhiteSpace(unit))
      {
            if (Math.Abs(result) >= 100000000)
            {
                unit = "亿";
            }
            else if(Math.Abs(result) >= 10000)
            {
                unit = "万";
            }
      }
      
      if (unitDic.ContainsKey(unit))
      {
            // 如果是有文字单位,自动保留1位小数
            if (string.IsNullOrEmpty(format)) format = "{0:0.0}";
            return String.Format(format + unit, result / unitDic);
      }
      // 如果传了format,就用format,如果没有传就用自带toString()
      return string.IsNullOrWhiteSpace(format)? result.ToString():String.Format(format, result);
    }
    catch (Exception e)
    {
      return "AutoFormat转换错误"+e.Message;
    }
}

RickyJen 发表于 2024-7-4 16:21:28

Felix.Li 发表于 2024-7-4 15:56
是的,新的已经修改,是缺少了类型定义。您可以使用以下代码:

好的,辛苦了

Eden.Sun 发表于 2024-7-5 09:56:23

RickyJen 发表于 2024-7-4 16:21
好的,辛苦了

不客气的,有其他问题。欢迎您在开新帖解决:lol

lucas.Yan 发表于 2024-7-5 11:47:22

正常会报错的,现在的情况是一个bug GERM-6637

后续bug修复我们会通知您的.
页: [1] 2
查看完整版本: Wyn7.0.01209.0自定义函数一直编译不结束