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

: ชิ้นแรกและ ชิ้นสุดท้ายลองพิจารณาทำงานกับตารางเสมือนเหล่านี้โดยใช้ 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

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

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

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

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

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

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

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

สารละลาย

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

เลือกการขายสินค้าและบริการ ลิงค์ การขายสินค้าและบริการ สกุลเงิน สูงสุด (อัตราสกุลเงิน ระยะเวลา) 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” การเชื่อมต่อเกิดขึ้นตามสกุลเงินของเอกสารและระยะเวลาการตั้งค่าอัตราที่กำหนดไว้ในตารางชั่วคราวที่สอง

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

คัดลอกมาจาก: http://www.kb.mista.ru/article.php?id=92

รับข้อมูลปัจจุบันจากการลงทะเบียนข้อมูล ณ วันที่ได้รับในคำขอนั้นเอง


มีหลายวิธีในการรับข้อมูลที่คุณต้องการ

1.โดยตรงในแบบสอบถาม (ผ่านตารางลงทะเบียนจริง)

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

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

สำหรับการพัฒนาทั่วไป:
หน้าตัดของส่วนหลังในแพลตฟอร์มคืออะไร?

ขึ้นอยู่กับระยะเวลาของการลงทะเบียน (ตามเวลา ตามตำแหน่งของนายทะเบียน) VT จะถูกขยายเป็นคำขอต่อไปนี้:
1.ตามเวลา (ปี เดือน...วินาที)

2. ตามตำแหน่งนายทะเบียน
ในกรณีนี้ คุณต้องล้อมส่วนที่เลือกอีกครั้ง

ทั้งหมดนี้สามารถดูได้จากการดูบันทึกทางเทคโนโลยีโดยเปิดใช้งานโหมดการบันทึกคำขอ

2. ระบบการจัดองค์ประกอบข้อมูล (ถ่ายโอนชุดค่าจากตารางหนึ่งไปยังพารามิเตอร์ตารางเสมือน)

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

ตัวอย่างเช่น เรามาสร้างรายงาน - รายการคำสั่งซื้อของลูกค้ากันดีกว่า

ในการดำเนินการนี้ เรามาสร้างชุดข้อมูล "เอกสาร" - คำขอ:

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

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

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

มาดูการเชื่อมต่อชุดกัน ในหน้า "ลิงก์ชุดข้อมูล" ให้เพิ่ม 2 ลิงก์:
1. แหล่งที่มาของการสื่อสารคือชุด “เอกสาร” ผู้รับคือชุด “อัตราสกุลเงิน” นิพจน์ต้นทาง - "วันที่" นิพจน์ปลายทาง - "วันที่" พารามิเตอร์ - "วันที่"
2. แหล่งที่มาของการสื่อสารคือชุด “เอกสาร” ผู้รับคือชุด “อัตราสกุลเงิน” นิพจน์ต้นทาง - "สกุลเงินเอกสาร", นิพจน์ปลายทาง - "สกุลเงิน", พารามิเตอร์ - "สกุลเงิน"

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

มาดูเขตข้อมูลจากการคำนวณกันดีกว่า มาเพิ่มฟิลด์จากการคำนวณ "AmountInAccountingCurrency" นิพจน์ฟิลด์คือ "จำนวนเอกสาร * อัตรา / หลายหลาก"

นอกจากนี้เรายังจะระบุฟิลด์ "จำนวนเอกสาร" และ "AmountInCurrencyAccounting" เป็นทรัพยากร

มาจัดทำรายงานกันเถอะ
มาเพิ่มหนึ่งกลุ่ม "บันทึกโดยละเอียด" ในฟิลด์ที่เลือกเราจะระบุ "คำสั่งซื้อของผู้ซื้อ" "อัตรา" และ "หลายหลาก" มาเพิ่มทรัพยากร "Document Amount" และ "AmountInCurrencyAccounting"

คุณสามารถสร้างรายงานได้

สมมติว่าเราได้รับงานที่ลูกค้าต้องการรับรายงานเกี่ยวกับเอกสาร "การขายสินค้าและบริการ" ที่ป้อนลงในฐานข้อมูลและสำหรับแต่ละเอกสารจำเป็นต้องได้รับราคาจากการลงทะเบียนข้อมูล "ราคาสินค้า" ” สำหรับวันที่ในเอกสาร รายงานนี้เขียนขึ้นสำหรับการกำหนดค่า "Manufacturing Enterprise Management" เวอร์ชัน 1.3

บันทึกจากตารางเอกสารจะถูกรวมเข้าด้วยกันโดยบันทึกจากตารางเสมือน "ราคาตามระบบการตั้งชื่อ SliceLast" ตามเงื่อนไขที่สอดคล้องกันของช่วงเวลา ประเภทราคา และรายการ ประเภทราคาได้มาจากรายละเอียดเอกสารชื่อเดียวกัน

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

การใช้เอซีเอส

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

ชุดข้อมูลชุดแรกประกอบด้วยแบบสอบถามต่อไปนี้:

แบบสอบถามเลือกฟิลด์ต่อไปนี้จากตารางเอกสารและส่วนตาราง "ผลิตภัณฑ์": "ลิงก์", "วันที่", "ประเภทราคา", "ระบบการตั้งชื่อ" ตอนนี้เรามาดูชุดข้อมูลที่สอง:

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

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

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

รายงานกำลังทำงาน พิจารณาตัวเลือกในการรับราคาสำหรับวันที่เอกสารในคำขอเดียว

ในคำขอเดียว

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

"SELECT | DocumentNomenclaturePeriod.Document, | DocumentNomenclaturePeriod.Document.Date AS Date, | DocumentNomenclaturePeriod.Document.PriceType AS TypePrice, | DocumentNomenclaturePeriod.Nomenclature, | PriceNomenclature.Price | FROM | (SELECT | Sales of GoodsServicesGoods. Link AS Document, | การขาย ของบริการสินค้าผลิตภัณฑ์ระบบการตั้งชื่อตามระบบการตั้งชื่อ | สูงสุด (ราคาของระบบการตั้งชื่อช่วงเวลา) AS ระยะเวลา | จาก | เอกสาร การขายสินค้าและบริการ สินค้า AS การขายสินค้าและบริการสินค้า | การเชื่อมต่อด้านซ้าย การลงทะเบียนข้อมูล ระบบการตั้งชื่อราคา AS ราคาระบบการตั้งชื่อ | ซอฟต์แวร์การขายสินค้าและบริการ สินค้า ระบบการตั้งชื่อ = ระบบการตั้งชื่อราคา ระบบการตั้งชื่อ | และการนำสินค้าสินค้าและบริการไปใช้ใหม่ Link. Date >= ระบบการตั้งชื่อราคา ระยะเวลา | และการขาย GoodsServicesGoods.Link.PriceType = ราคาระบบการตั้งชื่อประเภทราคา | | GROUP BY | Sales of GoodsServicesGoods.Link, | Sales of GoodsServicesGoods.Nomenclature) AS DocumentNomenclaturePeriod | LEFT CONNECTION RegisterInformation.PricesNomenclature AS PriceNomenclatures | BY DocumentNomenclature tourPeriod.Nomenclature = PriceNomenclature.Nomenclature | และ DocumentNomenclaturePeriod.Document.PriceType = PriceNomenclature.PriceType | และ DocumentNomenclaturePeriod.Period = PriceNomenclature.Period"

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

ผลการดำเนินการคล้ายกับผลลัพธ์ของรายงานก่อนหน้า (ดูภาพหน้าจอด้านบน)

วาดข้อสรุป

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

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