การสร้างรายงานอย่างง่ายเกี่ยวกับระบบจัดเก็บข้อมูล การสร้างรายงานอย่างง่ายเกี่ยวกับองค์ประกอบข้อมูล SCD 1
หนึ่งในส่วนที่สำคัญที่สุดของซอฟต์แวร์ธุรกิจคือการรายงาน ชะตากรรมของธุรกิจอาจขึ้นอยู่กับ (และไม่ใช่ในความหมายโดยนัย!) ว่าการปรับแต่งรายงานที่มีอยู่ให้ตรงกับความต้องการที่เปลี่ยนแปลงไปของธุรกิจ (และกฎหมาย) นั้นง่ายดายเพียงใด หรือสร้างรายงานใหม่ ไม่ว่าจะเป็นรายงานสำหรับสำนักงานสรรพากร หรือแผนภาพการพึ่งพาความต้องการสินค้าตามฤดูกาลและปัจจัยอื่นๆ ระบบการรายงานที่ทรงพลังและยืดหยุ่นซึ่งทำให้ง่ายต่อการดึงข้อมูลที่จำเป็นออกจากระบบ นำเสนอในรูปแบบที่เข้าใจได้ ช่วยให้ผู้ใช้สามารถกำหนดค่ารายงานมาตรฐานใหม่เพื่อดูข้อมูลในมุมมองใหม่ - นี่คืออุดมคติที่ทุก ระบบธุรกิจควรมุ่งมั่นเพื่อ
ในแพลตฟอร์ม 1C:Enterprise กลไกที่เรียกว่า "ระบบการจัดองค์ประกอบข้อมูล" (เรียกย่อว่า DCS) มีหน้าที่ในการสร้างรายงาน ในบทความนี้เราจะพยายามให้คำอธิบายสั้น ๆ เกี่ยวกับแนวคิดและสถาปัตยกรรมของกลไก ACS และความสามารถของมัน
ACS เป็นกลไกที่อิงตามคำอธิบายรายงานที่เปิดเผย ระบบควบคุมการเข้าออกได้รับการออกแบบสำหรับการสร้างรายงานและการแสดงข้อมูลที่มีโครงสร้างที่ซับซ้อน นอกเหนือจากการพัฒนารายงานแล้ว กลไก ACS ยังใช้ใน 1C:Enterprise ในรายการไดนามิก ซึ่งเป็นเครื่องมือสำหรับการแสดงข้อมูลรายการพร้อมฟังก์ชันการทำงานที่หลากหลาย (แสดงรายการแบบเรียบและแบบลำดับชั้น การออกแบบแถวตามเงื่อนไข การจัดกลุ่ม ฯลฯ ).
ประวัติเล็กน้อย
ในเวอร์ชันแรกของแพลตฟอร์ม 1C:Enterprise 8 เวอร์ชัน 8.0 มีการสร้างรายงานดังนี้:- แบบสอบถามอย่างน้อยหนึ่งรายการเขียนด้วยภาษาแบบสอบถาม 1C (ภาษาคล้าย SQL อ่านเพิ่มเติมด้านล่าง)
- มีการเขียนโค้ดที่ถ่ายโอนผลลัพธ์ของการสืบค้นที่ดำเนินการไปยังเอกสารสเปรดชีตหรือแผนภูมิ โค้ดยังสามารถทำงานที่ไม่สามารถทำได้ในการสืบค้น - ตัวอย่างเช่น คำนวณค่าโดยใช้ภาษา 1C ในตัว
แนวคิดประการหนึ่งที่สร้างพื้นฐานของระบบควบคุมการเข้าถึงคือความยืดหยุ่นและการปรับแต่งรายงาน ซึ่งทั้งนักพัฒนาและผู้ใช้ปลายทางสามารถเข้าถึงได้ ตามหลักการแล้ว ฉันต้องการให้ผู้ใช้ปลายทางเข้าถึงชุดเครื่องมือออกแบบรายงานชุดเดียวกันกับนักพัฒนา คงจะสมเหตุสมผลที่จะสร้างชุดเครื่องมือชุดเดียวสำหรับทุกคน เนื่องจากเครื่องมือต้องการการมีส่วนร่วมของผู้ใช้จึงหมายความว่าควรใช้การเขียนโปรแกรมในเครื่องมือเหล่านี้ให้เหลือน้อยที่สุด (เป็นการดีที่สุดที่จะกำจัดมันออกไปโดยสิ้นเชิง) และควรใช้การตั้งค่าภาพให้สูงสุด
คำชี้แจงของปัญหา
งานต่อหน้าทีมพัฒนาคือการสร้างระบบการรายงานที่ไม่อิงตามอัลกอริธึม (เช่น ผ่านการเขียนโค้ด) แต่ใช้วิธีการประกาศเพื่อสร้างรายงาน และเราเชื่อว่าปัญหาได้รับการแก้ไขเรียบร้อยแล้ว จากประสบการณ์ของเรา ประมาณ 80% ของการรายงานที่จำเป็นสามารถนำไปใช้ได้โดยใช้ ACS โดยไม่ต้องใช้โค้ดแม้แต่บรรทัดเดียว (ยกเว้นการเขียนสูตรสำหรับฟิลด์จากการคำนวณ) ส่วนใหญ่ผ่านการตั้งค่าภาพการพัฒนา SDS เวอร์ชันแรกใช้เวลาประมาณ 5 คนต่อปี
สองภาษา
มีสองภาษาที่เกี่ยวข้องในการสร้างรายงาน หนึ่งคือภาษาแบบสอบถามที่ใช้ในการดึงข้อมูล ภาษาที่สองคือภาษานิพจน์การจัดองค์ประกอบข้อมูล ซึ่งออกแบบมาเพื่อเขียนนิพจน์ที่ใช้ในส่วนต่างๆ ของระบบ เช่น ในการตั้งค่าการจัดองค์ประกอบข้อมูล เพื่ออธิบายนิพจน์ของฟิลด์ผู้ใช้ภาษาแบบสอบถาม
ภาษาคิวรีอิงจาก SQL และง่ายต่อการเรียนรู้สำหรับผู้ที่มีความรู้ใน SQL คำขอตัวอย่าง:เป็นเรื่องง่ายที่จะเห็นความคล้ายคลึงของส่วนมาตรฐานสำหรับการสืบค้น SQL - SELECT, FROM, GROUP BY, ORDER BY
ในเวลาเดียวกัน ภาษาคิวรีมีส่วนขยายจำนวนมากที่มุ่งสะท้อนถึงปัญหาทางการเงินและเศรษฐกิจโดยเฉพาะ และลดความพยายามที่จำเป็นในการพัฒนาโซลูชันแอปพลิเคชัน:
- การเข้าถึงฟิลด์โดยใช้จุด หากฟิลด์ของตารางเป็นประเภทการอ้างอิง (จัดเก็บลิงก์ไปยังออบเจ็กต์ของตารางอื่น) นักพัฒนาสามารถอ้างอิงถึงฟิลด์เหล่านั้นในข้อความคำขอผ่าน "." และระบบจะไม่จำกัดจำนวนระดับการซ้อน ของลิงก์ดังกล่าว (เช่น คำสั่งซื้อของลูกค้า ข้อตกลง องค์กร โทรศัพท์)
- การสร้างผลลัพธ์หลายมิติและหลายระดับ ผลรวมและผลรวมย่อยถูกสร้างขึ้นโดยคำนึงถึงการจัดกลุ่มและลำดับชั้น ระดับสามารถสำรวจในลำดับใดก็ได้ด้วยการสรุป และรับประกันการสร้างผลรวมที่ถูกต้องตามมิติเวลา
- รองรับตารางเสมือน ตารางเสมือนที่ระบบจัดเตรียมไว้ช่วยให้คุณสามารถรับข้อมูลเกือบสำเร็จรูปสำหรับงานแอปพลิเคชันส่วนใหญ่โดยไม่จำเป็นต้องสร้างการสืบค้นที่ซับซ้อน ดังนั้น ตารางเสมือนจึงสามารถให้ข้อมูลเกี่ยวกับยอดคงเหลือผลิตภัณฑ์ตามงวด ณ เวลาใดเวลาหนึ่งได้ ในเวลาเดียวกัน ตารางเสมือนจะใช้ประโยชน์จากข้อมูลที่เก็บไว้ให้เกิดประโยชน์สูงสุด เช่น ผลรวมที่คำนวณไว้ก่อนหน้านี้ เป็นต้น
- ตารางชั่วคราว. ภาษาคิวรีช่วยให้คุณใช้ตารางชั่วคราวในคิวรีได้ ด้วยความช่วยเหลือเหล่านี้ คุณสามารถปรับปรุงประสิทธิภาพการสืบค้นได้ ในบางกรณีจะลดจำนวนการบล็อกและทำให้ข้อความการสืบค้นอ่านง่ายขึ้น
- คำขอเป็นกลุ่ม เพื่อให้การทำงานกับตารางชั่วคราวสะดวกยิ่งขึ้น ภาษาคิวรีรองรับการทำงานกับคิวรีแบบแบตช์ ดังนั้น การสร้างตารางชั่วคราวและการใช้งานจึงรวมอยู่ในคิวรีเดียว คำขอแบบแบตช์คือลำดับคำขอที่คั่นด้วยเครื่องหมายอัฒภาค (";") คำขอในชุดได้รับการดำเนินการทีละรายการ ผลลัพธ์ของการดำเนินการคำขอแบทช์ ขึ้นอยู่กับวิธีการที่ใช้ จะเป็นผลลัพธ์ที่ส่งคืนโดยคำขอสุดท้ายในชุด หรืออาร์เรย์ของผลลัพธ์จากการสืบค้นทั้งหมดในชุดตามลำดับที่การสืบค้นในชุดตามมา .
- การดึงข้อมูลการแสดงฟิลด์อ้างอิง แต่ละตารางอ็อบเจ็กต์ (ซึ่งจัดเก็บไดเร็กทอรีหรือเอกสาร) มีฟิลด์เสมือน - "มุมมอง" ฟิลด์นี้ประกอบด้วยการแสดงข้อความของออบเจ็กต์ และทำให้งานของผู้สร้างรายงานง่ายขึ้น ดังนั้นสำหรับเอกสาร ฟิลด์นี้ประกอบด้วยข้อมูลสำคัญทั้งหมด - ชื่อของประเภทเอกสาร หมายเลข และวันที่ (เช่น "ลดราคา 000000003 ตั้งแต่ 07/06/2017 17:49:14") ซึ่งช่วยให้นักพัฒนาประหยัดจาก การเขียนเขตข้อมูลจากการคำนวณ
- ฯลฯ
นอกจากนี้ยังมีส่วนขยายภาษาคิวรีพิเศษสำหรับระบบควบคุมการเข้าออกอีกด้วย การขยายจะดำเนินการโดยใช้คำสั่งวากยสัมพันธ์พิเศษที่อยู่ในวงเล็บปีกกาและวางไว้โดยตรงในเนื้อหาคำขอ เมื่อใช้ส่วนขยาย นักพัฒนาจะกำหนดการดำเนินการที่ผู้ใช้จะสามารถทำได้เมื่อปรับแต่งรายงาน
ตัวอย่างเช่น:
- เลือก. ประโยคนี้อธิบายฟิลด์ที่ผู้ใช้จะสามารถเลือกสำหรับเอาต์พุตได้ หลังจากคีย์เวิร์ดนี้ นามแฝงของฟิลด์จากรายการการเลือกแบบสอบถามหลักที่จะพร้อมใช้งานสำหรับการกำหนดค่าจะแสดงรายการ โดยคั่นด้วยเครื่องหมายจุลภาค ตัวอย่าง: (เลือกรายการ คลังสินค้า)
- ที่ไหน. มีการอธิบายฟิลด์ที่ผู้ใช้สามารถใช้การเลือกได้ ข้อเสนอนี้ใช้ช่องตาราง ไม่อนุญาตให้ใช้นามแฝงของฟิลด์รายการตัวเลือก แต่ละส่วนของสหภาพสามารถมีองค์ประกอบ WHERE ของตัวเองได้ ตัวอย่าง: (WHERE Item.*, Warehouse), (WHERE Document.Date >= &StartDate, Document.Date<= &ДатаКонца}
- ฯลฯ
ภาษานิพจน์องค์ประกอบข้อมูล
ภาษานิพจน์องค์ประกอบข้อมูลได้รับการออกแบบมาเพื่อเขียนนิพจน์ที่ใช้โดยเฉพาะ เพื่ออธิบายนิพจน์ฟิลด์แบบกำหนดเอง SKD ช่วยให้คุณสามารถกำหนดฟิลด์ที่กำหนดเองในรายงานโดยใช้นิพจน์ของคุณเองหรือชุดตัวเลือกที่มีเงื่อนไขสำหรับการเลือก (คล้ายกับ CASE ใน SQL) ฟิลด์แบบกำหนดเองจะคล้ายกับฟิลด์จากการคำนวณ สามารถตั้งค่าได้ทั้งในตัวกำหนดค่าและในโหมด 1C: Enterprise แต่ไม่สามารถใช้ฟังก์ชันของโมดูลทั่วไปในนิพจน์ฟิลด์แบบกำหนดเองได้ ดังนั้น ฟิลด์ที่กำหนดเองจึงมีไว้สำหรับผู้ใช้มากกว่านักพัฒนาตัวอย่าง:
กระบวนการสร้างรายงานเกี่ยวกับระบบควบคุมการเข้าออก
เมื่อสร้างรายงาน เราจำเป็นต้องสร้างเลย์เอาต์ที่กำหนดวิธีการแสดงข้อมูลในรายงาน คุณสามารถสร้างโครงร่างตามไดอะแกรมโครงร่างข้อมูล แผนภาพเค้าโครงข้อมูลจะอธิบายสาระสำคัญของข้อมูลที่ให้กับรายงาน (จะรับข้อมูลได้จากที่ไหน และคุณจะควบคุมเค้าโครงของข้อมูลได้อย่างไร) รูปแบบการจัดองค์ประกอบข้อมูลเป็นพื้นฐานสำหรับการสร้างรายงานทุกประเภท รูปแบบการจัดองค์ประกอบข้อมูลอาจประกอบด้วย:- ขอข้อความพร้อมคำแนะนำสำหรับระบบการจัดองค์ประกอบข้อมูล
- คำอธิบายของชุดข้อมูลหลายชุด
- คำอธิบายโดยละเอียดของฟิลด์ที่มีอยู่
- อธิบายความสัมพันธ์ระหว่างชุดข้อมูลหลายชุด
- คำอธิบายของพารามิเตอร์การรับข้อมูล
- คำอธิบายเค้าโครงและการจัดกลุ่มฟิลด์
- ฯลฯ
ตัวอย่างเช่น คุณสามารถเพิ่มการสืบค้นเป็นชุดข้อมูลให้กับโครงร่างการจัดองค์ประกอบข้อมูลและเรียกใช้ตัวสร้างการสืบค้น ซึ่งช่วยให้คุณสร้างการสืบค้นที่มีความซับซ้อนตามอำเภอใจได้แบบกราฟิก:
ผลลัพธ์ของการเปิดตัวออกแบบคิวรีจะเป็นข้อความคิวรี (ในภาษาคิวรี 1C:Enterprise) ข้อความนี้สามารถปรับได้ด้วยตนเองหากจำเป็น:
สามารถมีชุดข้อมูลได้หลายชุดในโครงร่างข้อมูล สามารถเชื่อมโยงชุดข้อมูลในโครงร่างด้วยวิธีใดก็ได้ สามารถเพิ่มฟิลด์ที่คำนวณได้ สามารถระบุพารามิเตอร์รายงานได้ ฯลฯ เป็นมูลค่าการกล่าวขวัญถึงคุณลักษณะที่น่าสนใจของกลไกการสืบค้นใน 1C:Enterprise ในที่สุดข้อความค้นหาจะถูกแปลเป็นภาษาถิ่นของ SQL เฉพาะสำหรับ DBMS ที่แอปพลิเคชันทำงานโดยตรง โดยทั่วไปเราพยายามใช้ความสามารถของเซิร์ฟเวอร์ DBMS ให้สูงสุด (เราถูกจำกัดด้วยความจริงที่ว่าเราใช้เฉพาะความสามารถเหล่านั้นที่มีอยู่พร้อมกันใน DBMS ทั้งหมดที่รองรับโดยแพลตฟอร์ม 1C:Enterprise - MS SQL, Oracle, IBM DB2 , PostgreSQL) ดังนั้น ในระดับแบบสอบถามในเขตข้อมูลจากการคำนวณ เราสามารถใช้ได้เฉพาะฟังก์ชันที่แปลเป็น SQL เท่านั้น
แต่ในระดับโครงร่างข้อมูลเราสามารถเพิ่มฟิลด์ที่กำหนดเองและใช้ฟังก์ชันในภาษาการพัฒนา 1C ในตัว (รวมถึงที่เราเขียนด้วย) ซึ่งจะขยายขีดความสามารถของรายงานอย่างมาก ในทางเทคนิคดูเหมือนว่านี้ - ทุกอย่างที่สามารถแปลเป็น SQL จะถูกแปลเป็น SQL แบบสอบถามจะดำเนินการที่ระดับ DBMS ผลลัพธ์แบบสอบถามจะถูกวางไว้ในหน่วยความจำของแอปพลิเคชันเซิร์ฟเวอร์ 1C และ SKD จะคำนวณค่าแต่ละบันทึกสำหรับแต่ละบันทึก ของเขตข้อมูลจากการคำนวณซึ่งมีสูตรที่เขียนด้วยภาษา 1C
การเพิ่มฟิลด์ที่กำหนดเอง
คุณสามารถเพิ่มตารางและแผนภูมิลงในรายงานได้ตามต้องการ:
ผู้ออกแบบรายงาน
รายงานรันไทม์
เมื่อใช้ SKD ผู้ใช้สามารถเพิ่มการเลือกที่ซับซ้อนลงในรายงาน (ซึ่งจะถูกเพิ่มลงในคำขอในตำแหน่งที่ถูกต้อง) การออกแบบตามเงื่อนไข (อนุญาตให้ช่องที่แสดงมีรูปแบบที่แตกต่างกัน - ด้วยแบบอักษร สี ฯลฯ ขึ้นอยู่กับค่าของพวกเขา ) และอีกมากมาย
กระบวนการสร้างและสร้างรายงานสามารถอธิบายโดยย่อได้ดังนี้:
- นักพัฒนาในเวลาออกแบบด้วยความช่วยเหลือจากนักออกแบบ (หรือในรันไทม์โดยใช้โค้ด) จะกำหนดโครงร่างโครงร่างข้อมูล:
- ข้อความคำขอ/คำขอ
- คำอธิบายของเขตข้อมูลจากการคำนวณ
- ความสัมพันธ์ระหว่างคำขอ (ถ้ามีหลายคำขอ)
- ตัวเลือกรายงาน
- การตั้งค่าเริ่มต้น
- ฯลฯ
- การตั้งค่าข้างต้นจะถูกบันทึกไว้ในเค้าโครง
- ผู้ใช้เปิดรายงาน
- อาจทำการตั้งค่าเพิ่มเติม (เช่น เปลี่ยนค่าพารามิเตอร์)
- คลิกปุ่ม "สร้าง"
- การตั้งค่าผู้ใช้จะนำไปใช้กับรูปแบบการจัดองค์ประกอบข้อมูลที่กำหนดโดยนักพัฒนา
- เค้าโครงองค์ประกอบข้อมูลระดับกลางจะถูกสร้างขึ้น โดยมีคำแนะนำว่าจะรับข้อมูลจากที่ใด โดยเฉพาะอย่างยิ่ง แบบสอบถามที่ระบุในโครงร่างจะได้รับการปรับปรุง ดังนั้น ฟิลด์ที่ไม่ได้ใช้ในรายงานจะถูกลบออกจากคำขอ (ซึ่งเสร็จสิ้นเพื่อลดจำนวนข้อมูลที่ได้รับ) ฟิลด์ทั้งหมดที่มีส่วนร่วมในสูตรฟิลด์จากการคำนวณจะถูกเพิ่มลงในแบบสอบถาม
- โปรเซสเซอร์องค์ประกอบข้อมูลเข้ามามีบทบาท ตัวประมวลผลโครงร่างดำเนินการค้นหา เชื่อมโยงชุดข้อมูล คำนวณค่าสำหรับฟิลด์และทรัพยากรที่คำนวณได้ และดำเนินการจัดกลุ่ม กล่าวอีกนัยหนึ่งก็คือการคำนวณทั้งหมดที่ไม่ได้ดำเนินการในระดับ DBMS
- ตัวประมวลผลเอาต์พุตข้อมูลเรียกใช้คำขอสำหรับการดำเนินการและแสดงข้อมูลที่ได้รับในเอกสารสเปรดชีต แผนภูมิ ฯลฯ
กระบวนการสร้างรายงานโดยใช้กลไก ACS
เราพยายามลดจำนวนข้อมูลรายงานที่ถ่ายโอนจากเซิร์ฟเวอร์ไปยังแอปพลิเคชันไคลเอนต์ให้เหลือน้อยที่สุด เมื่อแสดงข้อมูลในเอกสารสเปรดชีต เมื่อเปิดเอกสารสเปรดชีต เราจะถ่ายโอนเฉพาะบรรทัดที่ผู้ใช้เห็นที่จุดเริ่มต้นของเอกสารจากเซิร์ฟเวอร์เท่านั้น เมื่อผู้ใช้เลื่อนไปตามบรรทัดของเอกสาร ข้อมูลที่ขาดหายไปจะถูกดาวน์โหลดจากเซิร์ฟเวอร์ไปยังไคลเอนต์
การตั้งค่าแบบกำหนดเอง
เครื่องมือ ACS ทั้งหมดพร้อมใช้งานสำหรับทั้งนักพัฒนาและผู้ใช้ปลายทาง แต่การปฏิบัติได้แสดงให้เห็นว่าผู้ใช้มักถูกคุกคามจากความสามารถของเครื่องมือที่มีอยู่มากมาย ยิ่งไปกว่านั้น ในกรณีส่วนใหญ่ ผู้ใช้ไม่จำเป็นต้องใช้พลังในการตั้งค่าทั้งหมด - ก็เพียงพอแล้วสำหรับเขาที่จะสามารถเข้าถึงการตั้งค่าพารามิเตอร์รายงานหนึ่งหรือสองตัวได้อย่างรวดเร็ว (เช่น ระยะเวลาและคู่สัญญา) เริ่มต้นจากแพลตฟอร์มบางเวอร์ชัน นักพัฒนารายงานมีโอกาสที่จะทำเครื่องหมายว่าการตั้งค่ารายงานใดที่ผู้ใช้สามารถใช้ได้ ทำได้โดยใช้ช่องทำเครื่องหมาย "รวมในการตั้งค่าผู้ใช้" นอกจากนี้ การตั้งค่ารายงานยังมีแฟล็ก "โหมดการแสดงผล" ซึ่งรับค่าใดค่าหนึ่งจากสามค่า:- เข้าถึงได้รวดเร็ว การตั้งค่าจะแสดงโดยตรงที่ด้านบนของหน้าต่างรายงาน
- สามัญ. การตั้งค่าจะพร้อมใช้งานผ่านปุ่ม "การตั้งค่า"
- ไม่สามารถเข้าถึงได้ การตั้งค่านี้จะไม่สามารถใช้ได้สำหรับผู้ใช้ปลายทาง
การตั้งค่าโหมดการแสดงผลในเวลาการออกแบบ
แสดงการตั้งค่าในโหมดการเข้าถึงด่วนขณะรันไทม์ (ใต้ปุ่มสร้าง)
แผนการพัฒนา
สิ่งสำคัญประการหนึ่งของเราในการพัฒนาระบบควบคุมการเข้าออกคือการทำให้การตั้งค่าของผู้ใช้ง่ายขึ้น ประสบการณ์ของเราแสดงให้เห็นว่าสำหรับผู้ใช้ปลายทางบางราย การทำงานกับการตั้งค่าผู้ใช้ยังคงเป็นภารกิจหลัก เราคำนึงถึงสิ่งนี้และกำลังทำงานในทิศทางนี้ ด้วยเหตุนี้นักพัฒนาจึงสามารถทำงานกับระบบควบคุมการเข้าถึงได้ง่ายขึ้นเพราะว่า เช่นเคย เราต้องการให้เครื่องมือเดียวสำหรับการตั้งค่ารายงานสำหรับทั้งนักพัฒนาและผู้ใช้ปลายทางเมื่อสร้างรายงานโดยใช้ระบบองค์ประกอบข้อมูล (DCS) จะสะดวกในการแสดงพารามิเตอร์รายงาน (อย่างน้อยที่สุดที่ใช้บ่อยที่สุด) บนแบบฟอร์มเพื่อไม่ให้ผู้ใช้เจาะลึกเข้าไปในหน้าต่างการตั้งค่า DCS มาตรฐาน
มาดูกันว่าสามารถทำได้โดยใช้แบบฟอร์ม 1C ปกติอย่างไร เรามาจองกันทันทีว่าในบทความนี้เราจะพิจารณาผลลัพธ์ของพารามิเตอร์ในแบบฟอร์มอย่างแน่นอนนั่นคือ ต้องสร้างพารามิเตอร์ในระบบควบคุมการเข้าใช้งานแล้ว
มีสองวิธีในการส่งออกพารามิเตอร์ ACS เป็นรูปแบบปกติ:
- เอาต์พุตของตารางการตั้งค่าพารามิเตอร์ทั้งหมด
- เอาต์พุตของพารามิเตอร์แต่ละตัวในรูปแบบของฟิลด์อินพุต
ตารางการตั้งค่าพารามิเตอร์ที่แสดงบนแบบฟอร์มจะคล้ายกับตารางการตั้งค่าพารามิเตอร์ที่สร้างโดยเครื่องมือ ACS หากต้องการแสดงบนแบบฟอร์ม คุณต้องสร้างองค์ประกอบควบคุม ตารางฟิลด์ซึ่งมีทรัพย์สิน ข้อมูลระบุ การตั้งค่า Composer.Settings.Data ตัวเลือก
ในกรณีนี้ ผู้ใช้จะเห็นพารามิเตอร์ ACS ทั้งหมดที่ไม่มีข้อจำกัดด้านความพร้อมใช้งาน
อย่างไรก็ตาม ในบางกรณี วิธีการนี้อาจดูไม่สวยงามนักและใช้งานไม่ค่อยสะดวกนัก มาดูวิธีแสดงพารามิเตอร์ ACS บนแบบฟอร์มแยกกันในรูปแบบของช่องป้อนข้อมูลปกติ
- มาสร้างรายละเอียดรายงานที่สอดคล้องกับพารามิเตอร์กัน ในตัวอย่างของเรา ข้อมูลเหล่านี้จะเป็นรายละเอียด วันที่เริ่มต้น วันที่สิ้นสุด องค์กร- มาตั้งค่าประเภทข้อมูลที่เหมาะสมสำหรับพวกเขากันดีกว่า
- มาสร้างช่องป้อนข้อมูลในแบบฟอร์มสำหรับแต่ละพารามิเตอร์และเชื่อมต่อผ่านคุณสมบัติกัน ข้อมูลพร้อมรายละเอียดรายงาน สำหรับแต่ละช่องป้อนข้อมูล เป็นการดีที่จะสร้างป้ายกำกับถัดจากชื่อพารามิเตอร์เพื่อให้ผู้ใช้เข้าใจว่าเขากำลังแก้ไขพารามิเตอร์ใด
- สำหรับแต่ละช่องป้อนข้อมูล คุณต้องสร้างขั้นตอนสำหรับตัวจัดการเหตุการณ์ เมื่อเปลี่ยนซึ่งจะตั้งค่าที่ผู้ใช้เลือกให้เป็นพารามิเตอร์ ACS ในตัวอย่าง ฉันสร้างขั้นตอนเดียวและมอบหมายให้เปลี่ยนเหตุการณ์ของช่องป้อนข้อมูลทั้งสามช่อง นั่นคือเมื่อพารามิเตอร์หนึ่งมีการเปลี่ยนแปลง ทั้งสามจะถูกรีเซ็ต จากมุมมองของประสิทธิภาพ สิ่งนี้อาจไม่ได้ผลมากนัก แต่... มีพารามิเตอร์ไม่มากนักจึงไม่เห็นความแตกต่าง หากมีพารามิเตอร์จำนวนมาก ควรตั้งค่าพารามิเตอร์แต่ละรายการแยกกัน ดังนั้นรหัสขั้นตอนสำหรับตัวจัดการ เมื่อเปลี่ยนจะมีลักษณะเช่นนี้:
ขั้นตอน ParametersOnChange (องค์ประกอบ)
ParameterStartDate = SettingsLinker การตั้งค่า. พารามิเตอร์ข้อมูล องค์ประกอบ ค้นหา ("เริ่มต้นรอบระยะเวลา"); //การค้นหาดำเนินการโดยใช้ชื่อของพารามิเตอร์ ACS
พารามิเตอร์StartDate การใช้งาน = จริง ; //พารามิเตอร์จะถูกใช้ในระหว่างการเลือก
พารามิเตอร์StartDate ค่า = วันที่เริ่มต้น; //พารามิเตอร์ถูกกำหนดให้เป็นค่าของแอตทริบิวต์รายงานParameterDataCon = การตั้งค่าตัวเชื่อมโยง การตั้งค่า. พารามิเตอร์ข้อมูล องค์ประกอบ ค้นหา("สิ้นสุดระยะเวลา");
พารามิเตอร์DateCon การใช้งาน = จริง ;
พารามิเตอร์DateCon ค่า = วันสิ้นสุด(วันที่สิ้นสุด);ParameterOrg = การตั้งค่าตัวสร้าง การตั้งค่า. พารามิเตอร์ข้อมูล องค์ประกอบ ค้นหา("องค์กร");
พารามิเตอร์องค์กร การใช้งาน = จริง ;
พารามิเตอร์องค์กร ค่า = องค์กร;สิ้นสุดขั้นตอน
ในตัวอย่างของเรา รายงานจะแสดงผลลัพธ์ของผลิตภัณฑ์และบริการตามแผนก กลุ่มผลิตภัณฑ์ และตามเดือน
นี่คือหน้าหลักของรายงาน:
หน้านี้ถูกเรียกจากตัวกำหนดค่าในเมนู ไฟล์ – ใหม่ – รายงานภายนอก
ก่อนอื่นเราเพิ่มชุดข้อมูล (DataSet1) ในหน้าต่าง "Query" คุณสามารถพิมพ์ด้วยตัวเอง สร้างโดยใช้ Query Builder หรือโหลดจากไฟล์ วิธีที่สะดวกที่สุดคือการใช้ตัวสร้างแบบสอบถาม อ่านวิธีการทำงานของตัวสร้าง
ทุกสิ่งที่คุณต้องการจะถูกกรอกโดยอัตโนมัติ แต่บางสิ่งจำเป็นต้องได้รับการปรับเปลี่ยน
ตัวอย่างเช่น ส่วนหัวของคอลัมน์ (ช่องทำเครื่องหมาย "ปริมาณ" ในรูปด้านบนอนุญาตให้คุณป้อนข้อความส่วนหัวสำหรับฟิลด์นี้) คุณสามารถตั้งค่ารูปแบบเอาต์พุตข้อมูลได้ (ดูรูปแบบในบรรทัดปริมาณ) คุณสามารถแก้ไขรูปแบบข้อมูลประเภทใดก็ได้ เช่น สตริง วันที่ ตัวเลข
บนแท็บทรัพยากร ให้เลือกทรัพยากรและกำหนดค่าการแสดงผลลัพธ์สำหรับทรัพยากรเหล่านั้น:
แท็บพารามิเตอร์ประกอบด้วยทุกสิ่งที่เปลี่ยนแปลงเนื้อหาของรายงาน (เช่น ระยะเวลาที่จะเลือกข้อมูล) กรอกโดยอัตโนมัติตามพารามิเตอร์คำขอ (ดูหน้าแรก) การใช้ช่องทำเครื่องหมายทำให้คุณสามารถปรับการมองเห็นและความพร้อมใช้งานของพารามิเตอร์เหล่านี้ ตั้งค่าเริ่มต้น ฯลฯ ได้:
รับบทเรียนวิดีโอ 267 บทเรียนบน 1C ฟรี:
และสุดท้าย การตั้งค่า ลักษณะที่ปรากฏของรายงานจะถูกวาดขึ้นที่นี่ - คอลัมน์, แถว, ตำแหน่งที่สัมพันธ์กัน, การจัดกลุ่ม ฯลฯ ปุ่ม “เปิดตัวออกแบบการตั้งค่า” จะช่วยคุณจัดเรียงบรรทัดและคอลัมน์ตามลำดับที่ต้องการ ปุ่ม "การตั้งค่าองค์ประกอบที่กำหนดเอง" จะช่วยให้คุณแสดงพารามิเตอร์ในส่วนหัวของรายงานได้:
ให้ความสนใจกับคอลัมน์ Period.PartsDate.NameMonth จะแสดงชื่อเดือนในส่วนหัวของคอลัมน์ได้อย่างไร? นี่คือที่ที่มันออกมา
อย่างไรก็ตาม การตั้งค่าเฉพาะนี้ทำให้คุณสามารถแสดงข้อมูลหลายช่วงเวลาพร้อมกันในคอลัมน์รายงานที่อยู่ติดกัน:
แท็บที่สำคัญอีกแท็บคือ ฟิลด์ที่เลือก หากว่างเปล่า จะไม่สร้างรายงาน โดยปกติจะกรอกข้อมูลโดยอัตโนมัติโดยคลิกปุ่ม "เปิดตัวออกแบบการตั้งค่า":
จริงๆ แล้ว นั่นคือทั้งหมดที่คุณต้องการจากขั้นต่ำที่ต้องการ ด้วยเหตุนี้ เราก็จะได้รายงานที่มีลักษณะดังนี้:
ระบบองค์ประกอบข้อมูล (DCS) เป็นกลไกอันทรงพลังของแพลตฟอร์ม 1C (8.2 ขึ้นไป) สำหรับการพัฒนารายงาน ไม่ใช่ระบบควบคุมการเข้าถึงเลย
เหตุใด “ระบบการจัดองค์ประกอบข้อมูล” จึงถูกประดิษฐ์ขึ้น? ระบบถูกคิดค้นขึ้นเพื่อสร้างรายงานอย่างเปิดเผย สร้างรายงานได้โดยไม่จำเป็นต้องเขียนโค้ดโปรแกรม โปรแกรมเมอร์จะตั้งค่าผลลัพธ์ที่ต้องการโดยใช้คอนสตรัคเตอร์เฉพาะและการตั้งค่าที่สร้างขึ้น ระบบการจัดองค์ประกอบข้อมูลจะเข้าใจสิ่งนี้และแสดงผลลัพธ์นี้ให้ผู้ใช้เห็น หากคุณต้องการเปลี่ยนแปลงบางอย่างในรายงาน คุณเพียงแค่ต้องติดต่อผู้ออกแบบอีกครั้ง ทำการเปลี่ยนแปลงที่จำเป็น จากนั้นรายงานที่แก้ไขก็พร้อมแล้ว
วิดีโอสอนเกี่ยวกับการสร้างรายงาน "Document Journal" ใน 1C SKD:
ยิ่งไปกว่านั้น เนื่องจากโดยหลักการแล้วระบบนั้นเป็นสากลสำหรับทุกโอกาส โปรแกรมเมอร์จึงมีการตั้งค่าจำนวนมากให้เลือกใช้ ด้วยตัวเลือกมากมาย บางทีสิ่งที่ไม่พึงประสงค์ที่สุดคือการตั้งค่าบางอย่างในรูปแบบการจัดองค์ประกอบข้อมูลมีวัตถุประสงค์เพื่อแก้ไขงานที่ไม่ค่อยมีการใช้งาน
รับบทเรียนวิดีโอ 267 บทเรียนบน 1C ฟรี:
แน่นอนว่าทั้งหมดนี้ทำให้แผนภาพเค้าโครงข้อมูลเกะกะ และอาจเป็นเรื่องยากสำหรับผู้เชี่ยวชาญที่ไม่มีประสบการณ์ที่จะเข้าใจ เพราะเมื่อคุณเปิดตัวออกแบบ การตั้งค่าต่างๆ จำนวนมากจะปรากฏขึ้นตรงหน้า ซึ่งบางครั้งความหมายก็ไม่ชัดเจน
แม้ว่า SKD ใน 1C 8.3 จะสามารถสร้างแบบโต้ตอบได้โดยใช้ตัวออกแบบที่เหมาะสม แต่คุณยังสามารถดำเนินการแบบเดียวกันโดยทางโปรแกรมได้ คุณสามารถไปได้ตั้งแต่เริ่มต้น ใช้ซอฟต์แวร์ สร้างโครงร่างข้อมูล ตั้งค่าที่จำเป็นทั้งหมด สร้างการตั้งค่ารูปแบบรายงาน เขียนรายงาน และแสดงให้ผู้ใช้เห็น นี่เป็นงานที่ใช้เวลานานกว่า แต่ก็ยังทำได้
เป็นที่น่าสังเกตว่าระบบการจัดองค์ประกอบข้อมูลไม่เพียงใช้ในกระบวนการสร้างรายงานเท่านั้น หากต้องการ คุณสามารถใช้แบบฟอร์มที่พิมพ์ของเอกสารโดยใช้ไดอะแกรมเค้าโครงข้อมูล ไม่มีปัญหาพื้นฐานที่นี่ แต่สิ่งสำคัญคือต้องเข้าใจเพื่อสร้างแบบฟอร์มที่พิมพ์ออกมาว่าระบบทำงานอย่างไรโดยรวมและประกอบด้วยองค์ประกอบที่เชื่อมต่อถึงกันอย่างไร
พื้นฐานของอินเทอร์เฟซที่ได้รับการจัดการ 1C - SKD
แนวคิดของฟอร์มที่ได้รับการจัดการยังรวมถึงระบบการจัดองค์ประกอบข้อมูลด้วย การเลือก การตั้งค่าสำหรับการออกแบบการเรียงลำดับแบบมีเงื่อนไขทั้งหมดที่เรามี จะเหมือนกับ SKD ทุกประการ นอกจากนี้ยังเป็นที่น่าสังเกตว่าองค์ประกอบทั้งหมดของระบบควบคุมการเข้าใช้งานมีโอกาสที่จะนำไปใช้ ดังนั้นเราจึงสามารถสร้างวงจรโดยทางโปรแกรมโดยใช้เครื่องมือแพลตฟอร์มมาตรฐาน และนอกจากนี้ ยังสามารถทำงานโดยใช้เครื่องมือภายนอกได้อีกด้วย
จะเชี่ยวชาญและเรียนรู้วิธีจัดทำรายงานเกี่ยวกับระบบควบคุมการเข้าออกได้อย่างไร
SKD 1C ย่อมาจาก Data Composition System SKD 1C เป็นวิธีใหม่ในการเขียนรายงานใน 1C ซึ่งช่วยให้ผู้ใช้ปรับแต่งรายงานได้ด้วยตนเอง
ข้อเสียของ SKD 1C คือการตั้งค่าค่อนข้างซับซ้อน และไม่ใช่ผู้ใช้ทุกคนจะเรียนรู้ได้อย่างรวดเร็ว
การเขียนรายงาน ACS ต้องใช้ความสามารถในการทำงานกับแบบสอบถามใน 1C ซึ่งเราได้กล่าวถึงแล้ว
เทคโนโลยีสำหรับการสร้างรายงาน SKD 1C คืออะไร:
- เขียนคำขอ 1C ไปยัง 1C SKD ซึ่งจัดเตรียมการรับข้อมูล
- ระบุบทบาทของฟิลด์ใน SKD 1C (ฟิลด์ที่คำนวณ ทรัพยากร)
- ป้อนการตั้งค่าเริ่มต้น 1C SKD
ผู้ใช้มีโอกาสที่จะเปลี่ยนการตั้งค่าต่างๆได้ตามต้องการ
เทคโนโลยีในการสร้างรายงานเกี่ยวกับเทคโนโลยีก่อนหน้าคืออะไร:
- เขียนคำขอในโปรแกรม 1C
- พัฒนาแบบฟอร์มการตั้งค่า (เฉพาะสำหรับรายงาน) ซึ่งจะช่วยให้คุณสามารถเปลี่ยนการตั้งค่า N เท่านั้นที่โปรแกรมเมอร์เลือก
- เขียนโค้ด (โปรแกรม) เพื่อดำเนินการตามคำขอและสร้างแบบฟอร์มที่พิมพ์ออกมาของรายงาน
อย่างที่คุณเห็น SKD 1C มีข้อได้เปรียบที่สำคัญสำหรับทั้งผู้ใช้และโปรแกรมเมอร์:
- โปรแกรมเมอร์ – ไม่จำเป็นต้องเขียนโปรแกรมเพื่อรันรายงานและการตั้งค่า
- ผู้ใช้ – เข้าถึงการตั้งค่ารายงานได้อย่างมาก
ในการกำหนดค่า 1C ใหม่ทั้งหมด รายงานทั้งหมดจะใช้เฉพาะใน 1C SKD เท่านั้น
มาดูวิธีสร้างรายงานเกี่ยวกับ SKD 1C ด้วยตัวเองตั้งแต่เริ่มต้น
การสร้างรายงาน SKD 1C
ในตัวกำหนดค่า ให้คลิกปุ่มไฟล์ใหม่ (เมนูไฟล์/ใหม่)
เลือกประเภทไฟล์รายงานใหม่
รายงานใหม่จะถูกสร้างขึ้น มาป้อนชื่อโดยไม่ต้องเว้นวรรคสำหรับการกำหนดค่า ซึ่งเป็นคำพ้องความหมายสำหรับผู้ใช้
มาสร้างโครงร่างพื้นฐานของ SKD 1C กันดีกว่า
เราสร้างคำขอสำหรับรายงาน SKD 1C
อาจมีแหล่งข้อมูลมากมายสำหรับ SKD 1C ตัวอย่างเช่น หากต้องการใช้คำค้นหาสองคำแยกกัน ให้เพิ่ม "ชุดข้อมูล - สหภาพ" ตัวแรก จากนั้นจึงตามด้วยคำค้นหาหลายคำ
ในตัวอย่างของเรา เราจะใช้แบบสอบถามง่ายๆ
เรามาร่างคำขอเพื่อรับข้อมูลกัน
การทำงานกับตัวสร้างแบบสอบถามก็ไม่แตกต่างไปจากปกติ
จากการสร้างคำขอ SKD 1C จะสร้างรายการฟิลด์ที่พร้อมใช้งานและกรอกชื่อเริ่มต้น
หากไม่สะดวกสามารถเปลี่ยนชื่อได้ที่นี่
โปรดทราบว่าเราใช้พารามิเตอร์ &StartDate ในคำขอ ใน SKD 1C มีพารามิเตอร์เริ่มต้น (วันที่) ที่เรียกว่า &Period และคุณสามารถใช้งานได้
นอกจากนี้ คุณไม่จำเป็นต้องระบุโดยตรงในคำขอ เนื่องจากระบบจะใช้โดยอัตโนมัติ อย่างไรก็ตาม ยังมีรายละเอียดปลีกย่อย - ใช้ได้กับตารางทั้งหมด รวมถึงการรวมทางซ้ายและอื่นๆ ซึ่งอาจก่อให้เกิดข้อผิดพลาดได้
ตัวอย่างเช่น คุณได้รับยอดคงเหลือเมื่อต้นเดือน และการใช้การรวมด้านซ้าย คุณจะได้รับข้อมูลสำหรับวันนี้ หากคุณใช้ระยะเวลา ระบบจะนำไปใช้กับตารางทั้งหมดเท่าๆ กัน และการสืบค้นจะทำงานไม่ถูกต้อง
การตั้งค่า SKD 1C
บนแท็บทรัพยากร เราระบุฟิลด์เหล่านั้นที่จะถูกสรุปสำหรับผลรวม (เช่น ตัวเลข) คุณสามารถระบุฟังก์ชันการรวมสำหรับฟิลด์ได้ ตามค่าเริ่มต้นจะเป็นผลรวม (เช่น ผลรวมตัวเลขจากทุกบรรทัดและรับผลรวม) แต่คุณสามารถใช้ค่าเฉลี่ย ปริมาณ สูงสุด ฯลฯ ได้
บนแท็บการตั้งค่า เราจะปิดการใช้งานสิ่งที่เราไม่ต้องการและเปิดใช้งานสิ่งที่เราจำเป็น ที่นี่คุณสามารถตั้งชื่อบุคคลสำหรับพารามิเตอร์ได้
การตั้งค่าพื้นฐานทำได้บนแท็บการตั้งค่า:
มาเปิดในโหมดองค์กรกันดีกว่า โปรดทราบว่าเราไม่ได้ทำการเขียนโปรแกรม วาดภาพรูปร่าง ฯลฯ หากต้องการตั้งค่าพารามิเตอร์ ให้คลิกปุ่มการตั้งค่า
ผู้ใช้เห็นการตั้งค่ารูปแบบเกือบจะเหมือนกับโปรแกรมเมอร์
เอาล่ะ รายงานกำลังทำงาน
การตั้งค่า SKD 1C
การตั้งค่าทั้งหมดสำหรับรายงาน SKD 1C ทำได้โดยคลิกที่ปุ่มการตั้งค่า อย่างน้อยก็ในเทมเพลตเริ่มต้น คุณสามารถสร้างแบบฟอร์มรายงาน SKD 1C ได้ด้วยตัวเอง จากนั้นการตั้งค่าสามารถถ่ายโอนไปยังรูปแบบอื่นที่โปรแกรมเมอร์วาดได้อย่างอิสระ
ลองลากคลังสินค้าจากคอลัมน์ไปยังแถว
ลองลากรายการไปที่คลังสินค้า
คลิกตกลงและสร้างรายงาน ไชโย - เราเพิ่งเปลี่ยนวิธีการทำงานของรายงานในโหมดการเขียนโปรแกรมโดยไม่ต้องเขียนโปรแกรม
คลิกขวาที่ Rows (หรือฟิลด์ใดๆ ก็ตาม) แล้วเลือก New Grouping
ขยายฟิลด์คลังสินค้าและเลือกหนึ่งในฟิลด์ ตัวอย่างเช่น ประเภทคลังสินค้า
หลังจากคิดแล้ว เราก็จำได้ว่าเราต้องการให้แสดงหลายช่องในคอลัมน์เดียวพร้อมกัน คลิกที่ฟิลด์ที่สร้างขึ้นใหม่สองครั้งด้วยปุ่มซ้ายของเมาส์ ที่นี่คุณสามารถเพิ่มฟิลด์ได้
หากคุณเพิ่มการจัดกลุ่มใหม่แต่ไม่ได้เลือกฟิลด์ จะหมายถึง "ฟิลด์ทั้งหมด" (แสดงเป็น "รายการรายละเอียด") มีลักษณะเช่นนี้
คลิกซ้ายการจัดกลุ่มของเรา (คลังสินค้า/รายการ) แล้วลากไปยังการจัดกลุ่มใหม่ (ประเภทคลังสินค้า)
ผลลัพธ์ของการตั้งค่าของเรา
นอกจากการตั้งค่าแล้ว เอฟเฟกต์ที่ง่ายต่อการเดาด้วยชื่อ (การเลือก การเรียงลำดับ ฯลฯ) ยังมีแท็บ "การตั้งค่าอื่นๆ" ช่วยให้คุณสามารถเปิดหรือปิดใช้งานสิ่งต่างๆ เช่น การแสดงผลรวม การจัดกลุ่มในคอลัมน์ ฯลฯ
โปรดทราบว่าสามารถตั้งค่าการตั้งค่าสำหรับทั้งรายงาน (รายงานที่เลือก) หรือสำหรับแถวของฟิลด์ที่ระบุ (เลือกแถว เช่น ระบบการตั้งชื่อ และเลือก การตั้งค่า: ไม่มีระบบการตั้งชื่อ)