Я пытаюсь создать объект уровня цен в Dynamics CRM через API.
При создании объекта уровня цен (прайс-листа) я также хочу создать уровни цен продукта (позиции прайс-листа) с так называемой глубокой вставкой, но пока безуспешно.
Я следую этому руководству.
Это ссылка на тип сущности уровня цен.
Для ценовых уровней товара существует ценное свойство навигации, называемое price_level_product_price_levels
Если я буду следовать учебнику, мне нужно составить следующий запрос
[POST] /pricelevels
Заголовки авторизации установлены правильно, а тело контента:
{
"name": "MA - 2019W24",
"paymentmethodcode": 1,
"price_level_product_price_levels": [{
"quantitysellingcode": 1,
"amount": 89,
"amount_base": 89,
"pricingmethodcode": 1,
"productid@odata.bind": "/products(ef43bf1f-e605-e911-a818-000d3a2cd4e8)",
"uomid@odata.bind": "/uoms(942b3c4c-e405-e911-a818-000d3a2cd4e8)"
}
]
}
Сообщение об ошибке в ответе:
уровень цен с Id = c0184273-ed8c-e911-a83b-000d3a2dd73b не
Существовать
UUID меняется с каждым запросом. Трассировка стека, включенная в ответ:
at Microsoft.Crm.Extensibility.OrganizationSdkServiceInternal.CreateInternal(Entity entity, InvocationContext invocationContext, CallerOriginToken callerOriginToken, WebServiceType serviceType, Boolean checkAdminMode, Dictionary`2 optionalParameters)
at Microsoft.Crm.Extensibility.OData.CrmODataExecutionContext.CreateOrganizationResponse(Entity entity)
at Microsoft.Crm.Extensibility.OData.CrmODataServiceDataProvider.CreateEdmEntity(CrmODataExecutionContext context, String edmEntityName, EdmEntityObject entityObject, Boolean isUpsert)
at Microsoft.Crm.Extensibility.OData.EntityController.PostEntitySetImplementation(String& entitySetName, EdmEntityObject entityObject)
at Microsoft.PowerApps.CoreFramework.ActivityLoggerExtensions.Execute[TResult](ILogger logger, EventId eventId, ActivityType activityType, Func`1 func, IEnumerable`1 additionalCustomProperties)
at Microsoft.Xrm.Telemetry.XrmTelemetryExtensions.Execute[TResult](ILogger logger, XrmTelemetryActivityType activityType, Func`1 func)
at lambda_method(Closure , Object , Object[] )
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<GetExecutor>b__9(Object instance, Object[] methodParameters)
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext()\
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()\
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()
Я проверил свойства навигации для объекта счета и уровня цен. В учетной записи указаны связанные свойства, а price_level_product_price_levels является ссылочным свойством.
Если я попытаюсь выполнить учебный запрос по первой ссылке, он сработает.
Массовое создание уровней цен продукта не поддерживается в Dynamics CRM.
Я уже пробовал пакетные действия, но потому что я с Java и использую google-http-api. Мне довольно сложно выполнить сложный и конкретный контракт на пакетное действие. Также информация о таком решении действительно ограничена.
Моя цель - создать как минимум все уровни цен на продукты в рамках одного запроса. Потому что в противном случае мне может потребоваться выполнить 20 запросов, которые создают уровни цен на продукты в crm.