电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

金蝶基础方法介绍说明

来源:金蝶云社区作者:金蝶2024-09-1622

金蝶基础方法介绍说明

1:获取单据相关信息
1)获取当前行号

        int rowIndex = this.Model.GetEntryCurrentRowIndex("FEntity");  FEntity为单据体标识

2)获取单据体集合

          Entity entity = this.View.BillBusinessInfo.GetEntity("FSaleOrderEntry"); [size=12.6667px]FSaleOrderEntry为单据体标识

             DynamicObjectCollection entrys = this.Model.GetEntityDataObject(entity);

3)操作插件获取选中行

[size=12.6667px]   // 扩展方法,需要 using Kingdee.BOS.Core.DynamicForm

       var selectedRows = this.Option.GetBillOperationSelectedRows();
(4)获取选中行
       int[] selectedIndexsR = this.View.GetControl<EntryGrid>("FSaleOrderEntry").GetSelectedRows();
5)获取选中行数据
//当前选中行行号
        int[] selectedIndexsR = this.View.GetControl<EntryGrid>("FSaleOrderEntry").GetSelectedRows();
        //单据体数据
        DynamicObjectCollection selectedRowsDy = this.Model.DataObject["SaleOrderEntry"] as DynamicObjectCollection;
        //选中行数据
        DynamicObject selectedRow = selectedRowsDy[selectedIndexsR[0]];
6)获取单据内码
        long billNo = Convert.ToInt64(this.View.Model.GetPKValue());//获取当前单据编号内码 
7)获取单据分录内码
               int row = this.Model.GetEntryCurrentRowIndex("FSubEntity");
                Entity entiry = this.View.Model.BillBusinessInfo.GetEntity("FSubEntity");
                object pkValue = this.View.Model.GetEntryPKValue(entiry.Key, row);
8)在单据列表界面,使用如下语句获取当前选择行的单据内码
            this.ListView.CurrentSelectedRowInfo.PrimaryKeyValue
3:当前界面的数据保存,直接调用保存操作
Kingdee.BOS.ServiceHelper.BusinessDataServiceHelper.Save(this.Context, this.View.BusinessInfo, this.View.Model.DataObject);
4:检验字符串函数
ObjectUtils.IsNullOrEmptyOrWhiteSpace
IsNullOrWhiteSpace
5:利用代码弹出提示框
this.View.ShowMessage("详细信息", MessageBoxOptions.YesNo, ret =>
                {
                    if (ret == MessageBoxResult.No)
                    {
                        e.Cancel = true;
                        return;
                    }
                }, string.Format("物料编码为:{0}的物料存在不同的报关项号,是否继续?", string.Join(",", list)), MessageBoxType.Notice);

6:通过主键获取对象
FormMetadata formMetadata = MetaDataServiceHelper.Load(this.Context, "BD_MATERIAL") as FormMetadata;
DynamicObject dynamicObject = BusinessDataServiceHelper.LoadSingle(
                 this.Context,
                 id,
                 formMetadata .BusinessInfo.GetDynamicObjectType());
7:获取表单字段的值

DynamicObject FMaterial = (DynamicObject)this.View.Model.GetValue("FMaterialId");[size=12.6667px]FMaterialId为字段标识,本字段是一个基础资料字段

DynamicObject FMaterial = (DynamicObject)this.View.Model.GetValue("FMaterialId",e.Row);e.ROW为单据体行号
8:设置表单字段的值

         1:给分录赋值

       this.View.Model.SetValue("FEntryNote", FNOTE,rowIndex);

         2:给单据头赋值

       this.View.Model.SetValue("FEntryNote",FNOTE);

9:数据库执行语句

    DBUtils.Execute(this.Context, updateSql);

    var mas = DBUtils.ExecuteDynamicObject(this.Context, sql);

10:新增、删除单据体行

   this.View.Model.DeleteEntryRow("FSONEntity", i);

   this.View.Model.CreateNewEntryRow("FSONEntity");

11:刷新操作

this.View.UpdateView("FieldKey")刷新某个字段

this.View.InvokeFormOperation(Kingdee.BOS.Core.DynamicForm.FormOperationEnum.Refresh)//刷新整单

12:代码锁定单元格

this.View.GetFieldEditor("FBaseUnitId", 0).SetEnabled("", false);

this.View.GetFieldEditor("FBarCodeAmount", 0).Enabled = false;

13:常用服务端操作

计算默认值

IDynamicFormModel model = AppServiceContext.CreateDynamicFormModel(ctx, formMetadata.BusinessInfo, dataObject, null);

IDefaultValueCalculator calculator = model.GetService<IDefaultValueCalculator>();

calculator.Initialize(model);

calculator.ApplyDefaultValue(head, dataObject, 0);

calculator.ApplyDefaultValue(entity, entryObject, 1);

暂存

IDraftService service = Kingdee.BOS.Contracts.ServiceFactory.GetService<IDraftService>(ctx);

service.Draft(ctx, formMetadata.BusinessInfo, dataObjects);

保存

AppServiceContext.SaveService.Save(ctx, formMetadata.BusinessInfo, dataObjects);

提交

AppServiceContext.SubmitService.Submit(ctx, formMetadata.BusinessInfo, pkArray, "Submit");

审核

List<KeyValuePair<object, object>> pkIds = new List<KeyValuePair<object, object>>();

foreach (var o in pkArray)

{

pkIds.Add(new KeyValuePair<object, object>(o, ""));

}

List<object> paraAudit = new List<object>();

//1审核通过

paraAudit.Add("1");

//审核意见

paraAudit.Add("");

AppServiceContext.SetStatusService.SetBillStatus(ctx, formMetadata.BusinessInfo, pkIds, paraAudit, "Audit");

反审核

List<object> paraUnAudit = new List<object>();

//2反审核

paraUnAudit.Add("2");

//审核意见

paraUnAudit.Add("");

AppServiceContext.SetStatusService.SetBillStatus(ctx, formMetadata.BusinessInfo, pkIds, paraUnAudit, "UnAudit");

删除

// 删除前进行校验

AppServiceContext.DeleteService(ctx, formMetadata.BusinessInfo, pkArray);

// 不做校验直接删除

AppServiceContext.BusinessDataService.Delete(ctx, pkArray, formMetadata.BusinessInfo.GetDynamicObjectType());

单据转换

ConvertRuleElement convertRule = AppServiceContext.ConvertService.GetConvertRules(ctx, "srcFormId", "destFormId").FirstOrDefault();

PushArgs pushArgs = new PushArgs(convertRule, selectedRows)

{

TargetBillTypeId = targetBillTypeId,

TargetOrgId = orgId,

};

//执行下推操作,并获取下推结果

ConvertOperationResult convResult = AppServiceContext.ConvertService.Push(ctx, pushArgs);

DynamicObject[] destObjects = (from p in convResult.TargetDataEntities select p.DataEntity).ToArray();

14:设置焦点行、获取焦点行

//设置父窗体的焦点行

this.View.ParentFormView.SetEntityFocusRow("FEntity", selectedIndexsR[0]);

//获取当前分录焦点行FocusRow

EntryGrid entryGrid = this.View.GetControl<EntryGrid>("FEntity");

int rowIndex = entryGrid.GetFocusRowIndex();

15:获取单据体每一行的数据包

//获取父窗

体选中行

            int[] selectedIndexsR = this.View.ParentFormView.GetControl<EntryGrid>("FEntity").GetSelectedRows();

            Entity entity = this.View.ParentFormView.Model.BillBusinessInfo.GetEntity("FEntity");

            foreach (int i in selectedIndexsR)

            {

                DynamicObject rowObj = this.View.ParentFormView.Model.GetEntityDataObject(entity, i) as DynamicObject;

            }

16:抛出异常

throw new KDException("", "已经产生条码不能反审核");

17:仓位赋值

1)表单插件

          //获取组织

                        string OrGID = Convert.ToString(this.Context.CurrentOrganizationInfo.ID);

                        RelatedFlexGroupField stockLocFld = this.View.BillBusinessInfo.GetField("FStockLocID") as RelatedFlexGroupField;

                        if ("100498".Equals(OrGID))

                        {

                            FSTOCKID = "1317258";

                            stockLocld = 104431;

                        }

                        //仓库仓位赋值

                        this.View.Model.SetValue("FStockID", FSTOCKID, i);

                        DynamicObject[] stockLoc = BusinessDataSe

金蝶基础方法介绍说明

1:获取单据相关信息(1)获取当前行号 int rowIndex = this.Model.GetEntryCurrentRowIndex("FEntity"); FEntity为单据体标...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信