Код:
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>""")