AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.11.2006, 13:20   #1  
amg is offline
amg
Участник
 
30 / 10 (1) +
Регистрация: 22.04.2005
Изменение системного объекта
Как в CRM 3.0 изменить настраиваемые объекты (организации, контакты, счета, заказы и т.д.) все ясно и понятно. Но как изменить системные объекты и возможно ли такое? Требуется изменить объект Закрытие заказа (OrderClose), точнее его атрибут Состояние (StatusCode). По умолчанию в этом атрибуте стоит значение Нет средств, а мне надо добавить еще несколько значений, чтобы классифицировать нереализованные заказы. Кто нибудь сталкивался с подобной задачей?
Старый 09.11.2006, 15:54   #2  
pkost is offline
pkost
Участник
 
150 / 11 (1) +
Регистрация: 25.09.2006
Адрес: Киев
Цитата:
Сообщение от amg Посмотреть сообщение
Как в CRM 3.0 изменить настраиваемые объекты (организации, контакты, счета, заказы и т.д.) все ясно и понятно. Но как изменить системные объекты и возможно ли такое? Требуется изменить объект Закрытие заказа (OrderClose), точнее его атрибут Состояние (StatusCode). По умолчанию в этом атрибуте стоит значение Нет средств, а мне надо добавить еще несколько значений, чтобы классифицировать нереализованные заказы. Кто нибудь сталкивался с подобной задачей?
В описании ЦРМ и рекомендация по кастомизации неизменяемые (красные) поля изменять нельзя но можно попробывать сделать такое для установления значения поля при изменении значения другого поля на форме:



Если поле, значение которого должно быть установлено, просто текст, то все просто:

var fieldToChange = crmForm.all.description;
fieldToChange.value="Новое значение поля";


Все усложняется, если поле, которое надо изменить, типа lookup. Давайте разберем этот случай на примере формы "Продукт для сделки"(Opportunity Product).

Предположим, что необходимо при выборе Продукта в форме сделки в поле Единица измерения автоматически подставлять единицу измерения.
Чтобы это происходило, выполните следующие действия:
  1. Перейдите в раздел "Настройки", далее "Модификация", "Изменение сущностей".
  2. В списке дважды щелкните на элементе "Продукт для сделки".
  3. В открывшемся диалоге нажмите "Формы".
  4. Отобразится список форм. Дважды щелкните на самом верхнем элементе "Форма".
  5. Откроется редактор формы.
  6. В верхней части есть два поля - Продукт и Единица измерения. Дважды щелкните на поле "Продукт".
  7. Откроется форма свойств поля. Нажмите закладку "События".
  8. У этого поля есть только одно событие - onChange(), вызывается при изменении. Выделите его в списке и нажмите кнопку "Редактировать".
  9. Откроется редактор код события. Здесь нужно отметить галочку "Активно".
Чтобы написать код события, нужно узнать имя поля "Единица измерения" по схеме, идентификатор устанавливаемой единицы, и код сущности. Чтобы узнать эти сведения, выполните следующие шаги:
  1. Закройте редактор кода и диалог свойств поля "Продукт" и откройте свойства поля "Единица измерения".
  2. Перейдите на закладку "Схема".
  3. Запомните значение поля "Имя в схеме". В данном случае это uomid. Обратите внимание - регистр важен.
  4. Откройте Microsoft SQL Server Management Studio и подключитесь к серверу базы данных MS CRM.
  5. Откройте базу данных [Имя_Домена]_METABASE, перейдите к списку таблиц, в списке откройте таблицу Entity.
  6. Пролистывая таблицу найдите запись со значением поля LocalizedName равным "Единица измерения", запомните код сущности этой записи из поля "ObjectTypeCode" (в данном случае это 1055) и имя таблицы, хранящей записи этой сущности в поле "BaseTableName" (в данном случае это BaseUnit).
  7. Откройте базу данных [Имя_Домена]_MSCRM, перейдите к списку таблиц и откройте требуемую таблицу.
  8. Найдите запись единицы, которая будет подставляться, и скопируйте ее GUID (например, 650681f4-89ce-4f50-9088-fb0d9abff90d) в буфер обмена.
Теперь откройте редактор события onChange поля "Продукт" и впишите туда следующий код:
var aData = new Array();
var uomGUID = "650681f4-89ce-4f50-9088-fb0d9abff90d"; //GUID единицы
var uomObjectTypeCode = 1055; //Код сущности
var uomCaption = "Штука"; //Представление, отображаемое на экране
var o = new LookupControlItem(uomGUID, uomObjectTypeCode, uomCaption);
aData.push(o);
crmForm.all.uomid.DataValue = aData;
Установите галочку "Активно" и нажмите "Ок" в редакторе события и редакторе свойств поля. Теперь можно посмотреть, что получилось - нажмите в меню пункт Просмотр/Форма для создания и введите какой-либо продукт.
Старый 09.11.2006, 19:55   #3  
Polyaris is offline
Polyaris
Участник
 
7 / 10 (1) +
Регистрация: 04.09.2006
Адрес: Moscow
To pkost: По моему тут о другом спрашивали , совсем. То о чем вы написали есть в SDK и это не является unsupported.

Сабж собственно. Для вашей задачи нужно модифицировать PickList атрибут StatusCode. Только выберете ту область которую вам нужно.

Последний раз редактировалось Polyaris; 09.11.2006 в 19:57.
Старый 10.11.2006, 07:40   #4  
glad is offline
glad
Участник
 
74 / 17 (1) ++
Регистрация: 23.05.2006
Все правильно насчет атрибута StatusCode. Только причем здесь сущность OrderClose - это системный объект и его изменять действитеьно нельзя. В вашем случае вполне можно обойтись сущностью Заказ(SalesOrder). В атрибуе StatusCode выберите область Отменено и добавьте новое значение атрибута - какое Вы хотите.
Старый 20.11.2006, 14:30   #5  
amg is offline
amg
Участник
 
30 / 10 (1) +
Регистрация: 22.04.2005
glad, Polyaris спасибо большое за помощь. разобрался с этим.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Имя объекта сущности по id sphinks Dynamics CRM: Разработка 3 05.03.2009 08:40
Создание нового объекта sanych_81 Dynamics CRM: Функционал 9 26.11.2008 17:12
Получение атрибута из другого объекта Казарин Александр Dynamics CRM: Разработка 6 20.10.2008 18:08
Создание объекта сущности из другого объекта! SnSS Dynamics CRM: Разработка 5 29.05.2008 13:38
Почему недоступно изменение параметров? Faina Dynamics CRM: Администрирование 2 09.06.2006 09:45

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:57.