AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.04.2008, 08:29   #1  
KingPeas is offline
KingPeas
Участник
Аватар для KingPeas
 
163 / 35 (2) +++
Регистрация: 09.01.2007
Адрес: Россия, Новосибирск
? Встраиваем в Аксапту браузер
Работаю в DAX 4.0
Добавил на форму компонент ActiveX "Microsoft Web Browser". В инит формы определяю url

Код:
 
public void init()
{
    RunBase    runbaseRS;
    Map                             mapParameters = new Map(Types::String, Types::String);
    // mapParameters содержит (название параметра, значение в строке)
    MapIterator                     mi;
    ;
    super();
    url = (select firstonly SRSServers).ServerUrl;
    runbaseRS = element.args().caller().runbase();
    mapParameters = runbaseRS.parmMapParm(); 
    mi = new MapIterator(mapParameters);
    if (runbaseRS.parmReportName())
    {
        url += '?'+runbaseRS.parmReportName();
        while (mi.more())
        {
            url += '&'+ mi.key() + '=' + mi.value(); // Передаем параметры необходимые для отчета
            mi.next();
        }
        if (runbaseRS.parmCaption())
        {
            this.design().caption(runbaseRS.parmCaption());
        }
    }
    else
        info ('Не указано название отчета');
}
затем в run формы просто обращаюсь по url

Код:
 
public void run()
{
    super();
    webBrowser.Navigate(url);
}
Все работает нормально, до тех пор пока в параметрах не появятся русские символы. Подскажите кто знает как сделать в аксапте с наименьшей кровью рабочий вариант. в php есть функции urlEncode и urlDecode если не ошибаюсь, попадались ли аналоги кому в аксе?
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ.

Последний раз редактировалось KingPeas; 25.04.2008 в 08:34.
Старый 25.04.2008, 09:32   #3  
KingPeas is offline
KingPeas
Участник
Аватар для KingPeas
 
163 / 35 (2) +++
Регистрация: 09.01.2007
Адрес: Россия, Новосибирск
Цитата:
Сообщение от belugin Посмотреть сообщение
До меня с трудом доходит чем мне это должно помочь? Я работаю с ReportingServices через вэб службу http://<server>/ReportServer. Мне нужно запустить на исполнение отчет, для чего и передаю имя отчета, а также параметры необходимые для его запуска.
На данный момент нашел класик SysUrlEncode который в Аксапте осуществляет кодировку и декодировку. Вот только после обработки им значений параметров браузер ошибочку выбрасывает, что у меня сильно большая строка получается больше 260 символов если я все параметры так загоняю, и это при том, что еще при передаче не все фильтры имеют значение. А если список складов будет в 20 или 30 кодов по одному фильтру, и коды товаров скажем 50 по другому, как тогда быть. ???
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ.
Старый 25.04.2008, 10:05   #4  
KingPeas is offline
KingPeas
Участник
Аватар для KingPeas
 
163 / 35 (2) +++
Регистрация: 09.01.2007
Адрес: Россия, Новосибирск
Цитата:
Сообщение от KingPeas Посмотреть сообщение
На данный момент нашел класик SysUrlEncode который в Аксапте осуществляет кодировку и декодировку.
Рано обрадовался. видимо класс пришел из тройки, потому как декодирует для четверки значения не совсем верно. (думаю дело в UTF)

вот попробовал для примера -"а" (русская а)
encode возвращает - %430
decode с него возвращает - С0
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ.
Старый 25.04.2008, 10:25   #5  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Вот так вроде работает... (надо только реферненс добавить на System.Web)
X++:
static void Test_x(Args _args)
{
    Dialog d = new Dialog("test");
    DialogField f = d.addField(typeId(Name));
    str s;
;
    if (d.run())
    {
        s = f.value();
        s = System.Web.HttpUtility::UrlEncode(s);
        info(s);
        info(System.Web.HttpUtility::UrlDecode(s));
    }
}
Старый 25.04.2008, 10:35   #6  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от KingPeas Посмотреть сообщение
До меня с трудом доходит чем мне это должно помочь? Я работаю с ReportingServices через вэб службу http://<server>/ReportServer.. Вот только после обработки им значений параметров браузер ошибочку выбрасывает, что у меня сильно большая строка получается больше 260 символов если я все параметры так загоняю, и это при том, что еще при передаче не все фильтры имеют значение. А если список складов будет в 20 или 30 кодов по одному фильтру, и коды товаров скажем 50 по другому, как тогда быть. ???
Думаю в этом случае надо копать в сторону параметра PostData метода WebBrowser.Navigate. Post данные не имеют ограничений по длине.
Старый 25.04.2008, 11:01   #7  
KingPeas is offline
KingPeas
Участник
Аватар для KingPeas
 
163 / 35 (2) +++
Регистрация: 09.01.2007
Адрес: Россия, Новосибирск
Цитата:
Сообщение от belugin Посмотреть сообщение
Вот так вроде работает... (надо только реферненс добавить на System.Web)
Вроде все понятно, вот только что-то до меня не доходит куда и на что мне ссылку то делать?
Простите уважаемый за мою глупость)
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ.
Старый 25.04.2008, 11:29   #8  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от KingPeas Посмотреть сообщение
Вроде все понятно, вот только что-то до меня не доходит куда и на что мне ссылку то делать?
Простите уважаемый за мою глупость)
Узел AOT\references правая кнопка Add reference потом фильтровать по System.Web и выбрать версию 2.0
Старый 25.04.2008, 11:30   #9  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Кстати, в блогахз промелкивало использование клиента SSRS в качестве ActiveX
За это сообщение автора поблагодарили: KingPeas (1).
Старый 25.04.2008, 12:07   #10  
KingPeas is offline
KingPeas
Участник
Аватар для KingPeas
 
163 / 35 (2) +++
Регистрация: 09.01.2007
Адрес: Россия, Новосибирск
;)
Спасибо ваши советы действительно спасли меня)

Цитата:
Сообщение от belugin Посмотреть сообщение
Кстати, в блогахз промелкивало использование клиента SSRS в качестве ActiveX
А ссылочки нет случаем?
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ.
Теги
документация, ax4.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Изучаю аксапту. Приход товара от клиента. nmariya DAX: Функционал 2 25.09.2007 16:53
Как убедить заказчика купить Аксапту? Alex P DAX: Прочие вопросы 84 19.10.2004 15:24
Вставка записей в аксапту из внешней БД Smith DAX: Программирование 2 20.09.2004 18:30
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:18.