คุณลักษณะในการรับภาพรวมของรายการล่าสุดในการลงทะเบียนข้อมูล คุณลักษณะของการได้รับภาพรวมของรายการล่าสุดในการลงทะเบียนข้อมูล มิติ ทรัพยากร และรายละเอียด

/
การดำเนินการประมวลผลข้อมูล

การแก้ไขผลรวมสำหรับการลงทะเบียนข้อมูลเป็นระยะ

ขอบเขตของการใช้งาน: แอปพลิเคชันที่ได้รับการจัดการ, แอปพลิเคชันมือถือ, แอปพลิเคชันทั่วไป

1.1. สำหรับการลงทะเบียนข้อมูลเป็นระยะ ขอแนะนำให้อนุญาตผลรวมหากตรงตามเงื่อนไขต่อไปนี้ทั้งหมด:

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

หากต้องการดูรายการเงื่อนไขทั้งหมดเมื่อคิวรีใช้ข้อมูลการลงทะเบียนผลรวม โปรดดูเอกสารประกอบสำหรับแพลตฟอร์ม 1C: Enterprise.

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

เลือกรายการ บทความ AS บทความ ระบบการตั้งชื่อราคา ราคาตามราคา, . . . จากไดเรกทอรี ระบบการตั้งชื่อ AS ระบบการตั้งชื่อการเชื่อมต่อด้านซ้าย การลงทะเบียนข้อมูล ราคาระบบการตั้งชื่อ SliceLast(, ราคาวิว = &ประเภทราคา) ราคาอย่างไรระบบการตั้งชื่อราคาซอฟต์แวร์ระบบการตั้งชื่อ ระบบการตั้งชื่อ = ระบบการตั้งชื่อ ลิงค์ . .

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

1.2. นอกจากนี้ ควรพิจารณาตัวเลือกอื่นเพื่อแก้ไขแบบสอบถามรีจิสทรีเพื่อให้ตรงตามเงื่อนไขเหล่านี้

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

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

2. ในกรณีอื่นๆ ทั้งหมด ไม่ควรอนุญาตให้มีการลงทะเบียนข้อมูลเป็นระยะๆ ก่อนอื่นถ้า

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

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

การลงทะเบียนข้อมูล 1Cเป็นชุดข้อมูลที่มีโครงสร้างพร้อมมิติและทรัพยากร ออกแบบมาเพื่อจัดเก็บข้อมูลเป็นระยะ

ความเป็นงวด

ข้อมูลจะถูกจัดเก็บตามมิติและช่วงเวลา คุณสามารถตั้งค่าความถี่ของการลงทะเบียนข้อมูลได้:

  • ไม่ใช่เป็นระยะๆ
  • โดยนายทะเบียน
  • ที่สอง
  • สัปดาห์
  • เดือน
  • หนึ่งในสี่

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

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

นายทะเบียน

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

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

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

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

เอกลักษณ์ของบันทึก

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

หากผู้รับจดทะเบียนกำหนดความถี่ ความถี่นั้นจะมีส่วนร่วมในความเป็นเอกลักษณ์ของบันทึกด้วย

สำหรับการลงทะเบียนแบบไม่เป็นระยะและเป็นอิสระ ความเป็นเอกลักษณ์จะขึ้นอยู่กับการรวมกันของมิติ

แบบฟอร์ม

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

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

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


ขนาด ทรัพยากร และรายละเอียด

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

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

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

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

คุณสามารถดำเนินการต่อไปนี้ด้วยการลงทะเบียนข้อมูล:

  • การลบรายการในการลงทะเบียนข้อมูล 1C

ลักษณะเฉพาะ

— ความเป็นเอกลักษณ์ของบันทึกตามชุดของมิติ: แต่ละบันทึกในการลงทะเบียนข้อมูลเป็นค่าทรัพยากรใหม่

— รายการในการลงทะเบียนข้อมูลอาจเป็นแบบเป็นระยะหรือไม่ก็ได้

— การลงทะเบียนข้อมูลสามารถขึ้นอยู่กับและไม่ขึ้นอยู่กับนายทะเบียน

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

การลงทะเบียน "ราคาสินค้า" เป็นการลงทะเบียนข้อมูลเป็นระยะ โดยจะมีการจัดทำรายการตามนายทะเบียน

รูปภาพแสดงว่าความถี่ถูกตั้งค่าเป็นภายในหนึ่งวัน ซึ่งหมายความว่าราคาสามารถเปลี่ยนแปลงได้วันละครั้งตามการวัดที่ไม่ซ้ำกันในระหว่างวัน

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

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

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

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

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

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

สารละลาย

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

เลือกการขายสินค้าและบริการ ลิงค์ การขายสินค้าและบริการ สกุลเงิน สูงสุด (อัตราสกุลเงิน ระยะเวลา) AS ระยะเวลา สถานที่ในการตั้งค่าระยะเวลา อัตราจากเอกสาร การขายสินค้าและบริการ วิธีการขายสินค้าและบริการ การเชื่อมต่อด้านซ้าย การลงทะเบียนข้อมูล . อัตราสกุลเงิน AS อัตราสกุลเงินในการขายสินค้าและบริการ สกุลเงิน = อัตราสกุลเงิน สกุลเงินและการขายของ GoodsServices.Date >= อัตราสกุลเงิน ระยะเวลา GROUP ซอฟต์แวร์ การขายสินค้าและบริการ ลิงค์ การขายสินค้าและบริการ สกุลเงิน; //////////////////////////////////////////////// // /////////////////////////// เลือก VTPeriodsSetting Rates.Link, VTPeriodsSetting Rates.Currency, RatesCurrency.Rate จาก VTPeriodsSetting Rates AS VTPeriodsSetting Rates LEFT CONNECTION RegisterInformation . อัตราสกุลเงิน AS อัตราสกุลเงิน ON VTPeriodsRate Settings.Period = สกุลเงิน Rates.Period และ VTPeriodsRate Settings.Currency = อัตราสกุลเงิน สกุลเงิน

ขั้นตอนการขอ:

  1. ได้รับระยะเวลาในการกำหนดอัตราแลกเปลี่ยนของแต่ละเอกสารเอกสารเชื่อมต่อกับตารางทางกายภาพ "อัตราสกุลเงิน" ที่นี่คุณควรใส่ใจกับเงื่อนไขการเชื่อมต่อ สกุลเงินจะต้องเท่ากัน และวันที่ของเอกสาร >= ระยะเวลาของการลงทะเบียนข้อมูล
    จากผลของการเชื่อมต่อดังกล่าว แต่ละเอกสารจะได้รับชุดแถวที่ตรงตามเงื่อนไข: บันทึกอัตราแลกเปลี่ยนทั้งหมดสำหรับสกุลเงินของเอกสาร ซึ่งสร้างขึ้นไม่เกินวันที่ของเอกสาร
    ขั้นตอนสุดท้ายคือการจัดกลุ่มแถวเพื่อให้ได้ระยะเวลาอัตราสูงสุด เป็นผลให้สำหรับแต่ละเอกสารจะได้รับระยะเวลาที่จำเป็นสำหรับการตั้งค่าอัตราแลกเปลี่ยนสำหรับสกุลเงินที่ต้องการ (วันที่สูงสุดสำหรับการตั้งค่าอัตราแลกเปลี่ยน แต่ไม่เกินวันที่ของเอกสาร) ผลลัพธ์จะถูกวางไว้ในตารางชั่วคราว VTPeriodsSettingRates
  2. กำลังเรียนหลักสูตร.ตารางชั่วคราว VTPeriodsSetting Rates เชื่อมต่อกับตาราง PHYSICAL “Currency Rates” การเชื่อมต่อเกิดขึ้นตามสกุลเงินของเอกสารและระยะเวลาการตั้งค่าอัตราที่กำหนดไว้ในตารางชั่วคราวที่สอง

: ชิ้นแรกและ ชิ้นสุดท้ายลองพิจารณาทำงานกับตารางเสมือนเหล่านี้โดยใช้ 1C ใช้บ่อยกว่ามาก ชิ้นสุดท้ายมาเริ่มกันเลย

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

ทะเบียนประกอบด้วยรายการต่อไปนี้

ขั้นแรก เราจะได้ส่วนหลังโดยไม่ต้องใช้พารามิเตอร์โดยดำเนินการตามคำขอต่อไปนี้:

เลือก PriceSliceLast.Period AS ระยะเวลา, PriceSliceLast.Product AS สินค้า, PriceSliceLast.Supplier AS Supplier, PriceSliceLast.Amount AS Amount จากข้อมูลการลงทะเบียน Price.SliceLast AS PriceSliceLast

เนื่องจากไม่ได้ระบุพารามิเตอร์ การแบ่งส่วนจึงดำเนินการในวันที่ปัจจุบัน - 02/01/2017 เป็นผลให้เราได้รับตารางต่อไปนี้

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

สมมติว่าเราจำเป็นต้องทำสิ่งเดียวกัน แต่เราต้องการได้รับบันทึกที่มีวันที่น้อยกว่าหรือเท่ากับ 01/15/2017 ในการดำเนินการนี้ คุณจะต้องเปลี่ยนแถวที่มีตารางสไลซ์ล่าสุดในคำขอดังต่อไปนี้

จาก RegisterInformation.Price.SliceLast(&CutDate,) AS PriceSliceLast

แน่นอนว่าก่อนดำเนินการตามคำขอ คุณจะต้องส่งพารามิเตอร์ไปให้คำขอก่อน &วันที่ตัด. ตอนนี้ผลลัพธ์ของแบบสอบถามจะมีลักษณะเช่นนี้

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

จาก RegisterInformation.Price.Last Cut(&CutDate, Product = &Product AND Supplier = &Supplier) AS PriceLast Cut

เป็นผลให้เราได้รับเพียงหนึ่งระเบียนเท่านั้น

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

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

เดาได้ไม่ยากว่าสำหรับชิ้นแรกหลักการทำงานจะเหมือนกัน ยกเว้นว่าจะเลือกบันทึกแรกหลังจากวันที่ตัด

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

รูปภาพนี้ยังแสดงโครงสร้างของข้อมูลเมตาของรีจิสทรีด้วย ดังที่เราเห็น เครื่องบันทึกเงินสดประกอบด้วยมิติ "ผลิตภัณฑ์" พร้อมด้วยประเภทการอ้างอิง "ผลิตภัณฑ์" ตลอดจนทรัพยากรตัวเลข "ราคา" และแอตทริบิวต์ "ราคาเก่า"

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

สองตัวเลือกคำขอ

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

คำขอ = คำขอใหม่; ขอ. ข้อความ = " เลือก | | | | | จาก | ทะเบียนข้อมูล ราคาระบบการตั้งชื่อ ชิ้นส่วนของวิธีการกำหนดราคาล่าสุดชิ้นส่วนของล่าสุด|ที่ไหน | ราคาระบบการตั้งชื่อ Slice ใหม่ล่าสุด ราคาเก่า< = 50 " ;

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

ดังนั้นในตัวอย่างของเรา คำขอไม่ส่งคืนผลลัพธ์ ขั้นแรก เขาได้รับส่วนแบ่งของอย่างหลัง จากนั้นจึงกำหนดเงื่อนไขในแอตทริบิวต์ "ราคาเก่า" นี่คือลักษณะที่ปรากฏในแผนภาพ:

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

คำขอ = คำขอใหม่; ขอ. ข้อความ = " เลือก ราคาระบบการตั้งชื่อ Slice ใหม่ล่าสุด ระยะเวลา, ราคาระบบการตั้งชื่อ Slice ใหม่ล่าสุด ผลิตภัณฑ์, ราคาระบบการตั้งชื่อ Slice ใหม่ล่าสุด ราคา, ราคาระบบการตั้งชื่อ Slice ใหม่ล่าสุด ราคาเก่า จาก ทะเบียนข้อมูล ราคาระบบการตั้งชื่อ SliceLast(, ราคาเก่า< = 50 ) ราคาอย่างไรระบบการตั้งชื่อ Slice ล่าสุด"

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

ผลลัพธ์

ควรเข้าใจว่าสิ่งที่กล่าวข้างต้นใช้กับทุกกรณีของการใช้ตารางเสมือนในการสืบค้น (สำหรับการลงทะเบียนการสะสม การลงทะเบียนการบัญชี งาน ฯลฯ )

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