77范文网 - 专业文章范例文档资料分享平台

操作插件示例代码(7)

来源:网络收集 时间:2019-02-21 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

privateList GetFullDataDupErrMsg(DynamicObject dyObj, DynamicObject dyEntry) {

DynamicObject objFieldValue = null; List msgStr = newList();

objFieldValue = dyObj[\] asDynamicObject;

msgStr.Add(objFieldValue == null ? \ : objFieldValue[\].ToString());

objFieldValue = dyObj[\] asDynamicObject;

msgStr.Add(objFieldValue == null ? \ : objFieldValue[\].ToString());

objFieldValue = dyEntry[\] asDynamicObject; string locName = _locPlaceField.GetDisplayName(objFieldValue); msgStr.Add(locName == null ? \ : locName);

objFieldValue = dyEntry[\] asDynamicObject;

msgStr.Add(objFieldValue == null ? \ : objFieldValue[\].ToString());

objFieldValue = dyEntry[\] asDynamicObject;

string auxProperyName = _auxPropertyField.GetDisplayName(objFieldValue); msgStr.Add(auxProperyName == null ? \ : auxProperyName);

msgStr.Add(dyEntry[\] == null ? \ : dyEntry[\].ToString()); msgStr.Add(dyEntry[\].IsNullOrEmptyOrWhiteSpace() ? \ :

Convert.ToDateTime(dyEntry[\]).ToShortDateString());

msgStr.Add(dyEntry[\].IsNullOrEmptyOrWhiteSpace() ? \ :

Convert.ToDateTime(dyEntry[\]).ToShortDateString());

objFieldValue = dyEntry[\] asDynamicObject; msgStr.Add(objFieldValue == null ? \ : objFieldValue[\].ToString());

objFieldValue = dyEntry[\] asDynamicObject;

msgStr.Add(objFieldValue == null ? \ : objFieldValue[\].ToString());

string ownerTypeName =

_ownerTypeField.GetEnumItemName(dyObj[\].ToString());

msgStr.Add(ownerTypeName);

objFieldValue = dyObj[\] asDynamicObject;

msgStr.Add(objFieldValue == null ? \ : objFieldValue[\].ToString());

string keeperTypeName = _keeperTypeField.GetEnumItemName(dyObj[\].ToString()); msgStr.Add(keeperTypeName);

objFieldValue = dyObj[\] asDynamicObject;

msgStr.Add(objFieldValue == null ? \ : objFieldValue[\].ToString());

return msgStr; } }

OnPreparePropertys

在操作初始化之后,加载待处理的单据数据之前触发。 用于指定在加载单据数据时,需加载的字段;

语法

虚方法定义 C# publicvirtualvoid OnPreparePropertys(PreparePropertysEventArgs e); 参数说明

参数e的属性如下: 属性 IList FieldKeys 描述 需加载的字段Key列表; 需加载的字段,把其Key添加到此集合 备注

单据列表,通常仅会加载单据的部分字段,在列表上执行单据操作,操作服务端,仅能够接收到单据的内码,而没有实际数据。

但操作处理,会进行数据校验、字段更新,均需要用到内码之外的其他字段值,因此会要求操作引擎加载单据的数据包。

操作引擎采用按需加载的方式,自动扫描校验条件中需要用到的字段,加载这些字段的数据,其他无关的字段,均不会加载。

操作插件中,需要用到的字段,操作引擎不会扫描到,因此,需要插件自行明确声明需要加载那些字段。

如果插件需要用到的字段,没有在本事件中申明加载,到数据包取字段值时,会触发”属性不存在”的错误。

向参数对象e.FieldList集合中,添加字段Key,要求加载字段值;

案例–采购价目表审核时,同步更新供应商价格

代码来源

Kingdee.K3.SCM.App.Pur.ServicePlugIn.PriceList.Audit

需求背景

采购价目表审核时,需要把采购价目表对应的供应商价格,更新到供应商基础资料的属性上。

实现方案

在审核操作前,要求加载采购价目表上的供应商、默认价格等字段值。

在操作事务中,审核完毕后,同步更新采购价目表上各供应商的默认价格。

关键字

属性不存在使用字段值加载字段值 示例代码 C#

using System;

using System.Collections.Generic; using System.Linq; using System.Text;

using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Orm;

using Kingdee.BOS.Orm.Metadata; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Core.Validation;

using Kingdee.BOS.Core.Metadata.FieldElement; using Kingdee.BOS.Resource; using Kingdee.BOS.Core; using Kingdee.BOS.App.Data; using Kingdee.BOS; using System.Data;

usingKingdee.BOS.Core.DynamicForm.PlugIn.Args;

namespace Kingdee.K3.SCM.App.Pur.ServicePlugIn.PriceList {

///

///采购价目表服务端审核操作

///

publicclassAudit : AbstractOperationServicePlugIn {

publicoverridevoid OnPreparePropertys(PreparePropertysEventArgs e) {

e.FieldKeys.Add(\); e.FieldKeys.Add(\);

e.FieldKeys.Add(\);//是否默认价目表

e.FieldKeys.Add(\); e.FieldKeys.Add(\); }

publicoverridevoid EndOperationTransaction(EndOperationTransactionArgs e) {

long supplierId = 0; long priceListId = 0; bool defPriceListId = false;

List sqlArray = newList();

foreach (DynamicObject entity in e.DataEntitys) { if (entity!=null) {

supplierId = Convert.ToInt64(entity[\]); priceListId = Convert.ToInt64(entity[\]);

defPriceListId = Convert.ToBoolean(entity[\]); if (priceListId>0 && supplierId>0 && defPriceListId) {

string sql = string.Format(@\

SET FPRICELISTID= {0} WHERE P.FSupplierid={1}

\,priceListId.ToString(),supplierId.ToString());

sqlArray.Add(sql); } } }

if (sqlArray.Count > 0) {

DBUtils.ExecuteBatch(this.Context, sqlArray, 100); } } }

}

OnAddValidators

在单据数据加载后,数据校验前触发;

用于注册自定义的操作校验器,增加校验;或者移除预置的校验器,避开校验;

语法

虚方法定义 C# publicvirtualvoid OnAddValidators(AddValidatorsEventArgs e); 参数说明

参数e的属性如下: 属性 DynamicObject[] DataEntities Validators 描述 待校验的单据数据包 List 校验器集合

备注

操作引擎会在一个事务中,进行数据的更新,如果更新成功则全部成功,如果某条数据操作失败,则全部失败。

实际业务中,需要把操作失败的数据,单独隔离出来,其他数据,顺利操作成功。为实现此需求,需要在操作事务之前,把不允许操作的数据检查出来,并剔除出数据集合,剩下符合条件,允许操作的数据,丢进事务,进行操作。

本事件,允许向操作中,添加自定义的校验规则,对将要操作的数据进行校验。

校验规则(AbstractServiceValidator)检查出不符合规则的数据后,通过通用的方法,通知操作剔除此数据。

案例–单据反审核时,生成凭证校验

代码来源

Kingdee.K3.SCM.App.ServicePlugIn.VoucherControl.UnAuditVoucherControl Kingdee.K3.SCM.App.Validator.HasVoucherValidator

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库操作插件示例代码(7)在线全文阅读。

操作插件示例代码(7).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/483187.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: