Отчеты в терминальном режиме

5 (1)
  • Развернуть Отчеты в терминальном режиме ( Mushfig  04.10.2006 10:37 )
    5(1)
    Здравствуйте
    Посоветуйте как можно переделать уже существующий отчет выходящий в терминальном окне, на отчет выходящий в Екселе. Т.е. уже отчет есть, только надо поменять метод вывода.
    Заранее спасибо
    >> Ответить
    • Развернуть Неужели никто не знает? ( Mushfig  04.10.2006 11:28 )
      4(1)
      Not specified
      >> Ответить
      • Развернуть Все знают, но молчат ( Ltybc  04.10.2006 12:11 )
        5(1)
        Надо его переписать. А как, это уже долгая история.
        >> Ответить
        • Развернуть Заново переписать ( Mushfig  04.10.2006 12:16 )
          5(1)
          Т.е. надо заново переписать отчет?
          Если есть пример, скиньте плиз...я уже сам разберусь
          >> Ответить
          • Развернуть Эээ. Пример чего? ( Ltybc  04.10.2006 12:51 )
            4(1)
            Работы с Excel?
             import rslx, rcw; 
              if (IsStandAlone())               // двухзвенная архитектура
                if ((ValType(ex)!=V_UNDEF) and (ex.Visible==False))
                  ex = ActiveX("Excel.Application",NULL,false); 
                else
                  ex = ActiveX("Excel.Application",NULL,true);
                end;
              else                              // трехзвенная архитектура
                ob = CreateObject ("rsax","TRsAxServer","RsAxServer",false);
                ex = ob.CreateComObject ("Excel.Application");
              end;                                           
              obBook = ex.Workbooks.add(); 
              obSheet = obBook.ActiveSheet();
            
              obSheet.Range("A1").Value = "Hello, world!";
            
              ex.Visible = true;
            

            >> Ответить
            • Развернуть извините за ламерский вопрос ( Mushfig  04.10.2006 13:19 )
              5(1)
              Писать отчет с выходом в Ексел я в принципе уже разобрался. просто у меня есть пару отчетов, результат которых выходит в терминальное окно, я хочу их как то сделать чтобы они вылезали с тем результатом только в Ексел. Переделывать весь макрос не хочется, да и не все мне в нем понятно... просто РСЛ не так хорошо еще знаю. Может в макросе что то надо дописать типа подпрограммы чтобы те перменные которые он выплевывает в терминалку, выплевывал в Ексел.

              >> Ответить
            • Развернуть А пример я имел ввиду, может у кого есть пример переделывания отчета (из терминалки в Ексел) ( Mushfig  04.10.2006 13:21 )
              5(1)
              Not specified
              >> Ответить
              • Развернуть Есть интересный инструмент ( JVR  05.10.2006 05:34 )
                3(2)
                В дистрибутивной поставке есть Windows Report - очень удобная штука, позволяет лепить произвольные отчеты и выводить в Word, Excel, ASCII -- куда душе угодно. Написан на RSL
                >> Ответить
                • Развернуть А здесь не нужно новые писать, нужно старые переделать :-) ( Ltybc  05.10.2006 08:52 )
                  5(1)
                  Врядли кто-то будет это делать. Ищем конструкции [######]();
                  и под каждой пишем Sheet.Range("").Value = ""; что тут еще скажешь.
                  >> Ответить
                • Развернуть WIndows Report? вы про какую версию говорите? про 5.10.093ю35 или про v.6 Oracle? ( Mushfig  05.10.2006 08:59 )
                  5(1)
                  WIndows Report? вы про какую версию говорите? про 5.10.093ю35 или про v.6 Oracle?
                  >> Ответить
                • Развернуть А как мне эту библиотеку достать ... у меня сборка 5.10.093.25.... в дистрибутиве его нету ..помоему ( Mushfig  05.10.2006 09:36 )
                  5(1)
                  Not specified
                  >> Ответить
                • Развернуть а у Вас сразу он заработал? править не пришлось? ( Тхор А.В.  05.10.2006 11:00 )
                  5(1)
                  • Развернуть Как переводить отчеты на WR ( Seltchenko  05.10.2006 12:09 )
                    4(1)
                    Добрый день!

                    В двух словах я могу рассказать как быстро переводить обычные отчеты на WR.

                    Процедура перевода включает в себя следующие пункты:
                    1) Включить в отчет файлы инструмента (Import "or_rep_h.mac";)
                    2) Создать объект WR-а (var ObjPrint:CMakeReport = CMakeReport(Header)), в качестве параметра можно передать шапку таблицы.
                    3) Все статические строки (например, [### текст #####]) взять в кавычки и передать в функцию AutoScan
                    4) Заменить вывод данных в таблицу на AddPrintCell и AddStr (см. пример)
                    5) Запустить отчет на выполнение

                    P.S. если есть вопросы, спрашивайте, буду отвечать.

                    { Обычный отчет

                    [
                    Отчет
                    #############################################
                    ]( string("за ", Date()):c );
                    [
                    ┌───────────────┬─────────────────────────────┐
                    │ Код │ название │
                    ├───────────────┼─────────────────────────────┤];

                    var i :integer = 0;
                    var Size:integer = 10;
                    while( i < Size )
                    [│###############│#############################│](i, i);
                    if( i+1 == Size )
                    [└───────────────┴─────────────────────────────┘];
                    else
                    [├───────────────┼─────────────────────────────┤];
                    end;
                    i = i + 1;
                    end;
                    }

                    { Отчет переведенный на WR
                    Import "or_rep_h.mac";

                    var Header:string =
                    "┌───────────────┬─────────────────────────────┐\n"+
                    "│ Код │ название │\n"+
                    "├───────────────┼─────────────────────────────┤";
                    var ObjPrint:CMakeReport = CMakeReport(Header);


                    ObjPrint.AutoScan(
                    "[ \n"+
                    " Отчет \n"+
                    " ############################################# \n"+
                    "]", string("за ", Date()), "c:ex_FS(B)" );

                    var i :integer = 0;
                    var Size:integer = 10;
                    while( i < Size )

                    ObjPrint.AddPrintCell(i, 0, 0, "l", REP_ELEM_TABL);
                    ObjPrint.AddPrintCell(i, 0, 0, "c", REP_ELEM_TABL);
                    ObjPrint.AddStr();
                    i = i + 1;
                    end;

                    ObjPrint.SetWinRepOutput(WINREP_OUTPUT_EXCEL, WINREP_FORMAT_XLS); // указать формат вывода
                    ObjPrint.PrintWinRep(); // Заполнение данных
                    ObjPrint.ShowWinRep (); // Вывод отчета
                    }
                    >> Ответить
                  • Развернуть ну почти сразу, ( JVR  05.10.2006 12:12 )
                    5(1)
                    немного подкрутили и заработал. В основном проблемы с 3х-звенкой были.
                    >> Ответить
                    • Развернуть 3-х звенка ( Seltchenko  05.10.2006 14:34 )
                      5(1)
                      Особенности при работе WR-а в 3-х звенке:
                      1) На терминал необходимо скопировать расширение языка (из папки setup\Remote.EXT\ADD\RSL\)
                      2) На терминале должна быть dll-ка cw3220.dll
                      3) После этого, при первом запуске отчета реализованного на WR, на терминале будет создана папка MAC, куда будут скопированы файлы инструмента, и папка TXTFILE, куда будут копироваться (с сервера) отчеты.

                      P.S. Есть одна тонкость: иногда (причина пока не установлена) папки на терминале не создаются, соответственно отчеты не работают. Лечится созданием соответствующих папок вручную.
                      >> Ответить
                      • Развернуть Сделал как вы сказали... но точно таже ошибка компиляции. ( Mushfig  05.10.2006 14:53 )
                        5(1)
                        Сделал как вы сказали... но точно таже ошибка компиляции.
                        >> Ответить
                        • Развернуть trlocale.d32 ( Seltchenko  05.10.2006 14:57 )
                          5(1)
                          А trlocale.d32 на терминал в паку MAC скопировалась?
                          >> Ответить
                          • Развернуть Да...но я их сам вручную создал и скинул туда все mac файлы из директории RS-Bank/MAc/Exchange (у м) ( Mushfig  05.10.2006 15:13 )
                            5(1)
                            Да...но я их сам вручную создал и скинул туда все mac файлы из директории RS-Bank/MAc/Exchange (у меня там все эти маки Windows reporta), При запуске отчета, РСЛ пишет ошибку на файл or_rep_h.mac, когда прописываю ему путь
                            import "..\\Mac\Exchange\\or_rep_h.mac", РСЛ пишет ошибку на import "trlocale.d32"
                            >> Ответить
                            • Развернуть Нельзя так делать!!! ( Seltchenko  05.10.2006 15:38 )
                              5(1)
                              Нельзя так делать!!!
                              Или прописываете для всех импортируемы модулей такой путь (import "..\\Mac\Exchange\\", т.е. "..\\Mac\Exchange\\trlocale.d32"), или сделайте все по человечески. Т.е. так как я описал (в папку терминала скидываем расширение языка, если хотите, то на терминале (в папке терминала) создаете папку MAC и туда скиньте макросы инструмента (но лучше это пункт отдать самому инструменту, он все сделает сам)).
                              >> Ответить
                              • Развернуть Я все понимаю... но если я не прописываю путь ... то дает ошибку ( Mushfig  05.10.2006 16:22 )
                                5(1)
                                Я все понимаю... но если я не прописываю путь, а оставляю import "or_rep_h.mac"... то дает ошибку при компиляции.... пример отчета я бросил в туже папку /mac/Exchange... т.е. чтобы его макросы кинулись в терминалку.. должен же отчет пойти все таки.... Извините за назойливость.... но все таки это очень интересный инструмент... и он очень облегчит нашу работу
                                >> Ответить
                                • Развернуть Давайте по порядку: ( Seltchenko  05.10.2006 17:02 )
                                  5(1)
                                  Давайте по порядку:
                                  1) У Вас должна быть папка терминала, назовем её Term (где находятся выполняемые файлы терминальной части программы)
                                  2) В нее Вы должны скопировать расширение языка RSL.
                                  3) Тестовый пример выкладываете на сервер и запускаете его на выполнение
                                  4) Инструмент, АВТОМАТИЧЕСКИ, создаст папку MAC на терминале и скопирует в него терминальную часть инструмента (весь он не нужен)
                                  5) После чего он создаст отчет на сервере и перешлет его на терминал в папку TXTFILE, которую сам и создаст
                                  6) Всё, отчет получен

                                  P.S. Если Вы повторите все эти действия, то проблем быть не должно.
                                  >> Ответить
                                  • Развернуть проблема останется и не одна.. ( garanin  10.10.2006 10:25 )
                                    5(1)
                                    проблема останется и не одна..
                                    1. файл or_const.mac скопируется в $term\mac; этот файл подключается из or_exl_h.mac, который так же копируется в $term\mac и используется в дальнейшем как на терминале, так и на сервере (то есть or_exl_h.mac идентичен и там и там). но проблема в том, что сервер при строке
                                    IMPORT "or_const.mac"; /* Константы, применяемые в инструменте */
                                    прошвырнётся по всем каталогам поиска макросов и найдёт этот файл, а терминал прошвырнётся только по текущему каталогу $term и этого файла не найдёт. вот и будет вам ошибка компиляции.
                                    2. файлы trlocale.d32 и fileop.d32 скидывается так же в папку $term\mac. то есть проблема будет та же самая, что и в 1 случае (подключаются из макросов or_exl_h.mac и or_trm_h.mac соответственно)
                                    3. файл or_worm.mac скидывается туда же. вот строка из макроса or_rep_h.mac на сервере:
                                    if( CopyFile( NameMacDirServ + "or_worm.mac",
                                                           NameMacDirTerm + "or_worm.mac" ) )
                                    но вызов в дальнейшем этого макроса в дальнейшем происходит следующим образом:
                                    VerInstrTerm = CallRemoteRsl("or_worm.mac", "GetVerInstr",
                                                                          SubStr(VerInstrFileNameTerm, 2) );
                                    то есть опять же проблема с каталогом поиска подключаемых/вызываемых макросов на терминале.

                                    предлагаемое решение: найти параметр term.ini, аналогичный параметру реестру АБС BANK_INI\ОБЩИЕ ПАРАМЕТРЫ\ДИРЕКТОРИИ\MACRODIR. потому что параметр этот распространяется только на двухзвенку и на сервер приложений. терминал (равно как и вызов CallRemoteRSL) этот параметр игнорирует. Поиск по форумам/базам знаний результата не дала.

                                    PS. Проблема с автоматическим созданием каталога Mac на терминале заключается в отсутствии на терминале расширения по работе с файлами и каталогами ;) (rsextt.d32 вроде)
                                    PPS. Простите, что так много. Старался, чтоб как можно понятнее было
                                    >> Ответить
                                    • Развернуть RSEXTT.INI ( Seltchenko  10.10.2006 10:37 )
                                      5(1)
                                      Решение очень простое. На терминале должен быть файл RSEXTT.INI (из расширения языка), в котором указывается путь до макросов
                                      {
                                      ; Каталог макрофайлов
                                      INCPATH = mac
                                      }
                                      тогда сервер "прошвырнётся" по папке $term\mac
                                      >> Ответить
                                      • Развернуть отлично ( garanin  10.10.2006 10:48 )
                                        5(1)
                                        отлично! отлично! а то я запарился подменять CallRemoteRsl на сервере и import на терминалах на нужный путь.
                                        не плохо было бы опубликовать в базу знаний ;)
                                        >> Ответить
                    • Развернуть я в нем вчера как раз ковырялся и пришел к выводу, что там пути для терминалки неправильные. + ( Тхор А.В.  06.10.2006 10:32 )
                      5(1)
                      исправил - заработало
                      >> Ответить