AXForum  
Вернуться   AXForum > Блоги > CRM, SharePoint и Черная Магия
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

Добро пожаловать в мой блог! Изначально он не задумывался как блог CRM разработчика, но жизнь сама внесла нужные коррективы. Тут я публикою все свои наблюдения относительно обозначенных в заголовке систем. Если Вы найдете в нем что-то интересное для Вас, как для заказчика, то буду рад сотрудничать с Вами! В моей компетенции 100% задач по MS CRM 3.0/4.0/2011:
  • Консалтинг
  • Проектирование
  • Разработка
  • Обучение


MVP 2010, 2011
Оценить эту запись

Проблема с изменением атрибута yomifullname

Запись от Артем Enot Грунин размещена 19.12.2012 в 12:28

Те из вас, кто не первый год занимается MS CRM помнят ту классическую проблему CRM 4.0, когда не работали правила поиска дубликатов контактов, поиск и черти что еще.

Проблема заключалась в том, что пахорукие (я не побоюсь этого слова!) уроды локализаторы переводили систему в Промпте, в результате чего пары атрибутов name и yominame назывались одинаково: имя. Для справки: yomi атрибуты вообще нафиг не нужны в русской локализации, так как они предназначены для описания транскрипции (фонетического звучания) имени для восточных языков.

С тех пор качество локализации системы ничуть не выросло, однако все мы знаем как быть с чистой системой - идти и переименовывать атрибуты. И вот тут облом! "Имя", "Фамилия" и "Отчество" йоми хорошо переименовываются, а вот полное имя нет! Атрибут просто не сохраняется.

Посидев с дебагером я выяснил, что форма не сохраняется из-за какой-то проблемы со скриптом - атрибут не проходит проверку на корректность заполнения данных. Оно и понятно, yomifullname - это теперь EMAIL!

Нажмите на изображение для увеличения
Название: yomifullname.png
Просмотров: 420
Размер:	22.7 Кб
ID:	266

Атрибут fullname выглядит чуть лучше - он хотя бы текст, но тоже не хочет обновляться.

В каком из пакетов внесли эту ошибку не знаю, но за геморрой спасибо. Ниже предлагаю код для решения проблемы. И проект консольного приложения, чтобы исправить это безобразие:

X++:
String orgURI = "http://localhost/FixRM/XRMServices/2011/Organization.svc";
IServiceConfiguration<IOrganizationService> conf = ServiceConfigurationFactory.CreateConfiguration<IOrganizationService>(new Uri(orgURI));

ClientCredentials credentials = new ClientCredentials();
credentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials;

OrganizationServiceProxy crmService = new OrganizationServiceProxy(conf, credentials);
crmService.EnableProxyTypes();

RetrieveAttributeRequest attributeRequest = new RetrieveAttributeRequest
{
    EntityLogicalName = "contact",
    LogicalName = "yomifullname",
    RetrieveAsIfPublished = true,
};

RetrieveAttributeResponse attributeResponse = (RetrieveAttributeResponse) crmService.Execute(attributeRequest);

Console.WriteLine("Retrieved the attribute {0}.", attributeResponse.AttributeMetadata.SchemaName);

AttributeMetadata yomifullnameMetadata = attributeResponse.AttributeMetadata;
yomifullnameMetadata.DisplayName = new Label("Фонетическое полное имя", 1049);
yomifullnameMetadata.IsAuditEnabled = new BooleanManagedProperty(false);
yomifullnameMetadata.IsValidForAdvancedFind = new BooleanManagedProperty(false);

UpdateAttributeRequest updateRequest = new UpdateAttributeRequest
{
    Attribute = yomifullnameMetadata,
    EntityName = "contact",
    MergeLabels = true
};

crmService.Execute(updateRequest);
Код выполняет переименование атрибута и заодно отключает аудит и поиск по этому полю.

FixRM.AttributePropertiesUpdate.zip
Размещено в CRM
Просмотров 17304 Комментарии 0
Всего комментариев 0

Комментарии

 


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