05.06.2006, 22:44 | #1 |
Гость
|
Передача данных
Здравствуйте господа.
Стоит crm server 3.0, занимаюсь кустомизацией и столкнулся с проблемой передачи параметров от дочерних объектов родительскому . Необходимо чтобы со всех дочерних объектов поступали данные в родительский и там, к примеру, находилось среднее арифметическое. Т.е. есть род. сущность школа, в ней есть дочерние сущности - ученики. Так вот надо чтобы в отдельном поле родительской сущности отображалось число соответствующее среднему возрасту учеников. Соответственно у учеников есть обязательный атрибут - возраст. Такая система организованна в системной сущности - счет, но как она работает понять не могу... |
|
06.06.2006, 05:28 | #2 |
Участник
|
Сторонняя веб страница
Мне кажется проще всего встроить IFrame - веб страницу, который подгружает возраст всех ваших учеников у нужной школы, либо через веб сервисы либо через view базы MS CRM
А там хоть суммируйте хоть средний возраст вычисляйте. |
|
06.06.2006, 09:11 | #3 |
Moderator
|
Я бы предложил создать web-сервис, в который передавать GUID школы, а уже он будет возвращать средний возраст учеников. А вот вызывать этот web-сервис можно в событии OnLoad для формы, т.е. при каждом открытии формы, информация будет обновляться.
|
|
06.06.2006, 16:42 | #4 |
Microsoft CRM Certified Professional
|
А ещё можно сделать отчёт, если эти данные нужно только смотреть.
|
|
06.06.2006, 17:57 | #5 |
Гость
|
Спасибо большое за наводочку. Жаль только что Microsoft не позаботилось об этой возможности. Хотелось бы решить эту проблемму без участия программистов...
|
|
06.06.2006, 18:40 | #6 |
Гость
|
Цитата:
Сообщение от sam
Мне кажется проще всего встроить IFrame - веб страницу, который подгружает возраст всех ваших учеников у нужной школы, либо через веб сервисы либо через view базы MS CRM
А там хоть суммируйте хоть средний возраст вычисляйте. |
|
06.06.2006, 18:43 | #7 |
Гость
|
Цитата:
Сообщение от AndreyS
Я бы предложил создать web-сервис, в который передавать GUID школы, а уже он будет возвращать средний возраст учеников. А вот вызывать этот web-сервис можно в событии OnLoad для формы, т.е. при каждом открытии формы, информация будет обновляться.
|
|
06.06.2006, 18:44 | #8 |
Гость
|
Цитата:
Сообщение от mystic
А ещё можно сделать отчёт, если эти данные нужно только смотреть.
|
|
07.06.2006, 09:22 | #9 |
Участник
|
Цитата:
Сообщение от faust911
У меня есть представление небольшое о програмировании, но все же я не очень понимаю как это реализовать. Я понял, что нужно вставить IFrame в родительскую форму, заранее написав на ней какой-нибуть скрипт который бы вытаскивал данные из дочерних и обработав их, вставлял бы в нужное поле родительской формы?
создайте веб страницу закиньте туда текст бокс или метку куда вы будете выводить средний возраст Обрабатывайте OnLoad if(!Page.IsPostBack) // если страница первый раз то делаем следующее: создайте сервис црм получайте код школы - request делайте запрос - queryByAttribute на всех школьников у которых школаid = id школы дальше перебирайте полученную коллекцию и вычисляйте сумму лет разделите на число школьников - полученный средний возраст покажите в текст боксе или метке. создайте объект школа, укажите средний возраст как полученный вами делайте апдейт Примерно так, хотя с веб сервисами красивее конечно : ) |
|
07.06.2006, 11:02 | #10 |
Moderator
|
Примерный код ниже (запрашиваем контакты по GUID родительской организации):
CrmService service = new CrmService(); service.Credentials = System.Net.CredentialCache.DefaultCredentials; service.Url = "http://iwexchange:5555/mscrmservices...rmservice.asmx"; ColumnSet cols = new ColumnSet(); cols.Attributes = new string[] {"lastname"}; QueryByAttribute query = new QueryByAttribute(); query.ColumnSet = cols; query.EntityName = EntityName.contact.ToString(); query.Attributes = new string[] {"parentcustomerid"}; query.Values = new string[] {"{54980211-3238-4D2A-838E-027C95724E18}"}; BusinessEntityCollection retrieved = service.RetrieveMultiple (query); if (retrieved.BusinessEntities.Length > 0) { for (int i=0;i<retrieved.BusinessEntities.Length;i++) { contact oContact = new contact(); oContact = (contact)retrieved.BusinessEntities[i]; Console.WriteLine(oContact.lastname.ToString()); } } |
|
|
|