楼主: waynemaggie

[精华] 实现对行信息的审批

 关闭 [复制链接]
论坛徽章:
20
祖国60周年纪念徽章
日期:2009-10-09 08:28:002013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2013-12-18 09:29:112014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14现任管理团队成员
日期:2012-10-18 18:19:10
21#
 楼主| 发表于 2009-3-25 21:39 | 只看该作者
原帖由 eric_e 于 2009-3-25 19:47 发表
hi,waynemaggie
如何获取当前更改生产工单的"用户"呢?


1,首先声明,在这里我只是提供给大家一些思路,具体在我的项目中,我从来不会用到如此深的层面,去满足客户一些需求.
2,在不用ADDON的情况下,要取得当前操作的"用户",的确很难,但并不是无法可想.
  方法一:在一些有系统日志的单据中,是可以很方便取到的,这个无需多说.
  方法二:无系统日志的单据,如生产订单(还真没注意过它没有日志),用$[user]也可以取到当前用户.当然如何用好它,请自己去研究.
  方法三:给个思路:你登录系统的时候,也会触发那个存储过程,用这个机制加上你开拓的思路(当然还需加上一点对SQL的研究),也可以达到同样的目的.

以上仅供参考.随带一句,技术并不是万能的,有些需求,你千方百计帮助客户实现后,你会发现你其实不是在帮他,而是在害他!自己体会一下吧.

使用道具 举报

回复
论坛徽章:
5
ITPUB8周年纪念徽章
日期:2009-09-27 10:21:222010新春纪念徽章
日期:2010-01-04 08:33:082010新春纪念徽章
日期:2010-03-01 11:05:01ITPUB9周年纪念徽章
日期:2010-10-08 09:32:252011新春纪念徽章
日期:2011-02-18 11:43:33
22#
发表于 2009-3-26 12:10 | 只看该作者
原帖由 waynemaggie 于 2009-3-25 21:39 发表


1,首先声明,在这里我只是提供给大家一些思路,具体在我的项目中,我从来不会用到如此深的层面,去满足客户一些需求.
2,在不用ADDON的情况下,要取得当前操作的"用户",的确很难,但并不是无法可想.
  方法一:在一些有系统日志的单据中,是可以很方便取到的,这个无需多说.
  方法二:无系统日志的单据,如生产订单(还真没注意过它没有日志),用$也可以取到当前用户.当然如何用好它,请自己去研究.
  方法三:给个思路:你登录系统的时候,也会触发那个存储过程,用这个机制加上你开拓的思路(当然还需加上一点对SQL的研究),也可以达到同样的目的.

以上仅供参考.随带一句,技术并不是万能的,有些需求,你千方百计帮助客户实现后,你会发现你其实不是在帮他,而是在害他!自己体会一下吧.

对于上面方法的疑问:
1、对于有系统日志的单据,直接取UserSign2即可,这便是修改人。但对于像物料主数据之类的数据,系统也有日志,但在表AITM中记录了UpdateDate,但没有updatetime,这使得取数据时有点麻烦;
2、对于$[User]是第一次见,因为这个地方谈的不用ADDON的情况,所以,你这样的建议让人迷惘!还望再多说一点,不胜感激。
3、对于登录时触发这个存储过程,我还真没有有注意过,根据你的建议,我进行了SQL跟踪,的确是引用了。我有这样一个思路,建立一个自定义表,两列:Code-存储HostProcess ; UserSign-存储当前用户的Key;在登陆系统时把前用户和HostProcess写入此表。在后面即可根据HostProcess来判断当前的用户。



我也一样,研究这个也不是为了项目上使用,是一种爱好; 技术不是万能的,但一定要学习技术、研究技术才会使我们思维更开阔。所以,我喜欢这个。

非常佩服陈华对SBO系统的理解和思路的开阔! 我还要多学习呀!

使用道具 举报

回复
论坛徽章:
20
祖国60周年纪念徽章
日期:2009-10-09 08:28:002013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2013-12-18 09:29:112014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14现任管理团队成员
日期:2012-10-18 18:19:10
23#
 楼主| 发表于 2009-3-26 12:19 | 只看该作者
1,不需要考虑UPDATETIME,会有字段告诉你哪一条日志是最新的.
2,在单据上,用格式化搜索:select $[User] 可以取到当前用户的ID,当然,局限性是在查询管理器内不能用.对于你的具体问题,只需要你设定为生产订单状态改变时,自动刷新某一个字段,以存放用户ID就可以了.
3.最好是用会话ID.要考虑一个机子登几个用户,一个用户登几个机子的情况.

使用道具 举报

回复
论坛徽章:
5
ITPUB8周年纪念徽章
日期:2009-09-27 10:21:222010新春纪念徽章
日期:2010-01-04 08:33:082010新春纪念徽章
日期:2010-03-01 11:05:01ITPUB9周年纪念徽章
日期:2010-10-08 09:32:252011新春纪念徽章
日期:2011-02-18 11:43:33
24#
发表于 2009-3-26 17:31 | 只看该作者
原帖由 waynemaggie 于 2009-3-26 12:19 发表
1,不需要考虑UPDATETIME,会有字段告诉你哪一条日志是最新的.
2,在单据上,用格式化搜索:select $ 可以取到当前用户的ID,当然,局限性是在查询管理器内不能用.对于你的具体问题,只需要你设定为生产订单状态改变时,自动刷新某一个字段,以存放用户ID就可以了.
3.最好是用会话ID.要考虑一个机子登几个用户,一个用户登几个机子的情况.


1、目前还没有找到。
2、思路的确比较“奇”!不错。
3、会话ID,指的是SPID吧;对于HostProcess,同一台电脑不同的客户端、不同的应用程序也会是不同的;

使用道具 举报

回复
论坛徽章:
0
25#
发表于 2009-4-7 15:17 | 只看该作者
这两天真的是太兴奋了,真的有如雷击的感觉。原来这里这么多高手,原来这里这么多好心人。祝好人一生平安!

使用道具 举报

回复
论坛徽章:
14
生肖徽章2007版:鼠
日期:2008-01-02 17:35:532013年新春福章
日期:2013-02-25 14:51:242011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB9周年纪念徽章
日期:2010-10-08 09:34:032010新春纪念徽章
日期:2010-03-01 11:06:322010新春纪念徽章
日期:2010-01-04 08:33:082009日食纪念
日期:2009-07-22 09:30:002009新春纪念徽章
日期:2009-01-04 14:52:28奥运会纪念徽章:篮球
日期:2008-09-03 22:48:32奥运会纪念徽章:篮球
日期:2008-07-10 13:43:01
26#
发表于 2009-4-7 16:36 | 只看该作者
$[user] 的结果都是0.00

使用道具 举报

回复
论坛徽章:
0
27#
发表于 2009-5-28 01:05 | 只看该作者
正在接接触SBO,学习中.谢谢楼主的分享!

使用道具 举报

回复
论坛徽章:
0
28#
发表于 2009-6-19 16:09 | 只看该作者
我想做到岸成本审批,但是不知如何为到岸成本增加自定义字段,所以我引用着到岸成本的参考来用。
到了写存储过程作控制时,又找不到OIPF对应的表编号。
所以我用收款表来写,我用manager用户做单的,碰到如下问题:
1 做添加时,无论我选择1,2,都是正常添加,完全做不了控制。
2 做修改时,选0,1,2,都可以正常作用。
请高手帮看下,
----代码如下
0--批准  1--拒绝   2--待审批
if @object_type='24'   
begin  
SELECT  @ruud=T1.u_ruud FROM [ORCT] T1     WHERE T1.[DocEntry] = @list_of_cols_val_tab_del     
SELECT  @UserSign=T1.UserSign FROM [ORCT] T1   WHERE T1.[DocEntry] = @list_of_cols_val_tab_del

IF @TRANSACTION_TYPE ='A'
begin   
        if  @UserSign = 1
        BEGIN
         IF @ruud=1
           begin  
                set @error=1  
                set @error_message='此单被拒绝!'  
           end  
         ELSE if @ruud=2
           begin  
                set @error=1  
                set @error_message='此单还没审批!'  
           end  
        END
END

使用道具 举报

回复
论坛徽章:
5
ITPUB8周年纪念徽章
日期:2009-09-27 10:21:222010新春纪念徽章
日期:2010-01-04 08:33:082010新春纪念徽章
日期:2010-03-01 11:05:01ITPUB9周年纪念徽章
日期:2010-10-08 09:32:252011新春纪念徽章
日期:2011-02-18 11:43:33
29#
发表于 2009-6-19 18:09 | 只看该作者
逻辑没有问题

使用道具 举报

回复
论坛徽章:
0
30#
发表于 2009-7-15 17:10 | 只看该作者
是不错的,但在应对多级审批的时候有点麻烦

使用道具 举报

回复

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

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表