Зарегистрироваться | Поиск |
Результаты опроса: Нужен ли .Net Аксапте? | |||
Конечно нужен, это ведь дополнительные возможности. |
![]() ![]() ![]() ![]() |
32 | 84.21% |
Все что надо можно через DLL делать и не мучиться. |
![]() ![]() ![]() ![]() |
3 | 7.89% |
Знал бы прикуп жил бы в Сочи. |
![]() ![]() ![]() ![]() |
3 | 7.89% |
Голосовавшие: 38. Вы ещё не голосовали в этом опросе |
|
Опции темы |
|
![]() |
#1 |
Участник
|
Попробовал, та же ругань. Ругается еще и на 5 параметр, попробовал поэксперементировать с ним и создал массив System.Array но не помогло(
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ. ![]() |
|
![]() |
#2 |
очами вижу
|
А булевы переменные в .NET нормально отправляются? Может, дело в System.Boolean?
PS. Хотя в том же ListChildren используется bool и ничего страшного. Последний раз редактировалось RumataEstor; 19.06.2008 в 15:30. |
|
![]() |
#3 |
Участник
|
![]() Цитата:
PHP код:
- PHP код:
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ. ![]() |
|
![]() |
#4 |
Участник
|
X++: System.Type t2; ; t2 = CLRInterop::Null("System.Array"); info (t2.ToString());
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ. ![]() |
|
![]() |
#5 |
очами вижу
|
Цитата:
Ну, если тебе нравится бег с препятствиями высотой больше твоего роста - то нормально. Я еще с Аксаптой не работал, но уже чувствую, что Visual Studio у меня не будет лежать мертвым грузом. Последний раз редактировалось RumataEstor; 20.06.2008 в 12:45. |
|
![]() |
#6 |
Участник
|
![]() Цитата:
Сообщение от RumataEstor
![]() Мне кажется, здесь ты забыл GetType(). Ты получил null типа System.Array и присвоил его переменной типа System.Type. В принципе, такое присвоения вообще должно давать ошибку совместимости типов, так как System.Array ни является наследником System.Type, ни имеет implicit (забыл как по-русски) методов приведения к нему.
PHP код:
Цитата:
![]()
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ. ![]() |
|
![]() |
#7 |
очами вижу
|
В схеме ясно написано, что параметров 5, один из которых обязательный. Но ты же работаешь не напрямую с сервисами через SOAP, а используешь .NET обертку, которая предоставляет свой интерфейс. Вот на него и надо смотреть.
Попробуй посмотреть рефлектором на этот метод в сборке. Может быть, в той версии, которая у тебя, этот метод имеет другую сигнатуру либо вообще отличается названием. Если же с этим все нормально, то я даже не знаю, что можно посоветовать. Ведь не может же быть такого, чтобы одни методы виделись, а другие нет. Ведь оба они объявлены public и разницы между ними быть не может. Может, все-таки попробовать сделать все необходимое на C#, а в Аксапте использовать простейшие методы? |
|
![]() |
#8 |
Участник
|
Цитата:
PHP код:
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ. ![]() |
|
![]() |
#9 |
Участник
|
Господа знатоки .Net неужели нет идей как победить коварный метод GetReportParameters? Я уверен все дело в передаваемых параметрах, подобные ошибки были когда пытался передавать неправильные аргументы в другие методы. Но там получить объекты типа URL или Credentials было все же проще, я их создавал. А как здесь создать пустой массив элементов определенного типа не представляю(
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ. ![]() |
|
![]() |
#10 |
очами вижу
|
А если создавать объекты типа System.Array? Не CLRInterop::Null, а именно
X++: System.Array params = GetReportParameters("Zzz", "", false, new System.Array(), new System.Array()); Код: public static Array CreateInstance(Type elementType, int length); http://msdn.microsoft.com/en-us/library/zb3cfh7k.aspx Думаю, в твоем случае, это выход. Последний раз редактировалось RumataEstor; 23.06.2008 в 11:09. |
|
![]() |
#11 |
Участник
|
![]() Цитата:
Цитата:
Сообщение от RumataEstor
![]() Кстати, у класса System.Array есть статический метод
Код: public static Array CreateInstance(Type elementType, int length); http://msdn.microsoft.com/en-us/library/zb3cfh7k.aspx Думаю, в твоем случае, это выход.
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ. ![]() |
|
![]() |
#12 |
очами вижу
|
Так как в Аксапте нет метода получить тип без создания объекта typeof(Microsoft.Dynamics.ReportingServices.ParameterValue) (или я плохо искал), то придется создавать экземпляры необходимых классов.
Надеюсь, такой вариант прокатит: X++: Microsoft.Dynamics.ReportingServices.ParameterValue _ParamVal = new Microsoft.Dynamics.ReportingServices.ParameterValue(); System.Type TParamVal = _ParamVal.GetType(); System.Array EmptyParams = CLRInterop::staticInvoke("System.Array", "CreateInstance", TParamVal, 0); Microsoft.Dynamics.ReportingServices.DataSourceCredentials _DSCred = new Microsoft.Dynamics.ReportingServices.DataSourceCredentials(); System.Type TDSCred = _DSCred.GetType(); System.Array EmptyDSCred = CLRInterop::staticInvoke("System.Array", "CreateInstance", TDSCred, 0); System.Array params = ReportingServices.GetReportParameters("Zzz", "", false, EmptyParams, EmptyDSCred); Последний раз редактировалось RumataEstor; 24.06.2008 в 15:54. Причина: Забыл объект указать |
|
![]() |
#13 |
Участник
|
У дураков мысли схожи)))) Не обижайся, но сделал все то же самое один в один. Ругается компилятор на эту строчку, даже откомпилировать не дает, сразу ошибку кидает. Ты перед getReportParameters забыл указать ReportingServices? или я опять чего то упустил?
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ. ![]() |
|
![]() |
#14 |
очами вижу
|
Цитата:
Исправил. |
|
![]() |
#15 |
Участник
|
ну вот у него и выскакивает ошибка при компиляции(... хоть бы в момент исполнения, тогда бы можно было посмотреть в чем ошибка, а так даже глянуть то не знаешь как чего аксапте не нравится
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ. ![]() |
|
![]() |
#16 |
очами вижу
|
Блин, тогда проще вообще SOAP-ом. Аксапта умеет HTTP запросы отправлять?
|
|
![]() |
#17 |
Участник
|
|
|
![]() |
#18 |
очами вижу
|
Вся эта тема и посвящена использованию .NET-обертки над веб-сервисом. Как выяснилось, это не так уж и
Цитата:
Using webservices inside Dynamics AX 4 is easy.
В общем, интреграция Аксапты с .NET минимальна и хоть сколько-нибудь сложные вещи необходимо выносить в отдельные сборки. Последний раз редактировалось RumataEstor; 24.06.2008 в 17:33. |
|
![]() |
#19 |
очами вижу
|
Нашел пример с компонентом, который наверняка есть везде:
X++: COM xmlhttp = new COM("MSXML2.ServerXMLHTTP"); COM xmlResponse; xmlhttp.Open("POST","http://урл-к-веб-сервису/ReportService2005.asmx",false); xmlhttp.setRequestHeader("Content-Type", "text/xml"); xmlhttp.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices/GetReportParameters"); xmlhttp.send("тут издет SOAP-запрос"); xmlResponse = xmlhttp.responsexml(); info(xmlResponse.xml()); |
|
![]() |
#20 |
Участник
|
![]() Цитата:
Сообщение от RumataEstor
![]() Нашел пример с компонентом, который наверняка есть везде:
X++: COM xmlhttp = new COM("MSXML2.ServerXMLHTTP"); COM xmlResponse; xmlhttp.Open("POST","http://урл-к-веб-сервису/ReportService2005.asmx",false); xmlhttp.setRequestHeader("Content-Type", "text/xml"); xmlhttp.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices/GetReportParameters"); xmlhttp.send("тут издет SOAP-запрос"); xmlResponse = xmlhttp.responsexml(); info(xmlResponse.xml()); |
|
Теги |
.net, отчет, reporting services |
|
|