起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 1071|回复: 21

[分享]文档关联:按组织机构分文件夹存储附件**

[复制链接]
发表于 2007-11-27 18:07:21 | 显示全部楼层 |阅读模式
首先说明,此代码适用于2819以上至3000之前的版本。3000版本会提供新模式进行处理。

修改文件:业务模型\协同系统\文档\关联\文档关联信息\文档关联表单

修改代码:

1。在此单元中添加一个私有方法,用来创建附件存储的目录。我在例子里给出了按组织机构分文件夹的方法,您可以参照此来设计其他分文件夹方法(例如按时间月份或其他组织机构层次)和分多层文件夹的方法。
function TRELEVANCYDOC.SetOrgDir(ADir: string): string;
var
  lFileName: string;
  ldir: string;
  lFileAttribute: TFileAttribute;
begin
  lFileName:= FileSys.FileUtils.MakeFileName(ADir,'ATTACH'+SystemUtils.TContextUtils.GetDept(Context).Parent.ID);
  Result:= lFileName;
  if TDocSystem.IsExists(lFileName) then  //如果存在则退出
      exit;

  lFileAttribute := TFileAttribute.Create;
  try
    lFileAttribute.DisplayName := SystemUtils.TContextUtils.GetDept(Context).Parent.DisplayName;
    TDocSystem.CreateDirectory(Context, lFileName, lFileAttribute);
  finally
    lFileAttribute.Free;
  end;

end;

2。在TRELEVANCYDOC.Load方法中修改添加代码:
if (FuncURL <> '') and (FDefineItem = nil) then //仅仅为了兼容
  begin
    if not DataSetRelevancyDef.Active then
      DataSetRelevancyDef.Open;
    DataSetRelevancyDef.SQLFilter := TDOCRelevancyInfo.GetKeyFilter(FuncURL, AKeys, 2);  //这里把1改成2,使文档关联的默认文件夹和权限控制生效
    DataSetRelevancyDef.SQLFiltered := True;
    if not DataSetRelevancyDef.Eof then
    begin
      if DataSetRelevancyDef.FieldByName('FDefaultDir').AsString <> '' then
      begin
        Dir := SetOrgDir(DataSetRelevancyDef.FieldByName('FDefaultDir').AsString) ; //在此调用创建文件夹的方法
      end;
      if DataSetRelevancyDef.FieldByName('FACCESS').AsString <> '' then
        FAccess := DataSetRelevancyDef.FieldByName('FACCESS').AsInteger;
    end;
  end;
回复

使用道具 举报

发表于 2007-11-30 16:42:12 | 显示全部楼层
(FuncURL <> '') and (FDefineItem = nil)  这段代码为fase 是什么原因,我那里需要设置

代码修改后部分一点问题(用的是嵌入文档)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-30 18:04:01 | 显示全部楼层
您跟进去看看是什么原因呢?是FuncUrl=‘’了的话就去设置功能url,FDefineItem为nil的话就去设置文档关联。
回复 支持 反对

使用道具 举报

发表于 2007-11-30 20:45:58 | 显示全部楼层
我不是三岁小鬼,这种回答有什么意思呢
关键是你这个过程没有设置的地方,是否是系统 哪里需要设置  附代码
procedure TRELEVANCYDOC.Load(const ATableURL: string;
  AKeys: array of string; AKeyValues: array of object;
  AImmediate: Boolean; AAttachAccess: TDocAccessKind);
回复 支持 反对

使用道具 举报

发表于 2007-12-1 08:54:19 | 显示全部楼层
FDefineItem  是什么对象?请问下!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-1 09:12:17 | 显示全部楼层
回答4楼
如何配置文档关联请看
http://bbs.justep.com/forum.php?mod=viewthread&tid=17254 这里有专门文档进行说明。
该帖子是在已经实现上面联接内容基础上的进一步改进。

回答5楼,这是文档关联定义的对象。
回复 支持 反对

使用道具 举报

发表于 2007-12-1 09:31:48 | 显示全部楼层
在哪里申明这个对象?申明的方法是什么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-1 09:46:05 | 显示全部楼层
申明?就在本单元阿,您用ctrl+F 查找一下就可以找到
private
    FDefine: TDocRelevancyDefine;
    FDefineItem: TDocRelevancyDefineItem;

TDocRelevancyDefineItem这个对象是在文档关联库定义的。我们没有公布文档关联库的代码。但其实这个定义就是功能
业务模型\协同系统\文档\关联\文档关联定义
运行后定义的东东。
回复 支持 反对

使用道具 举报

发表于 2007-12-1 14:59:40 | 显示全部楼层
你这里1楼中是按照机构组织存储文档,那为什么 使文档关联的默认文件夹和权限控制生效呢,是否有问题呢
回复 支持 反对

使用道具 举报

发表于 2007-12-1 15:10:08 | 显示全部楼层
能否针对照机构组织存储文档 我这边是嵌入式表单,能否给一个详细的代码修改方法,
你的平台代码一个注释都没有,都是写给高人看的,我们哪能看懂, 你们在实施过程中已实现这部分了,应该很easy, 平台代码修改引来不必要的混乱我对公司交不表差,
另附,我从来没有发过贴子,问你们问题呀, 一般自己搞定,这次实在没有哪个耐心了,请认真对待呀!
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-2 01:48 , Processed in 0.041226 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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