WinReport - вывод на печать отчетной формы

 

WinReport(cReport, cFile, cFileStr, lDesigner) - вывод на печать отчетной формы

Синтаксис     
 
     WinReport(cReport, cFile, cFileStr, lDesigner)
 
Параметры
 
cReport - имя шаблона frf.
cFile - имя файла описания шапки и строк отчета
cFileStr - имя файла строк (пока только один файл dbf, не алиас, и не массив)
lDesigner - режим вывода отчета – дизайнер (.T.) или готовый отчет (.F.).
 
 
Функция выводит на печать подготовленные данные в Win-формате, по шаблону, подготовленному в Win-Дизайнере (FastReport).
 
Описание шапки отчета и структура строк (cFile)
 
Имя поля
Тип
Длина
Описание
VarName
C
не более 254
наименование поля шапки и строк, при использовании в источнике FastReport. Поле обязательно и пустым быть не может.
VarC
C
не более 254
значение для символьных полей, используемых в шапке отчета. Заполняется только для шапки отчета, в записях для строк - пустое. Если символьных полей нет в шапке нет, то поля может не быть.
VarN
N
не более 19.5
значение для числовых полей, используемых в шапке отчета. Заполняется только для шапки отчета, в записях для строк - пустое.Если числовых полей нет, то поля может не быть.
VarD
D
8
значение для полей типа DATE, используемых в шапке отчета. Заполняется только для шапки отчета, в записях для строк - пустое.Если полей типа DATE нет, то поля может не быть.
VarL
L
1
значение для логических полей, используемых в шапке отчета. Заполняется только для шапки отчета, в записях для строк - пустое.Если логических полей нет, то поля может не быть.
FieldName
C
не более 254
наименование поля из файла строк или номер поля в базе данных. Заполнение данного поля обязательно для для опсиания файла строк. При описании шапки оно должно быть пустым. 
 
 
В отчете необходимо использовать имена источников (компонент "Запрос к БЭСТ", поле DSName):
 
• для шапки - BDA.WinRep
• для строк - BDA.WinRepStr
 
ПРИМЕР:
 
PRIVATE aTable, cFile, cName, cFileStruc, cNameStruc, cPriv
 
aTable := {} // массив со структурой временной таблицы
AADD(aTable,{"CODE","C",04,0}) // описание поля код
AADD(aTable,{"NAME","C",20,2}) // описание поля наименование
cFile := "File_tab.dbf" // имя файла с временной таблицей
cName := GlobalTmpPath+cFile // путь к файлу с временной таблицей
DBCREATE(cName, aTable) // создание временного файла 
// открываем временную таблицу с алиасом FILE_TAB
NETUSE("File_tab",cName)
// открываем таблицу PARTNER.DBF с алиасом FILE_PAR
IF NETUSE("FILE_PAR", B6_DBF_PATH+"PARTNER")
   // устанавливаем порядок сортировки по тегу CODE 
   FILE_PAR->(ORDSETFOCUS("CODE"))
   // переходим на первую запись
   FILE_PAR->(DBGOTOP())
   // цикл до конца файла
   WHILE !FILE_PAR->(EOF().OR.BOF())
      // добавляем запись во временную таблицу                     
      IF FILE_TAB->(ADDREC())
         // заполняем поле CODE 
         FILE_TAB->CODE := FILE_PAR->CODE
         // заполняем поле NAME 
         FILE_TAB->NAME := FILE_PAR->SHORTNAME
         // разблокируем запись временной таблицы
         FILE_TAB->(DBUNLOCK())
      ENDIF               
      // переходим на следующую запись таблицы PARTNER.DBF        
      FILE_PAR->(DBSKIP())
   ENDDO
   // закрываем таблицу PARTNER.DBF 
   FILE_PAR->(DBCLOSEAREA())
ENDIF
// закрываем временную таблицу
FILE_TAB->(DBCLOSEAREA())
// массив таблицу со структурой источников
aTable := {}
// наименование поля источника
AADD(aTable,{"VarName"  ,"C",12,0})
// текстовое значение для источника-шапки документа
AADD(aTable,{"VarC"     ,"C",50,0})
// числовое значение для источника-шапки документа
AADD(aTable,{"VarN"     ,"N",19,2})
// значение типа дата для источника-шапки документа
AADD(aTable,{"VarD"     ,"D",08,0})
// логическое значение для источника-шапки документа
AADD(aTable,{"VarL"     ,"L",01,0})
// имя поля временной таблицы для источника-строки документа
AADD(aTable,{"FieldName","C",25,0})
// имя файла со структурой источников
cFileStruc := "File_str.dbf"
// путь к файлу со структурой источников
cNameStruc := GlobalTmpPath+cFileStruc
// создание временного файла со структурой источников
DBCREATE(cNameStruc, aTable)
// открываем таблицу со структурой источников с алиасом FILE_STR
NETUSE("File_str",cNameStruc)
// добавляем строку
IF FILE_STR->(ADDREC())
   // имя поля источника в источнике шапка
   FILE_STR->VARNAME  := "SH"
   // значение поля источника в источнике шапка
   FILE_STR->VarN     := 1
   // разблокируем запись
   FILE_STR->(DBUNLOCK())
ENDIF
// добавляем строку
IF FILE_STR->(ADDREC())
   // имя поля источника в источнике строки
   FILE_STR->VARNAME  := "CODE"
   // имя поля временной таблицы для значения в источнике строки
   FILE_STR->FIELDNAME:= "CODE"
   // разблокируем запись
   FILE_STR->(DBUNLOCK())
ENDIF
// добавляем строку
IF FILE_STR->(ADDREC())
   // имя поля источника в источнике строки
   FILE_STR->VARNAME  := "NAME"
   // имя поля временной таблицы для значения в источнике строки
   FILE_STR->FIELDNAME:= "NAME"
   // разблокируем запись
   FILE_STR->(DBUNLOCK())
ENDIF
// закрываем таблицу со структурой источников
FILE_STR->(DBCLOSEAREA())
 
// загружаем Fast-Report
// "Partner.frf" - загружаемый файл отчетов 
// cNameStruc    - имя таблицы со структурой источников
// cName         - имя временной таблицы
// .T.           - .T. - загрузить редактор, .F. - выполнить отчет
// Для обращения к источнику шапка в FR необходимо ввести BDA.WinRep
// Для обращения к источнику строки в FR необходимо ввести BDA.WinRepStr
WINREPORT("Partner.frf",cNameStruc, cName,.T.)