PowerShell调用Dynamics NAV 2015代码单元参数传递问题求助
一、Argument参数的使用与接收
Invoke-NAVCodeunit的-Argument参数仅用于传递字符串给代码单元的Run触发器,而非自定义方法。要在代码单元内接收该参数,需按以下步骤操作:
- 打开目标代码单元(如50060),编辑其Run触发器,添加一个文本类型的参数(例如
Param : Text[250])。 - 在Run触发器的逻辑中直接使用这个参数即可。
- PowerShell调用示例:
Invoke-NAVCodeunit -ServerInstance navisiontest -CompanyName d-velop -CodeunitId 50060 -Argument "需要传递的字符串参数"
二、MethodName调用报错的解决
你遇到的Method 'Codeunit50060.UpdateStatus(number of arguments: 1), with matching argument types.' not found错误,原因是调用时参数数量/类型与代码单元内方法定义不匹配:
- 从你提供的代码单元内容来看,
UpdateStatus方法包含两个参数:DocNo : Code[20](文档编号)和Status : Option(状态选项),但你调用时仅传入了1个参数,导致匹配失败。 - 此外,调用自定义方法时需注意:
- 方法必须设置为**全局(Public)**属性,否则无法通过PowerShell调用。
- 使用
-MethodName时,需搭配-ArgumentList参数传递对应参数(而非-Argument),且参数类型要与NAV内定义一致:- Option类型参数需传入对应的整数值(例如Status选项若为
Open=0, Closed=1,则传0或1)。 - 文本/代码类型直接传字符串。
- Option类型参数需传入对应的整数值(例如Status选项若为
正确的PowerShell调用示例:
Invoke-NAVCodeunit -ServerInstance navisiontest -CompanyName d-velop -CodeunitId 50060 -MethodName "UpdateStatus" -ArgumentList "DOC001", 1
内容的提问来源于stack exchange,提问作者Flo VR
相关产品推荐
相关产品推荐

