- Я хочу создать динамические атрибуты в таблице в Power Apps. Использование приведенного ниже фрагмента кода для создания атрибута в пользовательской таблице. Атрибут создан успешно, но появляется одно диалоговое окно с ошибкой: Как удалить это диалоговое окно с ошибкой?
Использование приведенного ниже фрагмента кода (C#) –
Код: Выделить всё
using System;
using System.ServiceModel;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Messages;
using Microsoft.Xrm.Sdk.Metadata;
using Microsoft.Xrm.Sdk.PluginTelemetry;
using Microsoft.Xrm.Sdk.Query;
namespace NewPluginAddAttribute002
{
public class AddDynamicAttributePlugin : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
// Obtain the tracing service
ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
// Obtain the execution context from the service provider.
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
// Obtain the organization service reference which you will need for web service calls.
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
tracingService.Trace("AddDynamicAttributePlugin: Plugin execution started.");
try
{
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
Entity entity = (Entity)context.InputParameters["Target"];
string entityLogicalName = entity.LogicalName;
tracingService.Trace("AddDynamicAttributePlugin: Entity logical name is {0}", entityLogicalName);
// Check if the target entity is new_demotable001
if (entityLogicalName != "new_demotable001")
{
tracingService.Trace("AddDynamicAttributePlugin: Target entity is not new_demotable001.");
return;
}
tracingService.Trace("AddDynamicAttributePlugin: Target entity is new_demotable001. Proceeding to add attribute.");
// Define the new attribute
StringAttributeMetadata newAttribute = new StringAttributeMetadata
{
SchemaName = "new_dynamicAttribute",
DisplayName = new Label("Dynamic Attribute", 1033),
RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None),
MaxLength = 100,
Format = StringFormat.Text,
};
// Create the request to add the attribute
CreateAttributeRequest createAttributeRequest = new CreateAttributeRequest
{
EntityName = "new_demotable001",
Attribute = newAttribute
};
// Execute the request outside the plugin transaction
ExecuteMultipleRequest executeMultipleRequest = new ExecuteMultipleRequest()
{
Settings = new ExecuteMultipleSettings()
{
ContinueOnError = false,
ReturnResponses = true
},
Requests = new OrganizationRequestCollection()
};
executeMultipleRequest.Requests.Add(createAttributeRequest);
IOrganizationService asyncService = serviceFactory.CreateOrganizationService(null);
ExecuteMultipleResponse response = (ExecuteMultipleResponse)asyncService.Execute(executeMultipleRequest);
if (response.IsFaulted)
{
foreach (var responseItem in response.Responses)
{
if (responseItem.Fault != null)
{
tracingService.Trace("AddDynamicAttributePlugin: Error in response - {0}", responseItem.Fault.Message);
}
}
throw new InvalidPluginExecutionException("Error occurred while creating the attribute.");
}
tracingService.Trace("AddDynamicAttributePlugin: Attribute created successfully.");
}
}
catch (FaultException ex)
{
tracingService.Trace("AddDynamicAttributePlugin: {0}", ex.ToString());
throw;
}
catch (Exception ex)
{
tracingService.Trace("AddDynamicAttributePlugin: {0}", ex.ToString());
throw;
}
finally
{
tracingService.Trace("AddDynamicAttributePlugin: Plugin execution ended.");
}
}
}
}
Спасибо и с уважением
Подробнее здесь: https://stackoverflow.com/questions/787 ... ing-plugin