起步软件技术论坛-X3

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

[搞定]关于知识中心权限与业务功能权限结合的需求[请求]**

[复制链接]
 楼主| 发表于 2007-10-30 10:10:03 | 显示全部楼层
2805升级到2918的补丁下载链接给我一下吧
,上次给的补丁是2809-2918的
回复 支持 反对

使用道具 举报

发表于 2007-10-30 15:12:46 | 显示全部楼层
邮件中已经跟您回复了,从x3-2805版本升级到x3-2819与从x3-2809版本升级到x3-2819版本是同一个升级包.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-31 13:46:16 | 显示全部楼层
已经升级到2918了,但是为什么还是不行呢?
用下面这段代码看不到附件:
(dvDoc.Doc as TRelevancyDoc).FuncURL :='Biz:\JQERP\XTHQ.FUNC';
  (dvDoc.Doc as TRelevancyDoc).Load('',['Biz:\JQERP\JQERP.DATABASE\CRM_CONTRACT.TABLE\FGUID.Field'],
  [dsbCon.DataSet.FieldByName('FGUID').AsString],True, TDocAccessKind.akAll);

用原来写的这段代码,看得到附件,但是权限跟知识中心的权限一样
(dvDoc.Doc as DOCRELEVANCYINFO.TRELEVANCYDOC).Load('',
    ['Biz:\JQERP\HTGLYWYSZ.ElementGroup\ConGUID.Element'],
    [dsbCon.DataSet.FieldByName('FGUID').AsString],
    True, TDocAccessKind.akAll);
帮我看看我哪里写错了。

下面是整个Form里面的代码:unit MAINFORM;

interface

uses
  Business.System, Business.Model, Business.Forms,
  SystemUtils, Business.Data, Business.Model.Flow, DOCLIB, DOCRELEVANCYINFO, DOCRELEVANCYLIB;

type
  TMAINFORM = class(TForm)
    FuncBroker: TFuncBroker;
    InfoBrokerCONTRACTENTERINFO: TInfoBroker;
    ControlBar: TControlBar;
    DataNavigator: TDataNavigator;
    DocViewBar: TDocViewBar;
    Panel: TPanel;
    DocViewCONTRACTENTERINFO_CONTRACTENTERDOC: TDocView;
    Panel1: TPanel;
    dvDoc: TDocView;
    Splitter1: TSplitter;
    dsbCon: TDataSetBroker;
    dsbDetail: TDataSetBroker;
    ibkDoc: TInfoBroker;
    FlowBroker: TFlowBroker;
    OperationBroker: TOperationBroker;
    OperationEventTrigger: TOperationEventTrigger;
    dvConPrint: TDocView;
    procedure FlowBrokerAfterFlowOut(Sender: TObject; Command: TFlowOutCommand);
    procedure FlowBrokerAfterFlowFinish(Sender: TObject; Command: TFlowFinishCommand);
    procedure FlowBrokerAfterFlowArchive(Sender: TObject; Command: TFlowArchiveCommand);
    procedure OperationEventTriggerExecute(Sender: TObject);
    procedure FlowBrokerAfterFlowBack(Sender: TObject; Command: TFlowBackCommand);
    procedure FlowBrokerCalcExpr(Sender: TObject; Command: TCalcExprCommand);
    procedure dsbConAfterScroll(DataSet: TDataSet);
    procedure BizFormShow(Sender: TObject);
  private
    {private declarations}
    procedure LoadDocAttach;
  public
    {public declarations}
    constructor Create(Acontext:Tcontext);
  end;

implementation

procedure TMAINFORM.LoadDocAttach;
begin
  (dvDoc.Doc as TRelevancyDoc).FuncURL :='Biz:\JQERP\XTHQ.FUNC';
  (dvDoc.Doc as TRelevancyDoc).Load('',['Biz:\JQERP\JQERP.DATABASE\CRM_CONTRACT.TABLE\FGUID.Field'],
  [dsbCon.DataSet.FieldByName('FGUID').AsString],True, TDocAccessKind.akAll);

  {(dvDoc.Doc as DOCRELEVANCYINFO.TRELEVANCYDOC).Load('',
    ['Biz:\JQERP\HTGLYWYSZ.ElementGroup\ConGUID.Element'],
    [dsbCon.DataSet.FieldByName('FGUID').AsString],
    True, TDocAccessKind.akAll);
    }

end;

constructor TMainForm.Create(Acontext:Tcontext);
var
  lDealPerson: string;
begin
  inherited;
  LoadDocAttach;
  lDealPerson := TContextUtils.GetOperator(Acontext).ID;
  if not dsbDetail.DataSet.Active then
    dsbDetail.DataSet.open;
  if dsbDetail.DataSet.CanInsert and not dsbCon.DataSet.Eof and
    not dsbDetail.DataSet.Locate('NotCreateUserId',Variants.VarArrayOf([lDealPerson]),[]) then
  begin
    dsbDetail.DataSet.Append;
    dsbDetail.DataSet.Post;
  end;

end;

procedure TMAINFORM.FlowBrokerAfterFlowOut(Sender: TObject; Command: TFlowOutCommand);
var
  lDataSet: TDataSet;
begin
  if Command.FlowControl.Flow.State = TFlowState.fsFinished then
    Exit;
  lDataSet := dsbCon.DataSet;
  if not lDataSet.Active then
    lDataSet.Open;
  lDataSet.Edit;
  lDataSet.FieldByName('ConStatus').AsString := '20';
  lDataSet.ApplyUpdates;
end;

procedure TMAINFORM.FlowBrokerAfterFlowFinish(Sender: TObject; Command: TFlowFinishCommand);
var
  lDataSet: TDataSet;
begin
  lDataSet := dsbCon.DataSet;
  if not lDataSet.Active then
    lDataSet.Open;
  lDataSet.Edit;
  lDataSet.FieldByName('ConStatus').AsString := '30';
  lDataSet.ApplyUpdates;
end;

procedure TMAINFORM.FlowBrokerAfterFlowArchive(Sender: TObject; Command: TFlowArchiveCommand);
var
  lDataSet: TDataSet;
begin
  lDataSet := dsbCon.DataSet;
  if not lDataSet.Active then
    lDataSet.Open;
  lDataSet.Edit;
  lDataSet.FieldByName('ConStatus').AsString := '40';
  lDataSet.ApplyUpdates;
end;

procedure TMAINFORM.OperationEventTriggerExecute(Sender: TObject);
begin
  CONTRACTENTERINFO.TCONTRACTENTERINFO.SetCanEditCon(dsbCon.DataSet);
end;

procedure TMAINFORM.FlowBrokerAfterFlowBack(Sender: TObject; Command: TFlowBackCommand);
var
  lDataSet: TDataSet;
begin
  lDataSet := dsbCon.DataSet;
  if not lDataSet.Active then
    lDataSet.Open;
  lDataSet.Edit;
  lDataSet.FieldByName('ConStatus').AsString := '25';
  lDataSet.ApplyUpdates;
end;

procedure TMAINFORM.FlowBrokerCalcExpr(Sender: TObject; Command: TCalcExprCommand);
begin
  Command.FlowControl.Flow.DisplayName := dsbCon.DataSet.FieldByName('ConContractName').AsString ;
end;

procedure TMAINFORM.dsbConAfterScroll(DataSet: TDataSet);
begin
  LoadDocAttach;

  {(dvDoc.Doc as TRelevancyDoc).FuncURL :='Biz:\JQERP\XTHQ.FUNC';
  (dvDoc.Doc as TRelevancyDoc).Load('',['Biz:\JQERP\JQERP.DATABASE\CRM_CONTRACT.TABLE\FGUID.Field'],
  [dsbCon.DataSet.FieldByName('FGUID').AsString],True, TDocAccessKind.akAll);
  }
end;

end.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-31 16:09:38 | 显示全部楼层
另外,为什么我升级到2918以后,新建附件时点击“从知识中心中引入”系统没有响应,从本地引入是可以的?是什么原因?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-31 16:59:14 | 显示全部楼层
还有我想在用户选择合同所属部门的时候去更新文档关联定义中的默认路径来确定附件的存放路径,可以实现吗?默认路径是窗体创建的时候就确定的还是在引入附件的时候才确定的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-31 17:01:26 | 显示全部楼层
上面讲的是本地引入的时候
回复 支持 反对

使用道具 举报

发表于 2007-10-31 17:14:36 | 显示全部楼层
原来的没有了,是因为您修改了关联的字段。关联字段还使用以前的业务元素即可。
另外,您说的和知识中心配置的权限一致具体是什么?
如果知识中心没有配置某人对相应目录的权限就无法上传文件吗?
24楼的问题您调试一下看点击从知识中心引入后程序如何执行的。会不会是事件丢失之类?
回复 支持 反对

使用道具 举报

发表于 2007-10-31 17:23:46 | 显示全部楼层
25楼的要求做不到。存放路径已经封装在底层。
现在附件这部分的逻辑正在做出调整。大约下月下旬会发布新版本。如果可能的话,这部分的高级操作可以等新版本发布后再设计开发。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-1 09:40:19 | 显示全部楼层
1)  通过关联字段改回以前的业务元素的方法,解决了附件访问的权限问题.
2)  从知识中心引入文档我去调试一下跟踪一下
3) 修改存放路径这个问题目前不能处理的话,那么我想只提供从知识中心引入这个功能,把从本地引入这个功能屏蔽掉可以吗?如果可以怎么修改?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-1 11:28:52 | 显示全部楼层
24楼的问题跟踪过了,菜单对应的事件里面没有调用相应的事件:
procedure TRELEVANCYDOC.actFromDocCenterExecute(Sender: TObject);
begin
//
end;

我现在从另外一个菜单里面拷贝了调用代码过来,试过可以打开知识中心
procedure TRELEVANCYDOC.actFromDocCenterExecute(Sender: TObject);
var lDocURL: string;
begin
  lDocURL := '';
  if not TDocAccessUtils.FileInAccessVisible(FileSys.cDocFilePrefix) then
    raise Exception.Create('您没有文档系统的权限,不能引入文档!');
  if ShowRelevancyDOCSelectDialog('从信息树添加文档', True, 2, lDocURL, 0) then
  begin
    AddListItem(lDocURL, '', '', 1);
  end;
end;
这样没什么问题吧?

知识中心.jpg

116.07 KB, 下载次数: 85

回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-29 15:38 , Processed in 0.043876 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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