[Do...] Posted October 28 Share Posted October 28 Hallo zusammen, ich möchte sicherstellen, dass im Fall von unberechneten Elementen auf den aktuell sichtbaren Reportseiten, die mit gom.script.report.export_pdf exportiert werden, der OK-Button im Dialog deaktiviert oder ausgeblendet wird. Meine Frage dazu: Wie kann ich per Skript abfragen, ob sich unberechnete Elemente auf den Reportseiten befinden, die tatsächlich exportiert werden? Es sollen ausschließlich die sichtbaren Reportseiten geprüft werden, die im PDF-Export berücksichtigt werden. Alle anderen im Projekt enthaltenen Reportseiten sollen nicht Teil dieser Prüfung sein. Vielen Dank vorab für eure Unterstützung! import gom # Dialog erstellen DIALOG=gom.script.sys.create_user_defined_dialog (dialog={ "content": [ [ { "columns": 1, "default_font_family": "", "default_font_size": 0, "name": "text", "rows": 1, "text": { "id": "", "text": "<html><p>PDF-Export</p></html>", "translatable": True }, "tooltip": { "id": "", "text": "", "translatable": True }, "type": "display::text", "wordwrap": False } ] ], "control": { "id": "OkCancel" }, "embedding": "always_toplevel", "position": "automatic", "size": { "height": 169, "width": 280 }, "sizemode": "automatic", "style": "", "title": { "id": "", "text": "Export starten", "translatable": True } }) # Event-Handler zur Prüfung unberechneter Elemente def dialog_event_handler(widget): #TEST unberechnete Elemente uncomputed = gom.script.report.get_uncomputed_elements() if uncomputed: DIALOG.control.ok.enabled = False DIALOG.control.status = "Nicht alle Elemente sind berechnet – Export nicht möglich" else: DIALOG.control.ok.enabled = True DIALOG.control.status = "" # Handler registrieren DIALOG.handler = dialog_event_handler # Initiale Prüfung direkt beim Öffnen dialog_event_handler("initialize") # Dialog anzeigen und Ergebnis auswerten RESULT = gom.script.sys.show_user_defined_dialog(dialog=DIALOG) # Wenn OK gedrückt wurde, Export starten if RESULT.control == 'ok': gom.script.report.export_pdf( export_all_reports=True, file='C:/Temp/Test.pdf', jpeg_quality_in_percent=90, max_dpi=150, pdfa=True ) Link to comment Share on other sites More sharing options...
[Ma...] Posted October 28 Share Posted October 28 Hallo Dominik, mit gom.app.project.reports['report'].pages['page 1'].all_elements_in_report bekommst du eine Liste aller Elemente die auf 'page 1' von 'report' verwendet werden. Dann kannst du für jedes Element den 'computation_status' prüfen. Viele Grüße, Matthias Link to comment Share on other sites More sharing options...
[Do...] Posted Thursday at 09:01 AM Author Share Posted Thursday at 09:01 AM Danke für den Command und den Denkanstoß. Nun wird auf allen Reportseiten im Projekt mit computation_status der Status geprüft. Die Prüfung dauert aktuell bis zu 5 Minuten, da jedes einzelne Element auf allen Reportseiten durchlaufen wird – auch auf Seiten, die über einen Tag ausgeblendet sind. Wie kann ich nur die Elemente der aktuell sichtbar geschalteten Reportseiten prüfen? Wie beim Befehl gom.script.report.export_pdf, bei dem nur diese exportiert werden, wenn export_all_report=True ist. Besteht die Möglichkeit, den Status vorhanden Status der Reportseite abzugreifen? Der Status zu unberechneten Elementen wird unter „Berechnung“ angezeigt, bei der jeweiligen Reportseite unter Eigenschaften im Reiter Informationen. Das würde die Prüfung deutlich beschleunigen. Befehl Export PDF: gom.script.report.export_pdf ( export_all_reports=True, file='C:/Temp/Test.pdf', jpeg_quality_in_percent=90, max_dpi=150, pdfa=False) Aktueller Code für die Prüfung: import gom # Alle Reports im Projekt durchgehen for report in gom.app.project.reports: print(f"Report: {report.name}") # Alle Seiten im Report durchgehen for page in report.pages: print(f" Seite: {page.name}") # Alle Elemente auf der Seite durchgehen for element in page.all_elements_in_report: try: status = element.computation_status print(f" Element: {element.name}, Status: {status}") except AttributeError: print(f" Element: {element.name} hat keinen computation_status") Link to comment Share on other sites More sharing options...
[Ju...] Posted yesterday at 02:43 PM Share Posted yesterday at 02:43 PM Hallo Dominik, probier das mal: Wenn auf Reportseiten ohne Tags nicht berechnete Elemente sind, dann gibt es einen Abbruch: for report in gom.ElementSelection ({'category': ['key', 'elements', 'explorer_category', 'reports']}): if report.computation_status == 'partly_not_computed' and report.tags == []: print('wegen unberechneter Elemente auf', report.name, 'kein Export erlaubt') break Viele Grüße Julian Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in