起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: huixiangtao

【结贴】一个很久都没有解决的问题

[复制链接]
 楼主| 发表于 2009-12-16 08:52:08 | 显示全部楼层
系统初始化代码如下。
我当然签入刷缓存了。

新建 文本文档.txt

25.08 KB, 下载次数: 87

回复 支持 反对

使用道具 举报

发表于 2009-12-16 09:20:57 | 显示全部楼层
你把Business.jsp中的Var msg 去掉一下看看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-16 10:13:14 | 显示全部楼层
不行,依然是原来的错误:拒绝访问
回复 支持 反对

使用道具 举报

发表于 2009-12-16 10:18:54 | 显示全部楼层
<script type="text/javascript">
  function BeforeClose()
  {
    if(!X3X.TerminateQuery())
    {
      event.returnValue = "";
    }
  }
  document.title = X3X.DisplayName;
  X3X.Params = "<%= params%>";
  X3X.UpdateVersion();
  X3X.ShowSplash();
  X3X.Init();
  X3X.CloseSplash();
  msg=X3X.Invokemethod("testocx", "ry2;1");
        alert(msg);
        if (msg=="1")
        {
         alert(msg);
         X3X.Logon("ry2","1");
         X3X.Run("Biz:\\System\\Init.func", "", "", "");
        }
        if (msg=="0")
        {
         X3X.Run("", "", "", "");
        }


//  X3X.Logon("ry1","")
// X3X.Run("", "", "", "");
  document.body.onbeforeunload=BeforeClose;
  document.title = X3X.DisplayName;
</script>

这个是我的Business.jsp,你修改一下里面的用户名和密码看看呢?我这里没有问题的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-16 14:42:50 | 显示全部楼层
发现了点问题,我的用户名是chenping,该用户没有密码。
如果这么写:msg=X3X.Invokemethod("testocx", "chenping; "); msg的值是0,并且不会报错。
如果这么写:msg=X3X.Invokemethod("testocx", "chenping;"); 就会报上述错误。
对于密码为空的用户,这个参数应该怎么写呢?
回复 支持 反对

使用道具 举报

发表于 2009-12-16 14:54:43 | 显示全部楼层
function Ttestocx.Invoke(var Params: array of object): object;
var
  i, i1, i2: Integer;
  up: array of string;
  s ,lPersonID,luser,lpassword: String;
  s1: IUnknown;
begin
  s := objectHelper.ToString(Params[0]);
  if s <> nil then
  up :=s.Split([';']);
  lPersonID :='';
  lPersonID := Opr.OperatorLoader.FindPersonID(up[0], up[1], True);
  if  lPersonID ='' then
    Result := '0'
  else
    Result := '1';
end;
我这个只是个例子,没有考虑密码为空的情况,你在处理一下里面的代码就可以了,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-16 20:21:16 | 显示全部楼层
恩,经修改后,此问题解决。
再问一下,我用这种方式 X3X.Run("Biz:\\System\\Init.Func", "Biz:\\SCGAITYWGLXT\\BGGL\\BGTJBBGN.FUNC", "", ""); 运行起来单个功能。在系统初始化中,能不能做一下功能验证,也就是验证该用户是否有运行该功能的权限?这样要是他没权限,我直接alert个对话框,告诉他没权限就算了。
回复 支持 反对

使用道具 举报

发表于 2009-12-17 08:55:49 | 显示全部楼层
应该是可以实现,还是用上面检查人员是否存在的那种方案,在做一个函数,把人员和功能传进去,然后在平台中判断一下这个人是否拥有这个功能的运行权限(这个可以在论坛中找找),然后判断返回值。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-17 14:37:32 | 显示全部楼层
我想在功能运行之前,判断一下,该用户有没有运行该功能的权限:
BusinessBGTJBB1.jsp的部分代码如下:
<script type="text/javascript">
  function BeforeClose()
  {
    if(!X3X.TerminateQuery())
    {
      event.returnValue = "";
    }
  }

  document.title = X3X.DisplayName;
  X3X.Params = "<%= params%>";
  X3X.UpdateVersion();
  //X3X.ShowSplash();
   X3X.Init();
  //X3X.CloseSplash();
// X3X.Run("", "", "", "");
if ("<%=pwd%>"=="")
{msg=X3X.Invokemethod("testocx", "<%=username%>; ");} //把空替代为空格
else
{msg=X3X.Invokemethod("testocx", "<%=username%>;<%=pwd%>"); }

if(msg=="1")
{
IsPermission=X3X.Invokemethod("testPermission", "<%=username%>;Biz:\\SCGAITYWGLXT\\BGGL\\BGTJBBGN.FUNC");
  if(IsPermission=="1")
   {
   alert(IsPermission);
  X3X.Logon("<%=username%>","<%=pwd%>");  //自动登录
  X3X.Run("Biz:\\System\\Init.Func", "Biz:\\SCGAITYWGLXT\\BGGL\\BGTJBBGN.FUNC", "", "");  //必须要传入参数系统初始化功能
  }
  else
  {alert("您没有运行此功能的权限!");}
  }
  else
  {
  alert("用户名或密码错误,请检查!");
  }
  document.body.onbeforeunload=BeforeClose;
  document.title = X3X.DisplayName;
</script>
系统初始化的代码如附件所示:
结果我这么做出现了错误。错误如下楼的图所示。

新建 文本文档.txt

26.63 KB, 下载次数: 89

回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-17 14:47:04 | 显示全部楼层
灾难性故障

qq.png

39.18 KB, 下载次数: 161

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-13 15:31 , Processed in 0.042407 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表