金蝶K3 BOS 表单设计问题,懂的请进!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了金蝶K3 BOS 表单设计问题,懂的请进!相关的知识,希望对你有一定的参考价值。

如何在K3 BOS中对业务表单添加很长的文字描述信息,使这些信息在每次打印表单是自动带出?还有如何才能使系统自带的表单像新建的业务表单一样编辑?
如果回答的好我可以再加分 ,谢谢!
我所说的很长的文字描述信息是指我想在系统自带的业务表单中加入自定义的文字描述部分,比如在请购订单中加入“交货及付款条件”的详细内容及购货单位地址、联系电话等详细信息,使这些自定义的信息在每次打印时自动出现在采购订单上.望高手赐教,万分感谢!

第一个问题描述得不是很清楚,所谓的很长的文字描述是什么东西?还有你打印的时候是否使用了套打?
第二个问题可以很明确的回答你,不行!因为K3发展的时间段很长,在BOS平台出来以前是使用普通的编程技术开发,并不是在BOS平台搭建出来的,所以无法编辑!只有在BOS平台上开发出来的单据才能编辑,比如系统自带的收付款单这些是可以用BOS编辑的,但是出入库这种老单据是无法像BOS平台一样编辑,最多只能通过单据自定义增加新的字段,而无法编辑以前的老字段。追问

我所说的很长的文字描述信息是指我想在系统自带的业务表单中加入自定义的文字描述部分,比如在请购订单中加入“交货及付款条件”的详细内容及购货单位地址、联系电话等详细信息,使这些自定义的信息在每次打印时自动出现在采购订单上。望帮忙,万分感谢!

追答

这些自定义的东西是不是每一张都不一样?如果不一样,那就建立一个文本类型的字段,每次你做单子的时候手工把这些信息填写进去,如果想从基础资料里面带出地址联系电话这些,那就要建立一个基础资料类型的字段,最后再使用套打模式来进行打印就可以了

追问

文本类型的字段不行,把字符数限制的太少了,我要在采购单上面录入“购货及付款条件”的相关内容,文字描述部分有几百字呢,根本无法录入那么多,更何况采购订单默认是不能用BOS设计器来设计的,只有自定义业务单据才可以。我想在采购订单中加入该文字描述信息后让它在打印每个采购订单时自动显示在上面,不用每次录入。不知如何才能做到?还有我不用套打的,我说的不是套打.

参考技术A 在K3左上角系统下面,有个金蝶/客户端工具包——辅助工具——单据自定义,在自定义的地方选择单据,新增字段就可以了,要是不需要的一些字段的话就直接隐藏。。追问

我的意思是在单据上加入很长的自定义的文字描述部分,比如在请购订单中加入“交货及付款条件”的详细内容及购货单位地址、联系电话等详细信息,使这些自定义的信息在每次打印时自动出现在采购订单上。望帮忙,万分感谢!

追答

也是在这边添加的,,要是不是很会的话我可以帮你远程一下
503296110

K/3 Cloud 产品报价单_表单插件开发示例

using Kingdee.BOS;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;

namespace MyPlugIn.PRODUCTQUOTE.PlugIn
{
    [Description("产品报价单表单插件")]
    public class PlugIn : AbstractDynamicFormPlugIn
    {
        /// <summary>
        /// 数据变更时
        /// </summary>
        /// <param name="e"></param>
        public override void DataChanged(DataChangedEventArgs e)
        {
            List<string> lstField = new List<string>
            {
                "F_KD_SHL",         // 材料损耗率%
                "F_KD_BZGS",        // 标准工时
                "F_KD_GFL",         // 工费率(元/H)
                "F_KD_ZZFYL",       // 制造费用率%
                "F_KD_FTSL",        // 模具分摊数量
                "F_KD_MLL",         // 毛利率
                "F_KD_WBREBATE",    // 外币(Rebate)/客户佣金
                "F_KD_WBHL",        // 汇率
                "F_KD_RMBREBATE",   // 人民币(Rebate)
                "F_KD_TAXRATE",     // 增值税率
                "F_KD_GXFL",        // 管销费率
                "FTAXPRICE",        // 材料含税单价
                "FUSAGE",           // 材料用量
                "FTAXAMOUNT",       // 材料含税金额
                "FMDPRICE"          // 模具单价
            };
            string strKey = e.Field.FieldName.Trim().ToUpper();
            if (lstField.Contains(strKey))
            {
                Compute();
            }
            else if ((strKey == "FSUBMATERIALID") || (strKey == "FBASEUNIT"))
            {
                DynamicObject dynobj = (DynamicObject)this.View.Model.GetValue("FSUBMATERIALID", e.Row);
                DynamicObject dynobjunit = (DynamicObject)this.View.Model.GetValue("FBASEUNIT", e.Row);
                System.Int64 intUnitId = (dynobjunit.IsNullOrEmptyOrWhiteSpace()) ? 0 : (System.Int64)dynobjunit["Id"];

                Boolean blnIsNewMat = true;
                int intFSUPPLIERID = 0;
                Decimal decFCONPRICE = 0;
                Decimal decFMAXTAXPRICE = 0;
                Decimal decFMINTAXPRICE = 0;
                Decimal decFQTAXPRICE = 0;
                System.DateTime? dtFORDEERDATE = null;
                Decimal decFUSAGE = (Decimal)this.Model.GetValue("FUSAGE", e.Row);
                Decimal decAmount = 0;
                if (dynobj.IsNullOrEmptyOrWhiteSpace() == false)
                {
                    System.Int64 intMatId = (System.Int64)dynobj["Id"];
                    string strSql = @"SELECT TOP 1 1 FROM T_PUR_PRICELISTENTRY WHERE [email protected] ";
                    List<SqlParam> lstParams = new List<SqlParam>();
                    lstParams.Add(new SqlParam("@MATID", KDDbType.Int64, intMatId));
                    DynamicObjectCollection objcol = DBUtils.ExecuteDynamicObject(this.Context, strSql, null, null, System.Data.CommandType.Text, lstParams.ToArray());
                    if ((objcol.IsNullOrEmptyOrWhiteSpace() == false) && (objcol.Count > 0))
                    {
                        blnIsNewMat = false;
                    }
                    lstParams.Clear();
                    strSql = @"/*dialect*/GetPurPrice @MATID,@UNITID ";
                    lstParams.Add(new SqlParam("@MATID", KDDbType.Int64, intMatId));
                    lstParams.Add(new SqlParam("@UNITID", KDDbType.Int64, intUnitId));
                    DynamicObjectCollection objcol2 = DBUtils.ExecuteDynamicObject(this.Context, strSql, null, null, System.Data.CommandType.Text, lstParams.ToArray());
                    if ((objcol2.IsNullOrEmptyOrWhiteSpace() == false) && (objcol2.Count > 0))
                    {
                        DynamicObject dyn1 = objcol2[0];
                        if (dyn1.IsNullOrEmptyOrWhiteSpace() == false)
                        {
                            intFSUPPLIERID = (int)dyn1["FSUPPLIERID"];
                            decFCONPRICE = (Decimal)dyn1["FCONPRICE"];
                            decFMAXTAXPRICE = (Decimal)dyn1["FMAXTAXPRICE"];
                            decFMINTAXPRICE = (Decimal)dyn1["FMINTAXPRICE"];
                            decFQTAXPRICE = (Decimal)dyn1["FQTAXPRICE"];
                            decAmount = decFUSAGE * decFCONPRICE;
                            dtFORDEERDATE = (DateTime?)dyn1["FDATE"];
                        }
                    }
                }
                this.Model.SetValue("FISNEWMAT", blnIsNewMat, e.Row);
                this.Model.SetValue("FSUPPLIERID", intFSUPPLIERID, e.Row);
                this.Model.SetValue("FTAXPRICE", decFCONPRICE, e.Row);
                this.Model.SetValue("FTAXAMOUNT", decAmount, e.Row);
                this.Model.SetValue("FMAXPRICE", decFMAXTAXPRICE, e.Row);
                this.Model.SetValue("FMINPRICE", decFMINTAXPRICE, e.Row);
                this.Model.SetValue("FQPRICE", decFQTAXPRICE, e.Row);
                this.Model.SetValue("FORDERDATE", dtFORDEERDATE, e.Row);
            }
            base.DataChanged(e);
        }

        /// <summary>
        /// 财务计算
        /// </summary>
        private void Compute()
        {
            DynamicObjectCollection dyncolobj = (DynamicObjectCollection)this.Model.DataObject["FEntity"];
            DynamicObjectCollection dyncolmdobj = (DynamicObjectCollection)this.Model.DataObject["FMDEntity"];
            String strFMJFY=(String)this.Model.DataObject["FMJFY"];
            Decimal decSumMatAmount = 0;
            Decimal decSumMdAmount = 0;
            Decimal decAmount = 0;
            Decimal decUsage = 0;
            Decimal decPRICE = 0;
            if (dyncolobj.IsNullOrEmptyOrWhiteSpace() == false && dyncolobj.Count > 0)
            {
                int intRow = 0;
                foreach (DynamicObject dynobj in dyncolobj)
                {
                    decUsage = (Decimal)dynobj["FUSAGE"];
                    decPRICE = (Decimal)dynobj["FTAXPRICE"];
                    decAmount = decUsage * decPRICE;
                    decSumMatAmount = decSumMatAmount + decAmount;
                    dynobj["FTAXAMOUNT"] = decAmount;
                    this.View.UpdateView("FTAXAMOUNT", intRow++);
                }
            }
            if (dyncolmdobj.IsNullOrEmptyOrWhiteSpace() == false && dyncolmdobj.Count > 0)
            {
                foreach (DynamicObject dynobj in dyncolmdobj)
                {
                    decAmount = (Decimal)dynobj["FMDPRICE"];
                    decSumMdAmount = decSumMdAmount + decAmount;
                }
            }

            Decimal decFMATCOST = decSumMatAmount;    // 材料成本
            Decimal decF_KD_SHL = (Decimal)this.Model.DataObject["F_KD_SHL"];  // 材料损耗率%
            Decimal decF_KD_SH = decFMATCOST * decF_KD_SHL / 100;  // 材料损耗=材料成本*材料损耗率%/100
            Decimal decF_KD_HSCLXJ = decFMATCOST + decF_KD_SH;    // 含税材料小计=材料成本+材料损耗
            Decimal decF_KD_WSCLXJ = decF_KD_HSCLXJ * 100 / ((Decimal)this.Model.DataObject["F_KD_TAXRATE"]+100);  // 未税材料小计

            Decimal decF_KD_BZGS = (Decimal)this.Model.DataObject["F_KD_BZGS"];      // 标准工时
            Decimal decF_KD_GFL = (Decimal)this.Model.DataObject["F_KD_GFL"];       // 工费率(元/H)
            Decimal decF_KD_RGCBXJ = decF_KD_BZGS * decF_KD_GFL / 3600;           // 人工成本小计=标准工时*工费率(元/H)/3600

            Decimal decF_KD_ZZFYL = (Decimal)this.Model.DataObject["F_KD_ZZFYL"];   // 制造费用率%
            Decimal decF_KD_SCCBXJ = (decF_KD_ZZFYL == 100) ? 0 : ((decF_KD_WSCLXJ + decF_KD_RGCBXJ) * 100 / (100 - decF_KD_ZZFYL));     // 生产成本小计=(未税材料小计+人工成本小计)*100/(100-制造费用率)

            Decimal decF_KD_MJFY = decSumMdAmount;   // 模具费用
            Decimal decF_KD_FTSL = (Decimal)this.Model.DataObject["F_KD_FTSL"]; // 模具分摊数量
            Decimal decF_KD_MJFTCB = 0;
            if (strFMJFY.IsNullOrEmptyOrWhiteSpace() == false && strFMJFY == "1")  // 模具费用为公司承担时,进行模具成本分摊
            {
                decF_KD_MJFTCB = (decF_KD_FTSL == 0) ? decF_KD_MJFY : (decF_KD_MJFY / decF_KD_FTSL); // 模具分摊成本=模具费用/模具分摊数量
            }
            Decimal decF_KD_MLL = (Decimal)this.Model.DataObject["F_KD_MLL"];    // 毛利率
            Decimal decF_KD_WBREBATE = (Decimal)this.Model.DataObject["F_KD_WBREBATE"]; // 外币(Rebate)/客户佣金
            Decimal decF_KD_WBHL = (Decimal)this.Model.DataObject["F_KD_WBHL"];   // 汇率
           // 外币报价=(生产成本合计 / (1 - 毛利率) + 模具分摊成本 + 外币Rebate) / 汇率
            Decimal decF_KD_WBBJ = ((decF_KD_MLL == 100) || (decF_KD_WBHL == 0)) ? 0 : ((decF_KD_SCCBXJ * 100 / (100 - decF_KD_MLL) + decF_KD_MJFTCB + decF_KD_WBREBATE) / decF_KD_WBHL);
            Decimal decF_KD_RMBREBATE = (Decimal)this.Model.DataObject["F_KD_RMBREBATE"];                   // 人民币(Rebate)
            Decimal decF_KD_TAXRATE = (Decimal)this.Model.DataObject["F_KD_TAXRATE"];                       // 增值税率
           // 人民币报价(含税)=(生产成本合计/(1-毛利率)+模具分摊成本+人民币Rebate)*(1+增值税率)
            Decimal decF_KD_RMBBJ = (decF_KD_MLL == 100) ? 0 : ((decF_KD_SCCBXJ * 100 / (100 - decF_KD_MLL) + decF_KD_MJFTCB + decF_KD_RMBREBATE) * (100 + decF_KD_TAXRATE) / 100);     // 人民币报价(含税)=(生产成本合计/(1-毛利率)+模具分摊成本+人民币Rebate)*(1+增值税率)
            Decimal decF_KD_WBJSR = (decF_KD_WBBJ - decF_KD_WBREBATE) * decF_KD_WBHL;                       // 外币净收入=(外币报价 - 外币Rebate) * 汇率
            Decimal decF_KD_RMBJSR = decF_KD_RMBBJ * 100 / (100 + decF_KD_TAXRATE) - decF_KD_RMBREBATE;     // 人民币净收入=人民币报价(含税)/(1+增值税率)-人民币Rebate
            Decimal decF_KD_BWBJSR = (decF_KD_RMBJSR > 0) ? decF_KD_RMBJSR : decF_KD_WBJSR; // 本位币净收入 //取值(人民币净收入 > 0, 人民币净收入, 外币净收入)
            Decimal decF_KD_MLR = decF_KD_BWBJSR * decF_KD_MLL / 100;     // 毛利润=本位币净收入*毛利率 
            Decimal decF_KD_GXFL = (Decimal)this.Model.DataObject["F_KD_GXFL"];  // 管销费率
            Decimal decF_KD_GXFY = decF_KD_BWBJSR * decF_KD_GXFL / 100;    // 管销费用=本位币净收入*管销费率
            Decimal decF_KD_SQLR = decF_KD_MLR - decF_KD_GXFY;      // 税前利润=毛利润-管销费用
            Decimal decF_KD_SQLRL = (decF_KD_BWBJSR == 0) ? 0 : (decF_KD_SQLR / decF_KD_BWBJSR * 100);      // 税前利润率=税前利润/本位币净收入

            this.Model.SetValue("FMATCOST", decFMATCOST);    // 材料成本
            this.Model.SetValue("F_KD_SH", decF_KD_SH);    // 材料损耗
            this.Model.SetValue("F_KD_HSCLXJ", decF_KD_HSCLXJ);  // 含税材料小计
            this.Model.SetValue("F_KD_WSCLXJ", decF_KD_WSCLXJ);  // 未税材料小计
            this.Model.SetValue("F_KD_RGCBXJ", decF_KD_RGCBXJ);  // 人工成本小计
            this.Model.SetValue("F_KD_MJFY", decF_KD_MJFY);      // 模具费用
            this.Model.SetValue("F_KD_MJFTCB", decF_KD_MJFTCB);  // 模具分摊成本
            this.Model.SetValue("F_KD_SCCBXJ", decF_KD_SCCBXJ); // 生产成本小计
            this.Model.SetValue("F_KD_WBBJ", decF_KD_WBBJ);      // 外币报价
            this.Model.SetValue("F_KD_RMBBJ", decF_KD_RMBBJ);    // 人民币报价(含税)
            this.Model.SetValue("F_KD_WBJSR", decF_KD_WBJSR);    // 外币净收入
            this.Model.SetValue("F_KD_RMBJSR", decF_KD_RMBJSR);  // 人民币净收入
            this.Model.SetValue("F_KD_BWBJSR", decF_KD_BWBJSR);  // 本位币净收入
            this.Model.SetValue("F_KD_MLR", decF_KD_MLR);        // 毛利润
            this.Model.SetValue("F_KD_GXFY", decF_KD_GXFY);      // 管销费用
            this.Model.SetValue("F_KD_SQLR", decF_KD_SQLR);      // 税前利润
            this.Model.SetValue("F_KD_SQLRL", decF_KD_SQLRL);    // 税前利润率
        }
    }
}
 

 

以上是关于金蝶K3 BOS 表单设计问题,懂的请进!的主要内容,如果未能解决你的问题,请参考以下文章

金蝶K3cloud单据作废如何删除?

如何给金蝶K3 BOS 里的单据体 分录/字段 设置 字段类型?

金蝶K3 wise 中的BOS,在销售订单中增加自定义字段后,数据库中并没有出现,怎办?

金蝶二次开发C#

如何快速将excel数据导入金蝶k3系统的单据中

金蝶K3如何打开批号管理功能?