1s 8.3 SCD รายงานช่องคำนวณ ตัวอย่างที่เป็นประโยชน์ของการสร้างไดอะแกรมองค์ประกอบข้อมูล ส่วนที่เหลือของการแบ่ง

  • 1C-บิทริกซ์
  • หนึ่งในส่วนที่สำคัญที่สุดของซอฟต์แวร์ธุรกิจคือการรายงาน ชะตากรรมของธุรกิจอาจขึ้นอยู่กับ (และไม่ใช่ในความหมายโดยนัย!) ว่าการปรับแต่งรายงานที่มีอยู่ให้ตรงกับความต้องการที่เปลี่ยนแปลงไปของธุรกิจ (และกฎหมาย) นั้นง่ายดายเพียงใด หรือสร้างรายงานใหม่ ไม่ว่าจะเป็นรายงานสำหรับสำนักงานสรรพากร หรือแผนภาพการพึ่งพาความต้องการสินค้าตามฤดูกาลและปัจจัยอื่นๆ ระบบการรายงานที่ทรงพลังและยืดหยุ่นซึ่งทำให้ง่ายต่อการดึงข้อมูลที่จำเป็นออกจากระบบ นำเสนอในรูปแบบที่เข้าใจได้ ช่วยให้ผู้ใช้สามารถกำหนดค่ารายงานมาตรฐานใหม่เพื่อดูข้อมูลในมุมมองใหม่ - นี่คืออุดมคติที่ทุก ระบบธุรกิจควรมุ่งมั่นเพื่อ

    ในแพลตฟอร์ม 1C:Enterprise กลไกที่เรียกว่า "ระบบการจัดองค์ประกอบข้อมูล" (เรียกย่อว่า DCS) มีหน้าที่ในการสร้างรายงาน ในบทความนี้เราจะพยายามให้ คำอธิบายสั้นแนวคิดและสถาปัตยกรรมของกลไก ACS และขีดความสามารถ


    ACS เป็นกลไกที่อิงตามคำอธิบายรายงานที่เปิดเผย ACS ได้รับการออกแบบสำหรับการสร้างรายงานและการแสดงข้อมูลที่มี โครงสร้างที่ซับซ้อน. นอกเหนือจากการพัฒนารายงานแล้ว กลไก ACS ยังใช้ใน 1C:Enterprise ในรายการไดนามิก ซึ่งเป็นเครื่องมือสำหรับการแสดงข้อมูลรายการพร้อมฟังก์ชันการทำงานที่หลากหลาย (แสดงรายการแบบเรียบและแบบลำดับชั้น การออกแบบแถวตามเงื่อนไข การจัดกลุ่ม ฯลฯ ).

    ประวัติเล็กน้อย

    ในเวอร์ชันแรกของแพลตฟอร์ม 1C:Enterprise 8 เวอร์ชัน 8.0 มีการสร้างรายงานดังนี้:
    1. แบบสอบถามอย่างน้อยหนึ่งรายการเขียนด้วยภาษาแบบสอบถาม 1C (ภาษาคล้าย SQL อ่านเพิ่มเติมด้านล่าง)
    2. มีการเขียนโค้ดที่ถ่ายโอนผลลัพธ์ของการสืบค้นที่ดำเนินการไปยังเอกสารสเปรดชีตหรือแผนภูมิ โค้ดยังสามารถทำงานที่ไม่สามารถทำได้ในการสืบค้น - ตัวอย่างเช่น คำนวณค่าโดยใช้ภาษา 1C ในตัว
    วิธีการนี้ตรงไปตรงมา แต่ไม่สะดวกที่สุด - มีการตั้งค่าภาพเพียงเล็กน้อย ทุกอย่างจะต้องตั้งโปรแกรมแบบ "จับมือกัน" และหนึ่งในไพ่เด็ดในเวลานั้นของแพลตฟอร์มใหม่ “1C:Enterprise 8” คือการลดจำนวนโค้ดที่ต้องเขียนด้วยตนเองในโซลูชันแอปพลิเคชันให้เหลือน้อยที่สุด โดยเฉพาะอย่างยิ่งผ่านการออกแบบภาพ จะเป็นตรรกะที่จะปฏิบัติตามเส้นทางเดียวกันในกลไกการรายงาน ทำได้โดยการพัฒนากลไกใหม่ - ระบบการจัดองค์ประกอบข้อมูล

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

    การกำหนดปัญหา

    งานต่อหน้าทีมพัฒนาคือการสร้างระบบการรายงานที่ไม่อิงตามอัลกอริธึม (เช่น ผ่านการเขียนโค้ด) แต่ใช้วิธีการประกาศเพื่อสร้างรายงาน และเราเชื่อว่าปัญหาได้รับการแก้ไขเรียบร้อยแล้ว จากประสบการณ์ของเรา ประมาณ 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 ทั้งหมดพร้อมใช้งานสำหรับทั้งนักพัฒนาและผู้ใช้ปลายทาง แต่การปฏิบัติได้แสดงให้เห็นว่าผู้ใช้มักถูกคุกคามจากความสามารถของเครื่องมือที่มีอยู่มากมาย ยิ่งไปกว่านั้น ในกรณีส่วนใหญ่ ผู้ใช้ไม่จำเป็นต้องใช้พลังของการตั้งค่าทั้งหมด - ก็เพียงพอแล้วสำหรับเขาที่จะสามารถเข้าถึงการตั้งค่าพารามิเตอร์รายงานหนึ่งหรือสองตัวอย่างรวดเร็ว (เช่น ระยะเวลาและคู่สัญญา) เริ่มต้นจากแพลตฟอร์มเวอร์ชันใดเวอร์ชันหนึ่ง นักพัฒนารายงานมีโอกาสที่จะทำเครื่องหมายว่าการตั้งค่ารายงานใดที่ผู้ใช้สามารถใช้ได้ ทำได้โดยใช้ช่องทำเครื่องหมาย "รวมในการตั้งค่าผู้ใช้" นอกจากนี้ การตั้งค่ารายงานยังมีแฟล็ก "โหมดการแสดงผล" ซึ่งรับค่าใดค่าหนึ่งจากสามค่า:
    • เข้าถึงได้รวดเร็ว การตั้งค่าจะแสดงโดยตรงที่ด้านบนของหน้าต่างรายงาน
    • สามัญ. การตั้งค่าจะพร้อมใช้งานผ่านปุ่ม "การตั้งค่า"
    • ไม่สามารถใช้ได้ การตั้งค่านี้จะไม่สามารถใช้ได้สำหรับผู้ใช้ปลายทาง


    การตั้งค่าโหมดการแสดงผลในเวลาการออกแบบ


    แสดงการตั้งค่าในโหมดการเข้าถึงด่วนขณะรันไทม์ (ใต้ปุ่มสร้าง)

    แผนการพัฒนา

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

    แผนภาพเค้าโครงข้อมูล (1C SKD)- ตัวออกแบบที่สะดวกสำหรับการสร้างรายงานที่ซับซ้อนใน 1C: ผลิตภัณฑ์ซอฟต์แวร์ระดับองค์กรที่มีส่วนช่วยในการพัฒนาและติดตามระบบอัตโนมัติในการผลิตทำให้มีความยืดหยุ่นและสวยงามที่สุดเท่าที่จะเป็นไปได้ในเวลาน้อยที่สุด ข้อได้เปรียบเพิ่มเติมของ Data Composition Scheme (1C SKD) คือการสร้างแบบฟอร์มรายงานแบบควบคุมโดยอัตโนมัติ และด้วยการพัฒนาเพิ่มเติมในส่วนนี้ จึงเป็นปัจจัยสำคัญในการเลือกวิธีในการพัฒนารายงาน แต่เนื่องจากความซับซ้อนของโครงสร้างของ Data Composition Scheme (1C SKD) และการตั้งค่าจำนวนมาก จึงมักจะนำไปสู่การพัฒนารายงานที่ยาวนานกว่าผ่าน "ผู้ออกแบบแบบฟอร์มเอาท์พุต" ดังนั้นโปรแกรมเมอร์ 1C จำเป็นต้องเข้าใจความซับซ้อนทั้งหมดของ Data Composition Scheme (1C DCS) เพื่อเร่งเวลาในการพัฒนาสำหรับการสร้างรายงานให้เร็วขึ้น

    มาดูสามแท็บแรกของ Data Composition Scheme (1C SKD) - ชุดข้อมูล การเชื่อมต่อชุดข้อมูล และฟิลด์จากการคำนวณ

    ชุดข้อมูลใน 1C SKD

    ชุดข้อมูลรวมถึงความสามารถในการสร้างวัตถุสามรายการ - แบบสอบถามวัตถุและสหภาพลองมาดูแต่ละรายการให้ละเอียดยิ่งขึ้น:

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

    ตาราง ที่นี่เลือกตารางที่จะมีส่วนร่วมในการสร้างรายงาน โดยปกติแล้วข้อมูลเริ่มต้นจะถูกเลือก เนื่องจากในแท็บตารางและฟิลด์ เราได้เลือกเอกสาร ไดเร็กทอรี รีจิสเตอร์ที่เราต้องการแล้ว...

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

    เงื่อนไข ที่นี่เราเลือกวัตถุเหล่านั้นที่สามารถใช้ได้ภายใต้เงื่อนไขในระบบควบคุมการเข้าออก

    งานบางส่วนทำในรูปแบบการจัดองค์ประกอบข้อมูล และบางส่วนทำโดยทางโปรแกรม มาดูตัวอย่างง่ายๆ กัน:

    ขั้นแรกเราจะสร้างไดอะแกรมเลย์เอาต์สำหรับเลย์เอาต์ข้อมูลของเอกสารและเรียกว่า SKD (เช่น 1C SKD) ในนั้นเราจะสร้างออบเจ็กต์ชุดข้อมูลจากนั้นกรอกข้อมูลในฟิลด์เช่นเรามีเอกสาร โดยมีส่วนของสินค้าเป็นตารางพร้อมรายละเอียด - ระบบการตั้งชื่อ ปริมาณ และราคา

    มาเพิ่มสามฟิลด์แล้วกรอกชื่อรายละเอียดในแต่ละคอลัมน์ คอลัมน์ที่เหลือจะถูกกรอกโดยอัตโนมัติ:

    มาสร้างปุ่มบนแบบฟอร์มเอกสารและอธิบายกลไกการทำงานในรูปแบบควบคุม:

    &บนไคลเอนต์

    ขั้นตอนการพิมพ์()

    รายงานของเรา = PrintOnServer(); //เรียกใช้ฟังก์ชันบนเซิร์ฟเวอร์

    รายงานของเราแสดง(); //แสดงรายงานที่สร้างขึ้น

    สิ้นสุดขั้นตอน

    &บนเซิร์ฟเวอร์

    ฟังก์ชั่น PrintOnServer()

    DocumentObject = FormAttributeValue (“วัตถุ”);

    //เราวางส่วนที่เป็นตาราง ผลิตภัณฑ์ ในโครงสร้างที่มีชื่อ ProductsSKD ในลักษณะเดียวกับที่เราระบุใน SKD เอง ชื่อของวัตถุที่มีข้อมูล

    ชุดข้อมูล = โครงสร้างใหม่;

    DataSet.Insert("ProductsSKD", DocumentObject.Products);

    //เราได้รับเค้าโครงของเราและตั้งค่าเริ่มต้นเพื่อให้การตั้งค่าเอาท์พุตรายงานทั้งหมดถูกนำมาจากเค้าโครงของเรา

    OurLayout = DocumentObject.GetLayout(“SKD”);

    การตั้งค่า = OurLayout.DefaultSettings;

    //สร้างเค้าโครงเค้าโครงข้อมูลด้วยการตั้งค่าของเรา

    LayoutLinker = newDataLayoutLayoutLinker;

    LayoutLayout = LayoutComposer.Execute (เค้าโครงของเรา, การตั้งค่า);

    //ดำเนินการจัดองค์ประกอบข้อมูลด้วยชุดข้อมูลของเรา

    DataCompositionProcessor = ใหม่ DataCompositionProcessor;

    DataCompositionProcessor.Initialize (LayoutLayout, DataSet);

    //เราสร้างเอกสารสเปรดชีตและแสดงรายงานของเราในนั้น

    ReportDocument = TabularDocument ใหม่;

    OutputProcessor = OutputProcessorDataCompositionResultInTabularDocument ใหม่;

    OutputProcessor.SetDocument (รายงานเอกสาร);

    OutputProcessor.Output (DataCompositionProcessor);

    รายงานเอกสารส่งคืน;

    EndFunction

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

    เกี่ยวกับ การรวมกัน

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

    เรามีตาราง:

    เมื่อสื่อสารแล้วเราจะได้รับ:

    และเมื่อรวมกันแล้ว:

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

    - สนามระบุชื่อทั่วไปของแอตทริบิวต์

    ­­- เส้นทางระบุชื่อของรายละเอียดที่เราจะติดต่อในระบบควบคุมการเข้าออกเช่นใน เขตข้อมูลจากการคำนวณ;

    - ชื่อระบุชื่อของแอตทริบิวต์ที่จะแสดงในรายงาน

    - ข้อจำกัดของสนามระบุความพร้อมของข้อกำหนดนี้

    - ข้อจำกัดของรายละเอียดเราระบุความพร้อมใช้งานขององค์ประกอบย่อย สิ่งสำคัญคือหากระบุรายละเอียดความพร้อมใช้งาน ฟิลด์นั้นจะพร้อมใช้งาน บางทีกลไกนี้อาจมีการเปลี่ยนแปลงในการเปิดตัวในอนาคต

    - นิพจน์ที่ใช้คำนวณการแสดงฟิลด์สะดวกในการใช้เมื่อเราจำเป็นต้องเปลี่ยนเอาท์พุตของรายละเอียดเล็กน้อย เช่น เราต้องการหลังชื่อ ระบบการตั้งชื่อถูกแสดง คลังสินค้าที่ตั้งอยู่จึงกรอกข้อมูลดังนี้ รายการ + “อยู่ในโกดัง” + โกดัง ฉันขอย้ำอีกครั้งว่าการเข้าถึงรายละเอียดนั้นดำเนินการผ่านชื่อที่ระบุในคอลัมน์ เส้นทาง;

    - การเรียงลำดับการแสดงออกกลไกที่สะดวกสำหรับการตั้งค่าการเรียงลำดับรายงาน โดยสามารถกำหนดเงื่อนไขได้ด้วยตนเอง คล้ายกับจุดก่อนหน้า แต่ดังที่แสดงให้เห็นในทางปฏิบัติ กลไกนี้มักจะไม่ทำงานตามที่เราต้องการ และฉันขอแนะนำให้คุณใช้การเรียงลำดับแบบมาตรฐาน

    - ประเภทค่าระบุประเภทของค่าของแอตทริบิวต์ ซึ่งจะต้องกรอก หากคุณใช้ฟิลด์ต่อไปนี้

    - ค่าที่มีอยู่ใช้งานได้เมื่อเต็มเท่านั้น ประเภทค่าให้เปิดแบบฟอร์มและในคอลัมน์ ความหมายเราระบุองค์ประกอบที่ต้องเปลี่ยนตามประเภทอาจเป็นวัตถุหรือตัวเลขที่กำหนดไว้ล่วงหน้าก็ได้ เช่น รายละเอียดมีค่าง่าย ๆ ใน การนำเสนอเราระบุสิ่งที่เราจำเป็นต้องเปลี่ยนแปลง ตัวอย่างประเภทบูลีน:

    - ตกแต่ง– การตั้งค่ารูปแบบฟิลด์มาตรฐาน ซึ่งคล้ายกับการตั้งค่าในแบบฟอร์มที่ได้รับการจัดการ ช่วยให้คุณสามารถปรับแต่งผลลัพธ์ของรายละเอียดบางอย่างได้แม่นยำและสวยงามยิ่งขึ้น

    การเชื่อมต่อชุดข้อมูลใน 1C SKD

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

    ในแง่ของการเปิดตัว 8.2.14 ที่กำลังจะมาถึง ฉันจะพยายามอธิบายฟังก์ชันใหม่บางอย่างของระบบการจัดองค์ประกอบข้อมูล

    เปิดไดอะแกรมเค้าโครงข้อมูล โดยเฉพาะอย่างยิ่งในรายงานภายนอก เพื่อให้การแก้ไขง่ายขึ้น

    เราเพิ่มชุดข้อมูลของประเภทแบบสอบถามและเขียนแบบสอบถามแบบง่าย ๆ ด้วยตนเองหรือใช้ตัวออกแบบแบบสอบถาม:

    1. ตั้งค่าคำขอในระบบควบคุมการเข้าออก

    2. ตั้งค่าฟิลด์ที่คำนวณได้ในระบบควบคุมการเข้าออก

    3. กำหนดโครงร่างข้อมูลบนแท็บการตั้งค่า

    4. เปิดตัว 1C Enterprise 8.2.14 เปิดรายงาน เราสร้างเราได้รับ

    คำอธิบายของฟังก์ชั่นใหม่:

    1. วันที่ปัจจุบัน()

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

    2. การแสดงออกทางคอมพิวเตอร์()

    ไวยากรณ์:

    คำนวณนิพจน์(<Выражение>, <Группировка>, <ОбластьВычисления>, <Начало>, <Конец>, <Сортировка>, <ИерархическаяСортировка>, <ОбработкаОдинаковыхЗначенийПорядка>)

    คำอธิบาย:

    ฟังก์ชันนี้ออกแบบมาเพื่อประเมินนิพจน์ในบริบทของการจัดกลุ่มบางกลุ่ม

    ฟังก์ชันจะคำนึงถึงการเลือกการจัดกลุ่ม แต่ไม่คำนึงถึงการเลือกแบบลำดับชั้น

    ฟังก์ชันนี้ไม่สามารถใช้กับการจัดกลุ่มในการเลือกกลุ่มของการจัดกลุ่มนั้นได้ ตัวอย่างเช่น ในการเลือกกลุ่ม Nomenclature คุณไม่สามารถใช้นิพจน์ CalculateExpression("Sum(SumTurnover)", "TotalTotal") > 1000 ได้ แต่นิพจน์ดังกล่าวสามารถใช้ในการเลือกแบบลำดับชั้นได้

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

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

    เมื่อสร้างนิพจน์สำหรับฟังก์ชัน CalculateExpression ตัวประกอบเค้าโครง หากนิพจน์การเรียงลำดับมีฟิลด์ที่ไม่สามารถใช้ในการจัดกลุ่มได้ จะแทนที่ฟังก์ชัน CalculateExpression ด้วย NULL

    ตัวเลือก

    <Выражение>

    ประเภท: สตริง. นิพจน์ที่จะประเมิน

    <Группировка>

    ประเภท: สตริง. ประกอบด้วยชื่อของการจัดกลุ่มในบริบทที่จะประเมินนิพจน์ ถ้าใช้สตริงว่างเป็นชื่อการจัดกลุ่ม การคำนวณจะดำเนินการในบริบทของการจัดกลุ่มปัจจุบัน ถ้าใช้สตริง GrandTotal เป็นชื่อกลุ่ม การคำนวณจะดำเนินการในบริบทของผลรวมทั้งหมด มิฉะนั้น การคำนวณจะดำเนินการในบริบทของกลุ่มหลักที่มีชื่อเดียวกัน

    ตัวอย่างเช่น:

    ผลรวม(Sales.SumTurnover)/คำนวณ("Sum(Sales.SumTurnover)", "Total")

    ในตัวอย่างนี้ ผลลัพธ์จะเป็นอัตราส่วนของจำนวนเงินสำหรับฟิลด์ Sales.SumTurnover ของเรกคอร์ดการจัดกลุ่มต่อจำนวนของฟิลด์เดียวกันในโครงร่างทั้งหมด

    <ОбластьВычисления>

    ประเภท: สตริง. พารามิเตอร์สามารถรับค่าต่อไปนี้:

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

    เมื่อคำนวณฟังก์ชัน คำนวณนิพจน์()ที่มีค่าการจัดกลุ่มที่ไม่ใช่ทรัพยากรสำหรับเรกคอร์ดกลุ่มที่ไม่ใช่การจัดกลุ่มทรัพยากร ฟังก์ชันจะถูกคำนวณในลักษณะเดียวกับที่จะคำนวณหากค่าพารามิเตอร์เท่ากับค่าการจัดกลุ่ม

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

    <Начало>

    ประเภท: สตริง. ระบุว่าควรเริ่มต้นการบันทึกส่วนใด ควรคำนวณฟังก์ชันนิพจน์รวมใด และบันทึกใดที่จะได้รับค่าฟิลด์นอกฟังก์ชันรวม ค่าอาจเป็นค่าใดค่าหนึ่งต่อไปนี้:

    <Конец>

    ประเภท: สตริง. บ่งชี้ว่าบันทึกส่วนใดที่ควรดำเนินการต่อ ซึ่งฟังก์ชันรวมของนิพจน์ควรถูกคำนวณ ค่าอาจเป็นค่าใดค่าหนึ่งต่อไปนี้:

    • อันดับแรก. จำเป็นต้องได้รับบันทึกการจัดกลุ่มครั้งแรก หลังจากคำในวงเล็บคุณสามารถระบุนิพจน์ได้ซึ่งผลลัพธ์จะถูกใช้เป็นค่าชดเชยตั้งแต่จุดเริ่มต้นของการจัดกลุ่ม ค่าผลลัพธ์ต้องเป็นจำนวนเต็มที่มากกว่าศูนย์ ตัวอย่างเช่น First(3) – รับบันทึกที่สามจากจุดเริ่มต้นของการจัดกลุ่ม

    หากเรกคอร์ดแรกอยู่นอกกลุ่ม จะถือว่าไม่มีเรกคอร์ด ตัวอย่างเช่น หากมี 3 เรคคอร์ด และคุณต้องการได้รับ First(4) ก็ถือว่าไม่มีเรคคอร์ด

    • ล่าสุด. คุณต้องได้รับบันทึกการจัดกลุ่มล่าสุด หลังจากคำในวงเล็บคุณสามารถระบุนิพจน์ได้ซึ่งผลลัพธ์จะถูกใช้เป็นค่าชดเชยเมื่อสิ้นสุดการจัดกลุ่ม ค่าผลลัพธ์ต้องเป็นจำนวนเต็มที่มากกว่าศูนย์ ตัวอย่างเช่น Last(3) – รับบันทึกที่สามจากท้ายกลุ่ม

    หากบันทึกสุดท้ายอยู่นอกกลุ่มจะถือว่าไม่มีบันทึก ตัวอย่างเช่น หากมี 3 เรคคอร์ด และคุณต้องการรับ Last(4) ก็จะถือว่าไม่มีเรคคอร์ด

    • ก่อนหน้า. คุณต้องได้รับบันทึกการจัดกลุ่มก่อนหน้า หลังคำในวงเล็บ คุณสามารถระบุนิพจน์ได้ ซึ่งผลลัพธ์จะถูกใช้เป็นค่าชดเชยกลับจากบันทึกการจัดกลุ่มปัจจุบัน ตัวอย่างเช่น Previous(2) – รับข้อมูลก่อนหน้าจากบันทึกก่อนหน้า

    หากเรกคอร์ดก่อนหน้านี้ไปไกลกว่าการจัดกลุ่ม (เช่น สำหรับเรกคอร์ดการจัดกลุ่มที่สอง คุณต้องได้รับ Previous(3) จากนั้นจะได้รับเรกคอร์ดการจัดกลุ่มแรก

    เมื่อเรียกข้อมูลบันทึกก่อนหน้าสำหรับผลรวมการจัดกลุ่มจะถือว่าได้รับบันทึกแรก

    • ต่อไป. คุณต้องได้รับเรกคอร์ดการจัดกลุ่มถัดไป หลังคำในวงเล็บ คุณสามารถระบุนิพจน์ได้ ซึ่งผลลัพธ์จะถูกใช้เป็นค่าชดเชยจากบันทึกการจัดกลุ่มปัจจุบัน ตัวอย่างเช่น Next(2) – รับข้อมูลถัดไปจากบันทึกถัดไป

    หากบันทึกถัดไปไปนอกเหนือการจัดกลุ่มจะถือว่าไม่มีบันทึก เช่น ถ้ามี 3 เรคคอร์ด และได้รับ Next() สำหรับเรคคอร์ดที่สาม ก็ถือว่าไม่มีเรคคอร์ด

    เมื่อได้รับบันทึกถัดไปสำหรับยอดรวมกลุ่มถือว่าไม่มีบันทึก

    • ปัจจุบัน. คุณต้องได้รับบันทึกปัจจุบัน

    เมื่อดึงข้อมูลผลรวมการจัดกลุ่ม จะได้รับบันทึกแรก

    • ค่าขอบเขต ความจำเป็นในการได้รับบันทึกตามค่าที่ระบุ หลังจากคำว่า LimitingValues ​​​​ในวงเล็บคุณจะต้องระบุนิพจน์ด้วยค่าที่คุณต้องการเริ่มต้นแฟรกเมนต์ซึ่งเป็นฟิลด์ลำดับแรก

    เรกคอร์ดแรกที่มีค่าฟิลด์การเรียงลำดับมากกว่าหรือเท่ากับค่าที่ระบุจะถูกส่งกลับเป็นเรกคอร์ด ตัวอย่างเช่น หากใช้ฟิลด์ระยะเวลาเป็นฟิลด์การสั่งซื้อ และมีค่า 01/01/2010, 02/01/2010, 03/01/2010 และคุณต้องการรับ LimitingValue(DateTime(2010) , 1, 15)) จากนั้นจะได้รับบันทึกวันที่ 02/01 พ.ศ. 2553

    <Сортировка>

    ประเภท: สตริง. แสดงรายการนิพจน์ คั่นด้วยเครื่องหมายจุลภาค ซึ่งอธิบายกฎการเรียงลำดับ หากไม่ได้ระบุไว้ การเรียงลำดับจะดำเนินการในลักษณะเดียวกับการจัดกลุ่มที่มีการประเมินนิพจน์ หลังจากแต่ละนิพจน์คุณสามารถระบุได้ คำสำคัญ Ascend (สำหรับการเรียงลำดับจากน้อยไปมาก), Descending (สำหรับการเรียงลำดับจากมากไปหาน้อย) และ AutoOrder (สำหรับการเรียงลำดับฟิลด์อ้างอิงตามฟิลด์ที่คุณต้องการเรียงลำดับออบเจ็กต์ที่อ้างอิง) คำว่า Auto Order สามารถใช้ได้ทั้งคำว่า Ascending และคำว่า Descending

    <ИерархическаяСортировка>

    ประเภท: สตริง. เช่นเดียวกับตัวเลือกการเรียงลำดับ ใช้เพื่อจัดระเบียบบันทึกแบบลำดับชั้น หากไม่ได้ระบุ ตัวประกอบโครงร่างจะสร้างการเรียงลำดับตามลำดับที่ระบุในพารามิเตอร์ Sort

    <ОбработкаОдинаковыхЗначенийПорядка>

    ประเภท: สตริง. ระบุกฎสำหรับกำหนดเรคคอร์ดก่อนหน้าหรือถัดไป ในกรณีที่มีหลายเรคคอร์ดที่มีมูลค่าการเรียงลำดับเหมือนกัน:

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

    ตัวอย่างเช่น ถ้าลำดับผลลัพธ์เรียงลำดับตามวันที่:

    วันที่ ชื่อเต็ม ความหมาย
    1 01 มกราคม 2544 อีวานอฟ เอ็ม. 10
    2 02 มกราคม 2544 เปตรอฟ เอส. 20
    3 03 มกราคม 2544 ซิโดรอฟ อาร์. 30
    4 04 มกราคม 2544 เปตรอฟ เอส. 40

    หากค่าพารามิเตอร์เป็นแบบแยกกัน ดังนั้น:

    § รายการก่อนหน้าของรายการ 3 จะเป็นรายการ 2

    § หากส่วนการคำนวณถูกกำหนดเป็นปัจจุบัน ปัจจุบัน (ตามลำดับ พารามิเตอร์เริ่มต้นและสิ้นสุด) ดังนั้นสำหรับบันทึก 2 ส่วนนี้จะประกอบด้วยหนึ่งระเบียน 2 นิพจน์ CalculateExpression("Sum (Value)", Current, Current) จะ จะเท่ากับ 20

    หากค่าพารามิเตอร์เป็น Together ดังนั้น:

    § รายการก่อนหน้าของรายการ 3 จะเป็นรายการ 1

    § หากส่วนการคำนวณถูกกำหนดเป็นปัจจุบัน ปัจจุบัน (ตามลำดับ พารามิเตอร์เริ่มต้นและสิ้นสุด) ดังนั้นสำหรับบันทึก 2 ส่วนนี้จะประกอบด้วยบันทึก 2 และ 3 นิพจน์ CalculateExpression("Sum (Value)", Current, Current) จะเท่ากับ 50

    เมื่อระบุค่าพารามิเตอร์เท่ากับ Together ในพารามิเตอร์ Start และ End คุณจะไม่สามารถระบุออฟเซ็ตสำหรับตำแหน่ง First, Last, Previous, Next ได้

    CalculateExpression("Sum(SumTurnover)", "First", "ปัจจุบัน")

    หากคุณต้องการรับค่าการจัดกลุ่มในบรรทัดก่อนหน้า คุณสามารถใช้นิพจน์ต่อไปนี้:

    CalculateExpression("อัตรา", "ก่อนหน้า")

    รายการ ใหม่ฟังก์ชั่น:

    คำนวณ ExpressionWithGroupArray(<Выражение>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) –

    ฟังก์ชันส่งคืนอาร์เรย์ ซึ่งแต่ละองค์ประกอบจะมีผลลัพธ์ของการประเมินนิพจน์สำหรับการจัดกลุ่มตามฟิลด์ที่ระบุ

    คำนวณ ExpressionWithGroupValueTable(<Выражения>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) –

    ฟังก์ชันส่งคืนตารางค่า แต่ละแถวประกอบด้วยผลลัพธ์ของการประเมินนิพจน์สำหรับการจัดกลุ่มตามฟิลด์ที่ระบุ

    เติมมูลค่าแล้ว(<Выражение>) – ส่งกลับค่า True หากค่าเป็นค่าอื่นที่ไม่ใช่ค่าเริ่มต้นของประเภทนี้ นอกเหนือจากค่า NULL นอกเหนือจากการอ้างอิงว่าง นอกเหนือจากไม่ได้กำหนด ค่าบูลีนถูกตรวจสอบเป็น NULL ตรวจสอบสตริงว่าไม่มีอักขระที่ไม่ใช่ช่องว่างหรือไม่

    รูปแบบ(<Выражение>, <Форматная строка>) – รับสตริงที่จัดรูปแบบของค่าที่ส่งผ่าน สตริงรูปแบบถูกตั้งค่าตามสตริงรูปแบบของระบบ 1C:Enterprise

    สตริงย่อย(<Выражение>, <Начальные символ>, <ДлинаПодстроки>) – ฟังก์ชันนี้ออกแบบมาเพื่อแยกสตริงย่อยออกจากสตริง

    ความยาวสาย(<Выражение>) – ฟังก์ชันนี้ออกแบบมาเพื่อกำหนดความยาวของสตริง พารามิเตอร์ - นิพจน์สตริง

    เส้น(<Выражение>) – ถ้าอาร์เรย์ถูกส่งผ่านเป็นพารามิเตอร์ ฟังก์ชันจะส่งกลับสตริงที่มีการแทนค่าสตริงขององค์ประกอบอาร์เรย์ทั้งหมด โดยคั่นด้วยอักขระ “; “. หากส่งตารางค่าเป็นพารามิเตอร์ฟังก์ชันจะส่งกลับสตริงที่มีการแทนสตริงของแถวทั้งหมดของตารางค่าโดยการแสดงเซลล์ของแต่ละแถวคั่นด้วยอักขระ “; “ และเส้นต่างๆ นั้นเป็นสัญลักษณ์การป้อนบรรทัด หากองค์ประกอบใดๆ มีการแสดงสตริงว่าง สตริงนั้นจะแสดงแทนการแสดง<Пустое значение>.

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

    การตั้งค่าเพิ่มเติมสำหรับฟิลด์ ACS

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

    คอลัมน์ "ค่าที่มีอยู่"ช่วยให้คุณระบุค่าที่มีสำหรับการเลือกและจำกัดตัวเลือกของผู้ใช้ให้อยู่ในขอบเขตที่กำหนด

    คอลัมน์ "การตกแต่ง"ช่วยให้คุณสามารถระบุการออกแบบฟิลด์เค้าโครงโดยไม่ต้องใช้เค้าโครง คุณสามารถระบุสีแบบอักษร สีกรอบ การวางแนวข้อความ ฯลฯ

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

    เขตข้อมูลจากการคำนวณ

    บนแท็บ "ช่องจากการคำนวณ" ขององค์ประกอบข้อมูล คุณสามารถสร้างช่องจากการคำนวณของคุณเองได้

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

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

    จำนวน - ราคา* จำนวน

    ดูอันอื่นและคุณสามารถดาวน์โหลดโดยใช้ฟังก์ชันเหล่านี้ได้

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

    จะถ่ายโอนพารามิเตอร์และตัวเลือกไปยังรายงานที่สร้างบนระบบควบคุมการเข้าออกโดยไม่ต้องสร้างแบบฟอร์มรายงานได้อย่างไร

    &บนไคลเอนต์ // การส่งพารามิเตอร์ไปยังรายงาน ACSการประมวลผลคำสั่งขั้นตอน (พารามิเตอร์คำสั่ง, พารามิเตอร์การดำเนินการคำสั่ง) การเลือก = โครงสร้างใหม่ ("ระบบการตั้งชื่อ" , พารามิเตอร์คำสั่ง); การตั้งค่าคงที่ = GetFixedSettings() ; FormParameters = โครงสร้างใหม่ ( "การเปิดแบบฟอร์ม การเลือก, รหัสตัวเลือก, การตั้งค่าคงที่", ความจริง , การคัดเลือก, "ตัวเลือกรายงานการขาย", การตั้งค่าคงที่) ; โอเพ่นฟอร์ม( "รายงาน.รายงานการขาย.แบบฟอร์ม", พารามิเตอร์แบบฟอร์ม) ; ฟังก์ชัน EndProcedure &OnServer GetFixedSettings()SalesReport = รายงาน รายงานการขาย. สร้าง() ; SKD = ​​รายงานยอดขาย DataCompositionSchema; การตั้งค่า = SKD การตั้งค่าเริ่มต้น; เริ่มต้นรอบระยะเวลา = การตั้งค่า พารามิเตอร์ข้อมูล FindParameterValue( NewDataCompositionParameter("BeginPeriod" ) ) ; ต้นงวด. ค่า = เดือนเริ่มต้น(CurrentDate()) ; ต้นงวด. การใช้งาน = จริง ; เริ่มต้นรอบระยะเวลา = การตั้งค่า พารามิเตอร์ข้อมูล FindParameterValue( NewDataCompositionParameter("EndPeriod") ); สิ้นสุดระยะเวลา ค่า = เดือนสิ้นสุด(CurrentDate()) ; สิ้นสุดระยะเวลา การใช้งาน = จริง ; การตั้งค่าย้อนกลับ; EndFunction // GetFixedSettings ()

    จะจัดส่วนหัวคอลัมน์ให้อยู่ตรงกลางในรายงาน ACS ได้อย่างไร

    คุณต้องตั้งค่าพารามิเตอร์สองตัวในช่อง "การออกแบบ" บนแท็บ "ชุดข้อมูล":

    ตำแหน่งแนวนอน: กึ่งกลาง ตำแหน่งแนวตั้ง: กึ่งกลาง

    นอกจากนี้ในแท็บ "การตั้งค่า" ที่ด้านล่างคุณจะพบแท็บอื่น: "ลักษณะที่ปรากฏตามเงื่อนไข" สำหรับแต่ละกลุ่ม พารามิเตอร์ ฯลฯ คุณสามารถกำหนดการออกแบบได้ตามที่คุณต้องการ

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

    ในตอนท้ายของบทความฉันอยากจะแนะนำ Anatoly Sotnikov ฟรีให้คุณ หลักสูตรนี้เป็นหลักสูตรจากโปรแกรมเมอร์ที่มีประสบการณ์ โดยจะแสดงให้คุณเห็นถึงวิธีสร้างรายงานในระบบควบคุมการเข้าใช้งานแยกกัน คุณเพียงแค่ต้องตั้งใจฟังและจำไว้! คุณจะได้รับคำตอบสำหรับคำถามต่อไปนี้:
    • จะสร้างรายงานรายการอย่างง่ายได้อย่างไร?
    • คอลัมน์ฟิลด์ เส้นทาง และชื่อเรื่องบนแท็บ "ฟิลด์" มีไว้เพื่ออะไร
    • ข้อจำกัดสำหรับฟิลด์เค้าโครงมีอะไรบ้าง
    • จะกำหนดบทบาทให้ถูกต้องได้อย่างไร?
    • บทบาทของฟิลด์โครงร่างคืออะไร?
    • ฉันจะหาแท็บองค์ประกอบข้อมูลในการสืบค้นได้ที่ไหน
    • จะกำหนดค่าพารามิเตอร์ในระบบควบคุมการเข้าออกได้อย่างไร?
    • มันน่าสนใจมากยิ่งขึ้น...
    บางทีคุณไม่ควรพยายามท่องอินเทอร์เน็ตด้วยตนเองเพื่อค้นหาข้อมูลที่จำเป็น นอกจากนี้ทุกอย่างก็พร้อมใช้งาน เพิ่งเริ่มต้น! รายละเอียดทั้งหมดเกี่ยวกับสิ่งที่อยู่ในบทเรียนวิดีโอฟรี

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


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

    ดังนั้น ตอนนี้จึงจำเป็นต้องคำนวณผลรวมสำหรับการจัดกลุ่มข้างต้น (“คลังสินค้า”, “ประเภทคลังสินค้า”) และผลรวมโดยรวม
    เมื่อต้องการทำเช่นนี้ ให้ใช้ฟังก์ชัน คำนวณ ExpressionWithGroupArray:
    ประเมินการแสดงออกกับกลุ่มพันธมิตร (ประเมินผลกับกลุ่มพันธมิตร)
    ไวยากรณ์:
    ประเมิน ExpressionWithGroupArray(,)
    คำอธิบาย:
    ฟังก์ชันส่งคืนอาร์เรย์ ซึ่งแต่ละองค์ประกอบจะมีผลลัพธ์ของการประเมินนิพจน์สำหรับการจัดกลุ่มตามฟิลด์ที่ระบุ
    เมื่อสร้างโครงร่าง เครื่องมือจัดวางโครงร่างจะแปลงพารามิเตอร์ฟังก์ชันเป็นเงื่อนไขของฟิลด์โครงร่างการจัดองค์ประกอบข้อมูล ตัวอย่างเช่น ฟิลด์บัญชีจะถูกแปลงเป็น DataSet.Account
    เมื่อสร้างนิพจน์สำหรับเอาต์พุตของฟิลด์ที่กำหนดเองซึ่งนิพจน์ประกอบด้วยฟังก์ชัน CalculateArrayWithGroupArray() เท่านั้น ตัวสร้างเค้าโครงจะสร้างนิพจน์เอาต์พุตเพื่อให้ข้อมูลเอาต์พุตได้รับการสั่งซื้อ ตัวอย่างเช่น สำหรับฟิลด์แบบกำหนดเองที่มีนิพจน์:

    CalculateExpressionWithGroupArray("จำนวน (จำนวนการหมุนเวียน)", "คู่สัญญา")
    ตัวสร้างเค้าโครงจะสร้างนิพจน์ต่อไปนี้สำหรับเอาต์พุต:

    ConnectRows(Array(Order(CalculateExpressionWithGroupingValueTable("View(Sum(DataSet.AmountTurnover)),Sum(DataSet.AmountTurnover)",,"DataSet.Account"),"2")))

    ตัวเลือก:

    ประเภท: สตริง. นิพจน์ที่จะประเมิน สตริง ตัวอย่างเช่น Amount(AmountTurnover)

    ประเภท: สตริง. การจัดกลุ่มนิพจน์ฟิลด์ – นิพจน์ของการจัดกลุ่มฟิลด์ คั่นด้วยเครื่องหมายจุลภาค เช่น ผู้รับเหมา, พรรค.

    ประเภท: สตริง. นิพจน์ที่อธิบายการเลือกที่ใช้กับเรกคอร์ดรายละเอียด นิพจน์ไม่รองรับการใช้ฟังก์ชันการรวม ตัวอย่างเช่น DeleteFlag = False

    ประเภท: สตริง. นิพจน์ที่อธิบายการเลือกที่ใช้กับเรกคอร์ดกลุ่ม ตัวอย่างเช่น จำนวน(จำนวนการหมุนเวียน) > &พารามิเตอร์1
    ตัวอย่าง:

    สูงสุด(CalculateExpressionWithGroupArray("จำนวน(จำนวนการหมุนเวียน)", "คู่สัญญา"));

    คำอธิบายโดยละเอียดของไวยากรณ์ของฟังก์ชันสามารถดูได้ที่ http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582
    ตอนนี้สำหรับการคำนวณเราทำซ้ำฟิลด์ "คำสั่งซื้อ" ด้วยค่าที่แตกต่างกัน "คำนวณโดย ... " โดยใช้นิพจน์ต่อไปนี้ โปรดทราบว่าในแต่ละระดับที่สูงกว่าจะใช้ค่าของระดับที่ต่ำกว่าการจัดกลุ่ม .

    เป็นผลให้เราได้รับการก่อสร้างดังต่อไปนี้: