金蝶基础方法介绍说明

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
金蝶基础方法介绍说明
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



