问题标签 [dynamics-business-central]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
902 浏览

c# - 授权 Dynamics 365 Business Central API

我想创建一个应该按计划运行的 Webjob。Webjob 的目的基本上是检查一些数据库表,如果表中有新条目,则相应地在 Dynamics 365 BC 中创建项目。在设计实现所有这些的方法时,第一步是对 API 进行身份验证,以便我们可以进行POST调用。此处的文档指定了具有各自身份验证机制的不同 API 端点,即通过 Azure Active Directory(需要具有Dynamics Business Central API 权限的应用程序注册Delegated)或基本身份验证。我知道,我们可以通过以下方式使用客户端 ID 和机密从 Azure 活动目录获取访问令牌:

现在,由于我的 Web 作业需要在没有任何用户交互的情况下在后端运行,因此 Azure AD 身份验证不适合这里,因为它需要用户交互才能同意。而基本身份验证不建议用于生产场景。
请建议应该如何生成访问令牌,以便它不需要用户交互。

编辑

根据 Allen 的回复,基本身份验证可用于此场景,但需要更新 Microsoft 文档以支持此场景。但是,在https://api.businesscentral.dynamics.com/v1.0/<mydomain.com>/api/beta/companies使用 Postman 和基本身份验证探索 API 端点时,我遇到了以下错误:

虽然我为我的业务中心用户生成了 Web 服务访问密钥,并将其与用户名一起用于基本身份验证。我确信我正在复制正确的网络服务密钥。任何帮助将不胜感激。

0 投票
2 回答
1540 浏览

c# - 使用 Rest API 在 Dynamics 365 Business Central 中创建项目

我正在尝试使用 Microsoft Dynamics Business Central Rest API,以使用以下端点创建项目:

以下是我的代码:

以下是请求正文(从此处复制):

当我尝试执行代码时,endpointRequest.GetResponse();出现以下错误:

The remote server returned an error: (400) Bad Request.'

我尝试在邮递员(基本身份验证)中创建项目,具有相同的 URL 和请求正文,错误是:

重要的是要注意,当我从请求正文中排除baseUnitOfMeasureitemCategory属性时,项目成功创建。但是包括这些属性会导致错误。正如我对上述问题的研究,我从不同的来源发现,当字段/属性输入错误时会出现此类问题。如上所述,我正在从 Microsoft 文档中复制请求正文,因此我不知道是哪个字段导致了问题。请帮我解决这个问题。谢谢

0 投票
1 回答
331 浏览

dynamics-business-central - Business Central API 扩展:如何将插入触发器连接到 API 自定义页面?

我创建了一种新的页面类型的 API,它使用销售发票标头源。我想获取新插入的记录并更新其值。之后在警报中显示该值。目前我在创建新的销售发票后有一个空白页面。

这是我的代码:

之后,我在我的 BC 类型查询中创建了一个新的 Web 服务,该查询针对销售发票,但在邮递员中我得到 401,无论我是对我的管理员用户使用基本身份验证还是在我的管理员用户上生成的 Web 服务应用程序密钥。

如何将插入触发器操作连接到我的 API 自定义页面?

0 投票
2 回答
1219 浏览

dynamics-365 - 如何访问 Dynamics 365 商业中心云服务的数据库?

是否可以直接访问 Dynamics 365 业务中心的 SQL Server 数据库,还是只能通过 API 访问它?

0 投票
0 回答
109 浏览

angular - 将 Angular 嵌入 Business Central 并让身份验证正常工作

目前我正在使用 Angular 进行一个有趣的项目。我的公司主要为 Microsoft Business Central 开发,并希望我在 Business Central 组件中嵌入一个 Angular 应用程序。

我认为 Business Central 开发人员的目标群体很小,但我认为在将 Angular 应用程序嵌入另一个应用程序(如 wordpress 等)时,您会遇到同样的问题。

因此,我创建了一个ng new项目(带有路由)并使用 Azure B2C 作为身份提供者实现了身份验证(使用浏览器弹出窗口输入您的凭据)。我创建了一个组件来测试路由(/home)。

当使用ng serve登录流程运行应用程序时,我已通过身份验证。但是在构建项目并将其嵌入到 Business Central Extension 之后,我可以单击导航菜单将路由切换到“/”和“/home”,但我的身份验证不起作用。

这是完全有道理的,因为我的应用程序后面没有正确的 URL,因为它是嵌入的。所以重定向 URL 是未知的。我也不知道,因为window.location.origin提到我在https://businesscentral.dynamics.com和 Angular 在“/home”或“/”上有它的活动路线。

因此,我无法从业务中心外部调用某些资源或点击由 Angular 路由注册的 URL ...

如果确实有,我有哪些选择可以使身份验证正常工作?对于身份验证,我使用“angular-oauth2-oidc”和 PXCE 的授权代码流。

下面是在 Business Central 中运行的 Angular 的屏幕截图 在此处输入图像描述

0 投票
2 回答
134 浏览

c# - 如何从 Business Central 获取数据?

我创建了一个 C# 项目,我正在尝试连接到我的 Business Central 云沙箱。

在 Business Central 中,我使用新的代码单元进行了扩展,该代码单元具有我称之为“MHSTest”的功能。它只是返回一个文本。

在 Visual Studio 中,我创建了连接到 Business Central 中 SOAP URL 的服务引用。所以我可以在 Visual Studio 中看到我的函数名称“MHSTest”。

当我在 Visual Studio 中编写此代码时,出现错误,因为它尝试匿名连接:


如果我尝试以下操作,则会收到一条错误消息,指出“https”无效。它必须是“http”。


如何连接到 Business Central 并获取(或设置)数据?

应用程序配置:

0 投票
1 回答
627 浏览

api - Business Central API - 为销售发票行创建自定义 API 页面

我需要为 Dynamics 365 上的 Business Central 创建一个自定义 API 页面。我需要获取 API 方法的 AL 源

https://api.businesscentral.dynamics.com/v2.0/{{TenantID}}/{{Environment}}/api/beta/companies({{CompanyId}})//salesInvoices({{InvoiceId}})/salesInvoiceLines

有谁知道我在哪里可以找到上述 SalesInvoiceLines 方法的 AL 源?

我已将 AL 源从我的 Docker Windows 容器复制到目录 C:\bcSandbox\applications\APIV1\Source_Exclude_APIV1_.Source

我只能找到 SalesInvoiceLines 的 ListPart 的 AL 源(见下文),我可能错了,但不确定如何使用 ListPart 将新记录发布到 BC。

0 投票
1 回答
222 浏览

powershell - Navision:在容器环境中使用“New-NAVServerUser”Powershell 命令

我想使用 New-NAVServerUser 命令(请参阅:https ://docs.microsoft.com/en-us/powershell/module/microsoft.dynamics.nav.management/new-navserveruser?view=businesscentral-ps-16 )在容器中创建一个新的导航用户。容器是由 PowerShell 以这种方式构建的:

完成后,我尝试使用以下脚本创建新的 NavUser:

可以想象,运行容器的机器上的 Windows 帐户的用户名是“用户”。所以这不起作用并且会发生这个错误:

NewNavServerUser 命令得到的错误

这是因为 NEWCONTAINER/User 已经存在。现在我想在容器中创建一个新的 Windows 用户来使用 New-NAVServerUser 命令。有谁知道它是如何工作的?因此,总体目标是在页面“用户 9800”上的表“用户 2000000120”中获得一个新的 NavUser,并且用户应该基于 Windows 帐户。感谢您的回答!

0 投票
2 回答
512 浏览

dynamics-business-central - 如何在 AL 中发送获取请求

我目前有2个问题。我正在尝试将 GetRequest 发送到我的网络服务。这是通过 SendNotify (phonenumber: text; template: text) 方法完成的。当我通过操作调用该方法时,我收到以下错误消息:误用的标头名称。确保请求标头与 HttpRequestMessage 一起使用,响应标头与 HttpResponseMessage 一起使用,内容标头与 HttpContent 对象一起使用。When I debug, the program stops at the following line: ContentHeaders.Add('Authorization', 'Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI2dsadaXdrZUZTTWpNcnlBc2s1IiwiZXhwIjoxNTk1NDA3NDgzLCJpYXQiOjE1OTQzNjgyNTR9.1tAsf-x2FEvhDMyB4dsvgVKfZMLwAHcr_OLRA8RBeiY'); 该令牌当前是硬编码的,但应该从服务设置列表中删除。谁能告诉我我做错了什么?

我遇到的第二个问题是检查 CheckInputData (NotifyEntry: Record "Notify Entry") 方法中的数据。通知条目中有一个名为 Contact No. 的字段,其中包含有关客户的所有信息。我想在方法中询问电话号码和称呼。不幸的是,我不知道我是如何摆脱联系号码的。可以请求数据。有人能给点小费吗?

更新 1

0 投票
1 回答
325 浏览

azure-active-directory - Dynamics 365 Business Central 地形范围

我正在尝试创建一个将在 Azure AD 中注册应用程序的 terraform 脚本。

生成仅从 Microsoft Graph 范围读取的脚本时,我已经成功。但我无法弄清楚这些范围在 Business Central(云版本)中的等价物是什么。

对于 Microsoft Graph,我拥有以下权限:

  • 电子邮件
  • 离线访问
  • 打开ID
  • 轮廓
  • Financials.ReadWrite.All
  • 用户读

我在 terraform 中这样阅读它们:

这似乎工作正常。我只是在努力为Dynamics 365 Business Central找到类似的方法

我对这些感兴趣:

  • app_access
  • Financials.ReadWrite.All
  • user_impersonation

有人知道那个端点可能是什么样子吗?文档非常有限。

编辑:

这是有兴趣设置 Business Central 应用程序注册的任何人的最终脚本

需要注意的一件事是app_accessisRole和其余的 API 权限是Scope.

您可以使用以下命令调用上述 terraform: