Показать сообщение отдельно
Старый 18.03.2008, 15:18   #4  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 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>
Вот вроде и всё. Если всё сделано правильно, то после сохранения нового контакта или новой организации можно заметить присвоение значения CRMID,- поле которого надо разместить на форме контакта и организации, сделав нередактируемым.
Естественно, новый проект, как указано в пункте 1 книги создавать необязательно, если в вашем распоряжении уже имеется проект Class Library, который выполняет некие операции предварительного вызова (callout).
Вложения
Тип файла: rar Classes.rar (2.2 Кб, 150 просмотров)
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!