基础资料引用检查的使用
基础资料引用检查有2种功能:
1. 判断指定基础资料是否被其他单据(包括基础资料)引用。
2. 查询所有引用改基础资料的单据(包括基础资料)和内码。
功能1:参考物料元数据--删除操作--校验规则--检查当前基础资料是否被其他业务对象使用。
可以添加排除项,添加到排除项里的单据和字段不校验是否被引用。
功能2:在列表菜单中增加新的菜单,点击事件选择操作【基础资料引用检查】
可以再插件中直接调用以下函数
/// <summary>
/// 检查某些基础资料被哪些单据引用,返回resultCount规定的结果数量;
/// 出于性能考虑,如果单纯是判断是否被引用,请指定返回结果的个数,一般请填写1;
/// </summary>
/// <param name="ctx"></param>
/// <param name="baseDataFromId">基础资料唯一标识</param>
/// <param name="ids">需要检查的基础资料内码列表</param>
/// <param name="pkType">基础资料内码类型,可以通过form.GetPkFieldType()获得</param>
/// <param name="exceptItems">不需要检查的业务单据</param>
/// <param name="resultCount">返回结果条数</param>
/// <returns></returns>
public static List<BaseDataRefResult> CheckBaseDataRefInfo(Context ctx, string baseDataFromId,
object[] ids, Type pkType, List<ObjectTypeRef> exceptItems = null, int resultCount = -1)
/// <summary>
/// 返回某些基础资料被哪些单据引用的详细结果。包括业务单据BillNo。
/// </summary>
/// <param name="ctx"></param>
/// <param name="baseDataFromId">基础资料唯一标识</param>
/// <param name="ids">需要检查的基础资料内码列表</param>
/// <param name="pkType">基础资料内码类型,可以通过form.GetPkFieldType()获得</param>
/// <param name="exceptItems">不需要检查的业务单据</param>
/// <param name="resultCount">返回结果条数</param>
/// <returns></returns>
public static List<BaseDataRefResult> GetBaseDataRefList(Context ctx, string baseDataFromId,
object[] ids, Type pkType, List<ObjectTypeRef> exceptItems = null, int resultCount = -1)
//对于第五个参数exceptItems ,假设需检查物料是否被引用,单独调用时可以这样获取物料删除操作上配置的且无需检查的单据:
List<Kingdee.BOS.Core.Metadata.PreInsertData.DataType.ObjectTypeRef> exceptRefItem = null;
IMetaDataService service = Kingdee.BOS.App.ServiceHelper.GetService<IMetaDataService>();
FormMetadata formMetadata = (FormMetadata)service.Load(this.Context, "BD_MATERIAL");
var deleteOperate = (from p in formMetadata.BusinessInfo.GetForm().FormOperations
where p.OperationId == Kingdee.BOS.Core.Metadata.FormElement.FormOperation.Operation_Delete
select p).ToArray();
if (deleteOperate.Length > 0)
{
var refValidation = (from p in deleteOperate[0].Validations
where p is Kingdee.BOS.Core.Base.Validation.BaseDataRefValidator
select p).ToArray();
if (refValidation.Length > 0)
{
Kingdee.BOS.Core.Base.Validation.BaseDataRefValidator baseDataRefValidator = refValidation[0] as Kingdee.BOS.Core.Base.Validation.BaseDataRefValidator;
exceptRefItem = baseDataRefValidator.ExceptRefItem;
}
}
基础资料引用检查的使用
本文2024-09-23 03:43:03发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-160643.html