2

我了解要访问当前未在 QuickBooks 中打开的公司,Web 服务需要向 QuickBooks Web 连接器提供文件位置作为authenticate()调用的返回值。

这对我来说似乎倒退了。为什么网络服务要负责告诉网络连接器相关的公司文件在哪里?由 Web 连接器管理它不是更有意义吗?

这是我在QuickBooks Web Connector Programmer's Guide中找到的相关解释:

  1. 如果您的 Web 服务想要尝试不同的公司,请在返回的字符串中提供公司路径名。(如果您想使用碰巧打开的任何公司文件,您可以提供一个空字符串。)Web 连接器将通过尝试使用提供的字符串再次连接到 QuickBooks 来做出响应。

为什么 Web 服务会尝试不同的公司?

为什么 Web 服务会执行这些操作中的第二个,而不是简单地完全停止?在实践中,当 Web 服务记住从会话到会话的公司文件路径(推荐的做法)并希望回退以使用当前在 QuickBooks 中打开的任何公司文件时使用此方法(通过响应 connectionError 调用一个空字符串)。

这并不像看起来那么随意。将 Web 服务添加到 Web 连接器时,Web 连接器会将唯一的 FileID 作为专用数据扩展名存储在指定的公司中。因此,Web 服务始终可以通过检查在数据交换序列中 Web 连接器的第一个 sendRequestXML 调用中返回给您的 Web 服务的 CompanyRet 来验证它是否正在与预期的公司文件通信。(检查预期 FileID 的数据扩展名列表。)

这似乎是一种糟糕的最终用户体验;如果他们移动公司文件(假设他们希望 Web 连接器在没有打开 QuickBooks 的情况下运行),则 Web 服务将失败,直到该路径在服务器端更新。最终用户可以在不知道会破坏事物的情况下执行此操作,这似乎是完全合理的。

为什么它是这样构造的?更重要的是:有没有办法解决这个问题?

4

1 回答 1

2

为什么它是这样构造的?

因为这就是 Intuit 构建它的方式。

有没有解决的办法?

不。

于 2015-09-14T17:41:20.893 回答