אודות תהליכי Init ו- After_Showing

אודות תהליך ה- Init

Init
הוא אירוע תסריט שמופעל בשלב האתחול של המודול.
מטרתו לאפשר למתכנת להכין את מבנה העבודה של הסקריפט לפני שהממשק מסיים את האתחול שלו.
לדוגמה: יצירת שדות בטבלאות פרטיות, הכנת משתנים, הגדרת טבלאות עזר וקביעת הגדרות ראשוניות.
חשוב לדעת: לאחר
Init
המערכת עשויה לבצע
GlobalInit
, ולכן לא מומלץ להשתמש ב-
Init
לקביעת ערכים סופיים בשדות שמוצגים למשתמש.

משמעות הדבר היא, שה- init יתמוך בבנייה והגדרה של אובייקטים ותצורתם (כגון שדות) אך לא ערכי שדות, כי הם עוברים תהליך איפוס!

סדר האתחול של מודול תסריט

כאשר מודול, חלון או דוח נפתח בהייפר, המערכת מבצעת מספר שלבי אתחול לפני שהמשתמש מתחיל לעבוד בפועל.
חשוב להבין את סדר השלבים, כדי לדעת היכן נכון לכתוב קוד בתסריט ומה צפוי לקרות לאחר מכן.

שלב מה קורה בו? מה חשוב למתכנת?
בניית המודול הייפר יוצרת את הרכיבים של המודול: טבלאות, גרידים, אזורי שדות, כפתורים, לשוניות ורכיבי עזר נוספים.
במודולים דינמיים הרכיבים נוצרים לפי הגדרות הדף שנשמרו במערכת.
בשלב זה עדיין לא רצים אירועי התסריט של המתכנת.
Init
של התסריט
זהו אירוע שהמתכנת יכול לכתוב בקוד התסריט. הוא רץ לאחר שהמודול חובר למערכת התסריטים, ולפני שהממשק מסיים את האתחול הסופי שלו. מתאים להגדרת מבנה והכנות ראשוניות: יצירת שדות בטבלאות פרטיות, הכנת משתנים, קביעת הגדרות, הכנת טבלאות עזר וכדומה.
GlobalInit
זהו אתחול פנימי של רכיבי הייפר. המערכת מרעננת את הטבלאות, הגרידים, אזורי השדות והכפתורים לפי ההגדרות שנקבעו עד אותו רגע. זה אינו קוד שהתסריט כותב, אלא פעולה של המערכת. לכן ערכים מסוימים שהושמו לפני כן עלולים להתאפס או להיבנות מחדש.
הרשאות והתאמות משתמש לאחר שהרכיבים קיימים ומאותחלים, המערכת מחברת אותם למנגנוני הרשאות, פריסה והתאמות משתמש. אין לעקוף הרשאות משתמש מתוך התסריט. אם נדרש לשנות נראות או מצב כפתורים, יש לעשות זאת בזהירות ובשלב המתאים.

מתי נכון להשתמש ב- Init?

Init
מתאים לקוד שמכין את המודול לעבודה.
לדוגמה:
  • הגדרת שדות בטבלה פרטית.
  • יצירת מבנה נתונים שהתסריט ישתמש בו בהמשך.
  • קביעת ערכי הגדרה פנימיים.
  • הכנת טבלאות עזר לפני שהן מוצגות בממשק.
חשוב: מאחר שלאחר
Init
המערכת עשויה לבצע
GlobalInit
, לא מומלץ להשתמש ב-
Init
להשמת ערכים סופיים בשדות המוצגים למשתמש. פעולות כאלה מתאימות בדרך כלל ל-
After_Showing
.

מהו GlobalInit?

GlobalInit
הוא תהליך פנימי של הייפר, ולא אירוע שהתסריט מפעיל ישירות.
בשלב זה רכיבי הממשק מתעדכנים לפי ההגדרות שלהם: טבלאות מקבלות את מבנה השדות, גרידים מתחברים לטבלאות, אזורי שדות נבנים מחדש, וכפתורים מקבלים את מצבם הראשוני.
לכן סדר העבודה הנכון הוא: תחילה להגדיר מבנה והכנות ב-
Init
, ורק לאחר שהמערכת מסיימת את האתחול, לבצע התאמות תצוגה וערכי ברירת מחדל ב-
After_Showing
.

כלל אצבע למתכנת:
אם הקוד שלך מגדיר את מבנה העבודה של המודול - כתוב אותו ב-
Init
.
אם הקוד שלך משנה את מה שהמשתמש רואה אחרי שהמסך כבר נפתח - כתוב אותו ב-
After_Showing
.

אודות תהליך ה- After Showing

After_Showing הוא אירוע המוזנק ומתרחש לאחר ה- Init ומיד לאחר שהמסך/חלון והאובייקטים הכלולים בו מוצגים לאחר שהמסך כבר מוצג או לאחר רענון המודול.
באירוע זה המתכנת יבצע "התאמות אחרונות" לאובייקטים בהתחשב בכך שהמודול כבר מחובר, הרכיבים כבר קיימים, הטבלאות/גרידים עברו אתחול, והמשתמש כבר נמצא מול המסך.

After_Showing הוא המקום לבצע פעולות שתלויות במצב הסופי של הממשק כגון:
  • השמת ערכים לשדות בממשק (ערכי ברירת מחדל).
  • בחירת לשונית התחלתית לפי מצב הנתונים.
  • הצגת הודעה למשתמש אחרי שהמסך כבר פתוח.
  • שינוי כותרות, סטטוסים, צבעים, מצבי כפתורים או נראות רכיבים.
  • הפעלת חישובים ראשוניים או רענון תצוגה לאחר שהטבלאות והפקדים כבר עברו GlobalInit.

דגשים לסיכום After_Showing

- לא מומלץ לבצע בו פעולות בלתי הפיכות כמו יצירת מסמך, שמירת טרנזקציה, שליחת הודעה או מחיקת נתונים, אלא אם זו הכוונה הברורה.
- פעולות כבדות או איטיות עלולות לעכב את שחרור הממשק/המסך למשתמש.
- אם הפעולה מגדירה מבנה בסיסי שהמסך צריך כדי להיבנות נכון, היא כנראה שייכת ל־Init, לא ל־After_Showing.