На Харборе, можно решить например, так...
Шаблон можете сделать любой, но если желаете - вышлю свой по запросу...
//Скрипт выводу на печать в FastReport выбранных строк прайс-листа
Function Main
#include "box.ch"
#include "achoice.ch"
#include "inkey.ch"
#include "dbedit.ch"
Private i, k, ch_p, str, nProcess
Private cFile, cFileStr, aStru:={}
Private aSet, aSetKey
AltD()
aSet:=SaveSet()
aSetKey:=SaveSetKey()
If nNumber=1
// Прописываем имена-пути для файлов источников и шаблона отчета
aGlobVars[1]:= 'real\template\ch_price.frf'
r_n := SubStr(Time(),1,2)+SubStr(Time(),4,2)+SubStr(Time(),7,2)
aGlobVars[2]:= LoadPath()+'tmp\fo'+r_n+'.dbf'
aGlobVars[3]:= LoadPath()+'tmp\rt'+r_n+'.dbf'
aGlobVars[4]:= .F.
If(File(aGlobVars[2]),fErase(aGlobVars[2]),)
If(File(aGlobVars[3]),fErase(aGlobVars[3]),)
aStru := {}
aAdd(aStru,{"VarName" ,"C",32,0})
aAdd(aStru,{"VarC" ,"C",10,0})
aAdd(aStru,{"VarN" ,"N",12,2})
aAdd(aStru,{"VarD" ,"D",8 ,0})
aAdd(aStru,{"FieldName","C",19,0})
dbCreate(aGlobVars[2],aStru)
NetUse("File_op",aGlobVars[2])
FILE_OP->(AddRec())
FILE_OP->VARNAME :='Дата_прайс_листа'
FILE_OP->VARD := Date()
FILE_OP->(DbUnlock())
FILE_OP->(AddRec())
FILE_OP->VARNAME :='Номер_документа'
FILE_OP->VARC := '_____________'
FILE_OP->(DbUnlock())
FILE_OP->(AddRec())
FILE_OP->VARNAME :='Группа'
FILE_OP->FIELDNAME :='rt'+r_n+'.Grup'
FILE_OP->(DbUnlock())
FILE_OP->(AddRec())
FILE_OP->VARNAME :='Ном_номер'
FILE_OP->FIELDNAME :='rt'+r_n+'.NNum'
FILE_OP->(DbUnlock())
FILE_OP->(AddRec())
FILE_OP->VARNAME :='Партия'
FILE_OP->FIELDNAME :='rt'+r_n+'.Part'
FILE_OP->(DbUnlock())
FILE_OP->(AddRec())
FILE_OP->VARNAME :='Наименование_ТМЦ'
FILE_OP->FIELDNAME :='rt'+r_n+'.Name'
FILE_OP->(DbUnlock())
FILE_OP->(AddRec())
FILE_OP->VARNAME :='Цена_1'
FILE_OP->FIELDNAME :='rt'+r_n+'.Cena_1'
FILE_OP->(DbUnlock())
FILE_OP->(AddRec())
FILE_OP->VARNAME :='Цена_2'
FILE_OP->FIELDNAME :='rt'+r_n+'.Cena_2'
FILE_OP->(DbUnlock())
FILE_OP->(AddRec())
FILE_OP->VARNAME :='Цена_3'
FILE_OP->FIELDNAME :='rt'+r_n+'.Cena_3'
FILE_OP->(DbUnlock())
FILE_OP->(AddRec())
FILE_OP->VARNAME :='Цена_4'
FILE_OP->FIELDNAME :='rt'+r_n+'.Cena_4'
FILE_OP->(DbUnlock())
aStru := {}
aAdd(aStru,{"Grup" ,"C",5 ,0}) // группа
aAdd(aStru,{"NNum" ,"C",13 ,0}) // номенклатурный номер
aAdd(aStru,{"Part" ,"C",5 ,0}) // партия
aAdd(aStru,{"Name" ,"C",60 ,0}) // наименование ТМЦ
aAdd(aStru,{"Cena_1","N",19 ,8}) // цена первая из прайс-листа
aAdd(aStru,{"Cena_2","N",19 ,8}) // цена вторая из прайс-листа
aAdd(aStru,{"Cena_3","N",19 ,8}) // цена третья из прайс-листа
aAdd(aStru,{"Cena_4","N",19 ,8}) // цена четвертая из прайс-листа
dbCreate(aGlobVars[3],aStru)
NetUse("RTmp",aGlobVars[3])
EndIf
RTMP->(AddRec())
RTMP->(RecLock())
If !Empty(SPR_PART->CODE)
RTMP->Grup :=SPR_PART->GRUP
RTMP->NNum :=SPR_PART->NNUM
RTMP->Part :=SPR_PART->CODE
RTMP->Name :=MLABEL->NAME
RTMP->Cena_1:=SPR_PART->OCENA1
RTMP->Cena_2:=SPR_PART->OCENA2
RTMP->Cena_3:=SPR_PART->OCENA3
RTMP->Cena_4:=SPR_PART->OCENA4
Else
RTMP->Grup :=MLABEL->GRUP
RTMP->NNum :=MLABEL->NNUM
RTMP->Name :=MLABEL->NAME
RTMP->Cena_1:=MLABEL->OCENA1
RTMP->Cena_2:=MLABEL->OCENA2
RTMP->Cena_3:=MLABEL->OCENA3
RTMP->Cena_4:=MLABEL->OCENA4
EndIf
RTMP->(f_DbUnLock())
If nNumber=nKolStrok
WinReport(aGlobVars[1],aGlobVars[2],aGlobVars[3],aGlobVars[4])
FILE_OP->(dbCloseArea())
RTMP ->(dbCloseArea())
If(File(aGlobVars[2]),fErase(aGlobVars[2]),)
If(File(aGlobVars[3]),fErase(aGlobVars[3]),)
EndIf
RestSetKey(aSetKey)
RestSet(aSet)
Return NIL