但是这个字段的值一开始是0,所以我要初始化它
我猜不出你到底想用采购线做什么,但是像数量这样的字段。到发票和数量。在大多数情况下接收验证数量时自动填写。两个集合都等于 Quantity。当用户通过调用在表单上或从 C/AL 代码中输入内容时验证触发器PurcaseLine.VALIDATE("Quantyity", number);
问题是当它回到 0 时。如何标记该行的所有发票都已收到?
当您过帐发票时,过帐数量会添加到字段中Qty. Invoiced
,而收到的数量会添加到字段中Qty. Received
。因此,您随时都知道收到和支付了多少物品。这两个字段对用户都是只读的,因为只有过帐程序才能并且必须更改它们。
所以如果你有数量。= 10,然后您发布其中的 4 个(数量到发票 = 4)和数量。已开票 = 0。您将获得数量。= 10,数量。到发票 = 6,数量。已开票 = 4。数量。在这种情况下,发票是剩余的数量。要开发票。
如果您不知道它们的用途,则不应使用任何字段。例如,“已完成”字段是生产订单功能的一部分,与数量无关。发票。
要找出字段的含义,您可以参考帮助(站在表格中的字段上按 F1)。这并不适用于所有领域。另一种方法(如果您是开发人员并拥有许可证)是使用开发人员工具包(可以在安装 CD 或此处找到)。此实用程序允许搜索导航对象之间的依赖关系。
关于网络服务。不要尝试直接使用这些表。它确实造成了很多麻烦和不便。创建新的操作表。命名它们Purchase Order Import
和Purchase Line Import
. 为他们创建页面并作为网络服务发布。以任何您喜欢的格式将您的数据导入其中。我的意思是这些表可以是真实表的克隆,或者只是您需要的几个字段。将一些代码放入OnModify
页面的触发器中,这些代码将在导入结束时调用或发布代码单元,其功能将创建或更新来自导入表的采购订单和行。毕竟清除导入表。
如果您的任务是根据外部系统的数量部分过帐收据,那么您的步骤将是:
- 假设已创建采购订单和行,数量为 100,您需要分批发布此数量
- 导入数量通过网络服务发布到采购行导入表通过页面
- 将触发页面的 OnModify,将一些代码放入该触发器以更新 Purchase Line 的
Qty. to Invoice
-或 -通过 Web 服务调用一些代码单元并更新 Purchase Line 的Qty. to Invoice
。将所有关于创建和更新采购线的业务逻辑放在此处,而不是在您的外部应用程序中。
- 现在您有数量 = 100,发票数量 = 5。
- 通过网络服务调用发布代码单元。当然不要发布发布代码单元本身。通过另一个发布的代码单元调用它。
- 现在您有 Qty = 100,Qty to Invoice = don't really care,Invoiced Qty = 5,您可以再次重复步骤 2-5。
您不应该关心发票数量,这就是为什么:下次您导入数量的下一部分时,您需要检查的是 Import_Qty < (Qty - Invoiced Qty)。如果是真的你可以发帖,否则你不能。