logologo
เริ่มต้น
คู่มือ
การพัฒนา
ปลั๊กอิน
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
เริ่มต้น
คู่มือ
การพัฒนา
ปลั๊กอิน
API
logologo
ภาพรวม
คำอธิบายการกำหนดค่า

ไวยากรณ์เทมเพลต

การใช้งานพื้นฐาน
การวนซ้ำ

เครื่องมือจัดรูปแบบ

ภาพรวม
การจัดรูปแบบข้อความ
การจัดรูปแบบตัวเลข
การจัดรูปแบบสกุลเงิน
การจัดรูปแบบวันที่
การจัดรูปแบบช่วงเวลา
การจัดรูปแบบอาร์เรย์

ฟังก์ชันขั้นสูง

การกำหนดเงื่อนไข
คุณสมบัติขั้นสูง
คำถามที่พบบ่อย
กรณีการใช้งาน
Previous Pageคำถามที่พบบ่อย
TIP

เอกสารนี้แปลโดย AI หากมีข้อมูลที่ไม่ถูกต้อง โปรดดูเวอร์ชันภาษาอังกฤษ

#การใช้ฟีเจอร์ "พิมพ์จากเทมเพลต" เพื่อสร้างตัวอย่าง "สัญญาซื้อขายสินค้า"

ในสถานการณ์ที่เกี่ยวข้องกับซัพพลายเชนหรือการค้าขาย เรามักจะต้องสร้าง "สัญญาซื้อขายสินค้า" ที่เป็นมาตรฐานอย่างรวดเร็ว และกรอกข้อมูลลงไปโดยอัตโนมัติจากแหล่งข้อมูล เช่น ข้อมูลผู้ซื้อ ผู้ขาย และรายละเอียดสินค้า ในบทความนี้ เราจะใช้กรณีตัวอย่าง "สัญญา" แบบง่ายๆ เพื่อแสดงให้เห็นถึงวิธีการตั้งค่าและใช้งานฟีเจอร์ "พิมพ์จากเทมเพลต" เพื่อนำข้อมูลไปใส่ในช่องว่าง (placeholder) ของเทมเพลตสัญญา และสร้างเอกสารสัญญาฉบับสมบูรณ์โดยอัตโนมัติครับ/ค่ะ


#1. ภาพรวมเบื้องหลังและโครงสร้างข้อมูล

ในตัวอย่างของเรา มีคอลเลกชันหลักๆ ดังต่อไปนี้ (โดยจะละเว้นฟิลด์อื่นๆ ที่ไม่เกี่ยวข้องครับ/ค่ะ):

  • parties: เก็บข้อมูลหน่วยงานหรือบุคคลที่เป็นคู่สัญญา (ฝ่าย A/ฝ่าย B) รวมถึงชื่อ ที่อยู่ ผู้ติดต่อ เบอร์โทรศัพท์ และอื่นๆ
  • contracts: เก็บข้อมูลบันทึกสัญญาเฉพาะ เช่น เลขที่สัญญา, Foreign Key ของผู้ซื้อ/ผู้ขาย, ข้อมูลผู้ลงนาม, วันที่เริ่มต้น/สิ้นสุด, บัญชีธนาคาร และอื่นๆ
  • contract_line_items: ใช้สำหรับเก็บรายการสินค้าหลายรายการภายใต้สัญญา (ชื่อสินค้า, รายละเอียด/รุ่น, จำนวน, ราคาต่อหน่วย, วันที่จัดส่ง และอื่นๆ)

template_print-2025-11-01-16-34-04

เนื่องจากระบบปัจจุบันรองรับการพิมพ์ข้อมูลทีละรายการเท่านั้น เราจะคลิก "พิมพ์" ที่หน้า "รายละเอียดสัญญา" จากนั้นระบบจะดึงบันทึกสัญญาที่เกี่ยวข้อง รวมถึงข้อมูล parties และข้อมูลอื่นๆ ที่เชื่อมโยงกันโดยอัตโนมัติ เพื่อนำไปกรอกในเอกสาร Word หรือ PDF ครับ/ค่ะ

#2. การเตรียมตัว

#2.1 การเตรียมปลั๊กอิน

โปรดทราบว่าฟีเจอร์ "พิมพ์จากเทมเพลต" ของเราเป็นปลั๊กอินเชิงพาณิชย์ ซึ่งจำเป็นต้องซื้อและเปิดใช้งานก่อนจึงจะสามารถดำเนินการพิมพ์ได้ครับ/ค่ะ

template_print-2025-11-01-17-31-51

ยืนยันการเปิดใช้งานปลั๊กอิน:

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

template_print-2025-11-01-17-32-09

template_print-2025-11-01-17-32-30

#2.2 การสร้างคอลเลกชัน

สร้างคอลเลกชันหลัก คอลเลกชันสัญญา และคอลเลกชันรายการสินค้าตามที่ออกแบบไว้ด้านบน (เลือกเฉพาะฟิลด์หลักๆ ก็พอครับ/ค่ะ)

#คอลเลกชันสัญญา (Contracts)

หมวดหมู่ฟิลด์ชื่อฟิลด์ที่แสดงชื่อฟิลด์อินเทอร์เฟซฟิลด์
ฟิลด์ PK & FK
IDidInteger
Buyer IDbuyer_idInteger
Seller IDseller_idInteger
ฟิลด์การเชื่อมโยง
รายการสัญญาcontract_itemsOne to many
ผู้ซื้อ (ฝ่าย A)buyerMany to one
ผู้ขาย (ฝ่าย B)sellerMany to one
ฟิลด์ทั่วไป
เลขที่สัญญาcontract_noSingle line text
วันที่เริ่มต้นจัดส่งstart_dateDatetime (with time zone)
วันที่สิ้นสุดจัดส่งend_dateDatetime (with time zone)
อัตราส่วนเงินมัดจำ (%)deposit_ratioPercent
จำนวนวันชำระเงินหลังจัดส่งpayment_days_afterInteger
ชื่อบัญชีธนาคาร (ผู้รับผลประโยชน์)bank_account_nameSingle line text
ชื่อธนาคารbank_nameSingle line text
เลขที่บัญชีธนาคาร (ผู้รับผลประโยชน์)bank_account_numberSingle line text
ยอดรวมtotal_amountNumber
รหัสสกุลเงินcurrency_codesSingle select
อัตราส่วนยอดคงเหลือ (%)balance_ratioPercent
จำนวนวันคงเหลือหลังจัดส่งbalance_days_afterInteger
สถานที่จัดส่งdelivery_placeLong text
ชื่อผู้ลงนามฝ่าย Aparty_a_signatory_nameSingle line text
ตำแหน่งผู้ลงนามฝ่าย Aparty_a_signatory_titleSingle line text
ชื่อผู้ลงนามฝ่าย Bparty_b_signatory_nameSingle line text
ตำแหน่งผู้ลงนามฝ่าย Bparty_b_signatory_titleSingle line text
ฟิลด์ระบบ
สร้างเมื่อcreatedAtCreated at
สร้างโดยcreatedByCreated by
อัปเดตล่าสุดเมื่อupdatedAtLast updated at
อัปเดตล่าสุดโดยupdatedByLast updated by

#คอลเลกชัน Parties

หมวดหมู่ฟิลด์ชื่อฟิลด์ที่แสดงชื่อฟิลด์อินเทอร์เฟซฟิลด์
ฟิลด์ PK & FK
IDidInteger
ฟิลด์ทั่วไป
ชื่อคู่สัญญาparty_nameSingle line text
ที่อยู่addressSingle line text
ผู้ติดต่อcontact_personSingle line text
เบอร์โทรศัพท์ผู้ติดต่อcontact_phonePhone
ตำแหน่งpositionSingle line text
อีเมลemailEmail
เว็บไซต์websiteURL
ฟิลด์ระบบ
สร้างเมื่อcreatedAtCreated at
สร้างโดยcreatedByCreated by
อัปเดตล่าสุดเมื่อupdatedAtLast updated at
อัปเดตล่าสุดโดยupdatedByLast updated by

#คอลเลกชันรายการสินค้า (Contract Line Items)

หมวดหมู่ฟิลด์ชื่อฟิลด์ที่แสดงชื่อฟิลด์อินเทอร์เฟซฟิลด์
ฟิลด์ PK & FK
IDidInteger
Contract IDcontract_idInteger
ฟิลด์การเชื่อมโยง
สัญญาcontractMany to one
ฟิลด์ทั่วไป
ชื่อสินค้าproduct_nameSingle line text
รายละเอียด / รุ่นspecSingle line text
จำนวนquantityInteger
ราคาต่อหน่วยunit_priceNumber
ยอดรวมtotal_amountNumber
วันที่จัดส่งdelivery_dateDatetime (with time zone)
หมายเหตุremarkLong text
ฟิลด์ระบบ
สร้างเมื่อcreatedAtCreated at
สร้างโดยcreatedByCreated by
อัปเดตล่าสุดเมื่อupdatedAtLast updated at
อัปเดตล่าสุดโดยupdatedByLast updated by

#2.3 การตั้งค่าอินเทอร์เฟซ

ป้อนข้อมูลตัวอย่าง:

template_print-2025-11-01-17-32-59

template_print-2025-11-01-17-33-11

ตั้งค่ากฎการเชื่อมโยงเพื่อคำนวณยอดรวมและยอดชำระคงเหลือโดยอัตโนมัติ:

template_print-2025-11-01-17-33-21

สร้างบล็อกสำหรับดูข้อมูล ยืนยันข้อมูล แล้วเปิดใช้งานการดำเนินการ "พิมพ์จากเทมเพลต":

template_print-2025-11-01-17-33-33

#2.4 การตั้งค่าปลั๊กอินพิมพ์จากเทมเพลต

template_print-2025-11-01-17-33-45

เพิ่มการตั้งค่าเทมเพลตใหม่ เช่น "สัญญาซื้อขายสินค้า":

template_print-2025-11-01-17-33-57

template_print-2025-11-01-17-34-08

ถัดไป เราจะไปที่แท็บ "รายการฟิลด์" ซึ่งจะแสดงฟิลด์ทั้งหมดของออบเจกต์ปัจจุบัน หลังจากคลิก "คัดลอก" เราก็สามารถเริ่มกรอกข้อมูลลงในเทมเพลตได้เลยครับ/ค่ะ

template_print-2025-11-01-17-35-19

#2.5 การเตรียมไฟล์สัญญา

ไฟล์เทมเพลตสัญญา Word

เตรียมไฟล์เทมเพลตสัญญา (.docx) ไว้ล่วงหน้า เช่น: SUPPLY AND PURCHASE CONTRACT.docx

ในตัวอย่างนี้ เราได้จัดเตรียม "สัญญาซื้อขายสินค้า" ฉบับย่อ ซึ่งมีช่องว่าง (placeholder) ตัวอย่างดังนี้ครับ/ค่ะ:

  • {d.contract_no}: เลขที่สัญญา
  • {d.buyer.party_name}, {d.seller.party_name}: ชื่อผู้ซื้อ, ชื่อผู้ขาย
  • {d.total_amount}: ยอดรวมสัญญา
  • และช่องว่างอื่นๆ เช่น "ผู้ติดต่อ" "ที่อยู่" "เบอร์โทรศัพท์" เป็นต้น

จากนั้น คุณสามารถคัดลอกฟิลด์จากคอลเลกชันที่คุณสร้างไว้ แล้วนำไปวางในเอกสาร Word ได้เลยครับ/ค่ะ


#3. บทเรียนตัวแปรเทมเพลต

#3.1 การกรอกตัวแปรพื้นฐานและคุณสมบัติของออบเจกต์ที่เชื่อมโยง

การกรอกฟิลด์พื้นฐาน:

เช่น เลขที่สัญญาที่อยู่ด้านบน หรือออบเจกต์ของคู่สัญญา เราสามารถคลิกคัดลอก แล้ววางลงในช่องว่างที่เกี่ยวข้องในสัญญาได้เลยครับ/ค่ะ

template_print-2025-11-01-17-31-11

template_print-2025-11-01-17-30-51

#3.2 การจัดรูปแบบข้อมูล

#การจัดรูปแบบวันที่

ในเทมเพลต เรามักจะต้องจัดรูปแบบฟิลด์ โดยเฉพาะฟิลด์วันที่ รูปแบบวันที่ที่คัดลอกมาโดยตรงมักจะยาวเกินไป (เช่น Wed Jan 01 2025 00:00:00 GMT) จึงจำเป็นต้องจัดรูปแบบใหม่ให้แสดงผลตามที่เราต้องการครับ/ค่ะ

สำหรับฟิลด์วันที่ คุณสามารถใช้ฟังก์ชัน formatD() เพื่อระบุรูปแบบการแสดงผลได้ดังนี้:

{field_name:formatD(format_style)}

ตัวอย่าง:

ตัวอย่างเช่น หากฟิลด์ต้นฉบับที่เราคัดลอกมาคือ {d.created_at} และเราต้องการจัดรูปแบบวันที่ให้เป็น 2025-01-01 เราสามารถปรับเปลี่ยนฟิลด์นี้ได้ดังนี้:

{d.created_at:formatD(YYYY-MM-DD)}  // ผลลัพธ์: 2025-01-01

รูปแบบการจัดรูปแบบวันที่ที่พบบ่อย:

  • YYYY - ปี (ตัวเลขสี่หลัก)
  • MM - เดือน (ตัวเลขสองหลัก)
  • DD - วันที่ (ตัวเลขสองหลัก)
  • HH - ชั่วโมง (รูปแบบ 24 ชั่วโมง)
  • mm - นาที
  • ss - วินาที

ตัวอย่างที่ 2:

{d.created_at:formatD(YYYY-MM-DD HH:mm:ss)}  // ผลลัพธ์: 2025-01-01 14:30:00

#การจัดรูปแบบตัวเลข (จำนวนเงิน)

สมมติว่ามีฟิลด์จำนวนเงิน เช่น {d.total_amount} ในสัญญา เราสามารถใช้ฟังก์ชัน formatN() เพื่อจัดรูปแบบตัวเลข โดยระบุจำนวนทศนิยมและตัวคั่นหลักพันได้ครับ/ค่ะ

ไวยากรณ์:

{field_name:formatN(decimal_places, thousands_separator)}
  • จำนวนทศนิยม: คุณสามารถระบุจำนวนทศนิยมที่ต้องการได้ เช่น 2 หมายถึง ทศนิยมสองตำแหน่ง
  • ตัวคั่นหลักพัน: ระบุว่าจะใช้ตัวคั่นหลักพันหรือไม่ โดยปกติจะเป็น true หรือ false

ตัวอย่างที่ 1: จัดรูปแบบจำนวนเงินให้มีตัวคั่นหลักพันและทศนิยมสองตำแหน่ง

{d.amount:formatN(2, true)}  // ผลลัพธ์: 1,234.56

สิ่งนี้จะจัดรูปแบบ d.amount ให้เป็นทศนิยมสองตำแหน่งและเพิ่มตัวคั่นหลักพันครับ/ค่ะ

ตัวอย่างที่ 2: จัดรูปแบบจำนวนเงินให้เป็นจำนวนเต็มโดยไม่มีทศนิยม

{d.amount:formatN(0, true)}  // ผลลัพธ์: 1,235

สิ่งนี้จะจัดรูปแบบ d.amount ให้เป็นจำนวนเต็มและเพิ่มตัวคั่นหลักพันครับ/ค่ะ

ตัวอย่างที่ 3: จัดรูปแบบจำนวนเงินให้มีทศนิยมสองตำแหน่งแต่ไม่มีตัวคั่นหลักพัน

{d.amount:formatN(2, false)}  // ผลลัพธ์: 1234.56

ในที่นี้จะปิดใช้งานตัวคั่นหลักพันและคงไว้เพียงทศนิยมสองตำแหน่งครับ/ค่ะ

ความต้องการจัดรูปแบบจำนวนเงินอื่นๆ:

  • สัญลักษณ์สกุลเงิน: Carbone ไม่ได้มีฟังก์ชันจัดรูปแบบสัญลักษณ์สกุลเงินโดยตรง แต่คุณสามารถเพิ่มสัญลักษณ์สกุลเงินได้โดยตรงในข้อมูลหรือในเทมเพลต ตัวอย่างเช่น:
    {d.amount:formatN(2, true)} บาท  // ผลลัพธ์: 1,234.56 บาท

#การจัดรูปแบบสตริง

สำหรับฟิลด์สตริง คุณสามารถใช้ :upperCase เพื่อระบุรูปแบบของข้อความ เช่น การแปลงตัวพิมพ์เล็ก-ใหญ่ครับ/ค่ะ

ไวยากรณ์:

{field_name:upperCase:other_commands}

วิธีการแปลงที่พบบ่อย:

  • upperCase - แปลงเป็นตัวพิมพ์ใหญ่ทั้งหมด
  • lowerCase - แปลงเป็นตัวพิมพ์เล็กทั้งหมด
  • upperCase:ucFirst - แปลงตัวอักษรแรกเป็นตัวพิมพ์ใหญ่

ตัวอย่าง:

{d.party_a_signatory_name:upperCase}  // ผลลัพธ์: JOHN DOE

#3.3 การพิมพ์แบบวนซ้ำ

#วิธีการพิมพ์รายการออบเจกต์ย่อย (เช่น รายละเอียดสินค้า)

เมื่อเราต้องการพิมพ์ตารางที่มีรายการย่อยหลายรายการ (เช่น รายละเอียดสินค้า) เรามักจะต้องใช้วิธีการพิมพ์แบบวนซ้ำ ด้วยวิธีนี้ ระบบจะสร้างเนื้อหาหนึ่งบรรทัดสำหรับแต่ละรายการในลิสต์ จนกว่าจะวนซ้ำครบทุกรายการครับ/ค่ะ

สมมติว่าเรามีรายการสินค้า (เช่น contract_items) ซึ่งประกอบด้วยออบเจกต์สินค้าหลายรายการ ออบเจกต์สินค้าแต่ละรายการมีคุณสมบัติหลายอย่าง เช่น ชื่อสินค้า, รายละเอียด/รุ่น, จำนวน, ราคาต่อหน่วย, ยอดรวม และหมายเหตุ

ขั้นตอนที่ 1: กรอกฟิลด์ในแถวแรกของตาราง

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

ตัวอย่างเช่น แถวแรกของตารางมีลักษณะดังนี้:

ชื่อสินค้ารายละเอียด / รุ่นจำนวนราคาต่อหน่วยยอดรวมหมายเหตุ
{d.contract_items[i].product_name}{d.contract_items[i].spec}{d.contract_items[i].quantity}{d.contract_items[i].unit_price}{d.contract_items[i].total_amount}{d.contract_items[i].remark}

ในที่นี้ d.contract_items[i] หมายถึงรายการที่ i ในรายการสินค้า และ i คือดัชนีที่แสดงถึงลำดับของสินค้าปัจจุบันครับ/ค่ะ

ขั้นตอนที่ 2: แก้ไขดัชนีในแถวที่สอง

ถัดไป ในแถวที่สองของตาราง เราจะแก้ไขดัชนีของฟิลด์เป็น i+1 และกรอกเฉพาะคุณสมบัติแรกเท่านั้น เนื่องจากในการพิมพ์แบบวนซ้ำ เราจะต้องดึงข้อมูลรายการถัดไปจากลิสต์และแสดงผลในแถวถัดไปครับ/ค่ะ

ตัวอย่างเช่น แถวที่สองกรอกข้อมูลดังนี้:

ชื่อสินค้ารายละเอียด / รุ่นจำนวนราคาต่อหน่วยยอดรวมหมายเหตุ
{d.contract_items[i+1].product_name}

ในตัวอย่างนี้ เราเปลี่ยน [i] เป็น [i+1] เพื่อให้สามารถดึงข้อมูลสินค้าถัดไปในลิสต์ได้ครับ/ค่ะ

ขั้นตอนที่ 3: การพิมพ์แบบวนซ้ำอัตโนมัติเมื่อเรนเดอร์เทมเพลต

เมื่อระบบประมวลผลเทมเพลตนี้ จะดำเนินการตามตรรกะดังต่อไปนี้ครับ/ค่ะ:

  1. แถวแรกจะถูกกรอกข้อมูลตามฟิลด์ที่คุณตั้งค่าไว้ในเทมเพลต
  2. จากนั้น ระบบจะลบแถวที่สองโดยอัตโนมัติ และเริ่มดึงข้อมูลจาก d.contract_items โดยจะวนซ้ำเพื่อกรอกข้อมูลแต่ละแถวตามรูปแบบในตาราง จนกว่ารายละเอียดสินค้าทั้งหมดจะถูกพิมพ์เสร็จสมบูรณ์

ค่า i ในแต่ละแถวจะเพิ่มขึ้น เพื่อให้แน่ใจว่าแต่ละแถวจะแสดงข้อมูลสินค้าที่แตกต่างกันครับ/ค่ะ


#4. การอัปโหลดและตั้งค่าเทมเพลตสัญญา

#4.1 การอัปโหลดเทมเพลต

  1. คลิกปุ่ม "เพิ่มเทมเพลต" และป้อนชื่อเทมเพลต เช่น "เทมเพลตสัญญาซื้อขายสินค้า"
  2. อัปโหลด ไฟล์สัญญา Word (.docx) ที่เตรียมไว้ ซึ่งมีช่องว่าง (placeholder) ทั้งหมดอยู่แล้ว

template_print-2025-11-01-17-36-06

  1. เมื่อเสร็จสิ้น ระบบจะแสดงเทมเพลตดังกล่าวในรายการเทมเพลตที่เลือกได้ เพื่อให้สามารถใช้งานในภายหลังได้ครับ/ค่ะ
  2. เราคลิก "ใช้งาน" เพื่อเปิดใช้งานเทมเพลตนี้ครับ/ค่ะ

template_print-2025-11-01-17-36-13

เมื่อถึงขั้นตอนนี้ ให้ออกจากหน้าต่างป๊อปอัปปัจจุบัน แล้วคลิก "ดาวน์โหลดเทมเพลต" เพื่อรับเทมเพลตฉบับสมบูรณ์ที่สร้างขึ้นมาได้เลยครับ/ค่ะ

เคล็ดลับ:

  • หากเทมเพลตใช้ไฟล์ .doc หรือรูปแบบอื่นๆ อาจจำเป็นต้องแปลงเป็น .docx ซึ่งขึ้นอยู่กับการรองรับของปลั๊กอินครับ/ค่ะ
  • ในไฟล์ Word โปรดระวังอย่าแบ่งช่องว่าง (placeholder) ออกเป็นหลายย่อหน้าหรือกล่องข้อความ เพื่อป้องกันข้อผิดพลาดในการเรนเดอร์ครับ/ค่ะ

ขอให้ใช้งานได้อย่างราบรื่นนะครับ/คะ! ด้วยฟีเจอร์ "พิมพ์จากเทมเพลต" นี้ คุณจะสามารถลดงานซ้ำซ้อนในการจัดการสัญญาได้อย่างมาก หลีกเลี่ยงข้อผิดพลาดจากการคัดลอกและวางด้วยตนเอง และทำให้การสร้างสัญญาเป็นมาตรฐานและเป็นอัตโนมัติได้ครับ/ค่ะ