|
03.11.2015, 00:14 | #1 |
Чайный пьяница
|
Цитата:
Не пробовал использовать, потому не могу поделиться опытом.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
05.11.2015, 11:16 | #2 |
Участник
|
Цитата:
Сообщение от a33ik
Я буквально недавно был вынужден пользоваться этим, так что как я это сделал можете почитать тут - http://a33ik.blogspot.com/2015/07/ho...r-toolkit.html
Не пробовал использовать, потому не могу поделиться опытом. Искользовать крайне просто string jsonString = JsonHelper.JsonSerializer<JsonReportData>(JsonReportDataInstance); Код: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Runtime.Serialization.Json; using System.IO; using System.Text; /// <summary> /// JSON Serialization and Deserialization Assistant Class /// </summary> public class JsonHelper { /// <summary> /// JSON Serialization /// </summary> public static string JsonSerializer<T>(T t) { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); MemoryStream ms = new MemoryStream(); ser.WriteObject(ms, t); string jsonString = Encoding.UTF8.GetString(ms.ToArray()); ms.Close(); return jsonString; } /// <summary> /// JSON Deserialization /// </summary> public static T JsonDeserialize<T>(string jsonString) { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); T obj = (T)ser.ReadObject(ms); return obj; } } Код: class JsonReportData { public DateTime StartDate { get; set; } public DateTime DueDate { get; set; } public List<Guid> SalesPersonList { get; set; } public List<int> ProbabilityStage { get; set; } public Dictionary<string, Guid> SalesPersonKeyValuePair { get; set; } } |
|
|
За это сообщение автора поблагодарили: a33ik (1). |
12.11.2015, 22:08 | #3 |
Участник
|
На самом деле сейчас крайне опечален.
Пишу в данный момент работаю с IFD 2015 версия. Пытаюсь воспользоваться Вашей a33ik библиотекой , но не могу вызвать экшен из JS. Request сгенерировал используя SoapLoggerOrganizationService. Вот пример кода X++: <!doctype html> <html ng-app="purchaseApp"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css"> </head> <body ng-controller="purchaseController"> <div class="page-header"> <h1>Test Action </h1> </div> <div class="panel"> <div class="form-inline"> </div> <div class="form-group"> <div class="col-md-offset-2 col-md-8"> <button class="btn btn-default" id="crmAction">Execute action</button> </div> </div> </div> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.11/angular.min.js"></script> <script src="/WebResources/new_CustomActionExecutor.js"></script> <script> document.getElementById("crmAction").addEventListener("click", executeAction); function executeAction() { debugger; var parameters = "test"; CustomActionExecutor.Execute( { requestXml: getRequestXml(parameters), async: true, successCallback: function(result){ }, errorCallback: function (e) { } }); } function getRequestXml(parameters) { var requestXml = ''; requestXml += "</s:Envelope><s:Envelope xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'>"; requestXml += "<s:Body>"; requestXml += "<Execute xmlns='http://schemas.microsoft.com/xrm/2011/Contracts/Services' xmlns:i='http://www.w3.org/2001/XMLSchema-instance'>"; requestXml += "<request xmlns:a='http://schemas.microsoft.com/xrm/2011/Contracts'>"; requestXml += "<a:Parameters xmlns:b='http://schemas.datacontract.org/2004/07/System.Collections.Generic'>"; requestXml += "<a:KeyValuePairOfstringanyType>"; requestXml += "<b:key>JsonParameters</b:key>"; requestXml += "<b:value i:type='c:string' xmlns:c='http://www.w3.org/2001/XMLSchema'>" + parameters + "</b:value>"; requestXml += "</a:KeyValuePairOfstringanyType>"; requestXml += "</a:Parameters>"; requestXml += "<a:RequestId i:nil='true' />"; requestXml += "<a:RequestName>new_GetJsonDataToReport</a:RequestName>"; requestXml += "</request>"; requestXml += "</Execute>"; requestXml += "</s:Body>"; requestXml += "</s:Envelope>"; return requestXml; } </script> </body> </html> Если вызывать из console app, то все норм X++: OrganizationRequest r = new OrganizationRequest("new_GetJsonDataToReport"); r["JsonParameters"] = JsonHelper.JsonSerializer<JsonReportDate>(PrepareJsonData()); OrganizationResponse response = service.Execute(request); Последний раз редактировалось Ion; 12.11.2015 в 22:11. |
|
15.11.2015, 02:21 | #4 |
Чайный пьяница
|
Есть 2 рекомендации:
1. Добавить ссылку на ClientGlobalContext. 2. Использовать относительную адресацию в ссылках на вебресурс.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
17.11.2015, 12:50 | #5 |
Участник
|
Спасибо, проблему решил. Правда вариант 1 у меня пока не работает, потому есть баг с ClientGlobalContex в срм 2015 ifd. Ролап #1 еще не накатывал, ms говорит что он решен
|
|
18.11.2015, 13:07 | #6 |
Участник
|
Задеплоил решение в СРМ онлайн, там тоже почему-то не подгружаеться файл СlientGlobalContext.js.aspx.
Использую такую адрессацию X++: <script src="../../ClientGlobalContext.js.aspx"></script> <script src="../ClientGlobalContext.js.aspx"></script> |
|
|
|