【已解决】子单据头 赋值
金蝶云社区-姜李直
姜李直
0人赞赏了该文章 2,786次浏览 未经作者许可,禁止转载编辑于2016年05月24日 23:26:19

目前开发遇到一个移动表单(原型为线索)现在做成移动表单
只保存单据头没有什么问题,
后面要把客户和联系人都在移动表单中保存进去

该如何把客户和联系人保存到单据里面?

private void SaveClue()
{
/**
* 保存单据数据分两个步骤
* 1:收集界面录入的值,构建单据数据包DynamicObject
* 2:调用服务接口,保存DynamicObject数据包
**/

/*************步骤1:构建单据数据包**************************************************/
DynamicObject org = this.Model.GetValue("F_BAU_Base") as DynamicObject;
//获取线索单据上的销售部门 FSALEDEPTID 并用移动表单上的录入值赋值
(info.GetField("FSALEDEPTID") as BaseDataField).RefIDDynamicProperty.SetValue(obj, org[org.DynamicObjectType.PrimaryKey.Name]);

DynamicObject customer = this.Model.GetValue("F_BAU_BASE1") as DynamicObject;
//获取线索单据上的销售员字段 FSALERID 并用移动表单上的录入值赋值
(info.GetField("FSALERID") as BaseDataField).RefIDDynamicProperty.SetValue(obj, customer[customer.DynamicObjectType.PrimaryKey.Name]);

DynamicObject FSource = this.Model.GetValue("F_BAU_Assistant") as DynamicObject;
//获取线索单据上的线索来源字段 FSource 并用移动表单上的录入值赋值
(info.GetField("FSource") as AssistantField).RefIDDynamicProperty.SetValue(obj, FSource[FSource.DynamicObjectType.PrimaryKey.Name]);

DynamicObject SaleFunc = this.Model.GetValue("F_BAU_Base4") as DynamicObject;
//获取线索单据上的销售方法字段 F_BAU_Base 并用移动表单上的录入值赋值
(info.GetField("F_BAU_Base") as BaseDataField).RefIDDynamicProperty.SetValue(obj, SaleFunc[SaleFunc.DynamicObjectType.PrimaryKey.Name]);

//设置组织为当前组织
(info.GetField("FOrgId") as BaseDataField).RefIDDynamicProperty.SetValue(obj, this.Context.CurrentOrganizationInfo.ID);
(info.GetField("FCreateOrgId") as BaseDataField).RefIDDynamicProperty.SetValue(obj, this.Context.CurrentOrganizationInfo.ID);

//设置普通字段值
info.GetField("FName").DynamicProperty.SetValue(obj, this.Model.GetValue("F_BAU_Text"));
info.GetField("FPDINTEREST").DynamicProperty.SetValue(obj, this.Model.GetValue("F_BAU_Text1"));

/*************步骤2:然后调用保存服务接口,保存数据**************************************************/
IOperationResult result = Kingdee.BOS.ServiceHelper.BusinessDataServiceHelper.Save(this.Context, info, new DynamicObject[] { obj }, null, "Save");
if (result.IsSuccess)
{
if (result.SuccessDataEnity != null && result.SuccessDataEnity.Count() > 0)
{
DynamicObject successDy = result.SuccessDataEnity.FirstOrDefault();
string key = successDy.DynamicObjectType.PrimaryKey.Name;
//这就是保存成功后的主键值
int PrimaryKeyValue = Convert.ToInt32(successDy[key]);
}
StringBuilder mes = new StringBuilder();
foreach (OperateResult res in result.OperateResult)
{
mes.Append(res.Message).Append(";");
}
this.View.ShowMessage(mes.ToString());
}
else
{
StringBuilder stringBuilder = new StringBuilder();
OperateResultCollection operateResult = result.OperateResult;
foreach (OperateResult current in operateResult)
{
if (!current.SuccessStatus)
{
stringBuilder.AppendLine(current.Message + ";");
}
}
base.View.ShowErrMessage(string.Format("保存失败:{0}", stringBuilder.ToString()), "", MessageBoxType.Notice);
}
}

以上为源代码
求如何保存子单据头的数据