![]() |
#1 |
Участник
|
axforum blogs: Проблема с изменением атрибута yomifullname
Источник: http://axforum.info/forums/blog.php?b=366
============== Те из вас, кто не первый год занимается MS CRM помнят ту классическую проблему CRM 4.0, когда не работали правила поиска дубликатов контактов, поиск и черти что еще. Проблема заключалась в том, что пахорукие (я не побоюсь этого слова!) уроды локализаторы переводили систему в Промпте, в результате чего пары атрибутов name и yominame назывались одинаково: имя. Для справки: yomi атрибуты вообще нафиг не нужны в русской локализации, так как они предназначены для описания транскрипции (фонетического звучания) имени для восточных языков. С тех пор качество локализации системы ничуть не выросло, однако все мы знаем как быть с чистой системой - идти и переименовывать атрибуты. И вот тут облом! "Имя", "Фамилия" и "Отчество" йоми хорошо переименовываются, а вот полное имя нет! Атрибут просто не сохраняется. Посидев с дебагером я выяснил, что форма не сохраняется из-за какой-то проблемы со скриптом - атрибут не проходит проверку на корректность заполнения данных. Оно и понятно, yomifullname - это теперь EMAIL! Атрибут fullname выглядит чуть лучше - он хотя бы текст, но тоже не хочет обновляться. В каком из пакетов внесли эту ошибку не знаю, но за геморрой спасибо. Ниже предлагаю код для решения проблемы. И проект консольного приложения, чтобы исправить это безобразие: X++: String orgURI = "http://localhost/FixRM/XRMServices/2011/Organization.svc";IServiceConfiguration conf = ServiceConfigurationFactory.CreateConfiguration(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 Источник: http://axforum.info/forums/blog.php?b=366
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
|
За это сообщение автора поблагодарили: Borisvil (1). |