|
![]() |
#1 |
Заноза в заднице
|
Автонумерация в MS CRM 3.0
...По просьбе уважаемого коллеги ShurikEv представляю разобранный код из книги Снайдера и Стеггера.
Книга относит данную возможность в раздел "SDK серверной части". Цитата: "...Данный пример кода демонстрирует принцип использования поля SQL ServerIdentity, реализуюий схему нумерации сущности Lead(Интерес) * (см. пояснения ниже под звездочкой) с использованием предварительного вызова (callout)." Уже о многом говорит... * - в книге нумерация применяется в отношении сущности Lead, но в данном примере я выложу код для сущностей Account и Contact, так как у меня была практическая задача по нумерации именно этих сущностей при создании. Перед началом кодинга, мной был создан новый атрибут сущности Account, а затем такой же и для Contact - cust_crmid, типа integer (в книге всё немного иначе). Далее следуем инструкциям книги (цитата): Создание проекта конструкции вызова 1. Создайте новый проект C# Class Library с именем ..., (который у меня получил название ExtentCRM.Callout.) 2. Обязательно проверьте наличие ссылки System.Web.Services и в случае, если она отстуствует - добавьте. 3. Добавьте веб-ссылку на веб-службу CrmService под именем: CrmSdk (чувствительно к регистру). 4. Добавьте ссылку на Microsoft.Crm.Platform.Callout.Base.dll (ищите на установочном диске). 5. Добавьте новый файл class с именем ... (книжные имена не называю, чтобы не сбивать с толку, но коль уж цитирую книгу - то вынужден упоминать так, как написано там.) (Однако же, в пункте 5 идет речь о создании одного класса, в котором всё связано только с сущностью Lead. В моем случае речь идет о двух сущностях - это два разных класса, плюс, общий для обоих класс с функцией вычисления, смысл которой будет ясен позднее. Итого имеем три класса: AccountCallout.cs, ContactCallout.cs, NextClientNumber.cs. Код каждого из классов в соответствующем файле-вложении к данному посту)." 6. После компиляции конструкции необходимо обновить файл Callout.config.xml. Код файла должен включить следующие строки: Код: <?xml version="1.0" encoding="utf-8" ?> <callout.config version="2.0"> <callout entity="contact" event="PreCreate"> <subscription assembly="ExtentCRM.Callout.dll" class="ExtentCRM.Callout.ContactCallout"></subscription> </callout> <callout entity="account" event="PreCreate"> <subscription assembly="ExtentCRM.Callout.dll" class="ExtentCRM.Callout.AccountCallout"></subscription> </callout> </callout.config> Естественно, новый проект, как указано в пункте 1 книги создавать необязательно, если в вашем распоряжении уже имеется проект Class Library, который выполняет некие операции предварительного вызова (callout).
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
|
|