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;>%- [*^topic`:`/`/RepGen`/srcdoc`/RepGen`$en`-us^1 `[en`]][*1  ][*^topic`:`/`/RepGen`/srcdoc`/RepGen`$ru`-ru^1 `[
ru`]]&]
[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; Справочник [^topic`:`/`/RepGen`/src`/RepGen`$en`-us`#RepGen`:`:class^ з
десь]&]
[s0; &]
[s0; История изменений [^topic`:`/`/RepGen`/srcdoc`/changelog`$en`-us^ з
десь]&]
[s0; &]
[s0; Эта статья на [^topic`:`/`/RepGen`/srcdoc`/RepGen`$en`-us^ Англий
ском]]