根据客户信息筛选联系人和地址信息
根据客户信息筛选联系人和地址信息
在实际业务中,需要根据客户信息来携带对应的联系人,地址信息。可通过BOS进行如下配置,即可实现此功能。
1、在有客户信息的业务单据中增加 【基础资料】类型字段“联系人”。
2、在“联系人”属性的“过滤”中录入公式 FCOMPANY='GetValue(FCustId)'
FCOMPANY 是“供应商(联系人)”表中的“所属公司”字段。
FCustId 是 当前业务单据中,客户信息字段。
3、这样设置的结果就是根据当前业务单据中的客户名称,过滤此客户的联系人。效果如下图所示:
4、根据客户信息与联系人获取对应的地址信息(有同一联系人,对应不同地址信息,或不同联系人对应不同地址信息)。
在业务单据表头增加 【基础资料】类型的“客户地址”字段。在过滤字段中录入公式:FCUSTID='GetValue(FCustId)' and FTCONTACT='GetValue(F_HK_Contact)'
FCUSTID='GetValue(FCustId)' 是地址信息关联客户信息;FCUSTID 字段为“客户地点”表中客户ID,FCustId字段为当前业务单据中客户信息字段。
FTCONTACT='GetValue(F_HK_Contact)' 是地址信息中联系人关联当前业务单据中联系人信息;FTCONTACT字段为“客户地点”表中联系人字段,F_HK_Contact 字段为当前业务单据中联系人字段。
5、设置后的效果如下图所示:
第一点,联系人字段的过滤表达式是不完整的,当联系人是客户创建组织下创建,分配客户到分配组织,然后在分配组织下做单,这个表达式就会导致选不到联系人,正确的客户联系人按客户过滤的表达式应该是:
FCompany='GetValue(客户字段标识)' or FCompany in (select FmasterId from T_BD_CUSTOMER where FCUSTID='GetValue(客户字段标识)')
修改后还是报错:
列名 'FCOMPANY' 无效。
错误ID:EB5FF592991F37703CC9DF67F43885C3
[{"operation":"BD_Contact_List.GetEntryData"}]
发生时间: 16:11:49
错误编号: BOS_ExecuteReader
错误信息: 列名 'FCOMPANY' 无效。
===================================================
调用堆栈:
Server stack trace:
在 Kingdee.BOS.App.Data.AbstractDatabase.ExecuteReader(DbCommand command, IEnumerable`1 paramList, CommandBehavior cmdBehavior, Boolean bNewCn)
在 Kingdee.BOS.App.Data.AbstractDatabase.ExecuteReader(DbCommand command, IEnumerable`1 paramList, CommandBehavior cmdBehavior)
在 Kingdee.BOS.App.Data.DBUtils.ExecuteReader(Context ctx, String strSQL, IEnumerable`1 paramList, CommandType cmdtype, CommandBehavior cmdBehavior, Boolean bNewCn)
在 Kingdee.BOS.App.Data.DBUtils.ExecuteReader(Context ctx, String strSQL, IEnumerable`1 paramList, CommandType cmdtype, CommandBehavior cmdBehavior)
在 Kingdee.BOS.App.Data.DBUtils.ExecuteObject[T](Context ctx, String strSQL, IDataEntityType dt, IDictionary`2 propertyTypeMaps, CommandType cmdType, SqlParam[] paramList)
在 Kingdee.BOS.App.Data.DBUtils.ExecuteDynamicObject(Context ctx, String strSQL, IDataEntityType dt, IDictionary`2 propertyTypeMaps, CommandType cmdType, SqlParam[] paramList)
在 Kingdee.BOS.App.Core.ListDataService.GetData(Context ctx, String sql, DynamicObjectType dt, List`1 sqlParams, Boolean isUseLocalCache)
Exception rethrown at [0]:
在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
在 Kingdee.BOS.Contracts.IListDataServices.GetData(Context ctx, String sql, DynamicObjectType dt, List`1 sqlParams, Boolean isUseLocalCache)
在 Kingdee.BOS.ServiceHelper.ListDataServiceHelper.GetData(Context ctx, String sql, DynamicObjectType dt, List`1 sqlParams, Boolean isUseLocalCache)
在 Kingdee.BOS.Model.List.DataAccessPolicy.DirectSQLDataAccess.GetListData(Int32 start, Int32 rows, String orderInfo, Boolean isUseLocalCache)
在 Kingdee.BOS.Model.List.DataAccessPolicy.DirectSQLDataAccess.GetData(Int32 start, Int32 rows, Boolean needRefreshTree, String orderInfo)
在 Kingdee.BOS.Model.List.ListModel.GetListData(Int32 start, Int32 rows, Boolean needRefreshTree, String orderInfo)
在 Kingdee.BOS.Model.List.ListModel.GetData(Int32 start, Int32 rows, Boolean needRefreshTree, String orderInfo)
在 Kingdee.BOS.Model.List.ListModel.GetData(Int32 start, Int32 rows, Boolean needRefreshTree)
在 Kingdee.BOS.Web.List.ListView.PrepareDatas(Int32 startRow, Int32& limit, FormOperationEnum operatioEnum, String groupRows, String permissionItemId, JSONObject data)
在 Kingdee.BOS.Web.List.ListView.GetDataByPermission(Int32 startRow, Int32 limit, FormOperationEnum operatioEnum, String groupRows, String permissionItemId, DynamicObjectCollection pageDatas, Boolean printPreviewSelectRow)
在 Kingdee.BOS.Web.List.ListView.GetData(Int32 startRow, Int32 limit, String groupRows)
在 Kingdee.BOS.Web.List.ListView.GetEntryData(String key, Int32 start, Int32 limit, String groupRows)
在 Kingdee.BOS.Web.DynamicForm.DynamicWebFormController.GetEntryData(String key, Int32 start, Int32 limit, String groupRows) 在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
在 System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
在 System.Data.SqlClient.SqlDataReader.get_MetaData()
在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
在 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
在 Kingdee.BOS.App.Data.AbstractDatabase.DoExecuteReader(DbCommand command, CommandBehavior cmdBehavior)
在 Kingdee.BOS.App.Data.AbstractDatabase.ExecuteReader(DbCommand command, IEnumerable`1 paramList, CommandBehavior cmdBehavior, Boolean bNewCn)
我是在采购订单中加了客户信息,然后加联系人、联系人电话、邮箱,按照上面配置联系人,会报错。求解我哪里配置错了。
还有联系人电话、邮箱,能发个语句配置吗?
报错如下:
在将 varchar 值 'GetValue(FCustId)' 转换成数据类型 int 时失败
错误ID:F537904F2C7DA22342CBC1947382826B
[{"operation":"BD_CommonContact_List.GetEntryData"}]
发生时间: 11:13:31
错误编号: bd7503832dc1493dadbbe597cfdb3c0e
错误信息: 在将 varchar 值 'GetValue(FCustId)' 转换成数据类型 int 时失败。
===================================================
调用堆栈:
Server stack trace:
在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
在 System.Data.SqlClient.SqlDataReader.TryHasMoreRows(Boolean& moreRows)
在 System.Data.SqlClient.SqlDataReader.TryReadInternal(Boolean setTimeout, Boolean& more)
在 System.Data.SqlClient.SqlDataReader.Read()
在 Kingdee.BOS.App.Data.DBUtils.InnerFillObject[T](Context ctx, IDataReader reader, IDataEntityType dt, IDictionary`2 propertyTypeMaps)
在 Kingdee.BOS.App.Data.DBUtils.ExecuteObject[T](Context ctx, String strSQL, IDataEntityType dt, IDictionary`2 propertyTypeMaps, CommandType cmdType, SqlParam[] paramList)
在 Kingdee.BOS.App.Data.DBUtils.ExecuteDynamicObject(Context ctx, String strSQL, IDataEntityType dt, IDictionary`2 propertyTypeMaps, CommandType cmdType, SqlParam[] paramList)
在 Kingdee.BOS.App.Core.ListDataService.GetData(Context ctx, String sql, DynamicObjectType dt, List`1 sqlParams, Boolean isUseLocalCache)
Exception rethrown at [0]:
在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
在 Kingdee.BOS.Contracts.IListDataServices.GetData(Context ctx, String sql, DynamicObjectType dt, List`1 sqlParams, Boolean isUseLocalCache)
在 Kingdee.BOS.ServiceHelper.ListDataServiceHelper.GetData(Context ctx, String sql, DynamicObjectType dt, List`1 sqlParams, Boolean isUseLocalCache)
在 Kingdee.BOS.Model.List.DataAccessPolicy.DirectSQLDataAccess.GetListData(Int32 start, Int32 rows, String orderInfo, Boolean isUseLocalCache)
在 Kingdee.BOS.Model.List.DataAccessPolicy.DirectSQLDataAccess.GetData(Int32 start, Int32 rows, Boolean needRefreshTree, String orderInfo)
在 Kingdee.BOS.Model.List.ListModel.GetListData(Int32 start, Int32 rows, Boolean needRefreshTree, String orderInfo)
在 Kingdee.BOS.Model.List.ListModel.GetData(Int32 start, Int32 rows, Boolean needRefreshTree, String orderInfo)
在 Kingdee.BOS.Model.List.ListModel.GetData(Int32 start, Int32 rows, Boolean needRefreshTree)
在 Kingdee.BOS.Web.List.ListView.PrepareDatas(Int32 startRow, Int32& limit, FormOperationEnum operatioEnum, String groupRows, String permissionItemId, JSONObject data)
在 Kingdee.BOS.Web.List.ListView.GetDataByPermission(Int32 startRow, Int32 limit, FormOperationEnum operatioEnum, String groupRows, String permissionItemId, DynamicObjectCollection pageDatas, Boolean printPreviewSelectRow)
在 Kingdee.BOS.Web.List.ListView.GetData(Int32 startRow, Int32 limit, String groupRows)
在 Kingdee.BOS.Web.List.ListView.GetEntryData(String key, Int32 start, Int32 limit, String groupRows)
在 Kingdee.BOS.Web.DynamicForm.DynamicWebFormController.GetEntryData(String key, Int32 start, Int32 limit, String groupRows)
实用
好帖啊,很实用的小技巧
根据客户信息筛选联系人和地址信息
本文2024-09-16 18:39:53发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-23611.html