找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
查看: 7202|回复: 18

用友开发

[复制链接]
发表于 2021-3-31 13:16:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

×
本次培训采用简单二次开发案例教学,让大家轻松学会二次开发。
如需详细了解可以加Q群:293892902
课程地址:https://ke.qq.com/course/3385040?tuin=54cfd76f
1. 第一章:用友U8二次开发
1.1 用友U8按钮开发
1.1.1讲解了如何添加自定义按钮,介绍了在销售订单和销售订单列表添加按钮。
1.1.2讲解如何获取单据界面的数据库链接、登录人员信息、以及表头内容、表体内容,以及如何给单据界面的表头、表体赋值,可以通过一般赋值,或者模拟输入方式赋值。
1.1.3介绍了三个案例。
第一个是引采购订单生产销售订单,快速生单。
第二个是循环表体,根据表体物料编码获取最新单价,更新的含税单价。
第三个是在列表批改备注,会循环列表,识别打勾的行,获取行销售订单号,根据行销售订单号更新对应备注。
1.2 用友单据控件事件开发
1.2.1讲解了如何添加单据控件事件开发,介绍了在采购订单表头、表体控件校验后事件,以及表体单击后事件。
1.2.2介绍了三个案例
第一个表头选择供应商事件触发,循环表体根据供应商+存货编码从价格表获取维护单价,赋值给表体的采购单价栏目
第二个表头选择供应商事件触发,循环表体根据供应商+存货编码从价格表获取维护单价,赋值给表体的采购单价栏目
第三个单击表体,根据表体物料编码查询最近一次的采购价格信息,弹窗显示。
1.3 用友单据事件开发
1.3.1 讲解了如何添加单据事件,介绍了在销售订单添加保存前触发的单据事件开发。
1.3.2 介绍了一个案例
第一个是单据保存前检查00001客户不予许销售01000001此类产品,如果检查有此类产品,单据不允许保存,并且提醒用户
1.4 用友嵌入式窗口开发
1.4.1 讲解了如何在U8添加菜单以及菜单嵌入式窗口。
1.4.2 介绍了一个案例
第一个是开发嵌入式页签窗口,自定义窗口功能,本窗口功能是输入订单号和行号修改销售订单表体备注信息。
1.5 用友补丁打包
1.5.1 介绍如何把开发好的dll文件打包成msi补丁,并且介绍如何部署msi补丁。
2. 第二章:用友UAP单据开发
2.1 用友UAP单据开发设计 2.1.1 讲解如何新增UAP单据,设计UAP单据的界面,以及发布UAP单据到ERP。案例是临时发货单据,并且发布到ERP
2.1.2 讲解如何进行UAP单据开发,实现个性化功能发。案例是在临时发货单添加了自定义按钮,按钮功能是点击按钮弹输入框,改变表头备注信息。
3. 第三章:用友UAP报表开发
3.1 用友UAP报表开发 3.1.1利用SQL储存过程和UAP报表工具开发自定义报表。并且指导如何添加查询条件以及部署报表到ERP。
4. 第四章:用友接口功能开发
4.1 介绍用友API方式生单
4.1.1 U8 API是官方三大接口方式中,功能最强大,实用性最高的对接方式。为U8二次开发提供支持,诞生于开发产业链生态形成时期,面向交付伙伴提供U8二次开发支持。有专门的开发指导工具--“U8API资源管理器”
4.1.2 介绍了采购订单导入案例以及如何快速调整导入模板,快速学会测试API。
4.2 介绍用友Co方式生单
4.2.1 用友内部的接口,不对外开放。主要针对单据的数据操作。由用友的各个业务开发组封装提供数据格式为xml(dom)
4.2.2 介绍了采购订单、采购到货单、采购入库单、销售订单、销售发货单、销售出库单导入案例,实现和API一样的效果。
4.3 介绍用友U8凭证导入
4.3.1 使用用友底层接口方式生成U8凭证,接口具有各种校验,保证导入的凭证准确。
4.3.2 提供用友集成的凭证导入案例,供研究。

 楼主| 发表于 2021-4-5 18:26:47 | 显示全部楼层
'执行按钮前执行该方法,objVoucher为单据或列表对象
    'VarentValue为在表中预置的cVariant的值。
    'objLogin代表UFToolbar上取得的Login信息
    'objForm代表该Toolbar所在的窗体信息
    'objVoucher代表Toolbar所在窗体上的单据控件对象或者单据列表对象
    'sKey代表该按钮的ButtonKey
    'VarentValue代表数据库预置的Varent值
    Public Function BeforeRunSysCommand(ByVal objLogin As Object, ByVal objForm As Object, ByVal objVoucher As Object, _
                            ByVal sKey As String, ByVal VarentValue As Object, ByRef Cancel As Boolean, ByVal other As String) As Boolean
        Dim cCusCode As String
        Dim cInvCode As String
        Dim sql As String
        Dim Dt_data As New DataTable
        U8SQLHelper.U8DB.connectionString = objLogin.UfDbName
        '保存前检查000001客户不予许销售01000001此类产品,如果检查有此类产品,单据不允许保存,并且提醒用户
        If sKey = "save" Then
            For i = 1 To objVoucher.Rows
                If Not String.IsNullOrEmpty(objVoucher.bodyText(i, "cInvCode")) Then
                    cInvCode = objVoucher.bodyText(i, "cInvCode")
                    cCusCode = objVoucher.headerText("cCusCode")
                    If (cCusCode = "00000001" And cInvCode = "01000001") Then
                        MsgBox("此商品01000001,不能销售给该客户!")
                        Cancel = True
                        Exit Function
                    End If
                End If
            Next
        End If
        Cancel = False
    End Function
回复 点赞 拍砖

使用道具 举报

发表于 2021-4-14 09:03:07 | 显示全部楼层
本次培训采用简单二次开发案例教学,让大家轻松学会二次开发。
如需详细了解可以加Q群:293892902
1.第一章:用友U8二次开发
1.1用友U8按钮开发
1.1.1讲解了如何添加自定义按钮,介绍了在销售订单和销售订单列表添加按钮。
1.1.2讲解如何获取单据界面的数据库链接、登录人员信息、以及表头内容、表体内容,以及如何给单据界面的表头、表体赋值,可以通过一般赋值,或者模拟输入方式赋值。
1.1.3介绍了三个案例。
第一个是引采购订单生产销售订单,快速生单。
第二个是循环表体,根据表体物料编码获取最新单价,更新的含税单价。
第三个是在列表批改备注,会循环列表,识别打勾的行,获取行销售订单号,根据行销售订单号更新对应备注。
1.2用友单据控件事件开发
1.2.1讲解了如何添加单据控件事件开发,介绍了在采购订单表头、表体控件校验后事件,以及表体单击后事件。
1.2.2介绍了三个案例
第一个表头选择供应商事件触发,循环表体根据供应商+存货编码从价格表获取维护单价,赋值给表体的采购单价栏目。
第二个表头选择供应商事件触发,循环表体根据供应商+存货编码从价格表获取维护单价,赋值给表体的采购单价栏目。
第三个单击表体,根据表体物料编码查询最近一次的采购价格信息,弹窗显示。
1.3用友单据事件开发
1.3.1讲解了如何添加单据事件,介绍了在销售订单添加保存前触发的单据事件开发。
1.3.2介绍了一个案例
第一个是单据保存前检查00001客户不予许销售01000001此类产品,如果检查有此类产品,单据不允许保存,并且提醒用户。
1.4用友嵌入式窗口开发
1.4.1讲解了如何在U8添加菜单以及菜单嵌入式窗口。
1.4.2介绍了一个案例
第一个是开发嵌入式页签窗口,自定义窗口功能,本窗口功能是输入订单号和行号修改销售订单表体备注信息。
1.5用友补丁打包
1.5.1 介绍如何把开发好的dll文件打包成msi补丁,并且介绍如何部署msi补丁。
2.第二章:用友UAP单据开发
2.1用友UAP单据开发设计
2.1.1讲解如何新增UAP单据,设计UAP单据的界面,以及发布UAP单据到ERP。案例是临时发货单据,并且发布到ERP。
2.1.2讲解如何进行UAP单据开发,实现个性化功能发。案例是在临时发货单添加了自定义按钮,按钮功能是点击按钮弹输入框,改变表头备注信息。
3.第三章:用友UAP报表开发
3.1用友UAP报表开发
3.1.1利用SQL储存过程和UAP报表工具开发自定义报表。并且指导如何添加查询条件以及部署报表到ERP。
4.第四章:用友接口功能开发
4.1介绍用友API方式生单
4.1.1U8 API是官方三大接口方式中,功能最强大,实用性最高的对接方式。为U8二次开发提供支持,诞生于开发产业链生态形成时期,面向交付伙伴提供U8二次开发支持。有专门的开发指导工具--“U8API资源管理器”。
4.1.2介绍了采购订单导入案例以及如何快速调整导入模板,快速学会测试API。
4.2介绍用友Co方式生单
4.2.1用友内部的接口,不对外开放。主要针对单据的数据操作。由用友的各个业务开发组封装提供,数据格式为xml(dom)。
4.2.2介绍了采购订单、采购到货单、采购入库单、销售订单、销售发货单、销售出库单导入案例,实现和API一样的效果。
4.3介绍用友U8凭证导入
4.3.1使用用友底层接口方式生成U8凭证,接口具有各种校验,保证导入的凭证准确。
4.3.2提供用友集成的凭证导入案例,供研究。
回复 点赞 拍砖

使用道具 举报

 楼主| 发表于 2021-4-3 20:38:50 | 显示全部楼层
string SubId = "DP";
            //创建审批服务的客户端代理
            AuditServiceProxy auditSvc = new AuditServiceProxy();
            //构造Login的 CalledContext对象
            CalledContext calledCtx = new CalledContext();
            calledCtx.subId = SubId;
            calledCtx.TaskID = u8Login.get_TaskId();
            calledCtx.token = u8Login.userToken;
            //业务对象标识
            string bizObjectId = "88";
            //业务事件标识  
            string bizEventId = "88.Submit";
            //单据号
            string voucherId = "1000000020";
            string errMsg = "";
            bool bControlled = true;
            //bool ret = auditSvc.SubmitApplicationMessage(bizObjectId,bizEventId,voucherId ,calledCtx,ref bControlled, ref errMsg);
            bool ret = auditSvc.SubmitApplicationMessage2(bizObjectId, bizEventId, voucherId, calledCtx.token, ref bControlled, ref errMsg);
           
            if (ret == true && bControlled)
            {
               
            }
            else
            {
               
            }
回复 点赞 拍砖

使用道具 举报

 楼主| 发表于 2021-4-1 09:00:36 | 显示全部楼层
双击事件
Public Sub DblClick(ByRef Voucher As Object, section As SectionsConstants, ByVal Index As Long, ByRef bCancel As Boolean)
        Dim sKey As String
        Dim cSoCode As String
        Dim Rows As String
        Dim iSOsID As String
        Dim strsql As String
        Dim iRowNo As String
        Rows = Voucher.Row.ToString()
        cSoCode = Voucher.headerText("cSoCode")
        iRowNo = Voucher.headerText("iRowNo")
        iSOsID = Voucher.bodyText(Rows, "iSOsID")
        Dim Jointsearch As New UFIDA.U8.Cust.RAYSHARP.SoFormDelpC.system.JointSearch
        sKey = Voucher.ItemState(UConvert.ToInt(Index), SectionsConstants.sibody).sFieldName

        If sKey = "cbdefine33" Then
            If iSOsID <> "" Then
                Jointsearch.AddExcuteJoinQueryU8Voucher(m_oLogin.UFDataConnstringForNet, iSOsID)
                Voucher.bodyText(Rows, "cbdefine33") = "客需"
                strsql = "UPDATE dbo.SO_SODetails_extradefine SET cbdefine33='客需' WHERE iSOsID='" + iSOsID + "'"
                DB.ExecuteSql(strsql)
            Else
                MsgBox("先保存订单,再录入客户需求!")
            End If
        End If
end Sub 可以了解一下
回复 点赞 拍砖

使用道具 举报

 楼主| 发表于 2021-3-31 13:19:09 | 显示全部楼层
            联查
            string cmdLine = "";
            cmdLine = "ID:{0}&&&Name:{1}&&&SubSysID:{2}&&&AuthID:{3}&&&CMDLINE:{4}\t{5}";

            cmdLine = string.Format(cmdLine, menuID, menuName, subID, authID, cardNumber, pkFieldValue);
            IPortalCommandOperator portalCommandOperator = new PortalCommandOperator();
            IPortalCommandArgs portalCommandArgs = new PortalCommandArgs(menuID, subID);
            portalCommandArgs.AuthId = string.Empty;
            portalCommandArgs.DocId = string.Empty;
            portalCommandArgs.DocType = string.Empty;
            portalCommandArgs.ID = menuID;
            portalCommandArgs.Name = menuName;
            portalCommandArgs.SubFunction = string.Empty;
            portalCommandArgs.Extenision = string.Empty;
            portalCommandArgs.SubSysID = subID;
            portalCommandArgs.CmdLine = cmdLine;
            portalCommandArgs.FromUserClick = false;
            portalCommandArgs.ExtProperties.Add("recheck", "1");
            portalCommandOperator.RunBusiness(portalCommandArgs);
回复 点赞 拍砖

使用道具 举报

 楼主| 发表于 2021-4-2 16:56:57 | 显示全部楼层
'表头参照重写
    Public Sub headBrowUser(ByRef Voucher As Object, ByVal Index As Object, ByVal sRet As Object, ByRef referPara As ReferParameter, ByRef bCancel As Boolean)
        Dim cexch_name As String
        Dim Strsql As New StringBuilder
        If Not String.IsNullOrEmpty(Voucher.headerText("cexch_name")) Then
            cexch_name = Voucher.headerText("cexch_name")
            If cexch_name = "人民币" Then

            Else
                Call Voucher.SimulateInput(SectionsConstants.siHeader, 1, "iTaxRate", 0, True)
            End If
        End If

        bCancel = False

    End Sub
回复 点赞 拍砖

使用道具 举报

发表于 2021-4-6 09:39:15 | 显示全部楼层
谢谢群主分享
回复 点赞 拍砖

使用道具 举报

 楼主| 发表于 2021-4-7 13:53:44 | 显示全部楼层
谢谢群主分享
回复 点赞 拍砖

使用道具 举报

 楼主| 发表于 2021-4-8 13:21:37 | 显示全部楼层
谢谢群主分享
回复 点赞 拍砖

使用道具 举报

 楼主| 发表于 2021-4-8 16:40:28 | 显示全部楼层
谢谢群主分享
回复 点赞 拍砖

使用道具 举报

 楼主| 发表于 2021-4-9 08:34:29 | 显示全部楼层
谢谢分享
回复 点赞 拍砖

使用道具 举报

发表于 2021-4-9 16:57:06 | 显示全部楼层
谢谢分享
回复 点赞 拍砖

使用道具 举报

 楼主| 发表于 2021-4-11 14:20:27 | 显示全部楼层
谢谢分享
回复 点赞 拍砖

使用道具 举报

 楼主| 发表于 2021-4-12 12:26:18 | 显示全部楼层
谢谢分享
回复 点赞 拍砖

使用道具 举报

发表于 2021-4-12 12:28:13 | 显示全部楼层
谢谢楼主分享
回复 点赞 拍砖

使用道具 举报

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

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-12-22 10:55 , Processed in 0.099556 second(s), 12 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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