我正在查看“屏幕参考”,看看是否有查询作业的XML请求。我发现只有客户查询请求CustomerQueryRq
,并且它也不会返回它拥有的子作业。
假设这是客户和&就业中心看起来像:
- Customer 1
-- Job 1
-- Job 2
-- Job 3
我能够使用CustomerQueryRq
并获取Customer 1
的详细信息,但找不到任何用于检索Job 1
的内容。
所以我的问题是我如何查询工作并获得它的父客户?我真的很感激任何帮助。
编辑:发布我的QBXML请求:
<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="13.0"?>
<QBXML>
<QBXMLMsgsRq onError="continueOnError">
<CustomerQueryRq requestID="1">
<FullName>Customer name</FullName>
</CustomerQueryRq>
</QBXMLMsgsRq>
</QBXML>
Customer name
有子作业,我想查询这些作业。
答案 0 :(得分:1)
ICustomerQuery
返回Jobs列表以及Customers列表。作业没有单独的查询对象。每个工作都有一个客户作为父母。因此,您还可以检索作业的关联客户。
这是一个例子:我的公司文件中有一个与客户 C1 关联的作业 J1 。在下面的C#代码示例中,我创建了一个客户查询对象(使用QB SDK 13.0)并迭代结果。我在客户列表中得到两个结果(C1和J1):
using QBXMLRP2Lib;
using Interop.QBFC13;
public class SDKApp
{
private QBSessionManager sessionMgr;
public SDKApp()
{
// in the class constructor - sessionMgr is a member variable
sessionMgr = new QBSessionManager();
}
public void GetData()
{
// open connection and begin session before data fetch - intentionally skipped this code
// during data fetch
IMsgSetRequest msgset = sessionMgr.CreateMsgSetRequest("US", 13, 0);
ICustomerQuery customerQuery = msgset.AppendCustomerQueryRq();
IMsgSetResponse msgRes = sessionMgr.DoRequests(msgset);
IResponseList responseList = msgRes.ResponseList;
if (responseList.Count > 0)
{
IResponse response = responseList.GetAt(0);
ICustomerRetList customerList = response.Detail as ICustomerRetList;
for (int i = 0; i <= customerList.Count - 1; i++)
{
ICustomerRet qbCustomer = customerList.GetAt(i);
string displayName = qbCustomer.Name.GetValue();
string entityType = "Customer";
if (qbCustomer.ParentRef != null)
{
entityType = "Job of " + qbCustomer.ParentRef.FullName.GetValue();
}
Console.WriteLine(displayName + " " + entityType);
}
}
// end session and close connection after data fetch - intentionally skipped this code
}
}