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

למה כל כך חשוב להבין את סדר האתחול?

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

לכם, כמתכנתים, יש שתי נקודות התערבות עיקריות בתהליך הפתיחה בו תוכלו להריץ קוד משלכם:
הפרוצדורה
Init
והאירוע
Showing
(או
After_Showing
בחלק מהמודולים).

הבנה מדויקת של מתי כל אירוע קורה, תחסוך לכם הרבה תסכול ושעות של חיפוש באגים
(כמו למשל השאלה הנפוצה: "למה הערך שכתבתי בקוד נעלם ברגע שהמסך נפתח?").

כלל אצבע למתכנתים:
אם הקוד שלכם בונה את ה"שלד" או מכין מבנה עבודה פנימי (מאחורי הקלעים) - מקומו ב-
Init
.
אם הקוד מתעסק בעיצוב, שינוי כותרות או הכנסת נתונים שהמשתמש צריך לראות מיד עם פתיחת המסך - מקומו ב-
Showing
.

מחזור החיים של עליית מסך

כדי לכתוב קוד שעובד נכון, בואו נסתכל על השלבים שהמערכת עוברת מהרגע שהמשתמש לחץ על פתיחת המסך
ועד שהוא רואה אותו מול העיניים:

שלב מי אחראי? מה קורה כאן? (ומה חשוב לדעת)
1. יצירת המודול המערכת המערכת יוצרת את המסך עצמו, את הטבלאות, הלשוניות והכפתורים הריקים.
בשלב זה הממשק עוד לא מחובר סופית לנתונים, ואתם כמתכנתים עוד לא מתערבים.
2. אירוע
Init
אתם (התסריט) התחנה הראשונה שלכם! כאן אתם מכינים את הקרקע: מוסיפים שדות וירטואליים שחסרים,
מגדירים רשימות בחירה בסיסיות, ויוצרים טבלאות זיכרון זמניות לשימוש עתידי.
שימו לב: זה לא הזמן להכניס נתונים לתוך שדות שהמשתמש יראה.
3. רענון פנימי וחיבור נתונים המערכת המערכת לוקחת את התוספות שהגדרתם בשלב הקודם ו"מציירת" את המסך באופן סופי.
היא מרעננת טבלאות ומאפסת נתונים מהזיכרון לתצוגה.
אזהרה: פעולה זו דורסת ומאפסת נתונים שאולי ניסיתם לשתול מוקדם מדי (בשלב ה-Init)!
4. אירוע
Showing
אתם (התסריט) המסך כמעט ועולה לאוויר והכל כבר יציב ומוכן.
זה הזמן שלכם לשתול נתונים אמיתיים בשדות (למשל תאריך של היום), להציג הודעות קופצות,
לצבוע שדות לפי תנאים ולבחור איזו לשונית תוצג למשתמש.

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

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

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

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

מתי נשתמש ב- Showing? (שלב ההצגה)

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

דוגמאות קלאסיות לשימוש ב- Showing:
  • ערכי ברירת מחדל: השמת תאריך נוכחי בשדה "תאריך ביצוע", או הזנת שם המשתמש הנוכחי לשדה "אחראי".
  • עיצוב ותצוגה: צביעת כותרות, או הסתרת כפתורים שאינם רלוונטיים להרשאות המשתמש הנוכחי.
  • חווית משתמש (UX): מעבר אוטומטי ללשונית מסוימת בהתאם לסוג המסמך שנפתח.
  • הודעות: הקפצת הודעת אזהרה או הודעת "ברוכים הבאים" ממש לפני שהלקוח מתחיל לעבוד.

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

איך זה משפיע על כתיבת הקוד שלכם ביומיום?

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

"האם הקוד הזה מגדיר תשתית נסתרת, או שהוא נועד לעיניים של המשתמש?"

Init
Showing
קוד של תשתיות והכנה.
"אני יוצר עכשיו שדה חדש שהמסך יצטרך להכיר כדי לאחסן בו חישובים מאוחר יותר."
קוד של נראות והזרקת נתונים.
"אני שותל עכשיו את המספר '1' בתוך שדה 'כמות' כדי שהמשתמש לא יצטרך להקליד אותו שוב ושוב."

סיכום הטעויות הנפוצות שכדאי להימנע מהן:

  1. העלמת נתונים: לכתוב ערך לתוך שדה ב-
    Init
    ולהיות מופתעים כשהשדה מופיע ריק
    (כי הוא נדרס ברענון המערכת). הפתרון הנכון הוא לכתוב אותו ב-
    Showing
    .
  2. איטיות בפתיחה: הרצת לולאות ארוכות מדי באתחול, במקום להפעיל אותן רק כאשר
    המשתמש לוחץ על כפתור ספציפי שבאמת מצריך את החישוב.
  3. סלט בקוד: ערבוב של יצירת שדות (שלד) יחד עם הקפצת הודעות (תצוגה) באותו מקום.
    שמרו על סדר: תשתיות ב-
    Init
    , נראות וחוויות משתמש ב-
    Showing
    .