Acción msdyn_ForecastApi
Como desarrollador, lea esta documentación de referencia para utilizar la acción personalizada msdyn_ForecastApi
para recuperar y actualizar datos de pronóstico. También puede utilizar esta acción para almacenar datos de pronóstico de vez en cuando, como una instantánea. Luego puede utilizar la instantánea para comparar los datos del pronóstico a lo largo del tiempo. Utilice el código de muestra de API de pronóstico para comenzar con la acción personalizada msdyn_ForecastApi
.
Requisitos de licencia y rol
Tipo de requisito | Debe tener |
---|---|
Licencia | Dynamics 365 Sales Premium o Dynamics 365 Sales Enterprise Más información: Precios de Dynamics 365 Sales |
Roles de seguridad | Personalizador del sistema Más información: Roles de seguridad predefinidos para Sales |
Parámetros
Nombre de parámetro | Obligatorio | Descripción |
---|---|---|
WebApiName |
Sí | Contiene el nombre de la API a ejecutar. |
RequestJson |
Sí | Contiene los parámetros y los argumentos para la llamada a la API. |
Lista de API
A continuación se muestra el conjunto de API que puede invocar utilizando la acción personalizada msdyn_ForecastApi
.
GET_ForecastConfigurations
Devuelve la lista de todas las configuraciones de previsión configuradas.
Ejemplo
POST [Organization URI]/api/data/v9.1/msdyn_ForecastApi/ HTTP/1.1
Content-Type: application/json
{
"WebApiName": "GET_ForecastConfigurations",
"RequestJson": "{}"
}
Parámetro | Type | Descripción |
---|---|---|
WebApiName |
String | Nombre de la API |
RequestJson |
String | Objeto JSON serializado |
Response
{
"@odata.context": "[Organization URI]/api/data/v9.1/$metadata#Microsoft.Dynamics.CRM.msdyn_ForecastApiResponse",
"response": [
{
"Columns": [
{
"ForecastConfigurationColumnId": "0ad51075-912b-4e00-a7a1-91170e437d27",
...
"ForecastConfigurationId": "27bd2c40-f868-ea11-a811-000d3a37bb2c",
...
},
{
"ForecastConfigurationColumnId": "c3ef8024-6517-4168-adc7-bb5b520554a0",
...
"ForecastConfigurationId": "27bd2c40-f868-ea11-a812-125d3a37bb2d",
...
}],
"PermissionRoles": null,
"AdditionalFilters": "<fetch version=\"1.0\" mapping=\"logical\"><entity name=\"opportunity\"><\/entity><\/fetch>",
"IsSnapshotScheduled": false,
"SnapshotSchedule": null,
"SnapshotTimeZone": null,
"PublishedDateTime": "0001-01-01T00:00:00",
"DefaultViewIdForUnderlyingRecords": "bf649add-6c30-ea11-a813-000d3a5475f7"
}
]
}
Valor de retorno
Lista de configuraciones de previsión
GET_ForecastConfigurationsByName
Devuelve todas las configuraciones de previsión que tienen el nombre proporcionado como parte de la carga útil de la solicitud.
Ejemplo
POST [Organization URI]/api/data/v9.1/msdyn_ForecastApi HTTP/1.1
Content-Type: application/json
{
"WebApiName": "GET_ForecastConfigurationsByName",
"RequestJson": "{\"Name\":\"api_test1\"}"
}
Parámetro | Type | Descripción |
---|---|---|
WebApiName |
String | Nombre de la API |
RequestJson |
Objeto JSON | Consta de Name : nombre de la configuración de previsión |
Response
{
"@odata.context": "[Organization URI]/api/data/v9.1/$metadata#Microsoft.Dynamics.CRM.msdyn_ForecastApiResponse",
"response": [
{
"Columns": [
{
"Name": "api_test1",
...
"ForecastConfigurationId": "bcf37937-487e-ea11-a811-000d3a37bb2c",
...
}
],
"PermissionRoles": null,
"AdditionalFilters": "<fetch version=\"1.0\" mapping=\"logical\"><entity name=\"opportunity\"><\/entity><\/fetch>",
"IsSnapshotScheduled": false,
"SnapshotSchedule": null,
"SnapshotTimeZone": null,
"PublishedDateTime": "0001-01-01T00:00:00",
"DefaultViewIdForUnderlyingRecords": "bf649add-6c30-ea11-a813-000d3a5475f7"
}
]
}
Valor de retorno
Lista de configuraciones de previsión
GET_ForecastPeriodsByForecastConfigurationId
Devuelve todos los períodos de pronóstico para el identificador de configuración de pronóstico activo, que se proporciona como parte de la carga útil de la solicitud.
Ejemplo
POST [Organization URI]/api/data/v9.1/msdyn_ForecastApi HTTP/1.1
Content-Type: application/json
{
"WebApiName": "GET_ForecastPeriodsByForecastConfigurationId",
"RequestJson": "{
\"ForecastConfigurationId\":\"04323a04-da7f-ea11-a811-000d3a37bb2c\"
}"
}
Parámetro | Type | Descripción |
---|---|---|
WebApiName |
String | Nombre de la API |
RequestJson |
Objeto JSON | Contiene ForecastConfigurationId : identificador de configuración de previsión |
Response
{
"@odata.context": "[Organization URI]/api/data/v9.1/$metadata#Microsoft.Dynamics.CRM.msdyn_ForecastApiResponse",
"response": [
{
"Id": "8b8cadd8-ede3-4b21-97cf-93efc0337089",
"ForecastConfigurationId": "04323a04-da7f-ea11-a811-000d3a37bb2c",
"RecurrenceIndex": 0,
"ValidFrom": "2020-04-01T00:00:00Z",
"ValidTo": "2020-06-30T23:59:59Z",
"Name": "FY2020 Q2",
"RecomputeStatus": 10,
"LastRecomputedOn": "2020-05-25T08:04:24.817Z",
"RecomputationStartTime": "2020-06-05T05:04:30.904Z",
"RecomputeStatusChangedOn": "2020-06-05T06:04:00.363Z",
"FailureInfo": "Microsoft.Azure.WebJobs.FunctionFailedException: The activity function 'CreateUpdateForecastHierarchy' failed: \"An item with the same key has already been added. Key: b1d30f13-ce56-ea11-a812-000d3a382f93\". See the function execution logs for additional details. ---> System.ArgumentException: An item with the same key has already been added. Key: b1d30f13-ce56-ea11-a812-000d3a382f93\r\n at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)\r\n at Microsoft.Dynamics.Forecasting.RecomputeEngine.HierarchyManager.<>c__DisplayClass23_0.<GetForecastInstancesByHierarchyEntityId>b__0(ForecastInstance forecastInstance) in C:\\src\\cloud_IDEs\\ide5\\Azure\\RecomputeEngine\\HierarchyManager\\HierarchyManager.cs:line 727\r\n at System.Collections.Generic.List`1.ForEach(Action`1 action)\r\n at Microsoft.Dynamics.Forecasting.RecomputeEngine.HierarchyManager.GetForecastInstancesByHierarchyEntityId(ForecastConfiguration forecastConfiguration, Guid forecastRecurrenceId) in C:\\src\\cloud_IDEs\\ide5\\Azure\\RecomputeEngine\\HierarchyManager\\HierarchyManager.cs:line 727\r\n at Microsoft.Dynamics.Forecasting.RecomputeEngine.HierarchyManager.CreateOrUpdateForecastDataWithLatestHierarchy(ForecastConfiguration forecastConfiguration, Guid forecastRecurrenceId, Dictionary`2 latestHierarchyEntityList) in C:\\src\\cloud_IDEs\\ide5\\Azure\\RecomputeEngine\\HierarchyManager\\HierarchyManager.cs:line 602\r\n at Microsoft.Dynamics.Forecasting.RecomputeEngine.HierarchyManager.<>c__DisplayClass16_0.<CreateOrUpdateForecastHierarchy>b__0() in C:\\src\\cloud_IDEs\\ide5\\Azure\\RecomputeEngine\\HierarchyManager\\HierarchyManager.cs:line 283\r\n at System.Threading.Tasks.Task.InnerInvoke()\r\n at System.Threading.Tasks.Task.<>c.<.cctor>b__275_1(Object obj)\r\n at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)\r\n at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at Microsoft.Dynamics.Forecasting.RecomputeEngine.HierarchyManager.CreateOrUpdateForecastHierarchy(ForecastConfiguration forecastConfiguration, Guid forecastRecurrenceId, Dictionary`2 latestHierarchyEntityList) in C:\\src\\cloud_IDEs\\ide5\\Azure\\RecomputeEngine\\HierarchyManager\\HierarchyManager.cs:line 255\r\n at Microsoft.Dynamics.Forecasting.RecomputeEngine.HierarchyManager.CreateOrUpdateForecastHierarchy(Guid orgId, Guid forecastConfigurationId, Guid forecastRecurrenceId, Dictionary`2 latestHierarchyEntityList) in C:\\src\\cloud_IDEs\\ide5\\Azure\\RecomputeEngine\\HierarchyManager\\HierarchyManager.cs:line 167\r\n at Microsoft.Dynamics.Forecasting.AzureFunctions.CreateUpdateForecastHierarchy.Run(CreateUpdateForecastHierarchyInput input) in C:\\src\\cloud_IDEs\\ide5\\Azure\\AzureFunctions\\Recompute\\ActivityFunctions\\CreateUpdateForecastHierarchy.cs:line 43\r\n at Microsoft.Azure.WebJobs.Host.Executors.VoidTaskMethodInvoker`2.InvokeAsync(TReflected instance, Object[] arguments) in C:\\projects\\azure-webjobs-sdk-rqm4t\\src\\Microsoft.Azure.WebJobs.Host\\Executors\\VoidTaskMethodInvoker.cs:line 20\r\n at Microsoft.Azure.WebJobs.Host.Executors.FunctionInvoker`2.InvokeAsync(Object instance, Object[] arguments) in C:\\projects\\azure-webjobs-sdk-rqm4t\\src\\Microsoft.Azure.WebJobs.Host\\Executors\\FunctionInvoker.cs:line 52\r\n at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.InvokeAsync(IFunctionInvoker invoker, ParameterHelper parameterHelper, CancellationTokenSource timeoutTokenSource, CancellationTokenSource functionCancellationTokenSource, Boolean throwOnTimeout, TimeSpan timerInterval, IFunctionInstance instance) in C:\\projects\\azure-webjobs-sdk-rqm4t\\src\\Microsoft.Azure.WebJobs.Host\\Executors\\FunctionExecutor.cs:line 585\r\n at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.ExecuteWithWatchersAsync(IFunctionInstanceEx instance, ParameterHelper parameterHelper, ILogger logger, CancellationTokenSource functionCancellationTokenSource) in C:\\projects\\azure-webjobs-sdk-rqm4t\\src\\Microsoft.Azure.WebJobs.Host\\Executors\\FunctionExecutor.cs:line 532\r\n at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.ExecuteWithLoggingAsync(IFunctionInstanceEx instance, ParameterHelper parameterHelper, IFunctionOutputDefinition outputDefinition, ILogger logger, CancellationTokenSource functionCancellationTokenSource) in C:\\projects\\azure-webjobs-sdk-rqm4t\\src\\Microsoft.Azure.WebJobs.Host\\Executors\\FunctionExecutor.cs:line 468\r\n at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.ExecuteWithLoggingAsync(IFunctionInstanceEx instance, FunctionStartedMessage message, FunctionInstanceLogEntry instanceLogEntry, ParameterHelper parameterHelper, ILogger logger, CancellationToken cancellationToken) in C:\\projects\\azure-webjobs-sdk-rqm4t\\src\\Microsoft.Azure.WebJobs.Host\\Executors\\FunctionExecutor.cs:line 278\r\n --- End of inner exception stack trace ---\r\n at Microsoft.Azure.WebJobs.DurableOrchestrationContext.CallDurableTaskFunctionAsync[TResult](String functionName, FunctionType functionType, String instanceId, RetryOptions retryOptions, Object input) in E:\\functions\\azure-functions-durable-extension\\src\\WebJobs.Extensions.DurableTask\\DurableOrchestrationContext.cs:line 498\r\n at Microsoft.Dynamics.Forecasting.AzureFunctions.OrchestratorFunctionBase.ExecuteActivityAsync(DurableOrchestrationContext context, String functionName, Object input, Dictionary`2 telemetryProps) in C:\\src\\cloud_IDEs\\ide5\\Azure\\AzureFunctions\\OrchestratorFunctionBase.cs:line 252\r\n at Microsoft.Dynamics.Forecasting.AzureFunctions.RecomputeOrchestrator.ExecuteRecomputeOrchestration(DurableOrchestrationContext context, RecomputeOrchestratorInput recomputeInput, String correlationId, Dictionary`2 telemetryProps) in C:\\src\\cloud_IDEs\\ide5\\Azure\\AzureFunctions\\Recompute\\RecomputeOrchestrator.cs:line 169",
"RecurrenceState": 0,
"UpdatedAttribteList": null
}
]
}
Valor de retorno
Lista de periodos de previsión.
GET_ForecastInstances
Devuelve la lista de instancias de previsión que son un registro de entidad de una sola fila.
Nota
Los períodos de previsión pueden tener muchas instancias de previsión. Mucho más de lo que le gustaría obtener en una sola solicitud. Los puntos finales de la API proporcionan de forma predeterminada una cantidad limitada de elementos por solicitud.
Nota: las consultas grandes pueden perjudicar el rendimiento, por lo que la cantidad de resultados por página tiene un límite de 4000 registros. Si desea recuperar más de 4000 registros, por ejemplo, para crear una lista del lado del cliente de todas las instancias de pronóstico disponibles, puede realizar varias solicitudes de API y combinar los resultados dentro de su aplicación.
Ejemplo
POST [Organization URI]/api/data/v9.1/msdyn_ForecastApi HTTP/1.1
Content-Type: application/json
{
"WebApiName": "GET_ForecastInstances",
"RequestJson": "{
\"ForecastPeriodId\":\"8b8cadd8-ede3-4b21-97cf-93efc0337089\",
\"ForecastConfigurationId\":\"04323a04-da7f-ea11-a811-000d3a37bb2c\",
\"SortingAttribute\":\"HierarchyEntityRecord.RecordId\",
\"SortingOrder\":\"DSC\",
\"PageSize\":1,
\"PageNo\":1
}"
}
Parámetro | Type | Descripción |
---|---|---|
WebApiName |
String | Nombre de la API |
RequestJson |
Objeto JSON | Consiste enForecastPeriodId : Identificador único del periodo de previsiónForecastConfigurationId : Identificador único de la configuración de previsiónSortingAttribute : el atributo basado en el que desea realizar la clasificación en la paginaciónSortingOrder : ASC para orden ascendente DSC para orden descendentePageSize : número de registros que desea recuperar en una sola páginaPageNo : para qué registros de página desea buscar. |
A continuación se da un JSON de ejemplo para el objeto RequestJson
.
{
"WebApiName": "GET_ForecastInstances",
"RequestJson": "{
\"ForecastPeriodId\":\"{{frid}}\",
\"ForecastConfigurationId\":\"{{fcid}}\",
\"SortingAttribute\":\"HierarchyEntityRecord.RecordId\",
\"SortingOrder\":\"DSC\",
\"PageSize\":1,
\"PageNo\":1
}"
}
Response
{
"@odata.context": "[Organization URI]/api/data/v9.1/$metadata#Microsoft.Dynamics.CRM.msdyn_ForecastApiResponse",
"response": {
"ForecastInstances": [
"ForecastInstanceId": "95d2305a-a0be-4b34-84ac-b10e67b0771a",
"ForecastConfigurationId": "04323a04-da7f-ea11-a811-000d3a37bb2c",
...],
"HasMorePages": false,
"Code": 200,
"Message": "OK"
}
}
Valor de retorno
Lista de periodos de previsión.
Update_SimpleColumnByEntityId
Actualiza los valores específicos de columna usando los valores de los parámetros pasados.
Nota
Una gran cantidad de solicitudes de actualización en una sola llamada a la API puede afectar el rendimiento, por lo que las actualizaciones por solicitud tienen un límite de 50.
Ejemplo
POST [Organization URI]/api/data/v9.1/msdyn_ForecastApi HTTP/1.1
content-type: application/json
{
"WebApiName": "Update_ SimpleColumnByEntityId",
"RequestJson": "
{
\"ForecastConfigurationId\":\"0461fb6b-8d85-ea11-a811-000d3a37bb2c\",
\"ForecastRecurranceId\":\"f8b1122c-b913-4e88-9727-368b6134be3e\",
\"SimpleColumnUpdateRequests\":[{
\" HierarchyEntityRecordId\":\"d8680b00-fd31-46c2-8136-7c4df19cf2a8\",
\"ForecastConfigurationColumnId\":\"65ec7bd1-2de6-49fa-b259-ba74bc721c78\",
\"ForecastConfigurationColumnValue\":0.0,
\"IsRolledUpColumnUpdate\":false},{
\" HierarchyEntityRecordId\":\"11141300-131b-493a-9857-22bd8689b775\",
\"ForecastConfigurationColumnId\":\"65ec7bd1-2de6-49fa-b259-ba74bc721c78\",
\"ForecastConfigurationColumnValue\":0.0,
\"IsRolledUpColumnUpdate\":false}]}"
}
Parámetro | Name | Descripción |
---|---|---|
WebApiName | String | Nombre de la API |
ForecastConfigurationId | GUID | Identificador de configuración de previsión |
ForecastRecurranceId | GUID | Id. de recurrencia de previsión o Id. de período de previsión Una lista de SimpleColumnUpdateRequests es una matriz |
HierarchyEntityRecordId | GUID | EntityRecordId |
ForecastConfigurationColumnId | GUID | Identificador de configuración de columna de previsión |
ForecastConfigurationColumnValue | Tipo de datos de ForecastConfigurationColumn | Valor que debe actualizarse para |
IsRolledUpColumnUpdate (opcional) | Booleana | True si el valor se actualiza para la columna acumulada, False si el valor se actualiza para la columna agregada |
Response
{
"@odata.context": "[Organization URI]/api/data/v9.1/$metadata#Microsoft.Dynamics.CRM.msdyn_ForecastApiResponse",
"response": [
{
"Message": "Update Successful",
"StatusCode": 0,
"HierarchyEntityRecordId": "d8680b00-fd31-46c2-8136-7c4df19cf2a8",
"ForecastConfigurationColumnId": "65ec7bd1-2de6-49fa-b259-ba74bc721c78"
},
{
"Message": "Update Successful",
"StatusCode": 0,
"HierarchyEntityRecordId": "11141300-131b-493a-9857-22bd8689b775",
"ForecastConfigurationColumnId": "65ec7bd1-2de6-49fa-b259-ba74bc721c78"
}
]
}
Valor de retorno
Una lista de registros UpdateSimpleColumnByEntityResponse
que consta de HierarchyEntityRecordId
, ForecastConfigurationColumnId
. Message
, StatusCode
.
Update_SimpleColumnByFIId
Actualiza el valor de columna específico estableciendo los valores de los parámetros pasados.
Nota
Una gran cantidad de solicitudes de actualización en una sola llamada a la API puede afectar el rendimiento, por lo que las actualizaciones por solicitud tienen un límite de 50.
Ejemplo
POST [Organization URI]/api/data/v9.1/msdyn_ForecastApi HTTP/1.1
content-type: application/json
{
"WebApiName": "Update_SimpleColumnByFIId",
"RequestJson": "
{
\"ForecastConfigurationId\":\"0461fb6b-8d85-ea11-a811-000d3a37bb2c\",
\"ForecastRecurranceId\":\"f8b1122c-b913-4e88-9727-368b6134be3e\",
\"SimpleColumnUpdateRequests\":[
{
\"ForecastInstanceId\":\"d8680b00-fd31-46c2-8136-7c4df19cf2a8\",
\"ForecastConfigurationColumnId\":\"65ec7bd1-2de6-49fa-b259-ba74bc721c78\",
\"ForecastConfigurationColumnValue\":0.0,
\"IsRolledUpColumnUpdate\":false},
{
\"ForecastInstanceId\":\"11141300-131b-493a-9857-22bd8689b775\",
\"ForecastConfigurationColumnId\":\"65ec7bd1-2de6-49fa-b259-ba74bc721c78\",
\"ForecastConfigurationColumnValue\":0.0,
\"IsRolledUpColumnUpdate\":false}]}"
}
Parámetro | Type | Descripción |
---|---|---|
WebApiName | String | Nombre de la API |
ForecastConfigurationId | GUID | Identificador de configuración de previsión |
ForecastRecurranceId | GUID | Id. de recurrencia de previsión o Id. de período de previsión |
SimpleColumnUpdateRequests | Matriz | Incluye lo siguiente |
ForecastInstanceId | GUID | Identificador de instancia de previsión |
ForecastConfigurationColumnId | GUID | Identificador de configuración de columna de previsión |
ForecastConfigurationColumnValue | Tipo de datos de ForecastConfigurationColumn | Valor que debe actualizarse para |
IsRolledUpColumnUpdate (opcional) | Booleana | True si el valor se actualiza para la columna acumulada, false si el valor se actualiza para la columna agregada |
Response
{
"@odata.context": "[Organization URI]/api/data/v9.1/$metadata#Microsoft.Dynamics.CRM.msdyn_ForecastApiResponse",
"response": [
{
"Message": "Update Successful",
"StatusCode": 0,
"ForecastInstanceId": "d8680b00-fd31-46c2-8136-7c4df19cf2a8",
"ForecastConfigurationColumnId": "65ec7bd1-2de6-49fa-b259-ba74bc721c78"
},
{
"Message": "Update Successful",
"StatusCode": 0,
"ForecastInstanceId": "11141300-131b-493a-9857-22bd8689b775",
"ForecastConfigurationColumnId": "65ec7bd1-2de6-49fa-b259-ba74bc721c78"
}
]
}
Valor de retorno
Una lista de registros UpdateSimpleColumnByEntityResponse
que consta de ForecastInstanceId
, ForecastConfigurationColumnId
. Message
, StatusCode
.
Consulte también
Comentarios
https://aka.ms/ContentUserFeedback.
Proximamente: Ao longo de 2024, retiraremos gradualmente GitHub Issues como mecanismo de comentarios sobre o contido e substituirémolo por un novo sistema de comentarios. Para obter máis información, consulte:Enviar e ver os comentarios