a33ik, спасибо, исправил, но теперь он пишет, что это значение Null:
его надо отделить в другой плагин на post-operation? при выполнении плагина Заказ создается, но после этого CRM говорит, что salesorderdetail думает, что salesorderid из этой сущности Null
X++:
Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: Attribute: salesorderid cannot be set to NULLDetail:
<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/xrm/2011/Contracts">
<ErrorCode>-2147220989</ErrorCode>
<ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
<Message>Attribute: salesorderid cannot be set to NULL</Message>
<Timestamp>2012-03-28T05:19:56.3402878Z</Timestamp>
<InnerFault i:nil="true" />
<TraceText>
[ClassLibrary7: CreateSalesOrder.Order]
[64e3abde-0978-e111-af6d-000c29c05d09: CreateSalesOrder.Order: Update of new_zayavka]
Order: System.ServiceModel.FaultException`1[Microsoft.Xrm.Sdk.OrganizationServiceFault]: Attribute: salesorderid cannot be set to NULL ( Microsoft.Xrm.Sdk.OrganizationServiceFault).
</TraceText>
</OrganizationServiceFault>
X++:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Client;
using Microsoft.Xrm.Sdk.Query;
using System.ServiceModel;
using System.ServiceModel.Description;
namespace CreateSalesOrder
{
public class Order : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
ITracingService tracingService =
(ITracingService)serviceProvider.GetService(typeof(ITracingService));
try
{
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
Entity record = (Entity)context.InputParameters["Target"];
if (record.LogicalName == "new_zayavka")
{
record["new_inn"] = "sdf";
record["new_name_nai"] = record["new_inn"];
Entity pricelevel = new Entity("pricelevel");
Entity currency = new Entity("transactioncurrency");
Entity account = new Entity("account");
bool vispricelocked = false;
Entity salesorder = new Entity("salesorder");
salesorder["name"] = "TEST";
salesorder["pricelevelid"] = new EntityReference(pricelevel.LogicalName, new Guid("156ABFBD-3704-DF11-9297-005056C00008"));
salesorder["transactioncurrencyid"] = new EntityReference(currency.LogicalName, new Guid("9E79B15D-1937-E111-A8B6-08002739EA86"));
salesorder["customerid"] = new EntityReference(account.LogicalName, new Guid("46053320-E952-E111-81DB-000C29C05D09"));
salesorder["ispricelocked"] = vispricelocked;
// Obtain the organization service reference.
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
service.Create(salesorder);
Guid id_1 = new Guid(salesorder["salesorderid"].ToString());
Entity salesorderdetail = new Entity("salesorderdetail");
salesorderdetail["new_orda"] = new EntityReference("salesorder", id_1);
salesorderdetail["salesorderid"] = salesorder["salesorderid"];
Entity product = new Entity("product");
Entity uom = new Entity("uom");
salesorderdetail["productid"] = new EntityReference(product.LogicalName, new Guid("AC341411-4347-E111-9250-000C29C05D09"));
salesorderdetail["uomid"] = new EntityReference(uom.LogicalName, new Guid("5D15C954-A08E-DB11-934C-000E0C6AB271"));
IOrganizationServiceFactory serviceFactory1 = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service1 = serviceFactory1.CreateOrganizationService(context.UserId);
service1.Create(salesorderdetail);
}
}
catch (Exception ex)
{
tracingService.Trace("Order: {0}", ex.ToString());
throw;
}
}
}
}