03.02.2012, 20:18 | #1 |
Участник
|
Создание представлений
Всем доброго времени суток!
Мне нужно создать представления при условии что если содержимое поле1 совпадает с содержимым поле2. (фото) Не подскажите как сравнить два поля в CRM2011. Заранее спасибо !!! |
|
03.02.2012, 20:44 | #2 |
Чайный пьяница
|
Добрый вечер,
Напрямую в Advanced Find у вас это не получится. Что можно сделать: 1. Добавить битовое поле. 2. Написать плагин, который будет при создании/обновлении сущности анализировать равны ли поля и обновлять битовое поле, созданное на шаге 1. 3. Использовать в Advanced Find это поле.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
03.02.2012, 20:59 | #3 |
Участник
|
Цитата:
2. Написать плагин, который будет при создании/обновлении сущности анализировать равны ли поля и обновлять битовое поле, созданное на шаге 1.
Я щас через Fetch запрос запрашиваю сначала поле1 потом поле2 а далее не знаю что делать). |
|
03.02.2012, 23:53 | #4 |
Чайный пьяница
|
Код покажите, пожалуйста.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
04.02.2012, 15:33 | #5 |
Участник
|
X++: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel.Description; using System.Net; using Microsoft.Xrm.Sdk.Client; using Microsoft.Xrm.Sdk; namespace ViewsConsole { class Program { static void Main(string[] args) { // string ms = "Bob Train"; ClientCredentials Credentials = new ClientCredentials(); Credentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials; //This URL needs to be updated to match the servername and Organization for the environment. Uri OrganizationUri = new Uri("http://192.168.55.71:5555/dfnts/XRMServices/2011/Organization.svc"); Uri HomeRealmUri = null; using (Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy serviceProxy = new Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy(OrganizationUri, HomeRealmUri, Credentials, null)) { serviceProxy.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior()); IOrganizationService service = (IOrganizationService)serviceProxy; //fetch example string contactt = @"<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'> <entity name='account'> <attribute name='name' /> <attribute name='primarycontactid' /> <attribute name='telephone1' /> <attribute name='accountid' /> <order attribute='name' descending='false' /> <filter type='and'> <condition attribute='name' operator='not-null' /> </filter> </entity> </fetch>"; string fontac = @"<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'> <entity name='account'> <attribute name='name' /> <attribute name='primarycontactid' /> <attribute name='telephone1' /> <attribute name='accountid' /> <order attribute='name' descending='false' /> <filter type='and'> <condition attribute='accountnumber' operator='not-null' /> </filter> </entity> </fetch>"; EntityCollection result = service.RetrieveMultiple(new Microsoft.Xrm.Sdk.Query.FetchExpression(contactt)); EntityCollection fesuld = service.RetrieveMultiple(new Microsoft.Xrm.Sdk.Query.FetchExpression(fontac)); foreach (var c in result.Entities) { Console.WriteLine("----------"); System.Console.WriteLine(c.Attributes["name"]); } foreach (var s in fesuld.Entities) System.Console.WriteLine(s.Attributes["name"]); Console.ReadLine(); //end fetch example} // if (contactt == fontac) Console.WriteLine("KRUTO"); //else Console.WriteLine("NeKruto"); //This code will clear the textboxes after the contact is created. } } } } |
|
04.02.2012, 22:24 | #6 |
Участник
|
Ваш код запрашивает один и тот же набор полей: name, primarycontactid, telephone1, accountid.
Только для первой выборки у вас условие, что поле name не пустое, а для второй, что поле accountnumber не пустое. При это ваш запрос поле accountnumber не вернет вообще. Не очень понятно, что вообще должна была делать эта программа. |
|
05.02.2012, 01:35 | #7 |
Участник
|
Добрый день
Не хотите ли применить бизнес-процесс с запуском вручную? 1) Создаете булево кастомное поле, где true будет свидетельствовать о совпадении значений в отслеживаемых полях. 2) Создаете БП с запуском вручную, который будет сравнивать два отслеживаемых поля и писать в созданное кастомное поле результат сравнения. 3) Выделяете все необходимые записи и применяете к ним созданный БП. Далее, чтобы не приходилось применять каждый раз БП, создайте скрипт на onChange на отслеживаемых полях. Чтобы при изменении любого отслеживаемого поля тут же сохранялся результат сравнения в булевом поле. Либо используйте onSave, что логичнее. Есть хитрость при написании БП, если не сумеете написать - дайте знать :-)
__________________
Материалы для внедренцев Microsoft Dynamics CRM теперь на сайте Infoleat.com и в моем блоге CRM для бизнеса |
|
06.02.2012, 17:04 | #8 |
Участник
|
Спасибо за идею !
|
|
06.02.2012, 17:38 | #9 |
Чайный пьяница
|
Цитата:
А если записи будут импортироваться при помощи стандарных или нестандартных механизмов или поля будут изменяться при помощи бизнес процесса - ваш скрипт сработает? Конечно же нет. Плагин или БП смотрятся гораздо целостнее.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit Последний раз редактировалось a33ik; 07.02.2012 в 01:12. |
|
08.02.2012, 17:33 | #10 |
Участник
|
Мое мнение: если можно обойтись малыми силами и затратами, а также безболезненно чуть изменить технологию работы организации, подстроив ее под логику CRM, - лучше так, чем заказывать написание плагина для элементарной или простой задачи.
Я плохой работодатель для внедренцев и аутсорсеров. Зато все в моих руках ЗЫ. Понятно, что сложные вещи лучше заказывать на стороне, не спорю (правда, есть риск, что к тому времени как это потребуется - мы тут и своими силами решим проблему сопровождения). Сорри за флуд.
__________________
Материалы для внедренцев Microsoft Dynamics CRM теперь на сайте Infoleat.com и в моем блоге CRM для бизнеса |
|