Netsuite 如何仅从SuiteTalk获取更改的记录

Netsuite 如何仅从SuiteTalk获取更改的记录,netsuite,Netsuite,我正在编写一个程序来查找已更新的所有记录(如客户),以便将这些更改写入遗留数据库 我的程序使用(例如)CustomerSearchBasic对象向SuiteTalk发送搜索命令。CustomerSearchBasic对象定义对所有记录的搜索,并将其lastModifiedDate与上次获得结果时收到的最新lastModifiedDate值进行比较 我有两个选择: A) 询问lastModifiedDate不早于上次获得结果时收到的最新lastModifiedDate的所有记录。这意味着,如果两条

我正在编写一个程序来查找已更新的所有记录(如客户),以便将这些更改写入遗留数据库

我的程序使用(例如)CustomerSearchBasic对象向SuiteTalk发送搜索命令。CustomerSearchBasic对象定义对所有记录的搜索,并将其lastModifiedDate与上次获得结果时收到的最新lastModifiedDate值进行比较

我有两个选择:

A) 询问lastModifiedDate不早于上次获得结果时收到的最新lastModifiedDate的所有记录。这意味着,如果两条记录在同一秒钟内更新,但上次我只收到第一条记录,那么这次我将同时收到这两条记录。这意味着我不会错过更新,但我通常会收到至少一条我已经处理过更新的记录

B) 询问lastModifiedDate晚于上次获得结果时收到的最新lastModifiedDate的所有记录。这意味着,如果两条记录在同一秒钟内更新,但上次我只收到第一条记录,那么这次我将不会收到任何一条记录。这意味着我可能会错过更新。我不会收到已处理的更新

因此,选项A更安全但浪费,因为我通常会下载一条我不想处理的记录,而选项B可能会错过一些更新,但不会导致不必要的结果


您有没有更好的建议?

一种方法是为您要处理的每种记录类型引入一个
synced
复选框自定义字段

最初,对于所有记录,
synced
将是
F
,表示它们必须同步到旧数据库

在每个同步周期中,您的程序将搜索
synced
等于
F
的所有记录。它将结果记录输入遗留数据库。成功处理记录后,您的程序将在NetSuite中将
synced
字段设置为
T

每次在NetSuite中更改记录时,
synced
字段将再次设置为
F
。这可以通过手动(取消选中NetSuite表单中的框)、客户端脚本或其他方式实现。这将在程序的下一个同步周期中,将此记录包括在要同步的记录列表中

这种方法的缺点是必须使
synched
字段保持最新,尤其是在修改记录时。这样做的好处是,您永远不会错过更新的记录,也永远不会对更新的记录进行两次处理(除非您的程序无法将
synched
设置为
T

这种方法的另一个好处是,您的程序可以在一个同步周期中正常地失败,并在下一个周期中重新开始。这是因为每个项目都有自己的
synced
标志


更好的解决方案

考虑一下,您可能可以将此方法与原始方法相结合,以消除在更改记录时手动更新
synced
标志的要求

不要使用复选框
synched
标志,而是使用日期/时间
last\u synched
自定义字段。此
last\u synced
自定义字段可以存储程序中上次处理此记录的日期和时间。然后,您的搜索将被修改,以返回所有上次同步日期和时间早于记录上次更新日期和时间的记录。然后,当您的程序处理给定记录时,它应该将其
last\u synced
字段更新为当前日期和时间


这种混合解决方案既有以前的解决方案的优点,也有两者的缺点。

第二种想法更易于管理。但是,如果记录在我处理时被更新,它允许我错过更新。我可以修改这个想法,将last_synced设置为lastModifiedDate的值。这意味着我将获得所有更新,但在某些情况下,记录会在同一秒钟内更新两次。将记录设置为查询数据时收到的最后修改日期肯定会缓解在处理数据时更新的问题。你是对的,这对同样的第二次更新没有帮助。是否有某种自动化流程能够如此快速地更新这些记录?一个记录似乎不太可能在同一秒钟内改变两次。这个系统甚至还没有上线——我正在计划。我喜欢无孔解决方案。我发现这个解决方案有一个致命的缺陷:更新上次同步的字段会导致更新上次修改的日期!这让我觉得它又被更新了!嗯,对。嗯,
last\u synced
必须更新以匹配新的上次修改日期时间(这将是更新
last\u synced
,argh的结果)。在我参与的项目中,我使用的是布尔
synced
field方法。要确保在记录更新时更新记录有点困难,但客户端和用户脚本使之成为可能。谢谢,@cja,因为您更有经验,如果您在Netsuite中创建了特定客户的发票,我想知道一件事。客户余额将更改,但客户lastModifiedDate未更改。我如何才能让所有这些客户的余额都得到更新。