Dynamics 365 Business Central: การใช้งาน Dictionary Data Type ใน AL Programming

Dictionary ใน AL Programming เป็นชนิดข้อมูลที่ใช้สำหรับเก็บและจัดการข้อมูลที่มีความสัมพันธ์กันระหว่างตัวระบุ (Key) และข้อมูลที่เกี่ยวข้อง (Value) โดยที่ตัวระบุ (Key) จะต้องไม่ซ้ำกันภายใน Dictionary ซึ่งช่วยให้สามารถค้นหาและเข้าถึงข้อมูลได้อย่างรวดเร็วและมีประสิทธิภาพ การใช้งาน Dictionary เหมาะสำหรับสถานการณ์ที่ต้องการจัดการข้อมูลจำนวนมากที่สามารถอ้างอิงได้โดยใช้ตัวระบุเฉพาะ ทำให้การเพิ่ม, ลบ, แก้ไข, และดึงข้อมูลเป็นไปได้อย่างสะดวกและยืดหยุ่น Dictionary เป็นเครื่องมือที่ทรงพลังใน AL Programming ที่ช่วยให้นักพัฒนาสามารถสร้างระบบที่มีการจัดการข้อมูลอย่างมีประสิทธิภาพและมีความยืดหยุ่นสูง

รายละเอียดของแต่ละ Method พร้อมตัวอย่าง และการใช้งาน

1. Add(TKey, TValue)

คำอธิบาย: Method นี้ใช้ในการเพิ่มข้อมูลเข้าไปใน Dictionary โดยข้อมูลนี้จะถูกเก็บในรูปแบบที่มีตัวระบุ (Key) และค่าที่เกี่ยวข้อง (Value) หากตัวระบุตัวนี้มีอยู่แล้วใน Dictionary จะเกิดข้อผิดพลาด

ตัวอย่าง

การใช้งาน

ในตัวอย่างนี้ AddToDictionary จะเพิ่มข้อมูลใหม่ 1: 'Apple' และ 2: 'Banana' ลงใน Dictionary

2. ContainsKey(TKey)

คำอธิบาย: Method นี้ใช้ในการตรวจสอบว่าตัวระบุ (Key) ที่กำหนดมีอยู่ใน Dictionary หรือไม่ ถ้ามีจะคืนค่าเป็น true ถ้าไม่มีจะคืนค่าเป็น false

ตัวอย่าง

การใช้งาน

ในตัวอย่างนี้ CheckKeyExists จะตรวจสอบว่ามีตัวระบุ 1 และ 3 อยู่ใน Dictionary หรือไม่

3. Count()

คำอธิบาย: Method นี้ใช้ในการนับจำนวนรายการข้อมูลทั้งหมดใน Dictionary

ตัวอย่าง

การใช้งาน

ในตัวอย่างนี้ GetDictionaryCount จะคืนค่าจำนวนรายการข้อมูลใน Dictionary

4. Get(TKey, var TValue)

คำอธิบาย: Method นี้ใช้ในการดึงข้อมูลออกจาก Dictionary โดยใช้ตัวระบุ (Key) ที่กำหนด หากตัวระบุตัวนี้มีอยู่ ข้อมูลที่เกี่ยวข้อง (Value) จะถูกดึงออกมา และคืนค่าเป็น true มิฉะนั้นจะคืนค่าเป็น false

ตัวอย่าง

การใช้งาน

ในตัวอย่างนี้ GetValueFromDictionary จะดึงค่า Apple ออกมาเมื่อระบุคีย์ 1

5. Get(TKey)

คำอธิบาย: Method นี้คล้ายกับ Get(TKey, var TValue) แต่จะคืนค่าที่ตรงกับตัวระบุ (Key) ที่กำหนดโดยตรง โดยไม่ต้องใช้ตัวแปรส่งออก

ตัวอย่าง

การใช้งาน

ในตัวอย่างนี้ GetValueDirectFromDictionary จะดึงค่า Apple ออกมาเมื่อระบุคีย์ 1 และคืนค่ากลับมาโดยตรง

6. Keys()

คำอธิบาย: Method นี้ใช้ในการดึงรายการตัวระบุ (Key) ทั้งหมดที่มีอยู่ใน Dictionary

ตัวอย่าง

การใช้งาน

ในตัวอย่างนี้ GetAllKeys จะดึงรายการตัวระบุทั้งหมดใน Dictionary และแสดงผลคีย์แต่ละตัว

7. Remove(TKey)

คำอธิบาย: Method นี้ใช้ในการลบข้อมูลที่ตรงกับตัวระบุ (Key) ที่กำหนดออกจาก Dictionary

ตัวอย่าง

การใช้งาน

ในตัวอย่างนี้ RemoveFromDictionary จะลบข้อมูล 1: 'Apple' ออกจาก Dictionary

8. Set(TKey, TValue)

คำอธิบาย: Method นี้ใช้ในการเปลี่ยนหรือเพิ่มข้อมูลใน Dictionary โดยใช้ตัวระบุ (Key) ที่กำหนด หากตัวระบุ (Key) มีอยู่แล้ว ข้อมูลที่เกี่ยวข้อง (Value) จะถูกแทนที่ด้วยค่าที่ใหม่

ตัวอย่าง

การใช้งาน

ในตัวอย่างนี้ SetDictionaryValue จะเปลี่ยนค่าที่คีย์ 1 จาก Apple เป็น Orange

9. Set(TKey, TValue, var TValue)

คำอธิบาย: Method นี้ใช้ในการเปลี่ยนหรือเพิ่มข้อมูลใน Dictionary โดยใช้ตัวระบุ (Key) ที่กำหนด และยังคืนค่าข้อมูลเก่าที่ถูกแทนที่กลับมา

ตัวอย่าง

การใช้งาน

ในตัวอย่างนี้ SetDictionaryValueWithOld จะเปลี่ยนค่าที่คีย์ 1 จาก Apple เป็น Orange และคืนค่าเดิม Apple กลับมา

10. Values()

คำอธิบาย: Method นี้ใช้ในการดึงค่าข้อมูลทั้งหมดที่มีอยู่ใน Dictionary

ตัวอย่าง

การใช้งาน

ในตัวอย่างนี้ GetAllValues จะดึงค่าข้อมูลทั้งหมดใน Dictionary และแสดงผลค่าแต่ละตัว

ตัวอย่างเพิ่มเติม

คำอธิบาย

  • VendorLedgerEntry.SetRange(“Open”, true);: กำหนดให้เลือกเฉพาะรายการที่ยังไม่ถูกปิด (Open Entries)
  • VendorOutstandingDict.ContainsKey(VendorNo): ตรวจสอบว่ามี Vendor No. อยู่ใน Dictionary แล้วหรือไม่
  • VendorOutstandingDict.Set(VendorNo, OutstandingAmount);: อัปเดตยอดค้างชำระรวมสำหรับผู้ขายที่มีอยู่ใน Dictionary
  • VendorOutstandingDict.Add(VendorNo, VendorLedgerEntry.Amount);: เพิ่มผู้ขายใหม่พร้อมยอดค้างชำระเข้าไปใน Dictionary

สรุป

การใช้งาน Dictionary ใน AL Programming ช่วยให้คุณสามารถจัดการข้อมูลที่ต้องการเข้าถึงอย่างรวดเร็วและมีประสิทธิภาพ การใช้ Method ต่าง ๆ ที่มีใน Dictionary ช่วยให้สามารถเพิ่ม, ลบ, อัปเดต, และดึงข้อมูลได้อย่างสะดวกและมีประสิทธิภาพ ซึ่งทำให้การพัฒนาแอปพลิเคชันที่มีการจัดการข้อมูลจำนวนมากเป็นไปได้อย่างมีประสิทธิภาพและยืดหยุ่น

Dynamics 365 Business Central: การตั้งค่าและใช้งาน Copy Customer Name to Entries

ใน Dynamics 365 Business Central มีฟังก์ชันที่สำคัญและช่วยให้การทำงานมีประสิทธิภาพมากขึ้น คือ การตั้งค่า Copy Customer Name to Entries ในหน้า Sales & Receivables Setup ซึ่งช่วยให้ระบบคัดลอกชื่อของลูกค้าไปยังรายการทางบัญชีต่างๆ เช่น Customer Ledger Entries โดยอัตโนมัติ ซึ่งเป็นประโยชน์ในการติดตามและตรวจสอบข้อมูลได้ง่ายขึ้น ในบทความนี้ เราจะมาทำความเข้าใจและดูตัวอย่างการใช้งานของฟังก์ชันนี้อย่างละเอียด

1. การตั้งค่า Copy Customer Name to Entries

การตั้งค่า Copy Customer Name to Entries สามารถทำได้ง่ายๆ โดยทำตามขั้นตอนต่อไปนี้:


1. ไปที่หน้า Sales & Receivables Setup

เปิดหน้า Sales & Receivables Setup โดยใช้ฟังก์ชัน Search (กด Alt + Q) แล้วพิมพ์ “Sales & Receivables Setup” และเลือกหน้าที่ปรากฏขึ้น

2. เปิดการใช้งาน Copy Customer Name to Entries

ในหน้า Sales & Receivables Setup ให้ค้นหาตัวเลือก Copy Customer Name to Entries แล้วเลือกตัวเลือกนี้เพื่อเปิดใช้งาน ฟังก์ชันนี้จะทำให้ระบบคัดลอกชื่อของลูกค้าไปยังรายการบัญชีโดยอัตโนมัติเมื่อมีการบันทึกข้อมูล

2. การใช้งานก่อนและหลังเปิดใช้งาน Copy Customer Name to Entries

มาดูตัวอย่างเปรียบเทียบขั้นตอนการทำงานทั้งก่อนและหลังเปิดใช้งานฟังก์ชัน Copy Customer Name to Entries เพื่อให้เห็นถึงความแตกต่างและประโยชน์ที่ชัดเจน

ก่อนเปิดใช้งาน Copy Customer Name to Entries

1. สร้าง Sales Order

เปิดหน้า Sales Order และกรอกข้อมูลที่จำเป็น เช่น Customer No., Order Date, และ Amount

2. บันทึก Sales Order

หลังจากกรอกข้อมูลเสร็จเรียบร้อย กด Post เพื่อทำการบันทึกเอกสารและรายการที่เกี่ยวข้อง

3. ตรวจสอบ Customer Ledger Entries

เมื่อเปิดหน้า Customer Ledger Entries จะพบว่า ชื่อของลูกค้าจะไม่ถูกแสดงในรายการนี้ ผู้ใช้ต้องคัดลอกข้อมูลชื่อของลูกค้าไปยังรายการด้วยตนเอง

หลังเปิดใช้งาน Copy Customer Name to Entries

1. เปิดการใช้งาน Copy Customer Name to Entries

ไปที่หน้า Sales & Receivables Setup แล้วเลือกเปิดฟังก์ชัน Copy Customer Name to Entries

2. สร้างและบันทึก Sales Order

กรอกข้อมูลในหน้า Sales Order ตามปกติ เช่น Customer No., Order Date, และ Amount จากนั้นกด Post เพื่อบันทึกเอกสาร

3. ตรวจสอบ Customer Ledger Entries

เมื่อเปิดหน้า Customer Ledger Entries จะเห็นว่าชื่อของลูกค้าถูกคัดลอกและแสดงในรายการนี้โดยอัตโนมัติ ทำให้การติดตามข้อมูลเป็นไปได้อย่างครบถ้วนและแม่นยำ

สรุป

การใช้งานฟังก์ชัน Copy Customer Name to Entries ถือเป็นตัวช่วยที่สำคัญในการเพิ่มประสิทธิภาพการทำงานใน Dynamics 365 Business Central ช่วยให้คุณสามารถจัดการข้อมูลลูกค้าได้อย่างสะดวกและถูกต้องมากยิ่งขึ้น หวังว่าบทความนี้จะช่วยให้คุณเห็นถึงความสำคัญและประโยชน์ของฟังก์ชันนี้ในระบบของคุณ

Dynamics 365 Business Central: การใช้ Progress Windows, Message, Error, และ Confirm Methods ใน AL Programming

ในบทความนี้ เราจะมาทำความเข้าใจเกี่ยวกับการใช้งาน Progress Windows, Message, Error, และ Confirm Methods ในการเขียนโปรแกรมด้วยภาษา AL ซึ่งเป็นภาษาหลักที่ใช้ใน Dynamics 365 Business Central แต่ละ method มีบทบาทที่แตกต่างกันไปในการโต้ตอบกับผู้ใช้ โดยเฉพาะในสถานการณ์ที่ต้องการแสดงข้อมูล, แจ้งเตือนข้อผิดพลาด, หรือขอการยืนยันจากผู้ใช้ เราจะมาเจาะลึกถึงรายละเอียดพร้อมตัวอย่างการใช้งานแต่ละ method อย่างละเอียด

1. Progress Windows

Progress Windows เป็นเครื่องมือที่ช่วยให้โปรแกรมสามารถแสดงสถานะความคืบหน้าของกระบวนการที่ต้องใช้เวลานาน เช่น การประมวลผลข้อมูลจำนวนมาก หรือการนำเข้าข้อมูลจากแหล่งอื่น หน้าต่างนี้จะช่วยให้ผู้ใช้ทราบว่าโปรแกรมกำลังทำอะไรอยู่และคาดว่าจะใช้เวลาเท่าไร

รูปแบบการใช้งาน:

ตัวอย่างการใช้งาน:

ในตัวอย่างข้างต้น เราได้สร้างหน้าต่าง Progress ที่จะบอกผู้ใช้ว่าอยู่ที่ขั้นตอนใดของการประมวลผล และใช้ Progress.UPDATE(); เพื่ออัพเดตข้อมูลในหน้าต่าง

2. Message Method

Message Method ใช้ในการแสดงข้อความให้ผู้ใช้ทราบ ซึ่งข้อความนี้จะเป็นเพียงข้อมูล ไม่ใช่การแจ้งเตือนหรือข้อผิดพลาด

รูปแบบการใช้งาน:

ตัวอย่าง:

ในตัวอย่างนี้ เมธอด Message จะทำการแสดงกล่องข้อความที่มีข้อความว่า “Hello, Thanapope!”

3. Error Method

Error Method ใช้ในการแจ้งข้อผิดพลาดและหยุดการทำงานของโปรแกรม หากเกิดข้อผิดพลาดขึ้น

รูปแบบการใช้งาน:

ตัวอย่าง:

ในตัวอย่างนี้ หากค่า SomeValue เป็นลบ จะมีการแสดงข้อผิดพลาดและหยุดการทำงานด้วยข้อความ “The value cannot be negative

4. Confirm Method

Confirm Method ใช้ในการสอบถามผู้ใช้เพื่อขอการยืนยันก่อนที่จะทำการดำเนินการใด ๆ

รูปแบบการใช้งาน:

if Confirm('Are you sure you want to continue?') then begin
       // Code to execute if user confirms
end;

ตัวอย่าง:

ตัวอย่างกด Yes

ตัวอย่างกด No

ในตัวอย่างนี้ โปรแกรมจะถามผู้ใช้ว่าต้องการลบข้อมูลหรือไม่ หากผู้ใช้กดยืนยัน โปรแกรมจะลบข้อมูลและแสดงข้อความว่า “Record deleted successfully.”

สรุป

การใช้งานเมธอด Progress Windows, Message, Error, และ Confirm ใน AL Programming เป็นสิ่งสำคัญในการสร้างประสบการณ์การใช้งานที่ดีให้กับผู้ใช้ โดยช่วยในการแสดงความคืบหน้า แจ้งเตือนข้อผิดพลาด แสดงข้อมูล และขอการยืนยันจากผู้ใช้ในสถานการณ์ต่าง ๆ การเข้าใจและใช้เมธอดเหล่านี้อย่างถูกต้องจะช่วยให้โปรแกรมมีประสิทธิภาพและใช้งานได้ง่ายขึ้น

Dynamics 365 Business Central: การใช้ Protected Variables เพื่อสร้างความยืดหยุ่นและปลอดภัยใน AL Programming

ในการเขียนโปรแกรมด้วยภาษา AL (Application Language) สำหรับ Microsoft Dynamics 365 Business Central การควบคุมการเข้าถึงตัวแปรเป็นสิ่งสำคัญที่ช่วยให้โค้ดมีความปลอดภัยและสามารถจัดการได้ง่ายขึ้น หนึ่งในวิธีการควบคุมการเข้าถึงตัวแปรคือการใช้ตัวแปรประเภท Protected ซึ่งช่วยให้เราสามารถควบคุมการเข้าถึงตัวแปรได้ตามต้องการ ในบทความนี้ เราจะมาเจาะลึกถึงการใช้งานตัวแปร Protected พร้อมตัวอย่างการใช้งาน รวมถึงข้อดีและข้อเสียของการใช้ตัวแปรประเภทนี้

อะไรคือตัวแปร Protected?

ตัวแปร Protected ในภาษา AL คือ ตัวแปรที่สามารถเข้าถึงได้เฉพาะในออบเจ็กต์ที่ประกาศตัวแปรนั้น และในออบเจ็กต์ที่สืบทอดมาจากออบเจ็กต์นั้น ๆ เท่านั้น (Only accessible within the object where it’s declared and in its subclasses) นั่นหมายความว่าโค้ดที่อยู่นอกออบเจ็กต์ที่ไม่ได้สืบทอดจากออบเจ็กต์นั้นจะไม่สามารถเข้าถึงตัวแปรนี้ได้

การประกาศและใช้งานตัวแปร Protected

ในการประกาศตัวแปร Protected ในภาษา AL คุณสามารถทำได้โดยการเพิ่มคีย์เวิร์ด protected ก่อนการประกาศตัวแปร ตัวอย่างเช่น:

ในตัวอย่างนี้ ตัวแปร ShowSensitiveData สามารถถูกเข้าถึงได้เฉพาะในออบเจ็กต์ที่ประกาศตัวแปรนี้ รวมถึงออบเจ็กต์ที่สืบทอดมาจากออบเจ็กต์นี้เท่านั้น

ตัวอย่างการใช้งาน Protected Variables ในภาษา AL

สมมุติว่าเราต้องการสร้างฟีเจอร์ใหม่สำหรับการแสดงข้อมูลที่สำคัญในระบบ ซึ่งข้อมูลนี้จะถูกแสดงเฉพาะในบางสถานการณ์เท่านั้น

สร้าง Table ใหม่

ในตัวอย่างนี้ เราได้สร้างตารางใหม่ชื่อว่า Sensitive Data เพื่อเก็บข้อมูลที่สำคัญ เช่น Sensitive Info ที่เกี่ยวข้องกับลูกค้า

สร้าง Page ใหม่

ในเพจ Sensitive Data List เราได้ใช้ตัวแปร Protected ชื่อว่า ShowSensitiveData เพื่อควบคุมการแสดงผลของฟิลด์ Sensitive Info ข้อมูลนี้จะถูกซ่อนโดยค่าเริ่มต้น และจะถูกแสดงเมื่อผู้ใช้กดปุ่ม Toggle Sensitive Info

สร้าง Page Extension เพื่อขยายฟังก์ชัน

ใน Page Extension นี้ เราได้เพิ่มปุ่ม Reset Sensitive Info Visibility ซึ่งจะทำการซ่อนข้อมูล Sensitive Info ทุกครั้งที่ผู้ใช้กดปุ่มนี้

ตัวอย่างผลลัพธ์

ข้อดีของการใช้ Protected Variables ในภาษา AL

  1. การควบคุมการเข้าถึง (Access Control):
    • ตัวแปร Protected ช่วยให้คุณสามารถกำหนดได้ว่าตัวแปรจะถูกเข้าถึงได้จากที่ไหนบ้าง เฉพาะภายในตัวโค้ดหรือจากออบเจ็กต์ที่สืบทอด (Inheritance) มาเท่านั้น ข้อมูลสำคัญจึงไม่ถูกแก้ไขโดยไม่จำเป็น
  2. การสืบทอด (Inheritance):
    • ออบเจ็กต์ย่อยสามารถใช้ตัวแปร Protected จากออบเจ็กต์หลักได้อย่างอิสระ ช่วยให้สามารถเพิ่มฟังก์ชันการทำงานใหม่ ๆ โดยใช้ข้อมูลที่ถูกปกป้องในออบเจ็กต์หลักได้อย่างมีประสิทธิภาพ
  3. การออกแบบโค้ดที่ยืดหยุ่น (Flexible Code Design):
    • ตัวแปร Protected ทำให้คุณสามารถสร้างโค้ดที่ยืดหยุ่น โดยการเก็บข้อมูลและฟังก์ชันการทำงานในออบเจ็กต์หลัก แล้วสืบทอดและใช้งานในออบเจ็กต์ย่อย ซึ่งช่วยลดการทำซ้ำโค้ด (Code Duplication)
  4. ลดข้อผิดพลาด (Reduced Errors):
    • เนื่องจากตัวแปร Protected จะไม่สามารถเข้าถึงได้จากภายนอกออบเจ็กต์หรือออบเจ็กต์ที่ไม่ได้สืบทอด การลดการเข้าถึงตัวแปรที่ไม่จำเป็นจะช่วยลดโอกาสในการเกิดข้อผิดพลาดในโค้ด

ข้อเสียของการใช้ Protected Variables ในภาษา AL

  1. ความซับซ้อนในการจัดการ (Complex Management):
    • การใช้ตัวแปร Protected อาจทำให้โค้ดซับซ้อนขึ้น โดยเฉพาะเมื่อมีออบเจ็กต์ย่อยหลายออบเจ็กต์สืบทอดจากออบเจ็กต์หลัก ผู้พัฒนาต้องเข้าใจโครงสร้างการเข้าถึงข้อมูลทั้งหมด ทำให้การบำรุงรักษาโค้ดยากขึ้น
  2. การพึ่งพาคลาสหลัก (Base Class Dependency):
    • เมื่อออบเจ็กต์ย่อยพึ่งพาตัวแปร Protected จากออบเจ็กต์หลัก หากออบเจ็กต์หลักมีการเปลี่ยนแปลง จะต้องมีการปรับปรุงโค้ดในออบเจ็กต์ย่อยให้สอดคล้องกัน ซึ่งอาจเพิ่มงานในการบำรุงรักษา
  3. การใช้ที่ไม่จำเป็น (Unnecessary Usage):
    • หากมีการใช้ Protected โดยไม่จำเป็น เช่น ประกาศตัวแปร Protected ที่ไม่ต้องการความปกป้อง อาจทำให้โค้ดยุ่งยากโดยไม่จำเป็น ซึ่งควรใช้ Protected เฉพาะในกรณีที่จำเป็นจริง ๆ เท่านั้น
  4. ความยุ่งยากในการขยาย (Complicated Extensions):
    • เมื่อมีการสืบทอดตัวแปร Protected หลายชั้น อาจทำให้โค้ดยุ่งยากในการเข้าใจและขยายฟังก์ชันใหม่ ๆ เนื่องจากต้องติดตามว่าแต่ละออบเจ็กต์ใช้ตัวแปรเหล่านี้อย่างไร

สรุป

การใช้ตัวแปร Protected ในภาษา AL เป็นเทคนิคที่มีประโยชน์และทรงพลังในการควบคุมการเข้าถึงข้อมูลและการสืบทอดฟังก์ชันการทำงานไปยังออบเจ็กต์ย่อย การใช้ตัวแปร Protected อย่างถูกต้องจะช่วยให้โค้ดของคุณมีความปลอดภัย ยืดหยุ่น และง่ายต่อการบำรุงรักษา อย่างไรก็ตาม ต้องใช้อย่างระมัดระวังเพื่อหลีกเลี่ยงความซับซ้อนและปัญหาที่อาจเกิดขึ้นในการจัดการโค้ด

Dynamics 365 Business Central: ทำความเข้าใจ Procedure Overload ใน AL วิธีลดความซ้ำซ้อนและเพิ่มประสิทธิภาพ

การพัฒนาโปรแกรมใน AL (Application Language) สำหรับ Dynamics 365 Business Central มีฟังก์ชันและเครื่องมือที่ช่วยให้โค้ดมีความยืดหยุ่นและสามารถจัดการกับข้อมูลหลายประเภทได้ หนึ่งในเทคนิคที่ช่วยให้การเขียนโปรแกรมใน AL มีความยืดหยุ่นมากขึ้นคือ Procedure Overload ซึ่งช่วยให้คุณสามารถสร้างฟังก์ชันที่มีชื่อเดียวกันแต่รองรับพารามิเตอร์ที่แตกต่างกันได้ ในบทความนี้ เราจะอธิบายถึง Procedure Overload แบบละเอียด พร้อมตัวอย่างการใช้งาน ทั้งก่อนและหลังการนำไปใช้ รวมถึงรูปแบบการใช้งานต่างๆ

1. What is Procedure Overload? – Procedure Overload คืออะไร?

Procedure Overload คือการสร้างฟังก์ชัน (functions) หลายๆ ฟังก์ชันที่มีชื่อเดียวกัน (same name) แต่มีจำนวนพารามิเตอร์ (number of parameters) หรือประเภทของพารามิเตอร์ (type of parameters) ที่แตกต่างกัน ฟังก์ชันเหล่านี้จะถูก Overload ซึ่งหมายความว่าระบบจะเลือกใช้ฟังก์ชันที่เหมาะสมตามพารามิเตอร์ที่ถูกส่งมา

2. Why Use Procedure Overload? ทำไมต้องใช้ Procedure Overload?

  • Flexibility: ช่วยให้คุณสามารถใช้ฟังก์ชันเดียวกันในหลายสถานการณ์ โดยไม่ต้องสร้างฟังก์ชันใหม่ที่มีชื่อแตกต่างกันStrong
  • Typing: ทำให้โค้ดใช้ประเภทข้อมูลที่ชัดเจน (strongly-typed) และสามารถตรวจสอบความถูกต้องได้ในขั้นตอนการคอมไพล์ (compile-time)
  • Error Reduction: ลดข้อผิดพลาดที่อาจเกิดขึ้นในขั้นตอนการรัน (runtime errors) ด้วยการตรวจสอบตั้งแต่การคอมไพล์

3. Examples of Procedure Overloadตัวอย่างการใช้งาน Procedure Overload

3.1. Before Using Procedure Overload – ก่อนการใช้ Procedure Overload

สมมติว่าคุณต้องการสร้างฟังก์ชัน CalculateTotal ที่คำนวณราคาสุทธิหลังหักส่วนลด โดยอาจคำนวณจากเปอร์เซ็นต์ (%) หรือจากจำนวนเงินคงที่ (Fixed Amount) รวมถึงการคำนวณราคาโดยไม่หักส่วนลด คุณอาจต้องสร้างฟังก์ชันแยกตามประเภทการคำนวณ:

ปัญหา: ฟังก์ชันแต่ละตัวมีชื่อแตกต่างกัน แต่พารามิเตอร์มี data type ซ้ำกันในบางกรณี ซึ่งทำให้โค้ดดูยุ่งยากและซับซ้อนปัญหา: ฟังก์ชันแต่ละตัวมีชื่อแตกต่างกัน เนื่องจากพารามิเตอร์ที่ใช้มีประเภทข้อมูลที่แตกต่างกัน ซึ่งทำให้โค้ดดูยุ่งยากและซับซ้อนเมื่อมีหลายกรณีที่ต้องรองรับ

3.2. After Using Procedure Overload หลังการใช้ Procedure Overload

เพื่อให้สามารถใช้ Procedure Overload ได้อย่างถูกต้อง เราจะปรับให้ฟังก์ชัน CalculateTotal มีจำนวนพารามิเตอร์ที่แตกต่างกัน:

ข้อดี: ด้วยการใช้ Procedure Overload ที่มีจำนวนพารามิเตอร์แตกต่างกัน คุณสามารถใช้ฟังก์ชัน CalculateTotal เดียวกันในการคำนวณราคาสุทธิสำหรับหลายกรณี โดยไม่ต้องสร้างฟังก์ชันใหม่ ทำให้โค้ดดูสะอาดและจัดการได้ง่ายขึ้น

4.Usage Patterns of Procedure Overloadรูปแบบการใช้งาน Procedure Overload

  1. Same Function Name, Different Parameters: ฟังก์ชันที่ถูก Overload ต้องมีชื่อเดียวกัน แต่พารามิเตอร์ต้องมีประเภทหรือจำนวนที่แตกต่างกัน
  2. Compile-time Resolution: การเลือกฟังก์ชันที่ถูกต้องจะเกิดขึ้นในขั้นตอนการคอมไพล์ หากพารามิเตอร์ไม่ตรงกับฟังก์ชันใด ระบบจะตรวจพบข้อผิดพลาดทันที
  3. Avoiding Ambiguity: หลีกเลี่ยงการ Overload ที่มีพารามิเตอร์ใกล้เคียงกันเกินไป เพราะอาจทำให้ระบบไม่สามารถเลือกฟังก์ชันที่ถูกต้องได้
  4. Best Practices: ใช้ Procedure Overload เมื่อจำเป็นต้องรองรับพารามิเตอร์ที่แตกต่างกันจริงๆ และตรวจสอบความถูกต้องด้วยการคอมไพล์

ตัวอย่างการเรียกใช้ฟังก์ชัน Procedure Overload:

คำอธิบาย:

Total3: ในการเรียกใช้ครั้งที่สาม เราใช้ฟังก์ชัน CalculateTotal(Price: Decimal) ซึ่งจะคืนค่าราคาสินค้าเต็มจำนวนโดยไม่มีส่วนลดใดๆ

Total1: ในการเรียกใช้ครั้งแรก เราใช้ฟังก์ชัน CalculateTotal(Price: Decimal; DiscountPercent: Decimal) ซึ่งจะคำนวณราคาหลังหักส่วนลดตามเปอร์เซ็นต์ (10%) ของราคา

Total2: ในการเรียกใช้ครั้งที่สอง เราใช้ฟังก์ชัน CalculateTotal(Price: Decimal; DiscountAmount: Decimal; IsAmount: Boolean) ซึ่งจะคำนวณราคาหลังหักจำนวนเงินที่เป็นส่วนลด (100 บาท)

5. Conclusion – สรุป

Procedure Overload เป็นเทคนิคที่ช่วยให้การเขียนโปรแกรมใน AL มีความยืดหยุ่นมากขึ้น คุณสามารถใช้ฟังก์ชันเดียวกันในหลากหลายสถานการณ์ได้โดยไม่ต้องสร้างฟังก์ชันใหม่หลายๆ ตัว นอกจากนี้ยังช่วยให้โค้ดดูเรียบร้อยและจัดการได้ง่ายขึ้น อย่างไรก็ตาม ควรใช้ Procedure Overload อย่างระมัดระวัง เพื่อป้องกันความสับสนที่อาจเกิดขึ้นจากการ Overload ฟังก์ชันหลายตัว

Dynamics 365 Business Central: เจาะลึก Duration Data Type ใน AL เคล็ดลับและตัวอย่างการใช้งาน

Duration Data Type ในภาษา AL ของ Microsoft Dynamics 365 Business Central เป็นชนิดข้อมูลที่ใช้สำหรับการจัดการและคำนวณระยะเวลา (time duration) โดยระยะเวลานี้สามารถประกอบด้วยหน่วยเวลา เช่น ชั่วโมง (hours), นาที (minutes), วินาที (seconds), และมิลลิวินาที (milliseconds) ชนิดข้อมูล Duration นี้ช่วยให้นักพัฒนาสามารถคำนวณเวลา เปรียบเทียบระยะเวลา หรือแปลงเวลาไปเป็นข้อความที่เข้าใจง่ายในแอปพลิเคชันของพวกเขาได้อย่างมีประสิทธิภาพ

การประกาศตัวแปรชนิด Duration

ในภาษา AL การประกาศตัวแปรชนิด Duration สามารถทำได้ง่ายๆ โดยใช้คำสั่ง Duration ตามด้วยชื่อของตัวแปรที่ต้องการ เช่น:

ในตัวอย่างนี้ ตัวแปร TotalDuration จะใช้สำหรับเก็บข้อมูลระยะเวลา

การกำหนดค่าให้กับ Duration

การกำหนดค่าให้กับ Duration สามารถทำได้โดยการคำนวณจำนวนชั่วโมง นาที วินาที หรือมิลลิวินาทีที่คุณต้องการ เช่น:

หรือคุณสามารถรวมหลายหน่วยเวลาเข้าด้วยกัน:

ในตัวอย่างนี้ เราได้กำหนดค่าระยะเวลาเป็น 2 ชั่วโมงและ 30 นาที โดยใช้การคำนวณในหน่วยมิลลิวินาที

ตัวอย่าง: การคำนวณเวลาทำงานทั้งหมดและเปรียบเทียบกับเวลาทำงานมาตรฐาน

สมมุติว่าคุณต้องการคำนวณเวลาทำงานทั้งหมดของพนักงานในแต่ละวัน และเปรียบเทียบกับเวลาทำงานมาตรฐาน (Standard Working Time) ที่กำหนดไว้คือ 8 ชั่วโมง เพื่อดูว่าพนักงานทำงานเกินเวลาหรือไม่

สมมุติเวลาทำงานทั้งหมดเป็น 9 ชั่วโมง

อธิบายโค้ด:

  1. StandardWorkingTime: กำหนดเวลาทำงานมาตรฐานเป็น 8 ชั่วโมง โดยแปลงหน่วยเป็นมิลลิวินาที (8 * 60 * 60 * 1000).
  2. TotalWorkingTime: คำนวณเวลาทำงานทั้งหมดจากการลบ StartTime ออกจาก EndTime.
  3. WorkHours และ WorkMinutes: แปลงเวลาทำงานทั้งหมดที่คำนวณได้เป็นชั่วโมงและนาที เพื่อให้สามารถนำไปแสดงผลได้ง่าย.
  4. Overtime: หาก TotalWorkingTime มากกว่า StandardWorkingTime จะคำนวณเวลาโอทีและแปลงเป็นชั่วโมงและนาที.
  5. MessageText: สร้างข้อความที่จะแสดงผลเวลาทำงานทั้งหมดและเวลาโอทีถ้ามี และแสดงผลข้อความนี้ออกมา.

โค้ดนี้สามารถใช้ในการคำนวณเวลาทำงานจริง และตรวจสอบได้ว่ามีการทำงานเกินเวลา (โอที) หรือไม่ พร้อมกับแสดงผลให้ผู้ใช้งานทราบในรูปแบบที่เข้าใจง่าย

การแปลง Duration เป็นข้อความ

Duration สามารถแปลงเป็นข้อความเพื่อแสดงผลได้โดยใช้ฟังก์ชัน Format เช่น:

var
   DurationText: Text;
begin
   DurationText := Format(TotalDuration); // จะแสดงเป็น '2 hours 30 minutes'
   Message(DurationText);
end;

สรุป

Duration Data Type ใน AL เป็นเครื่องมือที่มีประสิทธิภาพในการจัดการเวลาในแอปพลิเคชัน Dynamics 365 Business Central ไม่ว่าจะเป็นการคำนวณเวลา การเปรียบเทียบระยะเวลา หรือการแปลงเวลาไปเป็นข้อความที่เข้าใจง่าย การเข้าใจและใช้งาน Duration อย่างถูกต้องจะช่วยให้การพัฒนาของคุณมีความแม่นยำและเป็นระเบียบมากขึ้น

Dynamics 365 Business Central: ทักษะที่จำเป็นสำหรับ Junior ใน AL Programming เพื่อก้าวสู่ระดับ Senior

การพัฒนาโปรแกรมด้วย AL (Application Language) สำหรับ Dynamics 365 Business Central เป็นงานที่ต้องการทักษะเฉพาะที่หลากหลาย ทั้งในด้านการเขียนโค้ด การดีบัก การออกแบบระบบ และการจัดการโปรเจค โดยทักษะที่จำเป็นจะแตกต่างกันไปตามระดับของโปรแกรมเมอร์ ไม่ว่าจะเป็นระดับ Junior หรือ Senior บทความนี้จะอธิบายถึงทักษะที่จำเป็นสำหรับแต่ละระดับอย่างละเอียด เพื่อให้คุณมีความเข้าใจที่ชัดเจนและสามารถพัฒนาตัวเองได้ในสายงานนี้

ทักษะที่ Junior Programmer ควรมี

1.พื้นฐานการเขียนโปรแกรม (Programming Basics):

  • Variables and Data Types: ควรมีความเข้าใจในการประกาศและใช้งานตัวแปร (Variables) และชนิดข้อมูล (Data Types) ต่าง ๆ เช่น Integer, Decimal, Boolean, และ Text
  • Control Structures: การใช้โครงสร้างควบคุมการไหลของโปรแกรม เช่น If-Else, Case, For และ While loops ซึ่งจะช่วยให้สามารถควบคุมการทำงานของโค้ดได้อย่างมีประสิทธิภาพ
  • Functions and Procedures: ความเข้าใจในการสร้างและใช้งานฟังก์ชัน (Functions) และขั้นตอนการทำงาน (Procedures) รวมถึงการส่งผ่านค่าระหว่างฟังก์ชัน

2.ความเข้าใจใน Syntax ของ AL (Understanding AL Syntax):

  • Object Structure: Junior Programmer ควรเข้าใจโครงสร้างพื้นฐานของ AL เช่น การสร้างและปรับแต่งตาราง (Tables), หน้าจอ (Pages), และรายงาน (Reports)
  • Trigger and Event Handlers: รู้จักกับ Triggers (เช่น OnInsert, OnModify) และการใช้งาน Event Handlers เพื่อเพิ่มความยืดหยุ่นในการพัฒนา

3.การทำงานกับ Business Central Objects:

  • Tables and Fields: ความสามารถในการสร้างและแก้ไขตาราง (Tables) และฟิลด์ (Fields) ใน Business Central
  • Pages: การออกแบบและปรับแต่งหน้าจอ (Pages) เพื่อแสดงข้อมูลที่เหมาะสมและใช้งานได้ง่าย
  • Reports: การสร้างรายงานที่มีประสิทธิภาพ การใช้งาน Layouts และ Data Items เพื่อดึงข้อมูลที่ต้องการ

4.การดีบักเบื้องต้น (Basic Debugging):

  • Breakpoints: การใช้ Breakpoints เพื่อตรวจสอบการทำงานของโค้ดทีละขั้นตอน โดยตั้งค่าให้โปรแกรมหยุดในบรรทัดที่ต้องการตรวจสอบ เพื่อให้สามารถดูค่าของตัวแปรและตรวจสอบการทำงานได้
  • Variable Inspection: การตรวจสอบค่าตัวแปร (Variable Values) ในระหว่างที่โปรแกรมหยุดที่ Breakpoint เพื่อวิเคราะห์ข้อผิดพลาด
  • Step Over, Step Into, Step Out: ความสามารถในการใช้คำสั่งเหล่านี้เพื่อตรวจสอบการทำงานของโค้ดอย่างละเอียด ทั้งการข้าม การเข้าไปในฟังก์ชัน และการออกจากฟังก์ชัน

5.การอ่านและเข้าใจโค้ดของผู้อื่น (Code Reading and Understanding):

  • Code Review: Junior Programmer ควรมีความสามารถในการอ่านและเข้าใจโค้ดของผู้อื่น เพื่อเรียนรู้และพัฒนาความสามารถของตนเอง
  • Documentation: การทำความเข้าใจเอกสารประกอบโค้ด (Code Documentation) เพื่อทำความเข้าใจการทำงานของโปรแกรม

6.การจัดการข้อมูล (Data Management):

  • Data Manipulation: การจัดการและการดึงข้อมูลจากตาราง (Tables) และ Query ด้วยคำสั่งพื้นฐาน เช่น INSERT, MODIFY, DELETE และ SETFILTER
  • Data Validation: การตรวจสอบความถูกต้องของข้อมูล (Data Validation) ก่อนที่จะทำการบันทึกลงในระบบ

7.การใช้งาน Extension (Extension Development):

  • Creating Extensions: ความสามารถในการสร้างและปรับแต่ง Extensions เพื่อต่อยอดความสามารถของ Business Central
  • Publishing and Managing Extensions: การเผยแพร่และจัดการ Extensions บน Business Central, รวมถึงการทำงานกับ Extension Versioning

8.พื้นฐานของ Web Services และ APIs (Basic Web Services and APIs):

  • OData and SOAP: เข้าใจพื้นฐานของการใช้งาน OData และ SOAP ในการติดต่อกับ Business Central ผ่าน Web Services
  • Basic API Integration: การใช้งาน REST API ในการดึงและอัพเดตข้อมูลระหว่างระบบต่าง ๆ กับ Business Central

ทักษะที่ Senior Programmer ควรมี

1.การออกแบบและสถาปัตยกรรมซอฟต์แวร์ (Software Design and Architecture):

  • System Design: Senior Programmer ต้องมีความสามารถในการออกแบบระบบโดยคำนึงถึงความสามารถในการขยาย (Scalability) และความยืดหยุ่น (Flexibility)
  • Modular Design: การออกแบบโมดูลที่แยกส่วน (Modular) และสามารถทำงานร่วมกันได้อย่างราบรื่น การออกแบบในลักษณะนี้ช่วยให้ระบบสามารถขยายตัวและบำรุงรักษาได้ง่าย นอกจากนี้ยังช่วยให้สามารถพัฒนาโมดูลที่นำกลับมาใช้ใหม่ (Reusable) ในโปรเจกต์อื่นได้บ

2.ความเชี่ยวชาญใน AL และ Dynamics 365 Business Central (AL and Dynamics 365 Business Central Expertise):

  • Advanced AL Coding: Senior Programmer ต้องมีความชำนาญในการเขียนโค้ดที่ซับซ้อนใน AL โดยใช้ฟีเจอร์ขั้นสูง เช่น การทำงานกับ Codeunits, การจัดการกับ TryFunctions, และการพัฒนาฟังก์ชันที่ต้องการประสิทธิภาพสูง
  • Performance Optimization: การปรับปรุงประสิทธิภาพ (Performance) ของโค้ด เช่น การลดเวลาการประมวลผล และการเขียนโค้ดที่ลดการใช้ Resources

3.การบริหารจัดการโครงการและทีมงาน (Project and Team Management):

  • Agile Methodology: ความเข้าใจในกระบวนการพัฒนาซอฟต์แวร์แบบ Agile และการประยุกต์ใช้ในโครงการจริง เช่น การทำงานใน Scrum Teams, การจัดการ Sprints และการใช้งาน Jira หรือ Trello ในการติดตามงาน
  • Team Leadership: ทักษะการเป็นผู้นำทีม (Leadership) การมอบหมายงาน (Task Delegation) และการให้คำปรึกษา (Mentorship) เพื่อพัฒนาทักษะของทีม

4.ทักษะการดีบักขั้นสูง (Advanced Debugging Skills):

  • Complex Problem Solving: ความสามารถในการดีบักปัญหาที่ซับซ้อน เช่น การวิเคราะห์ Memory Leaks, การตรวจสอบ Stack Traces และการใช้ Conditional Breakpoints เพื่อวิเคราะห์ปัญหาที่เกิดขึ้นในสถานการณ์เฉพาะ
  • Debugging Logs: การใช้ Debugging Logs ช่วยให้สามารถติดตามการทำงานของโปรแกรมในเชิงลึก โดยบันทึกเหตุการณ์หรือค่าตัวแปรสำคัญที่เกิดขึ้นระหว่างการทำงานของโปรแกรม การตรวจสอบ Logs เหล่านี้จะช่วยให้ระบุปัญหาได้ง่ายขึ้น

5.การให้คำปรึกษาและการสอนงาน (Mentorship and Teaching):

  • Code Review and Guidance: การทำ Code Review อย่างละเอียด เพื่อปรับปรุงคุณภาพของโค้ด และให้คำแนะนำกับโปรแกรมเมอร์รุ่นน้องในการพัฒนาทักษะ
  • Knowledge Sharing: การจัดทำเอกสารประกอบการพัฒนา (Technical Documentation) และการจัดการอบรม (Training) เพื่อแบ่งปันความรู้กับทีมงาน

6.การทดสอบและการประเมินผลโค้ด (Testing and Code Review):

  • Unit and Integration Testing: ความสามารถในการเขียน Unit Tests และ Integration Tests ที่ครอบคลุม เพื่อให้แน่ใจว่าโค้ดทำงานได้ถูกต้อง
  • Automated Testing: การใช้งานเครื่องมือ Automated Testing เพื่อลดความผิดพลาดจากการทดสอบด้วยตนเอง และเพิ่มความเร็วในการพัฒนา

7.การจัดการกับระบบขนาดใหญ่ (Managing Large Systems):

  • Scalability: ความสามารถในการออกแบบและจัดการระบบที่รองรับการขยาย (Scaling) ของผู้ใช้งาน และปริมาณข้อมูลที่เพิ่มขึ้น
  • Data Migration: การวางแผนและดำเนินการย้ายข้อมูล (Data Migration) จากระบบเก่าไปยังระบบใหม่โดยไม่สูญเสียข้อมูล

8.การพัฒนา API และการรวมระบบ (API Development and Integration):

  • Custom APIs: การออกแบบและพัฒนา Custom APIs เพื่อการรวมระบบ (System Integration) ระหว่าง Business Central กับระบบอื่น ๆ
  • Advanced Web Services: ความเชี่ยวชาญในการใช้งาน OData, SOAP และ RESTful APIs ในการดึงและอัพเดตข้อมูลระหว่างระบบต่าง ๆ

9.การจัดการความปลอดภัย (Security Management):

  • Security Best Practices: การพัฒนาโค้ดให้สอดคล้องกับ Security Best Practices เช่น การป้องกัน SQL Injection, การจัดการกับข้อมูลที่เป็นความลับ (Sensitive Data) และการทำ Encryption
  • User Authentication and Authorization: การตั้งค่าและจัดการกับระบบ Authentication และ Authorization เพื่อให้มั่นใจว่าผู้ใช้งานมีสิทธิ์ในการเข้าถึงข้อมูลตามที่กำหนด

10.การจัดการ Deployment และ Release (Deployment and Release Management):

  • CI/CD Pipelines: การใช้งาน Continuous Integration และ Continuous Deployment (CI/CD) เพื่อลดเวลาการนำโค้ดเข้าสู่ Production และลดความผิดพลาดที่เกิดจากการ Deployment
  • Version Control: ความเชี่ยวชาญในการใช้งาน Git หรือระบบ Version Control อื่น ๆ เพื่อจัดการกับโค้ดในโปรเจคที่มีทีมงานหลายคน

สรุป (Conclusion)

การเป็น Junior และ Senior Programmer ใน AL Programming มีความแตกต่างกันอย่างชัดเจนในด้านทักษะและประสบการณ์ที่จำเป็น ในขณะที่ Junior Programmer ควรมีความเข้าใจในพื้นฐานและการพัฒนาเบื้องต้น Senior Programmer ต้องมีความเชี่ยวชาญในเรื่องการออกแบบระบบ การจัดการทีมงาน การพัฒนา API การทดสอบและประเมินผลโค้ด การจัดการกับระบบขนาดใหญ่ และการรักษาความปลอดภัย การพัฒนาทักษะเหล่านี้จะช่วยให้คุณสามารถก้าวหน้าในสายงานและสร้างผลงานที่มีคุณภาพสูงสุดได้

Dynamics 365 Business Central: Disable Teaching Tips ใน Dynamics 365 BC ง่ายนิดเดียว

Teaching Tips ใน Dynamics 365 Business Central เป็นเครื่องมือช่วยผู้ใช้งานใหม่เข้าใจฟีเจอร์ต่างๆ อย่างรวดเร็ว อย่างไรก็ตาม ผู้ใช้งานที่มีประสบการณ์อาจต้องการปิดการใช้งานฟีเจอร์นี้เพื่อให้การทำงานเป็นไปอย่างราบรื่น บทความนี้จะอธิบายขั้นตอนการปิด Teaching Tips อย่างละเอียดทั้งในส่วนของผู้ใช้ทั่วไปและผู้ดูแลระบบ เพื่อให้สามารถใช้งานระบบได้อย่างมีประสิทธิภาพมากขึ้น

ขั้นตอนการปิด Teaching Tips

1. ปิดผ่าน My Settings:

เข้าไปที่ My Settings: คลิกที่ไอคอนโปรไฟล์มุมขวาบนของหน้าจอเพื่อเปิดเมนูการตั้งค่าส่วนตัว

เลือก My Settings: หลังจากคลิกจะเปิดหน้าต่างการตั้งค่าส่วนตัว

ปิด Teaching Tips: ในหน้าต่าง My Settings เลื่อนลงหาฟิลด์ที่ชื่อว่า “Teaching Tips” จากนั้นคลิกเพื่อปิด (สวิตช์จาก “Yes” ไปเป็น “No”)

2. ปิด Teaching Tips สำหรับผู้ใช้งานหลายคน (โดยผู้ดูแลระบบ):

เข้าไปที่ User Settings Card: ผู้ดูแลระบบสามารถกำหนดค่า Teaching Tips สำหรับผู้ใช้หลายๆ คนผ่านหน้า User Settings Card

เลือกผู้ใช้ที่ต้องการ: ภายในหน้า User Settings Card ให้ค้นหาและเลือกผู้ใช้ที่ต้องการแก้ไขการตั้งค่า

ปรับค่า Teaching Tips: ในฟิลด์ Teaching Tips ของผู้ใช้ที่เลือก ให้ตั้งค่าจาก “Yes” ไปเป็น “No” เพื่อปิดการแสดงผล Teaching Tips

การปิด Teaching Tips จะช่วยลดความยุ่งยากในการใช้งานและปรับปรุงประสบการณ์ให้ดียิ่งขึ้น เหมาะสำหรับผู้ใช้ที่คุ้นเคยกับระบบแล้ว

สรุป

การปิด Teaching Tips ใน Dynamics 365 Business Central สามารถทำได้ง่ายๆ โดยผ่าน My Settings สำหรับผู้ใช้ทั่วไป และผ่าน User Settings Card สำหรับผู้ดูแลระบบ การปิดคำแนะนำเหล่านี้ช่วยให้การทำงานบนระบบเป็นไปอย่างราบรื่น และลดการรบกวนในระหว่างการทำงาน

Dynamics 365 Business Central: การใช้ Ternary Operator ใน AL แบบมืออาชีพ

Ternary Operator หรือที่เรียกกันว่า “Conditional Operator” เป็นฟีเจอร์ใหม่ที่ถูกเพิ่มเข้ามาในภาษา AL เพื่อเพิ่มความสามารถในการเขียนโค้ดที่กระชับและอ่านง่ายขึ้น โดยเฉพาะในสถานการณ์ที่ต้องการตรวจสอบเงื่อนไขและคืนค่าต่างๆ ตามเงื่อนไขนั้นๆ

รูปแบบการใช้งาน Ternary Operator

ซึ่งสามารถนำมาใช้แทนโครงสร้าง if-then-else แบบพื้นฐานได้ในกรณีที่เงื่อนไขมีความเรียบง่ายและกระชับพอสมควร

เหตุผลที่ควรใช้ Ternary Operator

การใช้ Ternary operator มีประโยชน์ในการลดความซับซ้อนของโค้ด โดยเฉพาะในกรณีที่เงื่อนไขนั้นง่ายและสามารถอ่านผลลัพธ์ได้อย่างชัดเจนในบรรทัดเดียว ตัวอย่างเช่น:

เทียบกับการใช้ if-then-else แบบธรรมดา:

// การใช้ if-then-else
if Number > 0 then
    IsPositive := 'Positive';
else
    IsPositive := 'Negative or Zero';

จากตัวอย่างนี้จะเห็นได้ว่า Ternary operator ช่วยให้โค้ดสั้นลงและอ่านง่ายขึ้น

ข้อควรระวังในการใช้ Ternary Operator

แม้ว่า Ternary operator จะมีประโยชน์ในบางกรณี แต่ก็มีข้อควรระวังในการใช้งานเช่นกัน

1. อย่าใช้ถ้าโค้ดยาวเกินไป: ควรใช้ Ternary operator เฉพาะในกรณีที่เงื่อนไขและผลลัพธ์นั้นสั้นและกระชับพอที่จะอ่านได้ในบรรทัดเดียว เช่น:

ไม่เหมาะสม:

2. หลีกเลี่ยงการใช้ในกรณีที่มีเงื่อนไขซ้ำซ้อน: หากเงื่อนไขเดียวกันต้องตรวจสอบหลายครั้ง ควรใช้ if-then-else แทนเพื่อลดความซับซ้อนของโค้ด:

3. ไม่ควรใช้ Ternary operator เพื่อคืนค่า Boolean flag: การใช้ Ternary operator ในกรณีนี้ไม่จำเป็นและอาจทำให้โค้ดสับสน:

ควรใช้แบบนี้แทน:

4. หลีกเลี่ยงการใช้ Ternary operator ที่ซ้อนกันหลายชั้น: การใช้ Ternary operator ที่ซ้อนกันหลายชั้นทำให้โค้ดอ่านยากและตรวจสอบยาก:

// ไม่ควรใช้
DiscountLevel := PurchaseAmount > 1000 ?
                 (CustomerType = 'VIP' ? 'High Discount' : 'Medium Discount') :
                 (CustomerType = 'VIP' ? 'Low Discount' : 'No Discount');

ควรใช้ if-then-else แทน:

บทสรุป

Ternary operator เป็นเครื่องมือที่ทรงพลังและมีประโยชน์ใน AL Programming Language เมื่อใช้งานอย่างเหมาะสม อย่างไรก็ตาม ควรใช้งานด้วยความระมัดระวังและยึดหลักการเขียนโค้ดที่เรียบง่าย เพื่อให้โค้ดอ่านง่ายและตรวจสอบได้สะดวก ผู้พัฒนาที่ดีควรรู้จักเลือกใช้เครื่องมือให้เหมาะสมกับสถานการณ์ เพื่อให้ได้ผลลัพธ์ที่มีประสิทธิภาพและรักษาคุณภาพของโค้ดให้ดีที่สุด

Dynamics 365 Business Central: พื้นฐานการใช้ AL Operators สำหรับมือใหม่

AL Operators คืออะไร?

AL Operators หรือตัวดำเนินการในภาษา AL เป็นสัญลักษณ์ที่ใช้ในการดำเนินการกับค่าหรือตัวแปรต่างๆ ไม่ว่าจะเป็นการคำนวณทางคณิตศาสตร์ การเปรียบเทียบข้อมูล การรวมข้อความ หรือการดำเนินการเชิงตรรกะ ตัวดำเนินการเหล่านี้เป็นพื้นฐานที่สำคัญในการพัฒนาโค้ดที่มีประสิทธิภาพ

1. Arithmetic Operators (ตัวดำเนินการทางคณิตศาสตร์)

+" (Addition): ใช้ในการบวกสองค่าเข้าด้วยกันหรือรวมข้อความ

-” (Subtraction): ใช้ในการลบค่าหนึ่งออกจากอีกค่า

"*" (Multiplication): ใช้ในการคูณสองค่า

/" (Division): ใช้ในการหารสองค่า

MOD” (Modulus): ใช้ในการหารสองค่าและคืนค่าเศษที่เหลือ

2. Comparison Operators (ตัวดำเนินการเปรียบเทียบ)

ใช้ในการเปรียบเทียบค่าต่างๆ ซึ่งผลลัพธ์จะเป็น TRUE หรือ FALSE

=" (Equal): ตรวจสอบว่าค่าสองค่ามีค่าเท่ากันหรือไม่

<>" (Not Equal): ตรวจสอบว่าค่าสองค่าไม่เท่ากันหรือไม่

>" (Greater Than): ตรวจสอบว่าค่าหนึ่งมากกว่าค่าอีกค่าหรือไม่

<" (Less Than): ตรวจสอบว่าค่าหนึ่งน้อยกว่าค่าอีกค่าหรือไม่

>=" (Greater Than or Equal To): ตรวจสอบว่าค่าหนึ่งมากกว่าหรือเท่ากับค่าอีกค่าหรือไม่

<=" (Less Than or Equal To): ตรวจสอบว่าค่าหนึ่งน้อยกว่าหรือเท่ากับค่าอีกค่าหรือไม่

3. Logical Operators (ตัวดำเนินการเชิงตรรกะ)

ใช้ในการดำเนินการเชิงตรรกะ เช่น AND, OR, และ NOT เพื่อสร้างเงื่อนไขที่ซับซ้อนขึ้น

AND": ตรวจสอบว่าทั้งสองเงื่อนไขเป็นจริงหรือไม

OR": ตรวจสอบว่าอย่างน้อยหนึ่งเงื่อนไขเป็นจริงหรือไม่

NOT": เปลี่ยนค่าจาก TRUE เป็น FALSE และจาก FALSE เป็น TRUE

4. Assignment Operators (ตัวดำเนินการกำหนดค่า)

ใช้ในการกำหนดค่าหรือผลลัพธ์จากการคำนวณให้กับตัวแปร

:= (Assignment): กำหนดค่าหรือผลลัพธ์ให้กับตัวแปร

5. String Operators (ตัวดำเนินการจัดการข้อความ)

ใช้ในการรวมข้อความ

+" (Concatenation): รวมข้อความสองข้อความเข้าด้วยกัน

6. Unary Operators (ตัวดำเนินการยูนารี)

ใช้ในการดำเนินการกับค่าหนึ่งค่า เช่น การทำให้เป็นค่าบวกหรือลบ

"+" (Unary Plus): ระบุว่าค่าของตัวแปรเป็นบวก (สามารถละได้)

-" (Unary Minus): ทำให้ค่าของตัวแปรเป็นลบ

7. Compound Assignment Operators (ตัวดำเนินการกำหนดค่าแบบผสม)

+=" (Addition Assignment): เพิ่มค่าและกำหนดค่าผลลัพธ์กลับไปยังตัวแปรเดิม

“-=” (Subtraction Assignment): ลบค่าจากตัวแปรแล้วกำหนดค่าผลลัพธ์กลับไปยังตัวแปรเดิม

*=" (Multiplication Assignment): คูณค่ากับตัวแปรแล้วกำหนดค่าผลลัพธ์กลับไปยังตัวแปรเดิม

"/=” (Division Assignment): หารค่าจากตัวแปรแล้วกำหนดค่าผลลัพธ์กลับไปยังตัวแปรเดิม

สรุป

การใช้ AL Operators ในการเขียนโปรแกรมใน Dynamics 365 Business Central เป็นเรื่องสำคัญที่ช่วยให้คุณสามารถคำนวณ เปรียบเทียบ และจัดการข้อมูลได้อย่างมีประสิทธิภาพ เมื่อคุณเข้าใจวิธีการใช้ตัวดำเนินการเหล่านี้ การเขียนโค้ดของคุณจะง่ายขึ้น และคุณจะสามารถสร้างโซลูชันที่ตรงตามความต้องการได้อย่างรวดเร็วและถูกต้อง

การเรียนรู้ AL Operators ไม่ได้ยาก แค่เข้าใจพื้นฐานแล้วฝึกใช้งานบ่อยๆ คุณก็จะเชี่ยวชาญได้อย่างรวดเร็วครับ!