根据客户信息筛选联系人和地址信息

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

根据客户信息筛选联系人和地址信息

   根据客户信息筛选联系人和地址信息

   

    在实际业务中,需要根据客户信息来携带对应的联系人,地址信息。可通过BOS进行如下配置,即可实现此功能。

    1、在有客户信息的业务单据中增加 【基础资料】类型字段“联系人”。

客户联系人3.webp

  2、在“联系人”属性的“过滤”中录入公式 FCOMPANY='GetValue(FCustId)'  

       FCOMPANY 是“供应商(联系人)”表中的“所属公司”字段。

       FCustId 是 当前业务单据中,客户信息字段。

  3、这样设置的结果就是根据当前业务单据中的客户名称,过滤此客户的联系人。效果如下图所示:

客户联系人1.webp

4、根据客户信息与联系人获取对应的地址信息(有同一联系人,对应不同地址信息,或不同联系人对应不同地址信息)。

     客户联系人4.webp

       在业务单据表头增加 【基础资料】类型的“客户地址”字段。在过滤字段中录入公式: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、设置后的效果如下图所示:

客户联系人2.webp



第一点,联系人字段的过滤表达式是不完整的,当联系人是客户创建组织下创建,分配客户到分配组织,然后在分配组织下做单,这个表达式就会导致选不到联系人,正确的客户联系人按客户过滤的表达式应该是:

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)



实用


好帖啊,很实用的小技巧

根据客户信息筛选联系人和地址信息

根据客户信息筛选联系人和地址信息 在实际业务中,需要根据客户信息来携带对应的联系人,地址信息。可通过BOS进行如下配置,...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息