Табличный отчет — динамическая настройка

Раздел Setup

ao=sc()
ao.addForm()
ao.addHorz(u"Период")
ao.addLine("ed1",u"с",type="DATE",value=today())
ao.addLine("ed2",u"с",type="DATE",value=today())
ao.addStre()
ao.addClose()
ao.addLine("doc",u"Документ",len=9,type="INT",cods="C")
ao.addLine("place",u"База",len=9,type="INT",pic=u"R Западная;Передовая",cods="C")
totlist=u"L Нет;Клиент;Товар;Склад;База;Дата;Цена;Партия;Наценка/скидка поставщика;№ ТТН;Документ"
ao.addLine("tot1","Итог 1",len=15,pic=totlist,value=u"Клиент")
ao.addLine("tot2","Итог 2",len=15,pic=totlist)
ao.addLine("tot3","Итог 3",len=15,pic=totlist)
ao.addLine("tot4","Итог 4",len=15,pic=totlist)

ao.runForm(u"Отчет по движению товара")
if ao.okPressed:
	mem.param['ed1']=ao.s.ed1
	mem.param['ed2']=ao.s.ed2
	mem.gor_group=""
	mem.gor_group_link=''
	mem.gor_group_header=u""
	mem.param['_whr']=" "
	tot=[ao.s.tot1,ao.s.tot2,ao.s.tot3,ao.s.tot4]
	for x in tot:
		if x==u"Клиент":
			mem.gor_group+="klient,"
			mem.gor_group_link+='gi("spr_adr","klient",klient),'
		elif x==u"Товар":
			mem.gor_group+="mat,"
			mem.gor_group_link+='gi("spr_mat","mat",mat),'
		elif x==u"Склад":
			mem.gor_group+="mol,"
			mem.gor_group_link+=','
		elif x==u"База":
			mem.gor_group+="place,"
			mem.gor_group_link+=','
		elif x==u"Дата":
			mem.gor_group+="date,"
			mem.gor_group_link+=','
		elif x==u"Цена":
			mem.gor_group+="cena,"
			mem.gor_group_link+=','
		elif x==u"Партия":
			mem.gor_group+="part,"
			mem.gor_group_link+=','
		elif x==u"Наценка/скидка поставщика":
			mem.gor_group+="nac2,"
			mem.gor_group_link+=','
		elif x==u"№ ТТН":
			mem.gor_group+="n_docs,"
			mem.gor_group_link+=','
		elif x==u"Документ":
			mem.gor_group+="doc,"
			mem.gor_group_link+=','
		if x!=u"Нет":
			mem.gor_group_header+=x+"<br>"
	if not u"Товар" in tot:
		mem.gor_group+="tov_name,"
		mem.gor_group_link+=','
	mem.gor_group=mem.gor_group[:-1]
	mem.gor_group_link=mem.gor_group_link[:-1]
	if ao.w.doc.checkBox.text()=="*": mem.param['_whr']+=" and doc=%s" % ao.s.doc
	if ao.w.place.checkBox.text()=="*": mem.param['_whr']+=" and place=%s" % ao.s.place

#	mem.c.nkart['cnoprint']="*"
else:
	mem.RETURN=False

Для настройки группировок столбца используется свойство:

mem.cols[номер столбца-1]['ver_group']="prb_name,obj_name"

или по имени столбца

mem.c.имя_столбца['ver_group']="prb_name,obj_name"

удаление всех колонок из отчетов

 mem.cols=[] 

 

Добавление колонки в отчет

mem.addCol(uid="c1",\
	t_data="summa", \
	t_table=":za", \
	t_header="summa", \
	t_align="9", \
	t_pic="", \
	cwidth="2", \
	cdec="2", \
	ctype="NUM",ctotal="SUM",\
	ver_group="cr_cnt",  \
	ver_group_link="",  \
	ver_group_tot="",  \
	where = "db_cnt='51/'")