Compartilhar via


Criar ordens de trabalho usando a API Web do Dataverse

Este artigo fornece exemplos de criação de ordens de trabalho em Dynamics 365 Field Service usando a Dataverse Web API. Os exemplos usam a entidade msdyn_workorder .

Pré-requisitos

  • Um ambiente Dynamics 365 Field Service com o endpoint da Web API (por exemplo, https://yourorg.api.crm.dynamics.com/api/data/v9.2/).
  • Uma solicitação autenticada usando o OAuth 2.0. Saiba mais em Autenticar no Dataverse com a API Web.
  • Registros existentes para os campos de pesquisa necessários:
    • Conta de Serviço (account entidade)
    • Tipo de Ordem de Trabalho (msdyn_workordertype entidade)
    • Lista de Preços (pricelevel entidade)

Importante

Os GUIDs nos exemplos a seguir são fictícios. Substitua-as pelas IDs de registro reais de seu ambiente de Dynamics 365.

Criar uma única ordem de trabalho

Envie uma POST solicitação para a msdyn_workorders entidade definida para criar uma ordem de trabalho. Saiba mais em Criar uma linha de tabela usando a API Web.

solicitação HTTP

POST [Organization URL]/api/data/v9.2/msdyn_workorders
Accept: application/json
Content-Type: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Authorization: Bearer <access_token>

{
  "msdyn_serviceaccount@odata.bind": "/accounts(e1a2b3c4-5678-9abc-def0-1234567890ab)",
  "msdyn_workordertype@odata.bind": "/msdyn_workordertypes(a1b2c3d4-5678-9abc-def0-1234567890cd)",
  "msdyn_pricelist@odata.bind": "/pricelevels(f1e2d3c4-5678-9abc-def0-1234567890ef)",
  "msdyn_systemstatus": 690970000,
  "msdyn_taxable": false,
  "msdyn_instructions": "Install new equipment"
}

Resposta HTTP

Uma solicitação bem-sucedida retorna HTTP 204 No Content com um OData-EntityId cabeçalho que contém a URL do novo registro de ordem de trabalho.

Criar várias ordens de trabalho

Para criar vários pedidos de trabalho em uma única solicitação, use a ação CreateMultiple . Isso é mais performante do que solicitações POST individuais ou operações em lote. Saiba mais em Uso de mensagens de operações em massa.

solicitação HTTP

POST [Organization URL]/api/data/v9.2/msdyn_workorders/Microsoft.Dynamics.CRM.CreateMultiple
Accept: application/json
Content-Type: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Authorization: Bearer <access_token>

{
  "Targets": [
    {
      "@odata.type": "Microsoft.Dynamics.CRM.msdyn_workorder",
      "msdyn_serviceaccount@odata.bind": "/accounts(e1a2b3c4-5678-9abc-def0-1234567890ab)",
      "msdyn_workordertype@odata.bind": "/msdyn_workordertypes(a1b2c3d4-5678-9abc-def0-1234567890cd)",
      "msdyn_pricelist@odata.bind": "/pricelevels(f1e2d3c4-5678-9abc-def0-1234567890ef)",
      "msdyn_systemstatus": 690970000,
      "msdyn_taxable": false,
      "msdyn_instructions": "Work order 1 - Install new equipment"
    },
    {
      "@odata.type": "Microsoft.Dynamics.CRM.msdyn_workorder",
      "msdyn_serviceaccount@odata.bind": "/accounts(e1a2b3c4-5678-9abc-def0-1234567890ab)",
      "msdyn_workordertype@odata.bind": "/msdyn_workordertypes(a1b2c3d4-5678-9abc-def0-1234567890cd)",
      "msdyn_pricelist@odata.bind": "/pricelevels(f1e2d3c4-5678-9abc-def0-1234567890ef)",
      "msdyn_systemstatus": 690970000,
      "msdyn_taxable": false,
      "msdyn_instructions": "Work order 2 - Preventive maintenance check"
    }
  ]
}

Resposta HTTP

Uma solicitação bem-sucedida retorna HTTP 200 OK com as IDs dos registros criados.

{
  "@odata.context": "[Organization URL]/api/data/v9.2/$metadata#Microsoft.Dynamics.CRM.CreateMultipleResponse",
  "Ids": [
    "c1d2e3f4-5678-9abc-def0-111111111111",
    "c1d2e3f4-5678-9abc-def0-222222222222"
  ]
}

Recuperar uma ordem de trabalho

Depois de criar uma ordem de trabalho, recupere-a por meio de uma solicitação GET.

GET [Organization URL]/api/data/v9.2/msdyn_workorders(<work-order-id>)?$select=msdyn_name,msdyn_systemstatus,msdyn_address1,msdyn_city
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Authorization: Bearer <access_token>

Resposta

{
  "@odata.context": "[Organization URL]/api/data/v9.2/$metadata#msdyn_workorders(msdyn_name,msdyn_systemstatus,msdyn_address1,msdyn_city)/$entity",
  "@odata.etag": "W/\"7998533\"",
  "msdyn_workorderid": "d4e5f6a7-1234-5678-9abc-def012345678",
  "msdyn_name": "00051",
  "msdyn_systemstatus": 690970000,
  "msdyn_address1": "205 108th Ave NE",
  "msdyn_city": "Bellevue"
}

Observação

O campo msdyn_name contém o número de ordem de trabalho atribuído automaticamente, gerado pelo Field Service. Os valores msdyn_address1 e msdyn_city são preenchidos a partir do registro da conta de serviço.

Tratamento de erros

Respostas de erro comuns ao criar ordens de trabalho:

Código de Status Reason Resolução
400 Bad Request Campos necessários ausentes ou valores de campo inválidos. Verifique se todos os campos necessários (msdyn_serviceaccount, , msdyn_workordertype, msdyn_pricelist, msdyn_systemstatus) msdyn_taxableestão incluídos com valores válidos.
400 Bad Request (código 0x80060888) O valor do campo de pesquisa é um GUID nu sem um caminho de conjunto de entidades. Use o formato de referência completo da entidade OData, por exemplo /accounts(guid) , em vez de apenas o GUID.
401 Unauthorized Token de acesso ausente ou expirado. Atualize ou obtenha um novo token de acesso OAuth 2.0.
403 Forbidden Privilégios insuficientes. Verifique se o usuário tem a função de segurança Serviço de Campo – Dispatcher ou Serviço de Campo – Administrador.
404 Not Found Um registro de pesquisa referenciado não existe. Verifique se os GUIDs para a Conta de Serviço, o Tipo de Ordem de Trabalho e a Lista de Preços fazem referência aos registros existentes.