|
25.04.2012, 12:42 | #1 |
Участник
|
Думаю, что Вы пишите плагин.
Я на вопрос отвечу, но все же стоит указывать что и для чего, тем более когда у Вас несколько раз спрашивают. Когда у меня была задача узнать ID формы после которой сработал плагин я делал следующее: X++: private string GetParamFromUrl(string url, string param) { if (url == null || url == string.Empty || url == "") return string.Empty; Uri ur = new Uri(url); string[] querySegments = ur.Query.ToLower().Split('&'); string Guid = String.Empty; foreach (string segment in querySegments) { string[] parts = segment.Split('='); if (parts.Length > 0) { string key = parts[0].Trim(new char[] { '?', ' ' }); if (key.ToLower() == param.ToLower()) { Guid = parts[1].Trim(); Guid = Guid.Replace("{", "").Replace("}", "").Replace("%7b", "").Replace("%7d", "").Replace("=", ""); break; } } } return Guid; } string refererUrl = HttpContext.Current.Request.ServerVariables["HTTP_REFERER"]; if (string.IsNullOrEmpty(refererUrl)) return; string filterParam = GetParamFromUrl(refererUrl, "id"); Это очень полезная штука. Я её использую для фильтрации плагинов и для определения откуда именно сработал плагин, Так например у меня была задача при конвертации e-mail и звонка в обращение заполнить поля обращении определенным образом. Вт этот механизм мне здесь пригодился. Непомню почему именно этот, вроде остальные не помогли. Последний раз редактировалось g.Naukovych; 25.04.2012 в 12:47. |
|
25.04.2012, 13:00 | #2 |
Участник
|
Цитата:
Ваш способ, конечно, работает, НО в плагинах CRM существует context, в котором можно найти ID записи на которую бежит плагин. Колличество строчек кода при этом несопоставимо с Вашим. В Post Create, например, это выглядит так: Guid id = (Guid)context.OutputParameters.Properties[ParameterName.Id]; |
|
25.04.2012, 13:12 | #3 |
Участник
|
Я не плагин юзаю. Веб приложение создаю. То есть при переходе на вкладку, грузится страница aspx. И выполняет необходимый запрос на c#. И соответственно необходимо узнавать guid открытой формы.
И вот у меня как раз вопрос по N:N. Мне нужно получить список кредитных программ для определенной модели авто, которые есть. Юзаю код: ColumnSet cols3 = new ColumnSet(); cols3.Attributes = new string[] { "new_name" };//название кредитной программы ConditionExpression condition2 = new ConditionExpression(); condition2.AttributeName = "new_name";// название модели condition2.Operator = ConditionOperator.Equal; condition2.Values = new string[] { "Mustang" }; FilterExpression filter2 = new FilterExpression(); filter2.FilterOperator = LogicalOperator.And; filter2.Conditions = new ConditionExpression[] { condition2 }; LinkEntity link = new LinkEntity(); link.LinkCriteria = filter2; link.LinkFromEntityName = EntityName.new_credit.ToString(); link.LinkFromAttributeName = "new_creditid"; //тип primarykey link.LinkToAttributeName = "new_modelid";//тип primarykey link.LinkToEntityName = EntityName.new_model.ToString(); QueryExpression querry = new QueryExpression(); querry.EntityName = EntityName.new_credit.ToString(); querry.ColumnSet = cols3; querry.LinkEntities = new LinkEntity[] { link }; RetrieveMultipleRequest retr = new RetrieveMultipleRequest(); retr.Query = querry; RetrieveMultipleResponse retr2 = (RetrieveMultipleResponse)service.Execute(retr); В результате запрос ничего не выполняет. То есть retr2 пустой. Не понимаю в чем трабла и что я делаю не так. Ошибок при выполнении нет Последний раз редактировалось Taker1796; 25.04.2012 в 13:20. |
|
25.04.2012, 13:29 | #4 |
Участник
|
При создании iframe попробуйте воспользоваться вот этим
__________________
Читайте SDK!!! |
|
25.04.2012, 13:40 | #5 |
Участник
|
Цитата:
Или у Вас все таки не N:N? Ели N:N, то я Вам переписала код X++: ConditionExpression condition2 = new ConditionExpression(); condition2.AttributeName = "new_name";// название модели condition2.Operator = ConditionOperator.Equal; condition2.Values = new string[] { "Mustang" }; FilterExpression filter2 = new FilterExpression(); filter2.FilterOperator = LogicalOperator.And; filter2.AddCondition(condition2); LinkEntity link2 = new LinkEntity(); link2.LinkFromEntityName = EntityName.new_credit.ToString(); link2.LinkFromAttributeName = "new_creditid"; //тип primarykey link2.LinkToAttributeName = "new_creditid";//тип primarykey link2.LinkToEntityName = ["Name of Relationship N:N"]; LinkEntity link = new LinkEntity(); link.LinkCriteria = filter2; link.LinkFromEntityName = ["Name of Relationship N:N"]; link.LinkFromAttributeName = "new_modelid"; //тип primarykey link.LinkToAttributeName = "new_modelid";//тип primarykey link.LinkToEntityName = EntityName.new_model.ToString(); link2.LinkEntities = new LinkEntity[]{link}; QueryExpression querry = new QueryExpression(); querry.EntityName = EntityName.new_credit.ToString(); querry.ColumnSet = cols3; querry.LinkEntities = new LinkEntity[] { link2}; RetrieveMultipleRequest retr = new RetrieveMultipleRequest(); retr.Query = querry; RetrieveMultipleResponse retr2 = (RetrieveMultipleResponse)service.Execute(retr); Последний раз редактировалось Ksani; 25.04.2012 в 14:00. |
|
25.04.2012, 14:22 | #6 |
Участник
|
Ksani, спасибо большое! Я твой должник! Ты супер!)
|
|
25.04.2012, 14:31 | #7 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: Taker1796 (1). |
25.04.2012, 13:31 | #8 |
Участник
|
Цитата:
Сообщение от Ksani
Зачем Вы сбиваете с правильного пути новичка?
Ваш способ, конечно, работает, НО в плагинах CRM существует context, в котором можно найти ID записи на которую бежит плагин. Колличество строчек кода при этом несопоставимо с Вашим. В Post Create, например, это выглядит так: Guid id = (Guid)context.OutputParameters.Properties[ParameterName.Id]; Если у Вас событие create, из другого объекта, то события для которой запись это неверно. Отвечал на вопрос про форму. И на него я другого ответа не знаю. |
|
25.04.2012, 13:36 | #9 |
Участник
|
|
|
25.04.2012, 14:26 | #10 |
Участник
|
Вот пример. Перевод email в case.
Я не нешел другого способа узнать что это был перевод кроме как получение ID формы. Получил проверил есть ли такой email и выполнил соответствующее действие. |
|
25.04.2012, 14:30 | #11 |
Участник
|
Цитата:
Update: Нет, вроде разобралась. Это когда Вы делаете Convert Activity to Case, то в плагине Кейса, хотите видеть, что это именно конверт, а не простой Create. Но мне все равно кажется, что для этого есть другие способы. И в данном случае человек решает более тривиальную задачу. Последний раз редактировалось Ksani; 25.04.2012 в 14:47. |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|