แสดงเป็นตัวเลขในแบบสอบถาม 1s 8.3 เอกสารวัสดุสิ้นเปลือง AS D

ประเภทที่เข้ากันไม่ได้ "EXPRESS"- ข้อความนี้ปรากฏขึ้นเมื่อโปรแกรมเมอร์ 1C 8.2 หรือ 8.3 พยายามเปรียบเทียบสองประเภทที่แตกต่างกัน

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

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

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

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

EXPRESS (ระบบการตั้งชื่อความคิดเห็น AS STRING (300))
EXPRESS(Nomenclature.Price AS NUMBER(15, 2)) AS Amount

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

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

เลือก

EXPRESS(Sales.Registrar AS Document.Implementation)

จาก

WHERE Sales.Registrar LINK Document.Implementation

วิธีการหลีกเลี่ยงข้อผิดพลาด

ข้อผิดพลาดเช่น "ประเภทที่เข้ากันไม่ได้ EXPRESS..." อาจเกิดขึ้นเมื่อใช้ไวยากรณ์ไม่ถูกต้อง

ตัวอย่างเช่น โครงสร้าง “EXPRESS(“123″ AS NUMBER(5, 2)) AS SUM” ถือว่ามีข้อผิดพลาด เนื่องจากคำขอไม่สามารถแปลงจากประเภทหนึ่งไปเป็นอีกประเภทหนึ่งโดยใช้วิธีมาตรฐาน

หากคุณกำลังเริ่มเรียนรู้การเขียนโปรแกรม 1C เราขอแนะนำหลักสูตรฟรีของเรา (อย่าลืม

ในบทความนี้เราจะวิเคราะห์ความเป็นไปได้ของการแปลงประเภทในภาษาคิวรี 1C ซึ่งจัดทำโดยฟังก์ชัน "Express"
ลองดูตัวเลือกต่างๆ ในการใช้ฟังก์ชันนี้
และตัวเลือกแรกคือการปัดเศษตัวเลข

ในการดำเนินการนี้ คุณต้องใช้ฟังก์ชัน Express ในรูปแบบต่อไปนี้:

ด่วน(<Число>เป็นตัวเลข (<ДлинаЧисла>,<Точность>))

ที่ไหน:
ตัวเลข— สนามที่ต้องปัดเศษ
ความยาวตัวเลข- ความยาวจำนวนสูงสุด
ความแม่นยำ- ความแม่นยำในการปัดเศษตัวเลข

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

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

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

ด่วน(<Строка>เป็นสตริง(<ДлинаСтроки>)

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

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

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

ด่วน(<Документ>เป็นเอกสาร<ИмяТаблицы>)
ด่วน(<Справочник>เป็นไดเร็กทอรี< ИмяТаблицы >)
.

ที่ไหน
ชื่อตาราง— ชื่อวัตถุใน .

ใช้ฟังก์ชัน express เสมอเมื่อทำงานกับประเภทคอมโพสิต ซึ่งจะช่วยเพิ่มประสิทธิภาพการสืบค้นได้อย่างมาก

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

มีอะไรพิเศษเกี่ยวกับหลักสูตรนี้:
หลักสูตรนี้ออกแบบมาสำหรับผู้ที่ไม่คุ้นเคยกับภาษาคิวรีใน 1C
สื่อการศึกษามีโครงสร้างที่ดีและเรียนรู้ได้ง่าย
บทเรียนหลายสิบบทเรียน
มีประโยชน์ ตัวอย่างการปฏิบัติ;
บทเรียนทั้งหมดนำเสนอด้วยภาษาที่ชัดเจนและเรียบง่าย

สำหรับผู้อ่านของฉัน คูปองส่วนลด 25%: hrW0rl9Nnx

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

คุณสามารถโอนเงินจำนวนเท่าใดก็ได้โดยตรง:
Yandex.Money - 410012882996301
เว็บเงิน - R955262494655

เข้าร่วมกลุ่มของฉัน

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

ข้อได้เปรียบหลักของภาษาคิวรี 1C 8.3 (8.2) บน SQL:

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

ข้อเสียของภาษาคิวรีใน 1C:

  • ต่างจาก SQL ในแบบสอบถาม 1C ไม่อนุญาตให้เปลี่ยนแปลงข้อมูล
  • ขาดขั้นตอนการจัดเก็บ
  • ความเป็นไปไม่ได้ที่จะแปลงสตริงเป็นตัวเลข

มาดูบทช่วยสอนเล็กๆ ของเราเกี่ยวกับโครงสร้างพื้นฐานของภาษาคิวรี 1C กัน

เนื่องจากข้อความค้นหาใน 1C อนุญาตให้คุณรับข้อมูลเท่านั้น ข้อความค้นหาใด ๆ จะต้องขึ้นต้นด้วยคำว่า "SELECT" หลังจากคำสั่งนี้ ฟิลด์ที่ต้องรับข้อมูลจะถูกระบุ หากคุณระบุ “*” ช่องที่มีอยู่ทั้งหมดจะถูกเลือก ตำแหน่งที่จะเลือกข้อมูล (เอกสาร การลงทะเบียน ไดเร็กทอรี ฯลฯ) จะถูกระบุหลังคำว่า "FROM"

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

เลือก
ระบบการตั้งชื่อ ชื่อ AS ชื่อระบบการตั้งชื่อ
จาก
Directory.Nomenclature AS Nomenclature

ถัดจากคำสั่ง “SELECT” คุณสามารถระบุคำหลักได้:

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

คำหลักเหล่านี้สามารถใช้ร่วมกันหรือแยกกัน

เพื่อการเปลี่ยนแปลง

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

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

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

ที่ไหน

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

ด้านล่างนี้เป็นตัวอย่างการขอติดต่อสำหรับตำแหน่งเฉพาะ พารามิเตอร์การเลือกมีรูปแบบ: &ParameterName (ชื่อพารามิเตอร์กำหนดเอง)

การคัดเลือก (กรณี)

การออกแบบช่วยให้คุณสามารถระบุเงื่อนไขได้โดยตรงในเนื้อความของคำขอ

ในตัวอย่างด้านล่าง “AdditionalField” จะมีข้อความขึ้นอยู่กับว่าเอกสารนั้นถูกโพสต์หรือไม่:

เลือก
ค่าเข้าชมT&U.Link,
ทางเลือก
เมื่อ AdmissionT&U.ดำเนินการ
“เอกสารผ่านไปแล้ว!”
มิฉะนั้น “เอกสารไม่ได้รับการโพสต์...”
สิ้นสุดเป็นฟิลด์เพิ่มเติม
จาก
เอกสารการรับสินค้าและบริการ วิธีการรับสินค้า T&C

เข้าร่วม

รวมลิงก์สองตารางตามเงื่อนไขความสัมพันธ์เฉพาะ

การเชื่อมต่อซ้าย/ขวา

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

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

เลือก
ใบเสร็จรับเงิน&U.ระบบการตั้งชื่อ,
ราคา ราคา
จาก
เอกสาร การรับสินค้าและบริการ สินค้า วิธีการรับสินค้าและข้อมูลจำเพาะ
เข้าร่วมภายใน ลงทะเบียนข้อมูล ราคา ระบบการตั้งชื่อ Slice ล่าสุด ราคา AS
ใบเสร็จรับเงินซอฟต์แวร์&U.ระบบการตั้งชื่อ = ราคา ระบบการตั้งชื่อ

ในทางที่ถูกต้อง ทุกอย่างตรงกันข้ามเลย

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

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

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

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

ความแตกต่างระหว่าง INNER JOIN และ FULL JOIN ก็คือ หากไม่พบระเบียนในตารางอย่างน้อยหนึ่งตาราง คิวรีจะไม่แสดงเลย ด้วยเหตุนี้จะมีการเลือกเฉพาะรายการสินค้าจากเอกสาร "การรับสินค้าและบริการ" ซึ่งมีบันทึกในการลงทะเบียนข้อมูล "ราคาสินค้า" หากในตัวอย่างก่อนหน้านี้เราแทนที่ "FULL" ด้วย "INTERNAL"

จัดกลุ่มตาม

การจัดกลุ่มในแบบสอบถาม 1C ช่วยให้คุณสามารถยุบแถวของตาราง (เขตข้อมูลการจัดกลุ่ม) ตามลักษณะทั่วไปบางประการ (เขตข้อมูลการจัดกลุ่ม) การจัดกลุ่มฟิลด์สามารถแสดงได้โดยใช้ฟังก์ชันการรวมเท่านั้น

ผลลัพธ์ของการสืบค้นต่อไปนี้จะเป็นรายการประเภทผลิตภัณฑ์ที่มีราคาสูงสุด

เลือก
,
MAX(ราคา.ราคา) AS ราคา
จาก

จัดกลุ่มตาม
ราคา ระบบการตั้งชื่อ ประเภทของระบบการตั้งชื่อ

ผลลัพธ์

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

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

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

เลือก
ราคา.ระบบการตั้งชื่อ.ประเภทของระบบการตั้งชื่อ AS ประเภทของระบบการตั้งชื่อ,
ราคา ราคาตามราคา
จาก
ทะเบียนข้อมูล ราคาของระบบการตั้งชื่อ ภาพรวมของราคา AS ล่าสุด
ผลลัพธ์
สูงสุด(ราคา)
โดย
ประเภทระบบการตั้งชื่อ

มี

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

ในตัวอย่างด้านล่าง ราคาสูงสุดของสินค้าจะถูกเลือกหากเกิน 1,000 โดยจัดกลุ่มตามประเภทสินค้า

เลือก

MAX(ราคา.ราคา) AS ราคา
จาก
ทะเบียนข้อมูล ราคาของระบบการตั้งชื่อ ภาพรวมของราคา AS ล่าสุด
จัดกลุ่มตาม
ราคา ระบบการตั้งชื่อ ประเภทของระบบการตั้งชื่อ
มี
สูงสุด(ราคา.ราคา) > 1000

เรียงตาม

ตัวดำเนินการ ORDER BY จะเรียงลำดับผลลัพธ์ของการสืบค้น เพื่อให้แน่ใจว่าบันทึกจะแสดงตามลำดับที่สอดคล้องกัน จึงใช้คำสั่งอัตโนมัติ ประเภทดั้งเดิมจะถูกจัดเรียงตาม กฎปกติ. ประเภทการอ้างอิงจะจัดเรียงตาม GUID

ตัวอย่างการรับรายชื่อพนักงานเรียงตามชื่อ:

เลือก
พนักงานชื่อ AS ชื่อ
จาก
Directory.พนักงาน วิธีการ พนักงาน
เรียงตาม
ชื่อ
สั่งซื้ออัตโนมัติ

โครงสร้างภาษาคิวรี 1C อื่น ๆ

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

คุณสมบัติภาษาแบบสอบถาม

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

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

ในการสร้างแบบสอบถามด้วย 1C มีกลไกในตัวที่สะดวกมาก - ผู้ออกแบบแบบสอบถาม ประกอบด้วยแท็บหลักดังต่อไปนี้:

  • “ตารางและฟิลด์” - ประกอบด้วยฟิลด์ที่ต้องเลือกและแหล่งที่มา
  • “การเชื่อมต่อ” - อธิบายเงื่อนไขสำหรับโครงสร้างการเชื่อมต่อ
  • “การจัดกลุ่ม”—ประกอบด้วยคำอธิบายของโครงสร้างการจัดกลุ่มและช่องสรุปตามโครงสร้างเหล่านั้น
  • “เงื่อนไข” - รับผิดชอบในการเลือกข้อมูลในคำขอ
  • “ขั้นสูง”—พารามิเตอร์การค้นหาเพิ่มเติม เช่น คีย์เวิร์ดสำหรับคำสั่ง “SELECT” เป็นต้น
  • “Joins/Aliases” - มีการระบุความเป็นไปได้ในการเข้าร่วมตารางและระบุนามแฝง (“HOW”)
  • “คำสั่งซื้อ” มีหน้าที่จัดเรียงผลลัพธ์ของแบบสอบถาม
  • “ผลรวม” - คล้ายกับแท็บ “การจัดกลุ่ม” แต่ใช้สำหรับโครงสร้าง “ผลรวม”

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


ขอคอนโซล

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

คุณสามารถดาวน์โหลดคอนโซลแบบสอบถามลงในดิสก์ ITS หรือผ่านทาง .

NULL ไม่มีอะไรมากไปกว่าการไม่มีค่า หลายๆ คนสับสนกับค่า "0" ของประเภทตัวเลข การอ้างอิงว่างเปล่าไปยังวัตถุ หรือสตริงว่าง เนื่องจากความเข้าใจผิดนี้ จึงเกิดข้อผิดพลาดมากมาย

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

อิงตาม SQL ซึ่งไม่อนุญาตให้มีการทดสอบความเท่าเทียมกันตามปกติสำหรับ NULL ด้านล่างนี้เป็นสองวิธีในการตรวจสอบค่า NULL ใน 1C 8.3

ฟังก์ชันภาษาคิวรี 1C 8.3 ISNULL() มีพารามิเตอร์อินพุตสองตัว:

  • การแสดงออกที่จะทดสอบ
  • การแสดงออกแทน

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

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

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

เลือก

ISNULL(ราคา.ราคา, 0) เป็นราคาปัจจุบัน
จาก



ที่ไหน

มีค่า NULL ในคำสั่ง SELECT

ISNULL() ที่เทียบเท่ากันคือ ISNULL ซึ่งใช้ในคำสั่ง SELECT และตรวจสอบว่าค่าเป็น NULL หรือไม่ “IS” ในกรณีนี้หมายถึงความเท่าเทียมกัน และข้อความค้นหาในตัวอย่างก่อนหน้านี้จะมีลักษณะดังนี้:

เลือก
ผลิตภัณฑ์ระบบการตั้งชื่อ AS Product,
ทางเลือก
เมื่อราคา ราคาเป็นโมฆะ
แล้ว 0
มิฉะนั้นราคาราคา
สิ้นสุดตามราคาปัจจุบัน
จาก
เอกสารการรับสินค้าและบริการ สินค้า AS สินค้า
การเชื่อมต่อด้านซ้าย ลงทะเบียนข้อมูล ราคา ระบบการตั้งชื่อ ชิ้นล่าสุด ราคา AS
ซอฟต์แวร์ Products.Nomenclature = ราคา.Nomenclature
ที่ไหน
Products.Link = &LinkToDocument

ความแตกต่างระหว่างฟังก์ชัน ISNULL() และ IS NULL

ดังที่คุณเห็นจากตัวอย่างก่อนหน้านี้ ในทั้งสองกรณี คำขอจะส่งคืนข้อมูลเดียวกัน ฟังก์ชัน ISNULL() เป็นเวอร์ชันย่อของ SELECTION WHEN... IS NULL... END แต่ก็ยังควรใช้ด้วยเหตุผลต่อไปนี้:

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

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

ฟังก์ชั่นภาษาแบบสอบถาม 1C

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

1. การทำงาน วันเวลา- ฟังก์ชันนี้สร้างฟิลด์คงที่ด้วยประเภท "วันที่"

ไวยากรณ์: วันเวลา(<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)

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

2. ฟังก์ชันวันที่แตกต่าง- ส่งกลับค่าความแตกต่างระหว่างวันที่สองวันในมิติใดมิติหนึ่ง (ปี เดือน วัน ชั่วโมง นาที วินาที) การวัดถูกส่งผ่านเป็นพารามิเตอร์

ไวยากรณ์: วันที่แตกต่าง(<Дата1>, <Дата2>, <Тип>)

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

Query.Text = "SELECT | DIFFERENCEDATE(DATETIME(2015, 4, 17), DATETIME(2015, 2, 1), DAY) | AS จำนวนวัน";

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

ไวยากรณ์: VALUE(<Имя>)

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

Request.Text = "SELECT //องค์ประกอบที่กำหนดไว้ล่วงหน้า | VALUE(Directory.Currencies.Dollar) AS Dollar, //empty link | VALUE(Document.Receipt of Goods and Services.EmptyLink) AS Receipt, //transfer value | VALUE(Transfer) . บุคคลตามกฎหมาย บุคคล) AS บุคคล // บัญชีที่กำหนดไว้ล่วงหน้า | VALUE (ผังบัญชี การพึ่งพาตนเอง วัสดุ) AS Account_10" ;

4. ฟังก์ชันเลือก- เรามีอะนาล็อกของโครงสร้าง IF ซึ่งใช้ในโค้ดก่อนหน้าเรา มีเพียงอันนี้เท่านั้นที่ใช้ในแบบสอบถาม 1C

ไวยากรณ์: ทางเลือกเมื่อ<Выражение>แล้ว<Выражение>มิฉะนั้น<Выражение>จบ

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

Request.Text = // หากจำนวนมากกว่า 7500 ควรมีส่วนลด 300 รูเบิล // ดังนั้นหากเงื่อนไขถูกทริกเกอร์ฟังก์ชัน // ส่งคืนจำนวน - 300 // มิฉะนั้นคำขอจะส่งคืนเพียงจำนวน "SELECT | SELECT | เมื่อ TCReceipts.Amount > 7500 | แล้ว TCReceipts.Amount - 300 | ELSE TCReceipts.Amount | END AS AmountWithDiscount |FROM | Document.Receipt of GoodsServices.Goods AS TCReceipts";

5. ฟังก์ชันด่วน- ช่วยให้คุณสามารถแสดงฟิลด์คงที่ตามประเภทเฉพาะได้

ไวยากรณ์: EXPRESS (ชื่อฟิลด์ AS TypeName)

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

Query.Text = "SELECT VARIOUS | Sales.Registrar.Number, | SELECT | เมื่อ Sales.Registrar LINK Document.Consumable | THEN EXPRESS(Sales.Registrar AS Document.Consumable) | ELSE SELECT | เมื่อ Sales.Registrar LINK Document.Implementation | จากนั้น EXPRESS(Sales.Registrar AS Document.Implementation) | END | ... | END AS Number | FROM | RegisterAccumulations.Purchases AS Purchases";

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

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

Query.Text = "SELECT | EXPRESS(Nomenclature.Comment AS Line(300)) AS Comment, | EXPRESS(Nomenclature.Sum AS Number(15,2)) AS Sum |FROM | Directory.Nomenclature AS Nomenclature";

6. ฟังก์ชัน ISNULL(การสะกดทางเลือก ISNULL) - หากฟิลด์เป็นประเภท NULL จะถูกแทนที่ด้วยพารามิเตอร์ตัวที่สองของฟังก์ชัน

ไวยากรณ์: ไม่เป็นโมฆะ(<Поле>, <ПодставляемоеЗначение>)

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

โปรดทราบว่าขอแนะนำให้แทนที่ประเภท NULL ด้วยค่าบางค่าเสมอเพราะ การเปรียบเทียบกับประเภท NULL จะส่งกลับ FALSE เสมอแม้ว่าคุณจะเปรียบเทียบ NULL กับ NULL ก็ตาม ส่วนใหญ่แล้วค่า NULL จะเกิดขึ้นจากการเข้าร่วมตาราง (การรวมทุกประเภทยกเว้นค่าภายใน)

Query.Text = //เลือกสินค้าทั้งหมดและยอดคงเหลือ //หากไม่มียอดคงเหลือในบางรายการ จะมีช่อง //NULL ซึ่งจะแทนที่ด้วยค่า 0 "SELECT | No. Link, | ISNULL (ProductsInStockRemains.InStockRemaining, 0) AS Remainder | FROM | Directory.Nomenclature AS No. | LEFT CONNECTION Register Accumulations GoodsInWarehouses. Remainings AS GoodsInWarehousesRemains | ON (GoodsInWarehousesRemains. Nomenclature = No. ลิงก์)";

7. ฟังก์ชันการเป็นตัวแทน- ช่วยให้คุณได้รับการเป็นตัวแทนของฟิลด์คำขอ

ไวยากรณ์: ผลงาน(<НаименованиеПоля>)

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

Query.Text = "SELECT | REPRESENTATION(FreeRemainingRemains.Nomenclature) AS Nomenclature, | REPRESENTATION(FreeRemainingRemaining.Warehouse) AS Warehouse, | FreeRemainingRemaining.InStockRemaining |FROM |Accumulation Register.FreeRemaining.Remaining AS FreeRemainingRemaining";

โครงสร้างในภาษาคิวรี 1C

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

1. ลิงค์การก่อสร้าง- เป็นตัวดำเนินการเชิงตรรกะสำหรับการตรวจสอบประเภทการอ้างอิง พบบ่อยที่สุดเมื่อตรวจสอบฟิลด์ประเภทที่ซับซ้อนกับประเภทใดประเภทหนึ่ง ไวยากรณ์: ลิงค์<Имя таблицы>

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

Request.Text = // หากประเภทค่าเครื่องบันทึกเป็นเอกสาร Receipt // จากนั้นแบบสอบถามจะส่งกลับ "Receipt of Goods" มิฉะนั้น "Sales of Goods" "SELECT | SELECT | WHEN Remainings.Registrar LINK Document.Receipt of Goods and บริการ | THEN ""ใบเสร็จรับเงิน"" | ELSE ""การบริโภค"" | END AS Type of Movement | FROM | Accumulation Register. สินค้าคงเหลือในคลังสินค้า AS Remains" ;

2. การออกแบบระหว่าง- โอเปอเรเตอร์นี้จะตรวจสอบว่าค่าอยู่ภายในช่วงที่ระบุหรือไม่

ไวยากรณ์: ระหว่าง<Выражение>และ<Выражение>

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

Request.Text = // รับระบบการตั้งชื่อทั้งหมดที่มีรหัสอยู่ในช่วงตั้งแต่ 1 ถึง 100 "SELECT | Nomenclature.Link |FROM | Directory.Nomenclature AS Nomenclature |WHERE | Nomenclature.Code BETWEEN 1 AND 100" ;

3. ลำดับชั้นการก่อสร้าง B และ B- ตรวจสอบว่าค่าอยู่ในรายการที่ถ่ายโอนหรือไม่ (อาร์เรย์ ตารางค่า ฯลฯ สามารถถ่ายโอนเป็นรายการได้) ตัวดำเนินการ IN HIERARCHY ช่วยให้คุณดูลำดับชั้นได้ (ตัวอย่างการใช้ผังบัญชี)

ไวยากรณ์: ใน(<СписокЗначений>) ในลำดับชั้น(<СписокЗначений>)

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

Request.Text = // เลือกบัญชีย่อยทั้งหมดของบัญชี "SELECT | การสนับสนุนตนเอง เชื่อมโยงบัญชี AS | FROM | ผังบัญชี การสนับสนุนตนเอง AS การสนับสนุนตนเอง | WHERE | การสนับสนุนตนเอง ลิงก์ในมูลค่าลำดับชั้น (แผนภูมิของ บัญชีพึ่งตนเองสินค้า)";

4. การออกแบบที่คล้ายกัน- ฟังก์ชั่นนี้ช่วยให้เราสามารถเปรียบเทียบสตริงกับรูปแบบสตริงได้

ไวยากรณ์: ชอบ "<ТекстШаблона>"

ตัวเลือกรูปแบบแถว:

% - ลำดับที่มีอักขระที่กำหนดเองจำนวนเท่าใดก็ได้

ตัวละครหนึ่งตัว

[...] - อักขระตัวเดียวหรือลำดับของอักขระที่อยู่ในวงเล็บเหลี่ยม การแจงนับสามารถระบุช่วง เช่น a-z ซึ่งหมายถึงอักขระใดๆ ที่รวมอยู่ในช่วง รวมถึงจุดสิ้นสุดของช่วงด้วย

[^...] - อักขระตัวเดียวหรือลำดับของอักขระที่อยู่ในวงเล็บเหลี่ยม ยกเว้นที่แสดงอยู่หลังเครื่องหมายปฏิเสธ

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

Query.Text = // ค้นหาระบบการตั้งชื่อทั้งหมดที่มีรูต TABUR และเริ่มต้น // ไม่ว่าจะด้วยอักษรตัวเล็กหรือตัวพิมพ์ใหญ่ t "SELECT | ระบบการตั้งชื่อลิงก์ | FROM | Directory ระบบการตั้งชื่อ AS ระบบการตั้งชื่อ | WHERE | ผลิตภัณฑ์ ชื่อ LIKE "" [Tt ]เสีย%""" ;

5. อนุญาตให้ออกแบบ- โอเปอเรเตอร์นี้อนุญาตให้คุณเลือกเฉพาะบันทึกจากฐานข้อมูลที่ผู้โทรมีสิทธิ์ในการอ่าน สิทธิ์เหล่านี้ได้รับการกำหนดค่าที่ระดับบันทึก (RLS)

ไวยากรณ์: ALLOWED เขียนไว้หลังคีย์เวิร์ด SELECT

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

Request.Text = "SELECT ALLOWED | Counterparties. Link | FROM | Directory. Counterparties AS Counterparties";

6. การออกแบบที่หลากหลาย- ให้คุณเลือกบันทึกที่ไม่มีบันทึกซ้ำกัน

ไวยากรณ์: VARIOUS เขียนไว้หลังคีย์เวิร์ด SELECT

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

Request.Text = //เลือกบันทึกที่ผู้อ่านมีสิทธิ์ "SELECT VARIOUS | Counterparties.Name |FROM | Directory. Counterparties AS Counterparties" ;

นอกจากนี้ โครงสร้าง VARIOUS สามารถใช้กับตัวดำเนินการ ALLOWED และตัวดำเนินการอื่น ๆ ได้

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

Request.Text = // เลือกบันทึกต่างๆ ที่ผู้อ่านมีสิทธิ์ "SELECT ALLOWED VARIOUS | Counterparties.Name |FROM | Directory. Counterparties AS Counterparties";

7. ออกแบบก่อน- เลือกจำนวนบันทึกที่ระบุในพารามิเตอร์จากผลลัพธ์แบบสอบถาม

ไวยากรณ์: ครั้งแรก<число>

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

Request.Text = // เลือกหมายเลข CCD 4 ตัวแรกจากไดเรกทอรี "SELECT FIRST 4 | CCD Numbers. Link | FROM | Directory. CCD Numbers AS CCD Numbers";

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

ไวยากรณ์: เพื่อการเปลี่ยนแปลง<НаименованиеТаблицы>

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

Query.Text = "SELECT | Free Remainings Remainings. Nomenclature, | Free Remainings. Warehouse, | Free Remainings. In Stock Remaining | FROM | Register of Accumulations. Free Remainings. Remainings AS Free Remainings | FOR CHANGE | Register of Accumulations. . เหลือฟรี เหลือ";

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

ไวยากรณ์: เรียงตาม<НаименованиеПоля>สั่งซื้ออัตโนมัติ

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

Query.Text = "SELECT | Free Remainings. Nomenclature AS Nomenclature, | Free Remainings. Warehouse AS Warehouse, | Free Remainings. In Stock Remaining | FROM | Register Accumulations. Free Remainings. Remaining AS Free Remainings | | ORDER BY | ระบบการตั้งชื่อ | สั่งซื้ออัตโนมัติ VANIE";

10. กลุ่มการออกแบบโดย- ใช้เพื่อจัดกลุ่มสตริงการสืบค้นตามฟิลด์เฉพาะ ต้องใช้ช่องตัวเลขกับฟังก์ชันการรวมใดๆ

ไวยากรณ์: จัดกลุ่มตาม<НаименованиеПоля1>, .... , <НаименованиеПоляN>

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

Query.Text = "SELECT | ItemsInWarehouses.Nomenclature AS Nomenclature, | ItemsInWarehouses.Warehouse, | SUM(ItemsInWarehouses.InStock) AS INSTOCK |FROM | RegisterAccumulations.ItemsInWarehouses AS ItemsInWarehouses | |GROUP BY | ItemsInWarehouses.Nomenclature, | ItemsAtWarehouse ah.Warehouse" ;

11. การออกแบบมี- อนุญาตให้คุณใช้ฟังก์ชันการรวมกับเงื่อนไขการเลือกข้อมูล คล้ายกับโครงสร้าง WHERE

ไวยากรณ์: มี<агрегатная функция с условием>

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

Query.Text = //เลือกระเบียนที่จัดกลุ่มโดยที่ฟิลด์ InStock มากกว่า 3 "SELECT | ItemsInStocks.Nomenclature AS Nomenclature, | ItemsInWarehouses.Warehouse, | SUM(ItemsInStocks.InStock) AS INSTOCK |FROM | RegisterAccumulations.ItemsInStocks AS ItemsInStocks | | จัดกลุ่มตาม | ProductsInWarehouses.Nomenclature, | ProductsInWarehouses.Warehouse | |AVAILABLE | AMOUNT(ProductsInWarehouses.InStock) > 3" ;

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

ไวยากรณ์: จัดทำดัชนีโดย<Поле1, ... , ПолеN>

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

Query.Text = "SELECT | Ts.NameOS, | Ts.FolderNumber, | Ts.CodeOS, | Ts.Term, | Ts.Type | PLACE DataTs | FROM | &Ts AS Ts | | INDEX BY | Ts.NameOS, | Ts .CodeOS";

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

ไวยากรณ์: ที่ไหน<Условие1 ОператорЛогСоединения УсловиеN>

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

Query.Text = //เลือกระเบียนทั้งหมดที่มี CompensationRemaining แล้ว<>0 และ //AmountForCalcCompRemaining > 100 "SELECT | CompensationRPORemains.Counterparty, |CompensationRPORemains.Child, | CompensationRPORemains.CompensationRemaining, | CompensationRPORemains.AmountForCalcCompRemains |Place DataTz |FROM | Accumulation Register.CompensationRP.Remains AS CompensationRPRemains | WHERE |CompensationRPORemains.Compens ationRemaining<>0 | และ CompensationRPORemains.AmountForCalcCompRemaining> 100" ;

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

ไวยากรณ์: ผลลัพธ์<АгрегатнаяФункция1, ... , АгрегатнаяФункцияN>โดย<ОБЩИЕ> <Поле1, ... , ПолеN>

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

Request.Text = "SELECT | การคำนวณ ข้อตกลงคู่สัญญา ประเภทของข้อตกลง AS ประเภทสัญญา | การคำนวณ ข้อตกลงคู่สัญญา AS สัญญา | การคำนวณ คู่สัญญา | การคำนวณ จำนวนยอดคงเหลือการชำระบัญชีร่วมกัน AS ยอดคงเหลือ | FROM | การลงทะเบียนการสะสม รวม การชำระบัญชีกับคู่สัญญา ยอดคงเหลือ AS การคำนวณ | รวม | จำนวนเงิน (ยอดคงเหลือ) | ซอฟต์แวร์ | ทั่วไป | ประเภทของข้อตกลง";

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