Зарегистрироваться | Поиск |
Результаты опроса: Нужен ли .Net Аксапте? | |||
Конечно нужен, это ведь дополнительные возможности. | 32 | 84.21% | |
Все что надо можно через DLL делать и не мучиться. | 3 | 7.89% | |
Знал бы прикуп жил бы в Сочи. | 3 | 7.89% | |
Голосовавшие: 38. Вы ещё не голосовали в этом опросе |
|
Опции темы |
13.06.2008, 13:46 | #21 |
очами вижу
|
Похоже, это наименее болезненный способ. Как я успел выяснить, с делегатами в Аксапте еще хуже, чем с перечислениями. Хоть в данном случае они и не требуются, но выработается общий подход.
|
|
13.06.2008, 14:05 | #22 |
Участник
|
Цитата:
Цитата:
X++: Microsoft.Reporting.WebForms.ProcessingMode ProcessingMode = ClrInterop::parseClrEnum("Microsoft.Reporting.WebForms.ProcessingMode", "Remote"); X++: ReportViewer.set_ProcessingMode(ProcessingMode); А по поводу dll - я ничего против них не имею, но у них есть неприятное свойство их надо таскать за софтом, при работе на нескольких серверах и множестве клиентских станций бывает очень неудобно. Не дай бог забудешь добавить или перенести. ЕЩЕ РАЗ ВСЕМ СПАСИБО!!!
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ. |
|
13.06.2008, 14:19 | #23 |
очами вижу
|
А для делегатов в этом классе нет никаких волшебных функций?
|
|
13.06.2008, 14:24 | #24 |
Участник
|
Стыдно признаваться, но я не знаю кто такие делегаты
А класс можно найти в аксапте по адресу АОТ / SystemDocumentation / Classes
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ. |
|
13.06.2008, 14:30 | #25 |
Британский учённый
|
Цитата:
SysFileDeployment, я бы так и делал дабы сэкономить время. Мало ли что понадобится сделать в будующем. Если таки прийдется добавлять dll, то будет жалко потраченного времени. А с серьезными интеграциями без dll-ок трудно обойтись.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
13.06.2008, 14:33 | #26 |
очами вижу
|
Цитата:
Например, нажатие кнопки в .NET - это событие, на которое можно подписаться любому объекту (не только форме). Посмотрел справку, действительно, ничего для этого механизма в Аксапте не предусмотренно. Печально . Интересно, как реализованы эти CLRInterop:: parseClrEnum и CLRInterop::staticInvoke, но смогу посмотреть на это еще не скоро - мы еще Аксапту не купили |
|
13.06.2008, 14:46 | #27 |
Участник
|
Цитата:
Сообщение от RumataEstor
Делегаты - это указатели на функции (методы объектов либо статические функции). Используются для реакции на события. Многие объекты предоставляют пользователю события (event), на которые можно подписываться с помощью соответствующего делегата.
Например, нажатие кнопки в .NET - это событие, на которое можно подписаться любому объекту (не только форме). Посмотрел справку, действительно, ничего для этого механизма в Аксапте не предусмотренно. Печально ...
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ. |
|
17.06.2008, 09:51 | #28 |
Участник
|
Друзья еще один вопросик. Получил доступ к параметрам отчета через ReportViewer(.net), для списка доступных отчетов пользуюся классом SRSProxy(DAX). Вот только обращение к SRSProxy приводит к тому что нужно дожидаться соединения с сервером. После того как соединение установлено все работает очень быстро. То же самое с подключением к ReportViewer, сначала надо подождать, а потом можно работать спокойно. Нельзя ли это как то перевести на одни рельсы, чтобы не подключаться через два разных подключения? Среди доступных методов в ReportViewer не нашел способа как считать список узлов в каталогах. Не хочется делать все это через dll, кто знает модель RS подскажите где искать.
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ. |
|
17.06.2008, 12:50 | #29 |
очами вижу
|
Каким образом ты пользуешься SRSProxy? Я просто не знаю, какие методы определения доступных отчетов он предоставляет.
Сейчас нарыл в справке вот такую функцию: http://msdn.microsoft.com/en-us/libr...arameters.aspx Единственное, чего я не понял в приведенном в справке примере - это указания сервера SRS. Как ни странно, у меня этот класс (Microsoft.SqlServer.ReportingServices2005.ReportingService2005) находится в сборке "Microsoft.ReportingServices.Diagnostics.dll". |
|
17.06.2008, 13:09 | #30 |
Участник
|
Цитата:
Сообщение от RumataEstor
Каким образом ты пользуешься SRSProxy? Я просто не знаю, какие методы определения доступных отчетов он предоставляет.
Сейчас нарыл в справке вот такую функцию: http://msdn.microsoft.com/en-us/libr...arameters.aspx Единственное, чего я не понял в приведенном в справке примере - это указания сервера SRS. А сервер SRSProxy - это аксаптовская оболочка для опубликования моделей на сервере отчетов. // declare class members COM reportingServicesProxy; а вот так он инициализируется #define.ProxyClass("Microsoft.Dynamics.ReportingServices.Proxy") reportingServicesProxy = new COM(#ProxyClass); любопытно что это очень напоминает .Net Сборку нашел, а метода в нем такого в аксе нет доступного
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ. |
|
17.06.2008, 13:35 | #31 |
очами вижу
|
Сейчас открыл сборку "Program Files/Microsoft Dynamics AX/40/Client/Bin/Microsoft.Dynamics.ReportingServices.DLL"
В ней есть класс "Microsoft.Dynamics.ReportingServices.ReportingService2005". Я так понимаю, у объекта Proxy ты используешь метод ListChildren? Последний раз редактировалось RumataEstor; 17.06.2008 в 13:38. |
|
17.06.2008, 13:58 | #32 |
очами вижу
|
У объекта класса Microsoft.Dynamics.ReportingServices.ReportingService2005 есть методы:
public void set_WebServiceUrl(string Value) public Microsoft.Dynamics.ReportingServices.CatalogItem[ ] ListChildren(string Item, bool Recursive) public Microsoft.Dynamics.ReportingServices.ReportParameter[ ] GetReportParameters(string Report, string HistoryID, bool ForRendering, Microsoft.Dynamics.ReportingServices.ParameterValue[ ] Values, Microsoft.Dynamics.ReportingServices.DataSourceCredentials[ ] Credentials) Если не пользоваться SRSProxy, а сразу создавать Microsoft.Dynamics.ReportingServices.ReportingService2005, то инициализация будет только одна. Последний раз редактировалось RumataEstor; 17.06.2008 в 14:02. |
|
|
За это сообщение автора поблагодарили: KingPeas (1). |
18.06.2008, 07:30 | #33 |
Участник
|
Цитата:
Можно только поинтересоваться, ты до этого выкладывал картинку где было видно всю подноготную объекта сборки. Через какую прогу можно такое сделать? Главная проблема в том что не известно какой тип данных возвращает тот или иной метод и какие параметры требуются для передачи. ну и т.п.
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ. |
|
18.06.2008, 08:31 | #34 |
Участник
|
кто-нибудь в курсе как в аксапте получать объект массив элементов (CatalogItem[ ])? Сам элемент для обработки доступен в сборке, а вот как получить массив объектов пока не догадываюсь?
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ. |
|
18.06.2008, 08:58 | #35 |
Участник
|
сборки расковыриваются рефлектором - http://www.aisto.com/roeder/dotnet/
|
|
18.06.2008, 10:45 | #36 |
очами вижу
|
Цитата:
Сообщение от KingPeas
Можно только поинтересоваться, ты до этого выкладывал картинку где было видно всю подноготную объекта сборки. Через какую прогу можно такое сделать? Главная проблема в том что не известно какой тип данных возвращает тот или иной метод и какие параметры требуются для передачи. ну и т.п.
С его помощью можно лишь увидеть интерфейсы, предоставляемые этими библиотеками. Реализацию можно (не всегда) увидеть с помощью Рефлектора: Цитата:
Сообщение от belugin
сборки расковыриваются рефлектором - http://www.aisto.com/roeder/dotnet/
|
|
18.06.2008, 10:49 | #37 |
очами вижу
|
Цитата:
Может, попробовать тип "CLRObject"? Это же тоже классы и у них должны быть методы (get_Length, GetValue). Любой типизированный .NET массив - наследник от System.Array, поэтому можно пользоваться методами родителя. Неясность одна - как в Аксапте использовать приведение типов. PS. Похоже, для приведения типов можно использовать CLRInterop::getAnyTypeForObject и CLRInterop::getObjectForAnyType . Последний раз редактировалось RumataEstor; 18.06.2008 в 11:25. |
|
18.06.2008, 12:00 | #38 |
Участник
|
Есть еще одна проблема.
Когда пытаешься получить значение X++: ar = ReportingServices.ListChildren('/',true); Цитата:
The request failed with HTTP status 401: Unauthorized.
Код: rs = new ReportingService(); // Установим Credentials для текущего залогиненого юзера rs.Credentials = System.Net.CredentialCache.DefaultCredentials; // Установим URL для нашего this.rs.Url = this.labelGet.Text + "/ReportService.asmx";
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ. |
|
18.06.2008, 12:18 | #39 |
очами вижу
|
У тебя не получается получить "System.Net.CredentialCache.DefaultCredentials"?
System.Net.CredentialCache - это класс, DefaultCredentials - это его статическое свойство. Попробуй System.Net.ICredentials cred = CLRInterop::staticInvoke("System.Net.CredentialCache", "get_DefaultCredentials"); |
|
18.06.2008, 12:42 | #40 |
Участник
|
Цитата:
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ. |
|
Теги |
.net, отчет, reporting services |
|
|