คอมพิวเตอร์และอุปกรณ์ทันสมัย

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

ความแตกต่างที่น่าสนใจอีกประการหนึ่งคือไวยากรณ์ภาษารัสเซีย แม้ว่าในความเป็นจริงคุณสามารถใช้โครงสร้างภาษาอังกฤษได้

คำขอตัวอย่าง:

เลือก
ธนาคาร.ชื่อ
Banks.CorrAccount
จาก
Directory.Banks ธนาคารอย่างไร

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

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

คำอธิบายของโครงสร้างภาษาแบบสอบถาม

โครงสร้างแบบสอบถาม

ในการรับข้อมูลก็เพียงพอที่จะใช้โครงสร้าง "SELECT" และ "FROM" คำขอที่ง่ายที่สุดมีลักษณะดังนี้:

SELECT * จากไดเร็กทอรีระบบการตั้งชื่อ

โดยที่ “*” หมายถึงการเลือกช่องทั้งหมดของตาราง และ Directories.Nomenclature – ชื่อของตารางในฐานข้อมูล

ลองดูตัวอย่างที่ซับซ้อนและทั่วไปกว่านี้:

เลือก
<ИмяПоля1>ยังไง<ПредставлениеПоля1>,
รวม(<ИмяПоля2>) ยังไง<ПредставлениеПоля2>
จาก
<ИмяТаблицы1>ยังไง<ПредставлениеТаблицы1>
<ТипСоединения>สารประกอบ<ИмяТаблицы2>ยังไง<ПредставлениеТаблицы2>
โดย<УсловиеСоединениеТаблиц>

ที่ไหน
<УсловиеОтбораДанных>

จัดกลุ่มตาม
<ИмяПоля1>

เรียงตาม
<ИмяПоля1>

ผลลัพธ์
<ИмяПоля2>
โดย
<ИмяПоля1>

ในแบบสอบถามนี้ เราเลือกข้อมูลของฟิลด์ “FieldName1” และ “FieldName1” จากตาราง “TableName1” และ “TableName” กำหนดคำพ้องความหมายให้กับฟิลด์โดยใช้ตัวดำเนินการ “HOW” และเชื่อมต่อโดยใช้เงื่อนไขบางประการ “TableConnectionCondition ".

จากข้อมูลที่ได้รับเราเลือกเฉพาะข้อมูลที่ตรงตามเงื่อนไขจาก "WHERE" "เงื่อนไขการเลือกข้อมูล" ต่อไปเราจัดกลุ่มคำขอตามฟิลด์ "Field Name1" ในขณะที่รวม "Field Name2" เราสร้างผลรวมสำหรับฟิลด์ “ชื่อฟิลด์1” และฟิลด์สุดท้าย “ชื่อฟิลด์2”

ขั้นตอนสุดท้ายคือการเรียงลำดับคำขอโดยใช้โครงสร้าง ORDER BY

การออกแบบทั่วไป

มาดูโครงสร้างทั่วไปของภาษาคิวรี 1C 8.2

อันดับแรกn

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

เลือก 100 อันดับแรก
ธนาคาร.ชื่อ
ธนาคาร รหัส AS BIC
จาก
Directory.Banks ธนาคารอย่างไร
เรียงตาม
ธนาคาร.ชื่อ

คำขอจะได้รับ 100 รายการแรกของไดเรกทอรี "ธนาคาร" เรียงตามตัวอักษร

อนุญาต

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

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

เลือกที่อนุญาต
พื้นที่เก็บข้อมูลข้อมูลเพิ่มเติม ลิงค์
จาก
ไดเรกทอรีพื้นที่เก็บข้อมูลข้อมูลเพิ่มเติม

หลากหลาย

การใช้ "DIFFERENT" จะป้องกันไม่ให้บรรทัดที่ซ้ำกันเข้าสู่ผลลัพธ์การสืบค้น 1C การทำสำเนาหมายความว่าช่องคำขอทั้งหมดตรงกัน

เลือก 100 อันดับแรก
ธนาคาร.ชื่อ
ธนาคาร รหัส AS BIC
จาก
Directory.Banks ธนาคารอย่างไร

ตารางว่าง

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

ตัวอย่างจากความช่วยเหลือ 1C 8:

เลือก Link.Number, ตารางว่าง (หมายเลข, รายการ, ปริมาณ) เป็นองค์ประกอบ
จากเอกสารใบแจ้งหนี้ค่าใช้จ่าย
รวมทุกอย่าง
เลือก Link.Number, สารบัญ (LineNumber, สินค้า, ปริมาณ)
จาก Document.Invoice Document.Invoice.Composition.*

ไม่เป็นโมฆะ

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

เลือก
การอ้างอิงระบบการตั้งชื่อ ลิงค์
IsNULL(สินค้าคงเหลือ.ปริมาณคงเหลือ,0) เป็นปริมาณที่เหลืออยู่
จาก


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

ISNULL (วันที่รับใบแจ้งหนี้, วันที่ออกใบแจ้งหนี้)

HOW เป็นตัวดำเนินการที่ช่วยให้เราสามารถกำหนดชื่อ (คำพ้องความหมาย) ให้กับตารางหรือฟิลด์ เราเห็นตัวอย่างการใช้งานด้านบน

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

เลือก
ดู(ลิงก์) //สตริง เช่น “รายงานขั้นสูง ฉบับที่ 123 ลงวันที่ 10/10/2558
ดู (DeletionMark) AS DeleteMarkText, //string, “ใช่” หรือ “ไม่”
ViewReferences(DeletionMark) AS DeleteMarkBoolean //บูลีน จริงหรือเท็จ
จาก
เอกสาร.รายงานล่วงหน้า

ด่วน

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

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

EXPRESS (TableCost.Subconto1 AS Directory.รายการต้นทุน) ประเภทของกิจกรรมForTaxAccountingCosts

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

EXPRESS(แสดงความคิดเห็น AS Line(150))

วันที่แตกต่าง

รับบทเรียนวิดีโอ 267 บทเรียนบน 1C ฟรี:

ตัวอย่างของการใช้ IS NULL ในคำขอ 1C:

เลือกจาก
อ้างอิง
การเชื่อมต่อด้านซ้าย ลงทะเบียนการสะสมผลิตภัณฑ์ในคลังสินค้าเหลืออยู่เป็นผลิตภัณฑ์ที่เหลืออยู่
Software NomenclatureRef.Link = Sold GoodsCommitteesRemains.Nomenclature
ในกรณีที่ไม่มีผลิตภัณฑ์เหลืออยู่ ปริมาณคงเหลือเป็นโมฆะ

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

ค่าที่กำหนดไว้ล่วงหน้า

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

ตัวอย่างการใช้งาน:

WHERE Nomenclature.Type of Nomenclature = Value(Directory.Types of Nomenclature.Product)

WHERE คู่ค้า ประเภทของข้อมูลการติดต่อ = มูลค่า (การแจงนับ ประเภทของข้อมูลการติดต่อ โทรศัพท์)

WHERE ยอดคงเหลือในบัญชีบัญชีการบัญชี = มูลค่า (ผังบัญชีกำไรกำไรขาดทุน)

การเชื่อมต่อ

การเชื่อมต่อมี 4 ประเภท: ซ้าย, ขวา, สมบูรณ์ภายใน.

การเชื่อมต่อด้านซ้ายและขวา

การรวมใช้เพื่อเชื่อมโยงสองตารางตามเงื่อนไขเฉพาะ คุณลักษณะเมื่อ เข้าร่วมทางซ้ายคือเราใช้ตารางแรกที่ระบุอย่างครบถ้วนและผูกตารางที่สองอย่างมีเงื่อนไข เขตข้อมูลของตารางที่สองที่ไม่สามารถผูกตามเงื่อนไขได้จะถูกเติมด้วยค่า โมฆะ.

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

มันจะส่งคืนตารางของคู่สัญญาทั้งหมดและกรอกข้อมูลในช่อง "ธนาคาร" เฉพาะในสถานที่ที่จะตรงตามเงื่อนไข "ชื่อคู่สัญญา = Banks.Name" ถ้าไม่ตรงตามเงื่อนไข ฟิลด์ธนาคารจะถูกตั้งค่าเป็น โมฆะ.

เข้าร่วมขวาในภาษา 1Cคล้ายกันอย่างแน่นอน การเชื่อมต่อด้านซ้ายยกเว้นข้อแตกต่างประการหนึ่ง - เข้า สิทธิ์ในการเชื่อมต่อตาราง "หลัก" เป็นตารางที่สอง ไม่ใช่ตารางแรก

การเชื่อมต่อเต็มรูปแบบ

การเชื่อมต่อเต็มรูปแบบแตกต่างจากซ้ายและขวาตรงที่จะแสดงบันทึกทั้งหมดจากสองตารางและเชื่อมต่อเฉพาะรายการที่เชื่อมต่อตามเงื่อนไขได้

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

จาก

การเชื่อมต่อเต็มรูปแบบ
Directory.Banks ธนาคารอย่างไร

โดย

ภาษาของแบบสอบถามจะส่งกลับทั้งสองตารางโดยสมบูรณ์ก็ต่อเมื่อตรงตามเงื่อนไขในการรวมระเบียนเท่านั้น ไม่เหมือนกับการรวมซ้าย/ขวา เป็นไปได้ที่ NULL จะปรากฏในสองฟิลด์

เข้าร่วมภายใน

เข้าร่วมภายในแตกต่างจากแบบเต็มตรงที่จะแสดงเฉพาะบันทึกที่สามารถเชื่อมต่อได้ตามเงื่อนไขที่กำหนด

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

จาก
สารบบ คู่ค้า AS ลูกค้า

เข้าร่วมภายใน
Directory.Banks ธนาคารอย่างไร

โดย
Clients.Name = ธนาคารชื่อ

แบบสอบถามนี้จะส่งกลับเฉพาะแถวที่ธนาคารและคู่สัญญามีชื่อเหมือนกัน

สมาคม

โครงสร้าง JOIN และ JOIN ALL จะรวมผลลัพธ์สองรายการไว้ในที่เดียว เหล่านั้น. ผลลัพธ์ของการแสดงทั้งสองจะ "รวม" เป็นหนึ่งเดียวทั่วไป

นั่นคือระบบทำงานเหมือนกับระบบปกติทุกประการสำหรับตารางชั่วคราวเท่านั้น

วิธีการใช้งาน INDEX BY

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

เลือก
อัตราสกุลเงินหน้าตัดล่าสุด สกุลเงิน AS สกุลเงิน
อัตราสกุลเงิน หน้าตัดล่าสุด
ใส่อัตราสกุลเงิน
จาก
ข้อมูลการลงทะเบียนอัตราสกุลเงินส่วนสุดท้าย (&ระยะเวลา) AS อัตราสกุลเงินส่วนสุดท้าย
จัดทำดัชนีโดย
สกุลเงิน
;
เลือก
ระบบการตั้งชื่อราคา ระบบการตั้งชื่อ
ราคาระบบการตั้งชื่อราคา
ราคาระบบการตั้งชื่อสกุลเงิน
อัตราแลกเปลี่ยนเงินตราเรท
จาก
การลงทะเบียนข้อมูลราคาระบบการตั้งชื่อส่วนสุดท้าย (&ระยะเวลา
ระบบการตั้งชื่อ B (&ระบบการตั้งชื่อ) และ PriceType = &PriceType) AS ระบบการตั้งชื่อราคา
เข้าร่วมซ้าย อัตราสกุลเงิน AS อัตราสกุลเงิน
ราคาซอฟต์แวร์ระบบการตั้งชื่อสกุลเงิน = อัตราสกุลเงินสกุลเงิน

การจัดกลุ่ม

ภาษาคิวรี 1C ช่วยให้คุณใช้ฟังก์ชันรวมพิเศษเมื่อจัดกลุ่มผลลัพธ์คิวรี การจัดกลุ่มยังสามารถใช้ได้โดยไม่ต้องมีฟังก์ชันรวมเพื่อ "กำจัด" รายการที่ซ้ำกัน

มีฟังก์ชันต่อไปนี้:

จำนวน ปริมาณ จำนวนส่วนต่าง สูงสุด ต่ำสุด เฉลี่ย

ตัวอย่าง #1:

เลือก
การขายสินค้าและบริการ สินค้า ระบบการตั้งชื่อ
SUM(Sales of GoodsServicesGoods.Quantity) AS ปริมาณ,
SUM(ยอดขายสินค้าบริการสินค้า.จำนวน) AS จำนวนเงิน
จาก

จัดกลุ่มตาม
การขายสินค้าและบริการ สินค้า ระบบการตั้งชื่อ

คำขอได้รับรายการสินค้าทั้งหมดและสรุปตามปริมาณและจำนวนตามสินค้า

ตัวอย่างหมายเลข 2

เลือก
Banks.รหัส
ปริมาณ (Banks.Link ที่แตกต่างกัน) เป็นจำนวนที่ซ้ำกัน
จาก
Directory.Banks ธนาคารอย่างไร
จัดกลุ่มตาม
ธนาคาร.รหัส

ตัวอย่างนี้จะแสดงรายการ BIC ในไดเรกทอรี "ธนาคาร" และแสดงจำนวนรายการที่ซ้ำกันสำหรับแต่ละ BIC

ผลลัพธ์

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

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

เลือก




จาก
เอกสาร การขายสินค้าและบริการ สินค้า วิธีการขายสินค้าและบริการ
เรียงตาม

ผลลัพธ์
SUM(ปริมาณ)
ผลรวม(ผลรวม)
โดย
ศัพท์

ผลลัพธ์ของแบบสอบถามจะเป็นแบบลำดับชั้นต่อไปนี้:

ผลลัพธ์ทั่วไป

หากคุณต้องการรับผลรวมของ "ผลรวม" ทั้งหมด ให้ใช้ตัวดำเนินการ "ทั่วไป"

เลือก
การขายสินค้าและบริการ สินค้า ระบบการตั้งชื่อ AS ระบบการตั้งชื่อ
การขายสินค้าและบริการ ลิงค์ AS เอกสาร
การขายสินค้าและบริการ สินค้า ปริมาณ AS ปริมาณ
การขายสินค้าและบริการ สินค้า จำนวนเงิน AS จำนวนเงิน
จาก
เอกสาร การขายสินค้าและบริการ สินค้า วิธีการขายสินค้าและบริการ
เรียงตาม
การขายสินค้าและบริการ ลิงค์ วันที่
ผลลัพธ์
SUM(ปริมาณ)
ผลรวม(ผลรวม)
โดย
เป็นเรื่องธรรมดา,
ศัพท์

จากการดำเนินการตามคำขอ เราได้รับผลลัพธ์ดังต่อไปนี้:

โดยการจัดกลุ่ม 1 ระดับ คือ การรวมสาขาที่จำเป็นทั้งหมด

การจัด

ตัวดำเนินการ ORDER BY ใช้เพื่อเรียงลำดับผลลัพธ์ของแบบสอบถาม

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

เลือก

จาก
Directory.Nomenclature AS Nomenclature
เรียงตาม
ชื่อ

คำขอจะแสดงรายชื่อในไดเร็กทอรีระบบการตั้งชื่อโดยเรียงตามตัวอักษร

สั่งซื้ออัตโนมัติ

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

หากคุณต้องการแสดงบันทึกตารางตามลำดับคงที่ คุณต้องใช้โครงสร้างลำดับอัตโนมัติ

เลือก
ระบบการตั้งชื่อ ชื่อ AS ชื่อ
จาก
Directory.Nomenclature AS Nomenclature
สั่งซื้ออัตโนมัติ

ตารางเสมือนจริง

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

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

  • ตัดอันแรก;
  • ตัดส่วนหลัง
  • ของเหลือ;
  • การปฏิวัติ;
  • ยอดคงเหลือและการหมุนเวียน
  • การเคลื่อนไหวจาก subconto;
  • การปฏิวัติ;
  • ความเร็ว Dt Kt;
  • ของเหลือ;
  • ยอดคงเหลือและการหมุนเวียน
  • คอนโตย่อย
  • ฐาน;
  • ข้อมูลกราฟ
  • ระยะเวลาที่ถูกต้องตามจริง

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

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

แบบสอบถามนี้ช่วยให้คุณสามารถดึงข้อมูลจำนวนมากได้อย่างรวดเร็ว

ตัวเลือกตารางเสมือน

สิ่งสำคัญมากในการทำงานกับตารางเสมือนคือการใช้พารามิเตอร์ พารามิเตอร์ตารางเสมือนเป็นพารามิเตอร์เฉพาะสำหรับการเลือกและการกำหนดค่า

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

ตัวอย่างการใช้พารามิเตอร์เหล่านี้:

ทะเบียนการสะสม สินค้าในคลังสินค้า ยอดคงเหลือและการหมุนเวียน (& เริ่มต้นงวด & สิ้นสุดงวด เดือน ความเคลื่อนไหวและขอบเขตของงวด ระบบการตั้งชื่อ = & ระบบการตั้งชื่อที่ต้องการ)

อัลกอริทึมสำหรับตารางเสมือน

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

เมื่อใช้ตารางเสมือน ระบบจะดำเนินการดังต่อไปนี้:

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


การกระทำง่ายๆ ดังกล่าวสามารถปรับปรุงประสิทธิภาพของระบบโดยรวมได้อย่างมาก

การใช้ตัวสร้างแบบสอบถาม

ตัวสร้างแบบสอบถาม– เครื่องมือที่สร้างไว้ในระบบ 1C Enterprise ซึ่งอำนวยความสะดวกอย่างมากในการพัฒนาแบบสอบถามฐานข้อมูล

ตัวสร้างแบบสอบถามมีอินเทอร์เฟซที่ค่อนข้างเรียบง่ายและใช้งานง่าย อย่างไรก็ตาม เรามาดูรายละเอียดการใช้ตัวสร้างแบบสอบถามกันดีกว่า

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

คำอธิบายของตัวสร้างคำขอ 1C

มาดูรายละเอียดแต่ละแท็บของนักออกแบบกันดีกว่า ข้อยกเว้นคือแท็บตัวสร้าง ซึ่งเป็นหัวข้อสำหรับการสนทนาอื่น

แท็บตารางและเขตข้อมูล

แท็บนี้ระบุแหล่งข้อมูลและฟิลด์ที่ต้องแสดงในรายงาน โดยพื้นฐานแล้ว โครงสร้าง SELECT.. FROM มีอธิบายไว้ที่นี่

แหล่งที่มาอาจเป็นตารางฐานข้อมูลทางกายภาพ ตารางการลงทะเบียนเสมือน ตารางชั่วคราว การสืบค้นแบบซ้อน ฯลฯ

ในเมนูบริบทของตารางเสมือน คุณสามารถตั้งค่าพารามิเตอร์ตารางเสมือนได้:

แท็บการเชื่อมต่อ

แท็บนี้ใช้เพื่ออธิบายการเชื่อมต่อของหลายตาราง และสร้างโครงสร้างด้วยคำว่า CONNECTION

แท็บการจัดกลุ่ม

บนแท็บนี้ ระบบอนุญาตให้คุณจัดกลุ่มและสรุปฟิลด์ที่จำเป็นของผลลัพธ์ตาราง อธิบายการใช้โครงสร้าง GROUP BY, SUM, MINIMUM, AVERAGE, MAXIMUM, QUANTITY, NUMBER OF DIFFERENT

แท็บเงื่อนไข

รับผิดชอบทุกอย่างที่เข้ามาในข้อความคำขอหลังจากการสร้าง WHERE เช่น เงื่อนไขทั้งหมดที่กำหนดกับข้อมูลที่ได้รับ

แท็บขั้นสูง

แท็บ นอกจากนี้ประกอบไปด้วยพารามิเตอร์ทุกประเภทที่สำคัญมาก มาดูคุณสมบัติแต่ละอย่างกัน

การจัดกลุ่ม การเลือกบันทึก:

  • เฟิร์ส เอ็น– พารามิเตอร์ที่ส่งคืนเฉพาะ N ระเบียนไปยังแบบสอบถาม (ตัวดำเนินการ FIRST)
  • ไม่มีรายการที่ซ้ำกัน– รับประกันความเป็นเอกลักษณ์ของบันทึกที่ได้รับ (ตัวดำเนินการที่แตกต่างกัน)
  • อนุญาต– ให้คุณเลือกเฉพาะบันทึกที่ระบบให้คุณเลือกโดยคำนึงถึง (การก่อสร้างที่อนุญาต)

การจัดกลุ่ม ประเภทคำขอกำหนดประเภทของคำขอ: การดึงข้อมูล การสร้างตารางชั่วคราว หรือการทำลายตารางชั่วคราว

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

แท็บการรวม/นามแฝง

บนแท็บนี้ของตัวออกแบบคิวรี คุณสามารถตั้งค่าความสามารถในการรวมตารางและนามแฝงต่างๆ ได้ (โครงสร้าง HOW) ตารางแสดงไว้ทางด้านซ้าย หากคุณตั้งค่าสถานะตรงข้ามตาราง โครงสร้าง UNITE จะถูกนำมาใช้ มิฉะนั้น - UNITE ALL (ความแตกต่างระหว่างทั้งสองวิธี) ทางด้านขวาจะมีการระบุความสอดคล้องของเขตข้อมูลในตารางต่างๆ หากไม่ได้ระบุการโต้ตอบแบบสอบถามจะส่งกลับค่า NULL

แท็บสั่งซื้อ

สิ่งนี้ระบุลำดับในการเรียงลำดับค่า (ORDER BY) - จากมากไปน้อย (DESC) หรือจากน้อยไปมาก (ASC)

นอกจากนี้ยังมีธงที่น่าสนใจ - สั่งซื้ออัตโนมัติ(ในคำขอ - การสั่งซื้ออัตโนมัติ) ตามค่าเริ่มต้น ระบบ 1C จะแสดงข้อมูลตามลำดับ "วุ่นวาย" หากคุณตั้งค่าแฟล็กนี้ ระบบจะจัดเรียงข้อมูลตามข้อมูลภายใน

แท็บชุดงานแบบสอบถาม

บนแท็บตัวออกแบบแบบสอบถาม คุณสามารถสร้างรายการใหม่และใช้เป็นการนำทางได้ด้วย ในข้อความคำขอ แพ็กเก็ตจะถูกคั่นด้วยสัญลักษณ์ “;” (ลูกน้ำ)

ปุ่ม “แบบสอบถาม” ในตัวออกแบบแบบสอบถาม

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

ในหน้าต่างนี้ คุณสามารถปรับเปลี่ยนคำขอและดำเนินการได้


การใช้คอนโซลแบบสอบถาม

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

มาดูเครื่องมือนี้กันดีกว่า

ดาวน์โหลดคอนโซลแบบสอบถาม 1C

ก่อนอื่นเพื่อเริ่มทำงานกับคอนโซลแบบสอบถามคุณต้องดาวน์โหลดจากที่ไหนสักแห่ง โดยทั่วไปการรักษาจะแบ่งออกเป็นสองประเภท - รูปแบบควบคุมและแบบธรรมดา (หรือบางครั้งเรียกว่า 8.1 และ 8.2/8.3)

ฉันพยายามรวมสองมุมมองนี้ในการประมวลผลเดียว - แบบฟอร์มที่ต้องการจะเปิดขึ้นในโหมดการทำงานที่ต้องการ (ในโหมดจัดการคอนโซลจะทำงานในโหมดหนาเท่านั้น)

คำอธิบายของคอนโซลแบบสอบถาม 1C

เรามาเริ่มดูคอนโซลแบบสอบถามพร้อมคำอธิบายของแผงการประมวลผลหลัก:

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

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

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

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

พารามิเตอร์คำขอ:

ช่วยให้คุณตั้งค่าพารามิเตอร์ปัจจุบันสำหรับการร้องขอ

ในหน้าต่างพารามิเตอร์การสืบค้น สิ่งต่อไปนี้น่าสนใจ:

  • ปุ่ม ได้รับจากการร้องขอค้นหาพารามิเตอร์ทั้งหมดในคำขอโดยอัตโนมัติเพื่อความสะดวกของนักพัฒนา
  • ธง พารามิเตอร์ทั่วไปสำหรับคำขอทั้งหมด– เมื่อติดตั้งแล้ว การประมวลผลจะไม่ล้างพารามิเตอร์เมื่อย้ายจากคำขอไปยังคำขอในรายการคำขอทั่วไป

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

นอกจากนี้ในแผงด้านบนยังมีปุ่มสำหรับเรียกการตั้งค่าคอนโซลแบบสอบถาม:

ที่นี่คุณสามารถระบุพารามิเตอร์สำหรับการสืบค้นการบันทึกอัตโนมัติและพารามิเตอร์การดำเนินการสืบค้น

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

ตัวออกแบบแบบสอบถาม 1C 8 ถูกเรียกจากเมนูบริบท (ปุ่มเมาส์ขวา) เมื่อคุณคลิกที่ช่องป้อนข้อมูล:

เมนูนี้ยังมีฟังก์ชันที่มีประโยชน์ เช่น การล้างหรือเพิ่มตัวแบ่งบรรทัด (“|”) ให้กับคำขอ หรือการรับรหัสคำขอในรูปแบบที่สะดวกนี้:

คำขอ = คำขอใหม่;
คำขอข้อความ = ”
|เลือก
| สกุลเงินลิงค์
|จาก
| Directory.Currencies AS Currencies”;
RequestResult = คำขอดำเนินการ ();

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



นอกจากนี้ คอนโซลแบบสอบถาม นอกเหนือจากรายการแล้ว ยังสามารถแสดงข้อมูลในรูปแบบของต้นไม้ - สำหรับแบบสอบถามที่มีผลรวม

การเพิ่มประสิทธิภาพแบบสอบถาม

จุดที่สำคัญที่สุดประการหนึ่งในการเพิ่มประสิทธิภาพการทำงานของ 1C Enterprise 8.3 คือ การเพิ่มประสิทธิภาพคำขอ. จุดนี้ยังสำคัญมากเมื่อ ผ่านการรับรอง. ด้านล่างนี้เราจะพูดถึงสาเหตุทั่วไปที่ทำให้ประสิทธิภาพการสืบค้นและวิธีการเพิ่มประสิทธิภาพไม่เหมาะสม

การเลือกในตารางเสมือนโดยใช้โครงสร้าง WHERE

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

ขวา:

เลือก

จาก
ทะเบียนสะสม การตั้งถิ่นฐานร่วมกันกับผู้เข้าร่วมองค์กร ยอดคงเหลือ (
,
องค์กร = &องค์กร
และ บุคคล = &บุคคล) วิธีการชำระเงินร่วมกันกับผู้เข้าร่วมยอดคงเหลือขององค์กร

ผิด:

เลือก
การชำระหนี้ร่วมกันกับผู้เข้าร่วมยอดคงเหลือขององค์กร จำนวน ยอดคงเหลือ
จาก
ทะเบียนการสะสม การตั้งถิ่นฐานร่วมกันกับผู้เข้าร่วมขององค์กร ยอดคงเหลือ (,) วิธี การตั้งถิ่นฐานร่วมกันกับผู้เข้าร่วมในองค์กร ยอดคงเหลือ
ที่ไหน
การตั้งถิ่นฐานร่วมกันกับผู้เข้าร่วมยอดคงเหลือขององค์กร Organization = & Organisation
และ การชำระบัญชีร่วมกันกับผู้เข้าร่วมยอดคงเหลือขององค์กร Individual = &Individual

รับค่าของฟิลด์ประเภทที่ซับซ้อนโดยใช้จุด

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

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

ผิด:

เลือก
บันทึกชุดบันทึกวันที่
RecordSet.ปริมาณ
จาก
ลงทะเบียนการสะสมผลิตภัณฑ์องค์กร AS SetRecords

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

ขวา:

เลือก
ทางเลือก
เมื่อ ProductsOrg.Registrar LINK Document.Sales of products and Services
THEN EXPRESS(ProductsOrganization.Registrar AS Document.Sales of GoodsServices).วันที่
เมื่อ GoodsOrg.Registrar LINK Document.Receipt of GoodsServices
THEN EXPRESS(GoodsOrg.Registrar AS Document.Receipt of GoodsServices).วันที่
สิ้นสุด ณ วันที่
ผลิตภัณฑ์Org.จำนวน
จาก
ลงทะเบียนการสะสมผลิตภัณฑ์องค์กร AS ผลิตภัณฑ์องค์กร

หรือตัวเลือกที่สองคือการเพิ่มข้อมูลดังกล่าวลงในรายละเอียด เช่น ในกรณีของเรา การเพิ่มวันที่

ขวา:

เลือก
ผลิตภัณฑ์องค์กรวันที่
สินค้าองค์กร.ปริมาณ
จาก
ทะเบียนสะสม สินค้าขององค์กร AS สินค้าขององค์กร

แบบสอบถามย่อยในเงื่อนไขการเข้าร่วม

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

ผิด:

เลือก …

เข้าร่วมซ้าย (
เลือกจาก RegisterInformation.Limits
ที่ไหน …
จัดกลุ่มตาม...
) โดย …

ขวา:

เลือก …
ใส่ขีดจำกัด
จากการลงทะเบียนข้อมูลข้อ จำกัด
ที่ไหน …
จัดกลุ่มตาม...
จัดทำดัชนีโดย...;

เลือก …
จาก เอกสาร การขายสินค้าและบริการ
ซ้ายเข้าร่วมขีดจำกัด
โดย …;

การรวมบันทึกกับตารางเสมือน

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

การใช้การเลือกตามฟิลด์ที่ไม่ได้จัดทำดัชนี

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

จะต้องมีดัชนีที่เหมาะสมในแต่ละเงื่อนไข ดัชนีที่เหมาะสมคือดัชนีที่ตรงตามข้อกำหนดต่อไปนี้:

  1. ดัชนีประกอบด้วยฟิลด์ทั้งหมดที่ระบุไว้ในเงื่อนไข
  2. ฟิลด์เหล่านี้อยู่ที่จุดเริ่มต้นของดัชนี
  3. การเลือกเหล่านี้จะต่อเนื่องกัน นั่นคือค่าที่ไม่เกี่ยวข้องกับเงื่อนไขการสืบค้นจะไม่ "เชื่อม" ระหว่างค่าเหล่านั้น

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

การใช้ตรรกะหรือในเงื่อนไข

บทความนี้ครอบคลุมประเด็นพื้นฐานของการเพิ่มประสิทธิภาพแบบสอบถามที่ผู้เชี่ยวชาญ 1C ทุกคนควรรู้

หลักสูตรวิดีโอฟรีที่มีประโยชน์มากเกี่ยวกับการพัฒนาและเพิ่มประสิทธิภาพแบบสอบถาม ฉันขอแนะนำอย่างยิ่งสำหรับผู้เริ่มต้นและอีกมากมาย!

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

คำขอจะดำเนินการตามคำแนะนำที่กำหนด - ขอข้อความ. ข้อความคำขอถูกรวบรวมตามไวยากรณ์และกฎเกณฑ์ ภาษาแบบสอบถาม. ภาษาคิวรี 1C:Enterprise 8 เป็นไปตามมาตรฐาน SQLแต่มีความแตกต่างและส่วนขยายอยู่บ้าง

โครงการทำงานร่วมกับการร้องขอ

รูปแบบทั่วไปของการทำงานกับคำขอประกอบด้วยหลายขั้นตอนติดต่อกัน:

  1. การสร้างวัตถุคำขอและการตั้งค่าข้อความคำขอ
  2. การตั้งค่าพารามิเตอร์คำขอ
  3. ดำเนินการตามคำขอและรับผลลัพธ์
  4. ข้ามผลลัพธ์คำขอและประมวลผลข้อมูลที่ได้รับ

1. วัตถุ ขอมีทรัพย์สิน ข้อความซึ่งคุณต้องกำหนดข้อความคำขอ

// ตัวเลือกที่ 1
คำขอ = คำขอใหม่;
ขอ . ข้อความ =
"เลือก
| อัตราสกุลเงินระยะเวลา
| อัตราสกุลเงินสกุลเงิน
| อัตราแลกเปลี่ยนเงินตราเรท
|จาก

|ที่ไหน
;

// ตัวเลือก 2
คำขอ = คำขอใหม่("เลือก
| อัตราสกุลเงินระยะเวลา
| อัตราสกุลเงินสกุลเงิน
| อัตราแลกเปลี่ยนเงินตราเรท
|จาก
| การลงทะเบียนข้อมูลอัตราสกุลเงิน AS อัตราสกุลเงิน
|ที่ไหน
| อัตราสกุลเงินสกุลเงิน = &สกุลเงิน");

2. การตั้งค่าพารามิเตอร์ดำเนินการโดยใช้วิธีการ ตั้งค่าพารามิเตอร์(< Имя>, < Значение>) . พารามิเตอร์ในข้อความคำขอระบุด้วยสัญลักษณ์ “ & " และมักจะใช้ในเงื่อนไขการเลือก (ส่วน WHERE) และในพารามิเตอร์ตารางเสมือน

ขอ);

3. หลังจากกำหนดข้อความและตั้งค่าพารามิเตอร์แล้ว จะต้องดำเนินการคำขอและได้รับผลการดำเนินการ การดำเนินการดำเนินการโดยเมธอด Execute() ซึ่งส่งคืนอ็อบเจ็กต์ ผลการสืบค้น. จากผลลัพธ์แบบสอบถาม คุณสามารถ:

  • รับการเลือกโดยใช้วิธี Select (< ТипОбхода>, < Группировки>, < ГруппировкиДляЗначенийГруппировок>) ;
  • อัปโหลดค่าไปยังตารางค่าหรือแผนผังค่าโดยใช้วิธีอัปโหลด (< ТипОбхода>) .

//รับตัวอย่าง

ตัวอย่าง = ผลการสืบค้น เลือก();

// รับตารางค่า
RequestResult = คำขอ วิ่ง();
โต๊ะ = ผลการสืบค้น ยกเลิกการโหลด();

4. คุณสามารถข้ามการเลือกผลลัพธ์แบบสอบถามได้โดยใช้การวนซ้ำ:

ลาก่อน Sample.Next() วนซ้ำ
รายงาน(การคัดเลือกหลักสูตร);
สิ้นสุดรอบ;

ตัวอย่างที่สมบูรณ์ของการทำงานกับคำขออาจมีลักษณะดังนี้:

// ขั้นตอนที่ 1 การสร้างคำขอและการตั้งค่าข้อความคำขอ
คำขอ = คำขอใหม่;
ขอ . ข้อความ =
"เลือก
| อัตราสกุลเงินระยะเวลา
| อัตราสกุลเงินสกุลเงิน
| อัตราแลกเปลี่ยนเงินตราเรท
|จาก
| การลงทะเบียนข้อมูลอัตราสกุลเงิน AS อัตราสกุลเงิน
|ที่ไหน
| อัตราสกุลเงินสกุลเงิน = &สกุลเงิน";

// ด่าน 2 การตั้งค่าพารามิเตอร์
ขอ . SetParameter("สกุลเงิน" , SelectedCurrency);

// ด่าน 3. ดำเนินการค้นหาและรับตัวอย่าง
RequestResult = คำขอ วิ่ง();
ตัวอย่าง = ผลการสืบค้น เลือก();

// ข้ามส่วนที่เลือก
ลาก่อน Sample.Next() วนซ้ำ
รายงาน(การคัดเลือกหลักสูตร);
สิ้นสุดรอบ;

องค์ประกอบของข้อความคำขอ

ข้อความคำขอประกอบด้วยหลายส่วน:

  1. ขอคำอธิบาย— รายการฟิลด์และแหล่งข้อมูลที่เลือกได้
  2. การรวมคำถาม— สำนวน “UNITE” และ “UNITE ALL”;
  3. การจัดผลลัพธ์— สำนวน “ORDER BY...”;
  4. สั่งซื้ออัตโนมัติ— สำนวน “การสั่งซื้ออัตโนมัติ”;
  5. คำอธิบายของผลลัพธ์- นิพจน์ "ผลลัพธ์ ... โดย ... "

บังคับเฉพาะส่วนแรกเท่านั้น

ตารางชั่วคราวและแบบสอบถามแบบแบตช์

ภาษาคิวรี 1C รองรับการใช้งาน ตารางชั่วคราว— ตารางที่ได้รับจากการสืบค้นและจัดเก็บเป็นการชั่วคราว

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

ManagerVT = TemporaryTablesManager ใหม่;
คำขอ = คำขอใหม่;
ขอ . ผู้จัดการTemporaryTables = ผู้จัดการVT;

ขอ . ข้อความ =
"เลือก
| สกุลเงินรหัส
| สกุลเงิน.ชื่อ
| วางในสกุลเงิน
|จาก
| Directory.Currencies AS สกุลเงิน";

RequestResult = คำขอ ดำเนินการ();

หากต้องการใช้ตารางชั่วคราวของ VTVcurrency ในการสืบค้นอื่น คุณต้องมอบหมายตัวจัดการตารางชั่วคราวทั่วไปให้กับการสืบค้นเหล่านี้ ซึ่งก็คือ VT Manager

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

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

// ตัวอย่างการทำงานกับคำขอแบบแบตช์
คำขอ = คำขอใหม่;
ขอ . ข้อความ =
"เลือก
| สกุลเงิน.ชื่อ
|จาก
| Directory.Currencies AS สกุลเงิน
|;
|เลือก
| ศัพท์.ชื่อ
|จาก
| Directory. ระบบการตั้งชื่อ AS ระบบการตั้งชื่อ";

ผลลัพธ์แบทช์ = คำขอ ดำเนินการแบทช์();

TZสกุลเงิน =แพ็คเก็ตผลลัพธ์[ 0 ]. ยกเลิกการโหลด();
TZNomenclature = ผลลัพธ์ของแพ็คเกจ[ 1 ] ยกเลิกการโหลด();

// ตัวอย่างการใช้ตารางชั่วคราวในคำขอแบบแบตช์
คำขอ = คำขอใหม่;
ขอ . ข้อความ =
"เลือก
| สินค้า ลิงค์ HOW TO สินค้า
|PLACE วีทีโปรดักส์
|จาก
| Directory.ระบบการตั้งชื่อผลิตภัณฑ์ HOW
|ที่ไหน
| ผลิตภัณฑ์ผู้ผลิต = &ผู้ผลิต
|;
|เลือก
| VTTProducts.สินค้า,
| โรงเรียนอาชีวศึกษา ปริมาณ
| โรงเรียนอาชีวศึกษาราคา
| รร.อาชีวศึกษา.Link AS DocumentReceipts
|จาก
| ผลิตภัณฑ์วีที AS ผลิตภัณฑ์วีที
| เอกสารการเชื่อมต่อด้านซ้าย การรับสินค้าและบริการ สินค้า AS PTU
| ซอฟต์แวร์ VTProducts.Product = PTU.ระบบการตั้งชื่อ"
;

ขอ . ตั้งค่าพารามิเตอร์( “ผู้ผลิต”, ผู้ผลิต);

RequestResult = คำขอ วิ่ง();
ตัวอย่าง = ผลการสืบค้น เลือก();

ลาก่อน Sample.Next() วนซ้ำ

สิ้นสุดรอบ;

ตารางเสมือนจริง

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

มีตารางเสมือนต่อไปนี้ (พารามิเตอร์ที่เป็นไปได้จะระบุอยู่ในวงเล็บ):

  • สำหรับการลงทะเบียนข้อมูล:
    • SliceFirst(<Период>, <Условие>) — บันทึกแรกสุดสำหรับวันที่ที่ระบุ
    • SliceLast(<Период>, <Условие>) — บันทึกล่าสุดสำหรับวันที่ที่ระบุ
  • สำหรับการลงทะเบียนการสะสม:
    • ของเหลือ(<Период>, <Условие>) — ยอดคงเหลือ ณ วันที่ระบุ;
    • การปฏิวัติ(<НачалоПериода>, <КонецПериода>, <Периодичность>, <Условие>) - ธุรกรรมรอบระยะเวลา;
    • ยังคงอยู่และมูลค่าการซื้อขาย(<НачалоПериода>, <КонецПериода>, <Периодичность>, <МетодДополненияПериодов>, <Условие>) — ยอดคงเหลือและมูลค่าการซื้อขายสำหรับงวด;
  • สำหรับการลงทะเบียนการบัญชี:
    • ของเหลือ(<Период>, <УсловиеСчета>, <Субконто>, <Условие>) — ยอดคงเหลือ ณ วันที่ระบุตามบัญชี มิติ และบัญชีย่อย
    • การปฏิวัติ(<НачалоПериода>, <КонецПериода>, <Периодичность>, <УсловиеСчета>, <Субконто>, <Условие>, <УсловиеКорСчета>, <КорСубконто>) — มูลค่าการซื้อขายสำหรับงวดในบริบทของการบัญชี การวัดผล corr บัญชี, subconto, cor. คอนโต;
    • ยังคงอยู่และมูลค่าการซื้อขาย(<НачалоПериода>, <КонецПериода>, <Периодичность>, <МетодДополненияПериодов>, <УсловиеСчета>, <Субконто>, <Условие>) — ยอดคงเหลือและการหมุนเวียนในบริบทของการบัญชี การวัด และบัญชีย่อย
    • มูลค่าการซื้อขายDtKt(<НачалоПериода>, <КонецПериода>, <Периодичность>, <УсловиеСчетаДт>, <СубконтоДт>, <УсловиеСчетаКт>, <СубконтоКт>, <Условие>) — มูลค่าการซื้อขายสำหรับงวดตามบัญชี Dt, บัญชี Kt, Subconto Dt, Subconto Kt;
    • การเคลื่อนไหว Subconto(<НачалоПериода>, <КонецПериода>, <Условие>, <Порядок>, <Первые>) — การเคลื่อนไหวพร้อมกับค่า subconto
  • สำหรับการลงทะเบียนการคำนวณ:
    • ฐาน(<ИзмеренияОсновногоРегистра>, <ИзмеренияБазовогоРегистра>, <Разрезы>, <Условие>) — ข้อมูลพื้นฐานของการลงทะเบียนการคำนวณ
    • ข้อมูลกราฟิก(<Условие>)—ข้อมูลกราฟ;
    • ระยะเวลาการดำเนินการจริง(<Условие>) คือระยะเวลาที่มีผลใช้ได้จริง

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

ตัวสร้างแบบสอบถาม

เพื่อเร่งความเร็วในการป้อนข้อความค้นหา แพลตฟอร์มนี้มีเครื่องมือพิเศษ: ตัวสร้างแบบสอบถามและ ตัวสร้างแบบสอบถามพร้อมการประมวลผลผลลัพธ์. หากต้องการเรียก Constructor คุณต้องคลิกขวาและเลือกรายการที่ต้องการ:

ตัวสร้างสามารถเรียกได้จากเมนูหลัก ข้อความ.

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

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

วัตถุ RequestSchema

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

  • SetQueryText(< Текст>) — กรอกคุณสมบัติ Query Packet ตามข้อความคำขอที่ส่งมา
  • GetQueryText() - ส่งคืนข้อความคำขอที่สร้างขึ้นตามคุณสมบัติ Request Package
  • FindParameters() - ส่งคืนพารามิเตอร์คำขอ

ลองดูตัวอย่างการทำงานกับออบเจ็กต์ RequestSchema เพื่อสร้างข้อความคำขอโดยทางโปรแกรม

เรียงตาม
สกุลเงินรหัส

รหัสภาษาที่ฝังไว้อาจมีลักษณะดังนี้:

RequestScheme = RequestScheme ใหม่;
แพ็คเกจ 1 = โครงการคำขอ คำขอแบทช์[ 0 ];
ตัวดำเนินการ1 = แพ็คเกจ1. ตัวดำเนินการ[ 0 ];
// เพิ่มแหล่งที่มา
RegisterTable = ตัวดำเนินการ 1 แหล่งที่มา เพิ่ม( "ไดเรกทอรีสกุลเงิน", "สกุลเงิน" );
// เพิ่มฟิลด์
ฟิลด์ลิงค์ = ตัวดำเนินการ1. ฟิลด์ที่เลือกได้ เพิ่ม("Currencies.Link" , 0 );
รหัสฟิลด์ = ตัวดำเนินการ1. ฟิลด์ที่เลือกได้ เพิ่ม("สกุลเงิน.รหัส", 1);
// การระบุนามแฝงของฟิลด์
แพ็คเกจ 1 . คอลัมน์[ 0 ]. นามแฝง = "สกุลเงิน" ;
แพ็คเกจ 1 . คอลัมน์[ 1 ]. นามแฝง = "รหัส" ;
// เพิ่มเงื่อนไข
ตัวดำเนินการ1 . การคัดเลือก เพิ่ม( "ไม่ใช่การลบธง");
//เพิ่มการสั่ง
แพ็คเกจ 1 . คำสั่ง. เพิ่ม(รหัสฟิลด์);
RequestText = RequestScheme GetQueryText();

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

ศัพท์

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

คำขอข้อความ = "
|เลือก
| ระบบการตั้งชื่อรหัส
| ระบบการตั้งชื่อ ชื่อ
| ศัพท์.บทความ
|จาก

ผลการสืบค้น

คำชี้แจงเล็กน้อย ในส่วน เลือก(SELECT) เราแสดงรายการเขตข้อมูลของตารางเฉพาะที่เราต้องการเห็นในผลลัพธ์ ในบทที่ จาก(จาก) เราบอกว่าจะนำมาจากตารางใด โปรดทราบว่าคำหลัก ยังไง(AS) เราประกาศนามแฝงสำหรับตาราง ไดเรกทอรี.ระบบการตั้งชื่อคุณสามารถใช้ชื่อได้เกือบทุกชื่อ ยกเว้นคีย์เวิร์ดและตัวเลขภาษาคิวรี 1C 8 นามแฝงยังสามารถประกาศสำหรับฟิลด์:

คำขอข้อความ = "
|เลือก
| รหัสสินค้า AS Code,
| สินค้าชื่อ AS Description,
| สินค้าบทความ บทความ HOW
|จาก
| ไดเรกทอรี ระบบการตั้งชื่อ AS สินค้า"

ผลลัพธ์จะเป็นตารางในรูปแบบ:

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

คำขอข้อความ = "
|เลือก *
|จาก
| ไดเรกทอรี ระบบการตั้งชื่อ AS ระบบการตั้งชื่อ";

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

คำขอข้อความ = "
|เลือก
| รหัส,
| ชื่อ,
| รหัสผู้ขาย
|จาก
| Directory.ระบบการตั้งชื่อ";

โดยหลักการแล้วคำขออาจไม่มีส่วนได้เสีย จาก,แต่ตามกฎแล้วไม่มีใครเขียนแบบนี้:

คำขอข้อความ = "
|เลือก
| Directory.Nomenclature.Code,
| Directory.ระบบการตั้งชื่อ.ชื่อ,
| Directory.Nomenclature.Article";

คำขออาจไม่เพียงแต่รวมถึงฟิลด์ฐานข้อมูลเท่านั้น แต่ยังรวมไปถึงฟิลด์ประเภทพื้นฐานด้วย เช่น:

คำขอข้อความ = "
|เลือก
| ระบบการตั้งชื่อรหัส
| ระบบการตั้งชื่อ ชื่อ
| ระบบการตั้งชื่อ หมายเลขบทความ
//ตัวเลข
| 3000 AS ต้นทุนสูงสุด
//วันที่
| DATETIME(2013, 1, 1) เป็นวันที่จัดส่ง
//บูลีน
| ความจริงตามที่จ่ายไป
//เส้น
| "MebelStroy" ในฐานะผู้ผลิต
|จาก
| ไดเรกทอรี ระบบการตั้งชื่อ AS ระบบการตั้งชื่อ";

คำสั่งของส่วน SELECT

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

คำขอข้อความ = "
|เลือกต่างๆ
| ศัพท์.ชื่อ
|จาก
| ไดเรกทอรี ระบบการตั้งชื่อ AS ระบบการตั้งชื่อ";

จากการดำเนินการค้นหานี้ เราจะไม่เห็นชื่อที่ซ้ำกันแม้แต่ชื่อเดียว

อันดับแรก -บ่งชี้ว่าเราต้องการดูเฉพาะระเบียน n แรกในผลลัพธ์แบบสอบถาม:

คำขอข้อความ = "
|เลือก 100 ตัวแรก
| ศัพท์.ชื่อ
|จาก
| ไดเรกทอรี ระบบการตั้งชื่อ AS ระบบการตั้งชื่อ";

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

; แบบสอบถามที่ซ้อนกัน (อยู่ระหว่างการพัฒนา)

การรับสินค้าและบริการและ การคืนสินค้าให้กับซัพพลายเออร์ตามระยะเวลาที่กำหนด

แท็บใหม่: สหภาพแรงงาน/นามแฝง

ส่วนทางทฤษฎีของบทเรียนหมายเลข 4

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

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

มาดูส่วนต่างๆ ของแท็บกัน สหภาพแรงงาน/นามแฝง:

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

  • ในตาราง คำขอสองคอลัมน์:
    • ชื่อ. ตั้งค่าโดยอัตโนมัติในรูปแบบ คำขอที่ 1…คำขอ N;
    • ไม่มีรายการที่ซ้ำกัน. ตั้งค่าเมื่อจำเป็นต้องยกเว้นแถวที่ซ้ำกันเมื่อผสานกับการสืบค้นก่อนหน้า เป็นที่น่าสังเกตว่าแฟล็กนี้จะดำเนินการเฉพาะกับการรวมคำขอที่ตั้งค่าไว้กับคำขอก่อนหน้าเท่านั้น

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

ส่วนปฏิบัติของบทเรียนหมายเลข 4

เรามาดูวิธีแก้ปัญหาที่ให้ไว้ตอนต้นบทเรียนกันดีกว่า ฉันขอเตือนคุณถึงเงื่อนไข:

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

  1. มาสร้างคำขอใหม่กันดีกว่า
  2. มาเริ่มตัวออกแบบแบบสอบถามกัน
  3. เรามาเลือกโต๊ะกัน การรับสินค้าและบริการจากด้าย เอกสารประกอบ;
  4. จากโต๊ะ การรับสินค้าและบริการเลือกฟิลด์ ลิงค์;
  5. ไปที่แท็บกันเถอะ เงื่อนไข;
  6. ในบทที่ เขตข้อมูล,มาเปิดกระทู้กันดีกว่า การรับสินค้าและบริการใช้ปุ่ม "+";
  7. มาหาอุปกรณ์ประกอบฉากกัน วันที่แล้วลากไปยังส่วนเงื่อนไข เลือกตัวดำเนินการเปรียบเทียบ ระหว่างและระบุพารามิเตอร์สำหรับจุดเริ่มต้นและจุดสิ้นสุดของงวด เป็นต้น ต้นงวดและ สิ้นสุดระยะเวลา;
  8. ไปที่แท็บกันเถอะ สหภาพแรงงาน/นามแฝง.
  9. เพิ่มคำขอใหม่ ตั้งค่าสถานะ ไม่มีรายการที่ซ้ำกันไม่จำเป็นต้องยกเนื่องจากเราใช้เอกสารหลายประเภท

  10. ตัวสร้างแบบสอบถาม 1C จะไปที่แท็บโดยอัตโนมัติ ตารางและเขตข้อมูล. ที่ด้านขวาของหน้าต่าง คุณจะเห็นว่าคำขอเข้าร่วมครั้งที่สองทำงานอยู่


  11. ทำซ้ำจุดที่ 1 - 7 สำหรับตาราง การส่งคืนสินค้าไปยังซัพพลายเออร์;
  12. ไปที่แท็บอีกครั้ง สหภาพแรงงาน/นามแฝง. ในตารางนามแฝงคุณจะเห็นว่าฟิลด์ต่างๆ ลิงค์ทั้งสองตารางอยู่ในแถวเดียวกัน ซึ่งหมายความว่าลิงก์ไปยังเอกสารทั้งสองจะอยู่ในคอลัมน์เดียวกันอันเป็นผลจากการสืบค้น
  13. มาเปลี่ยนชื่อคอลัมน์จาก ลิงค์บน เอกสาร(ตั้งค่านามแฝงของฟิลด์) โดยดับเบิลคลิกปุ่มซ้ายของเมาส์บนชื่อฟิลด์ หลังจากนั้นคุณสามารถตั้งชื่อของคุณเขียนไว้ที่นั่น เอกสาร;

  14. คำขอพร้อมแล้ว คลิกปุ่ม "ตกลง" ที่ด้านล่างของหน้าต่างตัวออกแบบ

เป็นผลให้เราจะได้รับคำขอพร้อมข้อความต่อไปนี้

หากคุณสังเกตเห็นข้อผิดพลาด ให้เลือกส่วนของข้อความแล้วกด Ctrl+Enter
แบ่งปัน:
คอมพิวเตอร์และอุปกรณ์ทันสมัย