topic "RepGen - Short description and Tutorial"; [ $$0,0#00000000000000000000000000000000:Default] [i448;a25;kKO9; $$1,0#37138531426314131252341829483380:structitem] [l288;2 $$2,0#27521748481378242620020725143825:desc] [0 $$3,0#96390100711032703541132217272105:end] [{_}%EN-US [ {{10000f0;t/25b/25@(113.42.0) [s0;%- [*@2;4 RepGen `- Очень простой генератор отчетов (Короткое описание)]]}}&] [s0;%- &] [s1;%- [C class_][*C RepGen]&] [s2; [3 RepGen `- Class Простого генератора отчетов]&] [s0; &] [s0;%- &] [ {{10000F(128)G(128)@1 [s0;%- [* Короткое описание].]}}&] [s0;2%- &] [s0; [2 Это работает очень просто:]&] [s0; [*2 RepGen][2 записывает QTF отчет по QTF шаблону.]&] [s0; [2 Если RepGen встречает ##`-переменную в шаблоне, то он заменяет ее на реальное значение.]&] [s0;2 &] [s0; [2 Работа ][*2 RepGen ][2 управляется несколькими ][*2 CallBack`'][2 ами, которые свои для каждого типа отчета. ]&] [s0;2 &] [s0; [2 Для каждого типа отчета могут быть ][*/2 несколько различных][2 шаблонов, из которых Ваши пользователи могут выбрать до выполнения отчета.]&] [s3;2%- &] [ {{10000F(128)G(128)@1 [s0;%- [* Tutorial]]}}&] [s0;2%- &] [s0; Немного подробнее.&] [s0; &] [s0; [* RepGen] может создавать отчет основанный на qtf`-шаблонах. Другими словами, для создания финального отчета типа этого:&] [s0; &] [ {{10000@1 [s0;= AddressBookXML2`+RepGen&] [s0;= Test report&] [s0;= [2 (Use UWord for Edit)]&] [s0;= &] [s0;= `"Simple table`"&] [ {{2202:1959:2342:3497h1;b4/15 [s0;= [*+117 Name]] :: [s0;= [*+117 Surname]] :: [s0;= [*+117 Address]] :: [s0;= [*+117 E`-mail]] ::b0/15 [s0;= Petr] :: [s0;= Petrov] :: [s0;= Moscow] :: [s0;= petr`@petrovich.ru ] :: [s0;= Ivan] :: [s0;= Ivanov] :: [s0;= Ekaterinburg] :: [s0;= ivan`@ivanovich.ru ] :: [s0;= Sidor] :: [s0;= Sidorov] :: [s0;= Kazan] :: [s0;= sidor`@sidorov.ru ] ::t4/15-3 [s0;> TOTAL [*/ 3] ADDRESSES] ::t0/15-2 [s0;%- ] ::-1 [s0;%- ] :: [s0;%- ]}}&] [s0;= &] [s0; ]}}&] [s0; &] [s0; [* Шаблон] для этого отчета должен быть как этот:&] [s0; &] [ {{10000@1 [s0;= AddressBookXML2`+RepGen&] [s0;= Test report&] [s0;= [2 (Use UWord for Edit)]&] [s0;= &] [s0;= `"Simple table`"&] [ {{2500:2500:2500:2500h1;b4/15 [s0;= [*+117 Name]] :: [s0;= [*+117 Surname]] :: [s0;= [*+117 Address]] :: [s0;= [*+117 E`-mail]] ::b0/15 [s0;= ##BT ##NAME] :: [s0;= ##SURNAME] :: [s0;= ##ADDRESS] :: [s0;= ##EMAIL ##ET] ::t4/15-3 [s0;> TOTAL [*/ ##TOTAL] ADDRESSES] ::t0/15-2 [s0;%- ] ::-1 [s0;%- ] :: [s0;%- ]}}&] [s0;= &] [s0; ]}}&] [s0; &] [s0; Для работы с этим шаблоном надо объявить объект типа [* RepGen].&] [s0; &] [s0; Затем Вам нужно создать несколько[* callback`'ов], которые будут задавать логику этого отчета и будут производить подстановку реальных данных.&] [s0; &] [s0; Дополнительно Вы должны сделать [* GUI интерфейс выбора правильного шаблона] для этого отчета. Но это уже другая история, В конечном счете в результате выбора шаблона объект RepGen должен получить содержимое qtf`-шаблона.&] [s0; &] [s0; &] [s0; Эта статья на [^topic`:`/`/RepGen`/srcdoc`/RepGen`$en`-us^ Англий ском]]