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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.02.2012, 20:18   #1  
Aliwer is offline
Aliwer
Участник
 
14 / 11 (1) +
Регистрация: 26.12.2011
Создание представлений
Всем доброго времени суток!
Мне нужно создать представления при условии что если содержимое поле1 совпадает с содержимым поле2. (фото) Не подскажите как сравнить два поля в CRM2011.
Заранее спасибо !!!

Старый 03.02.2012, 20:44   #2  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Добрый вечер,

Напрямую в Advanced Find у вас это не получится. Что можно сделать:
1. Добавить битовое поле.
2. Написать плагин, который будет при создании/обновлении сущности анализировать равны ли поля и обновлять битовое поле, созданное на шаге 1.
3. Использовать в Advanced Find это поле.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 03.02.2012, 20:59   #3  
Aliwer is offline
Aliwer
Участник
 
14 / 11 (1) +
Регистрация: 26.12.2011
Цитата:
2. Написать плагин, который будет при создании/обновлении сущности анализировать равны ли поля и обновлять битовое поле, созданное на шаге 1.
Вот я не могу додуматься до того как сравнить два поля. В базе >5000 записей, поэтому нужно пройтись по ним.

Я щас через Fetch запрос запрашиваю сначала поле1 потом поле2 а далее не знаю что делать).
Старый 03.02.2012, 23:53   #4  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Aliwer Посмотреть сообщение
Вот я не могу додуматься до того как сравнить два поля. В базе >5000 записей, поэтому нужно пройтись по ним.

Я щас через Fetch запрос запрашиваю сначала поле1 потом поле2 а далее не знаю что делать).
Код покажите, пожалуйста.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 04.02.2012, 15:33   #5  
Aliwer is offline
Aliwer
Участник
 
14 / 11 (1) +
Регистрация: 26.12.2011
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  
griefon is offline
griefon
Участник
 
131 / 52 (2) ++++
Регистрация: 07.12.2010
Адрес: down under
Ваш код запрашивает один и тот же набор полей: name, primarycontactid, telephone1, accountid.
Только для первой выборки у вас условие, что поле name не пустое, а для второй, что поле accountnumber не пустое.
При это ваш запрос поле accountnumber не вернет вообще.
Не очень понятно, что вообще должна была делать эта программа.
Старый 05.02.2012, 01:35   #7  
Fighter is offline
Fighter
Участник
Аватар для Fighter
 
108 / 31 (2) +++
Регистрация: 26.07.2011
Адрес: Kyiv
Записей в блоге: 12
Добрый день
Не хотите ли применить бизнес-процесс с запуском вручную?

1) Создаете булево кастомное поле, где true будет свидетельствовать о совпадении значений в отслеживаемых полях.
2) Создаете БП с запуском вручную, который будет сравнивать два отслеживаемых поля и писать в созданное кастомное поле результат сравнения.
3) Выделяете все необходимые записи и применяете к ним созданный БП.

Далее, чтобы не приходилось применять каждый раз БП, создайте скрипт на onChange на отслеживаемых полях. Чтобы при изменении любого отслеживаемого поля тут же сохранялся результат сравнения в булевом поле. Либо используйте onSave, что логичнее.

Есть хитрость при написании БП, если не сумеете написать - дайте знать :-)
__________________
Материалы для внедренцев Microsoft Dynamics CRM теперь на сайте Infoleat.com и в моем блоге CRM для бизнеса
Старый 06.02.2012, 17:04   #8  
Aliwer is offline
Aliwer
Участник
 
14 / 11 (1) +
Регистрация: 26.12.2011
Спасибо за идею !
Старый 06.02.2012, 17:38   #9  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Fighter Посмотреть сообщение
1) Создаете булево кастомное поле, где true будет свидетельствовать о совпадении значений в отслеживаемых полях.
2) Создаете БП с запуском вручную, который будет сравнивать два отслеживаемых поля и писать в созданное кастомное поле результат сравнения.
А чем по логике это отлично от того, что предложил я - Создание представлений

Цитата:
Сообщение от Fighter Посмотреть сообщение
Далее, чтобы не приходилось применять каждый раз БП, создайте скрипт на onChange на отслеживаемых полях. Чтобы при изменении любого отслеживаемого поля тут же сохранялся результат сравнения в булевом поле. Либо используйте onSave, что логичнее.
А если записи будут импортироваться при помощи стандарных или нестандартных механизмов или поля будут изменяться при помощи бизнес процесса - ваш скрипт сработает? Конечно же нет. Плагин или БП смотрятся гораздо целостнее.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit

Последний раз редактировалось a33ik; 07.02.2012 в 01:12.
Старый 08.02.2012, 17:33   #10  
Fighter is offline
Fighter
Участник
Аватар для Fighter
 
108 / 31 (2) +++
Регистрация: 26.07.2011
Адрес: Kyiv
Записей в блоге: 12
Мое мнение: если можно обойтись малыми силами и затратами, а также безболезненно чуть изменить технологию работы организации, подстроив ее под логику CRM, - лучше так, чем заказывать написание плагина для элементарной или простой задачи.
Я плохой работодатель для внедренцев и аутсорсеров. Зато все в моих руках
ЗЫ. Понятно, что сложные вещи лучше заказывать на стороне, не спорю (правда, есть риск, что к тому времени как это потребуется - мы тут и своими силами решим проблему сопровождения).
Сорри за флуд.
__________________
Материалы для внедренцев Microsoft Dynamics CRM теперь на сайте Infoleat.com и в моем блоге CRM для бизнеса
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Создание Order из другой сущности ashuron Dynamics CRM: Разработка 3 16.11.2011 22:21
Как определить создание формы Dicora Dynamics CRM: Функционал 2 22.09.2010 14:42
Создание экземпляра кастомной сущности из плагина Roman08 Dynamics CRM: Разработка 14 31.08.2009 21:34
создание объекта на базе существующего vienna Dynamics CRM: Разработка 9 11.06.2009 14:01
Как отследить создание предложения из возможной сделки ZooY Dynamics CRM: Разработка 2 28.11.2008 21:00

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 04:57.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.