Разработка
09
Авг
0

Опции и Статусы менее 100 000 000

У наборов параметров и статусов из рода пиклистовых 🙂 есть одна особенность – для них нельзя задать новую опцию со значением менее 100 000 000. Скорее всего это сделано чтобы оставить резерв диапазона значений для стандартных пиклистов. Но иногда очень хочется продолжить стандартную красивую нумерацию: 1, 2, 3, и т.д. К счастью MS запретила указывать значение опции только через интерфейс – задать числовое значение через код очень даже можно.

Например, с помощью консольного приложения:

using System;
using System.ServiceModel.Description;

using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Client;
using Microsoft.Xrm.Sdk.Messages;

namespace InsertOptionSetValue
{
    class Program
    {
        static void Main(string[] args)
        {
            // Подключаемся к CRM
            ClientCredentials credentials = new ClientCredentials();
            credentials.Windows.ClientCredential = new System.Net.NetworkCredential("Administrator", "1qaz@WSX", "D2012");
            Uri uri = new Uri("http://crm2015/superfirma/XRMServices/2011/Organization.svc");
            OrganizationServiceProxy proxy = new OrganizationServiceProxy(uri, null, credentials, null);
            proxy.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior());
            IOrganizationService service = (IOrganizationService)proxy;

            // Запрос на добавление Статуса
            InsertStatusValueRequest insertStatusValueRequest = new InsertStatusValueRequest
            {
                AttributeLogicalName = "statuscode",
                EntityLogicalName = "account",
                Label = new Label("Статус10", 1049),
                StateCode = 1, // Код Состояния
                Value = 10
            };

            // Запрос на добавление опции пиклиста
            InsertOptionValueRequest InsertOptionValueRequest = new InsertOptionValueRequest
            {
                AttributeLogicalName = "new_testpick",
                EntityLogicalName = "account", // Для глобального пиклиста объект не указывается
                Label = new Label("Опция10", 1049),
                Value = 10
            };

            // Выполняе запросы на добаление 
            service.Execute(insertStatusValueRequest);
            service.Execute(InsertOptionValueRequest);
        }
    }
}

Обратите внимание что для Статусов и наборов опций используются два разных месседжа.


Комментарии (0)

*

code