Запрос параметров, настройка и запуск отчета

Код:


gep=sc()
gep.addLine("date1",u"Период с",type="DATE",value=const.__ed1)
gep.addLine("date2",u"по",type="DATE",value=const.__ed2)
gep.setInitSize(400,200)
gep.runForm(u"Оборотная ведомость по счету 006(Бланки)")
if gep.okPressed:
    rep=getReportByName(u"Бланки - оборотная ведомость")
    if rep:
        rep.param['date1']=gep.s.date1
        rep.param['date2']=gep.s.date2
        rep.run()

результат:
Снимок

Запрос и создание подитогов (вызов из SETUP отчета).

mem.repGrouper([u"Клиент:pol:clnname",u"Банк:pol_bnk:pol_bnk",	u"Дата:date:dtoc(date)"],4,u"Платежи","tag123")

Создание подитогов без запроса (вызов из SETUP отчета).

mem.grouper([u"Банк:pol_bnk:pol_bnk",u"Клиент:pol:clnname",u"Дата:date:dtoc(date)"],"*")

Более сложный вариант с изменением секций отчета

gep=sc()
gep.addLine(u"showDet",u"",pic=u"C Показать товар", value="*")
gep.addClose()
gep.addForm(u"Итоги")
totDic={u"Дата":{'field':'delivery_date','show':'[dtoc(delivery_date)]'},
            u"Тип документа":{'field':'doctype','show':u"[DOCTYPE] [gf('SPR_DOCTYPE','DOCTYPE',DOCTYPE,'NAME')]"},
            u"Получатель":{'field':'recipient','show':u"[RECIPIENT] [gf('SPR_CLN','CLN',recipient,'NAME')]"},
            u"Договор":{'field':'delivery_contract_number','show':u'Договор: [delivery_contract_number]'},
            u"Метка":{'field':'tag','show':u"[TAG] [gf('SPR_TAG','TAG',TAG,'NAME')]"},
            u"Подразделение":{'field':'dep','show':u"[DEP] [gf('SPR_DEP','DEP',DEP,'NAME')]"}}
totString=u"Дата;Тип документа;Договор;Подразделение;Метка;Получатель"

gep.addLine(u"tot1",u"Итог 1",len=15,pic=u"L %s" % totString, value=totString.split(";")[0],cods="C")
gep.addLine(u"tot2",u"Итог 2",len=15,pic=u"L %s" % totString, value=totString.split(";")[1],cods="C")
gep.addClose()
gep.addStre()
gep.setInitSize(600,250)
gep.runForm(u"Реестр исходящих")

if gep.okPressed:
    detail=mem.getSections()[0]
    if gep.s.showDet:
        detail.printWhen="1"
    else:
        detail.printWhen="0"
    _order=""
    if gep.w.tot1.checkBox.isChecked():
        _order+="%s," % totDic[gep.s.tot1]['field']
        detail.groupGrids[0]['GHEAD'].setData(1,1,totDic[gep.s.tot1]['show'])
        detail.groupGrids[0]['GFOOT'].setData(1,1,u"<font size=-1>Итого по %s</font>" % totDic[gep.s.tot1]['show'])
    else:
        detail.groupGrids[0]['GHEAD'].printWhen="False"
        detail.groupGrids[0]['GFOOT'].printWhen="False"
    if gep.w.tot2.checkBox.isChecked():
        _order+="%s," % totDic[gep.s.tot2]['field']
        detail.groupGrids[1]['GHEAD'].setData(1,2,totDic[gep.s.tot2]['show'])
        detail.groupGrids[1]['GFOOT'].setData(1,2,u"<font size=-1>Итого по %s</font>" % totDic[gep.s.tot2]['show'])
    else:
        detail.groupGrids[1]['GHEAD'].printWhen="False"
        detail.groupGrids[1]['GFOOT'].printWhen="False"
    _order+="DELIVERY_NUMBER"
    mem.param['_order']=_order
else:
    mem.RETURN=False

Настройка группировок на лету

for x in ["cln","kodpol","grp","vid"]:
	grGrids=rep.getSections()[0].g.__getattr__(x)
	if mem.s.__getattr__("re_show_%s" % x)!="*":
		grGrids['GHEAD'].printWhen="0"
		grGrids['GFOOT'].printWhen="0"
	else:
		if mem.s.re_show_ndoc!="*":
			grGrids['GHEAD'].printWhen="0"
			grGrids['GFOOT'].setFormat(1,1,"")
			grGrids['GFOOT'].setData(1,1,grGrids['GFOOT'].dataLabel[1,1].replace(u"Итого по ",""))

И еще группировки


detail = mem.getSections()[0]
if mem.param.get('zagrp')=='3':
	detail.groupGrids[0]['GHEAD'].printWhen="False"
	detail.groupGrids[0]['GFOOT'].printWhen="False"
	detail.setData(1,1,"[cln],[CLNNAME],[cnt]<br><font size=-2>[prim]</font>")
	mem.param['_group']="clnname, cnt"
elif mem.param.get('zagrp')=='1':
	mem.param['_group']="cnt, clnname"
	detail.setGroupField("cnt",0)
	detail.groupGrids[0]['GHEAD'].setData(1,1,"""[cnt],[qApp.MyApp.myDataBase.gi("spr_cnt","cnt",cnt,"name")]""")
	detail.groupGrids[0]['GFOOT'].setData(1,1,u"Итого по [cnt],[qApp.MyApp.myDataBase.gi('spr_cnt','cnt',cnt,'name')]")
	detail.setData(1,1,"[cln],[CLNNAME]<br><font size=-2>[prim]</font>")
elif mem.param.get('zagrp')=='2':
	mem.param['_group']="clnname,cnt"
	detail.setGroupField("clnname",0)
	detail.groupGrids[0]['GHEAD'].setData(1,1,"[cln],[CLNNAME]")
	detail.groupGrids[0]['GFOOT'].setData(1,1,u"Итого по [cln],[CLNNAME]")
	detail.setData(1,1,"""[cnt],[qApp.MyApp.myDataBase.gi("spr_cnt","cnt",cnt,"name")]<br><font size=-2>[prim]</font>""")