Добавление пункта в меню Действия

При программном вызове формы

def formPrn(mem):
	def realDo():
		if not mem.heap.browser.t.eof():
			rep=getReportByName(mem.heap.browser.t.r.report)
			if rep:
				rep.param['docsuid']=mem.t.r.uid
				rep.run()
		return realDo
		
mem.heap.browser=mem.getSc("spr_doc_frm", u"doc='%s'" % mem.t.r.doc)
mem.heap.browser.addAction(u"Выполнить",formPrn(mem), QIcon("images/print.png"), u"Выполнить", "Enter")
mem.heap.browser.runBrowse()

или

rs=mem.getSc("rec", filter=u"""rec_number like '%s%%' and 
                                    rec_number not in (select rec_number from purchase) and status=4 and date>='%s'
                                """ % (gi("spr_cln","cln",mem.s.cln,"unp"),mem.s.date))
def doSelect(mem=mem,rs=rs):
    def realDo(PK):
        mem.s.rec_number=rs.t.r.rec_number
        mem.w.rec_number.setEnabled(True)
        mem.w.rec_number.checkBox.setChecked(True)
    return realDo
rs.addAction(u"Выбор",doSelect(), QIcon("images/print.png"), u"Выполнить", "Enter")
rs.runBrowse()

При создании экрана (_e_action — модуль вызывается перед созданием очередного пункта меню)

if "mem" in locals() and "scname" in dir(mem):#убедимся, что мы в нужном месте
	if mem.scname=="plist":
		if u"Витрина" in text:
			def runMCSReport(mem):#
				def realDo():
					mem #не удалять - магия!
					zzMess(mem.title)
					###
				return realDo
			mem.heap.runMCSReport=runMCSReport
			mem.addEAction(u"-")#разделитель
			mem.addEAction(u"МЧС",mem.heap.runMCSReport(mem),"images/Shopping cart",mess=u"отчет-работа")
			"""параметры метода addAction
					addAction(self, text, proc=None, icon="", mess="",key="", dtl_sc="",
                        mst_fld="", dtl_fld="", dtl_noshow="", dtl_copymode="", not_eof="", restore_row="", opt="",
                        dtl_sc_object=None)
			"""

При создании экрана (_e_action — модуль вызывается перед созданием очередного пункта меню)
с добавлением подчиненной таблицы

if "mem" in locals() and "scname" in dir(mem):#убедимся, что мы в нужном месте
	if mem.scname=="spr_tsp":
		if u"События" in text:
			def runLimit(mem):
				def realDo():
					mem.runSc("_tsp_lim",filter="tsp=%s" % mem.t.r.tsp)
				return realDo
			mem.heap.runLimit=runLimit(mem)
			mem.addEAction(u"Лимиты", proc=mem.heap.runLimit, icon="", mess="",key="", dtl_sc="_tsp_lim",
                        mst_fld="tsp", dtl_fld="tsp", dtl_noshow="", dtl_copymode="1", not_eof="1", restore_row="1", opt="V H H",
                        dtl_sc_object=None)

При создании экрана (_e_browse — модуль вызывается после создания всего меню)

if "mem" in locals() and "scname" in dir(mem):#убедимся, что мы в нужном месте
	if mem.scname=="lmar":
		def getBV(mem):#здесь код для импорта выписки
			def realDo():
				###
				mem #не удалять - магия!
				runProg('_igeo',globals(),locals())
				###
			return realDo
		mem.heap.getBV=getBV
		mem.addAction(u"-")#разделитель
		mem.addAction(u"Импорт маршрута",mem.heap.getBV(mem),"images/Shopping cart",mess=u"Импорт данных из спутниковой системы")
		"""параметры метода addAction
				addAction(self, text, proc=None, icon="", mess="",key="", dtl_sc="",
                        mst_fld="", dtl_fld="", dtl_noshow="", dtl_copymode="", not_eof="", restore_row="", opt="",
                        dtl_sc_object=None)		
		"""

Добавление автоматически отображаемой подчиненной таблицы

if "mem" in locals() and "scname" in dir(mem):#убедимся, что мы в нужном месте
    if mem.scname=="spr_tmc":
        def mo(mem):
            def realDo():
                if mem.t.rowCount()>0:
                    mem.runSc("spr_tmc_nrm",filter=u"izd='%s'" % mem.t.r.tmc)
            return realDo
        mem.addAction(u"Нормы", mo(mem),dtl_sc="spr_tmc_nrm",mst_fld="tmc", dtl_fld="izd")