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

在服务端插件新建物料

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

在服务端插件新建物料

客户需求: 在服务端插件新建物料。

解决方案: 创建DynamicObject数据包,调用Save服务。此方法也可用于创建单据并保存。

代码演示了设置普通字段、多语言字段、基础资料字段、子单据头字段的值。

演示了创建单据体行数据包的方法。


public void SaveMaterial()
{
    var materailMetadata = ServiceHelper.GetService<Kingdee.BOS.Contracts.IMetaDataService>().Load(this.Context, "BD_MATERIAL") as FormMetadata;
    var materailBiz=materailMetadata.BusinessInfo;
    DynamicObject dynObj = new DynamicObject(materailMetadata.BusinessInfo.GetDynamicObjectType());
    //初始化子单据头
    InitSubHeadEntity(materailBiz, dynObj, "SubHeadEntity");
    InitSubHeadEntity(materailBiz, dynObj, "SubHeadEntity1");
    InitSubHeadEntity(materailBiz, dynObj, "SubHeadEntity6");
    InitSubHeadEntity(materailBiz, dynObj, "SubHeadEntity2");
    InitSubHeadEntity(materailBiz, dynObj, "SubHeadEntity3");
    InitSubHeadEntity(materailBiz, dynObj, "SubHeadEntity4");
    InitSubHeadEntity(materailBiz, dynObj, "SubHeadEntity5");
    InitSubHeadEntity(materailBiz, dynObj, "SubHeadEntity7");
    //设置单据头、子单据头字段的值
    SetFieldValue(materailBiz, dynObj, "FNumber", "test001.001");//编码
    SetFieldValue(materailBiz, dynObj, "FName", new LocaleValue("物料名称01"));//名称
    SetFieldValue(materailBiz, dynObj, "FErpClsID", "1");//物料属性
    SetBasedataFieldByNumber(materailBiz, dynObj, "FBaseUnitId", "pcs");//基本单位
    SetFieldValue(materailBiz, dynObj, "FDocumentStatus", "A");// 数据状态
    SetFieldValue(materailBiz, dynObj, "FForbidStatus", "A");// 禁用状态
    SetFieldValue(materailBiz, dynObj, "FCreateOrgId", 100001);//创建组织
    SetFieldValue(materailBiz, dynObj, "FUseOrgId", 100001);//使用组织
    SetFieldValue(materailBiz, dynObj, "FCreatorId", 16394);//创建人
    SetFieldValue(materailBiz, dynObj, "FModifierId", 16394);//修改人
    var now = ServiceHelper.GetService<Kingdee.BOS.Contracts.ITimeService>().GetSystemDateTime(this.Context);
    SetFieldValue(materailBiz, dynObj, "FCreateDate", now);// 创建时间
    SetFieldValue(materailBiz, dynObj, "FModifyDate", now);// 修改时间
//设置单据体-库存
    var entityInvPty = materailBiz.GetEntity("FEntityInvPty");
    var entityInvPtyData = dynObj[entityInvPty.EntryName] as DynamicObjectCollection;
    //增加单据体第一行数据
    var entityInvPtyRow1 = new DynamicObject(entityInvPty.DynamicObjectType);
    entityInvPtyRow1["IsAffectPrice"] = true;
    entityInvPtyData.Add(entityInvPtyRow1);
    ServiceHelper.GetService<Kingdee.BOS.Contracts.ISaveService>().Save(this.Context, materailBiz, new[] { dynObj });
}

/// <summary>
/// 初始化子单据头数据包
/// </summary>
/// <param name="bizInfo"></param>
/// <param name="dynObj"></param>
/// <param name="entityKey"></param>
private void InitSubHeadEntity(BusinessInfo bizInfo, DynamicObject dynObj, string entityKey)
{
    var subEntity = bizInfo.GetEntity(entityKey);
    if (subEntity is Kingdee.BOS.Core.Metadata.EntityElement.SubHeadEntity)
    {
        var subData = dynObj[subEntity.EntryName] as DynamicObjectCollection;
        if (subData.Count == 0)
        {
            subData.Add(new DynamicObject(subEntity.DynamicObjectType));
        }
    }
}

/// <summary>
/// 设置字段的值
/// </summary>
/// <param name="bizInfo">物料元数据</param>
/// <param name="dynObj">物料数据包</param>
/// <param name="fieldKey">字段Key</param>
/// <param name="fieldValue">字段值/基础资料内码</param>
private void SetFieldValue(BusinessInfo bizInfo, DynamicObject dynObj, string fieldKey, object fieldValue)
{
    var field = bizInfo.GetField(fieldKey);
    //基础资料字段
    BaseDataField bdField = field as BaseDataField;
    if (bdField != null)
    {
        SetBasedataFieldValue(dynObj, bdField, fieldValue);
        return;
    }
    if (field.Entity is Kingdee.BOS.Core.Metadata.EntityElement.SubHeadEntity)
    {
        //子单据头字段
        var subData = dynObj[bdField.Entity.EntryName] as DynamicObjectCollection;
        if (subData.Count == 0)
        {
            subData.Add(new DynamicObject(bdField.Entity.DynamicObjectType));
        }
        field.DynamicProperty.SetValue(subData[0], fieldValue);
    }
    else
    {
        //单据头

在服务端插件新建物料

客户需求: 在服务端插件新建物料。解决方案: 创建DynamicObject数据包,调用Save服务。此方法也可用于创建单据并保存。代码演示了设置...
点击下载文档文档为doc格式

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

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