
【场景】单据转换时,会根据选单条件策略进行计算;存在满足条件的行就会继续下推;
部分场景下不支持部分下推,必须保留完整关系
【数据准备】采购申请单-》采购订单
(a)采购申请单

(b)转换规则

(c)直接下推结果

【案例】当存在行不满足时,不允许下推

```csharp
using Kingdee.BOS;
using Kingdee.BOS.Core.Const;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn;
using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.FormElement;
using Kingdee.BOS.Core.SqlBuilder;
using Kingdee.BOS.ServiceHelper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DynamicFormPlugIn.BillConvert
{
[Kingdee.BOS.Util.HotUpdate]
[System.ComponentModel.Description("")]
public class ConvertServicePlugIn_SourceDataPickError : AbstractConvertPlugIn
{
/*
* 当单据转换是源单携带仅携带部分行时,不允许转换
*
*/
public override void OnGetSourceData(GetSourceDataEventArgs e)
{
string srcEntryKey;
Option.TryGetVariableValue("SourceEntryKey", out srcEntryKey);
if (string.IsNullOrEmpty(srcEntryKey))
return;
ListSelectedRow[] selectRows;
Option.TryGetVariableValue("SelectedRows", out selectRows);
if (selectRows == null || selectRows.Length <=0)
return;
int originSelectRowCnt = 0;
if (IsGetByEntry(srcEntryKey, selectRows))
{
//按分录计算
var pkValueArray = (from p in selectRows
where !string.IsNullOrEmpty(p.EntryPrimaryKeyValue)
select p.EntryPrimaryKeyValue).ToArray();
originSelectRowCnt = pkValueArray.Length;
}
else
{
//按整单计算
var entity = e.SourceBusinessInfo.GetEntity(srcEntryKey);
QueryBuilderParemeter queryBuilder = new QueryBuilderParemeter();
queryBuilder.FormId = e.Sourc