มี 1c ในคำขอ คล้ายกับเงื่อนไขการสืบค้น ตัวอย่าง: เลือกผลิตภัณฑ์ที่มีชื่อลงท้ายด้วยตัวเลข

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

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

  • % (เปอร์เซ็นต์) - ลำดับที่มีอักขระที่กำหนดเองจำนวนเท่าใดก็ได้
  • _ (ขีดล่าง) - อักขระหนึ่งตัว
  • […] (อักขระหนึ่งตัวขึ้นไปในวงเล็บเหลี่ยม) - อักขระตัวเดียวใด ๆ ที่อยู่ในวงเล็บเหลี่ยม
    นอกจากสัญลักษณ์ต่างๆ แล้ว คุณยังสามารถใช้ช่วงได้ เช่น a-z(A-z) ซึ่งหมายถึงการมีสัญลักษณ์ใดๆ รวมอยู่ในช่วง รวมถึงจุดสิ้นสุดของช่วงด้วย
  • [^...] (ในวงเล็บเหลี่ยม เครื่องหมายลบตามด้วยอักขระหนึ่งตัวขึ้นไป) - อักขระเดี่ยวใดๆ นอกเหนือจากที่แสดงไว้หลังเครื่องหมายปฏิเสธ

สัญลักษณ์ที่เหลือจะถูกนำมาใช้ตามวัตถุประสงค์ที่ตั้งใจไว้
หากจำเป็นต้องส่งอักขระบริการตัวใดตัวหนึ่งข้างต้นเป็นสัญลักษณ์ จะต้องนำหน้าด้วย<Спецсимвол>- ตัวฉันเอง<Спецсимвол>(อักขระที่เหมาะสมใดๆ) ถูกกำหนดไว้ในคำสั่งเดียวกันหลังคีย์เวิร์ด SPECIAL CHARACTER
ตัวอย่างเช่น รูปแบบ “%ABV[abvg]\_abv%” SPECIAL CHARACTER “\” หมายถึงสตริงย่อยที่ประกอบด้วยลำดับของอักขระ:
ตัวอักษร ก; ตัวอักษร B; ตัวอักษร B; หนึ่งหลัก; หนึ่งในตัวอักษร a, b, c หรือ d; ขีดเส้นใต้; ตัวอักษร ก; ตัวอักษรข; ตัวอักษรโวลต์
นอกจากนี้ ลำดับนี้สามารถนำหน้าด้วยชุดอักขระที่กำหนดเองได้

ขั้นตอน เลือกข้อตกลงที่มีข้อความในชื่อ (mText)
//ในคำขอ เราจะใช้เทมเพลตเช่น "%" + mText + "%" Request = New Request; Query.SetParameter("ชื่อ", "%" + ข้อความ + "%"); Request.Text = "SELECT | Agreements. Link, | Agreements. Owner | FROM | Directory. Contracts of Counterparties AS Agreements | | WHERE | Agreements. Name SIMILAR & Name"; ผลลัพธ์ = Query.Run(); การเลือก = ผลลัพธ์เลือก (); รายงาน("ข้อตกลงที่มีอยู่ในชื่อ: " + mText + " มีคู่สัญญาดังต่อไปนี้"); ในขณะที่รายงานรอบ Selection.Next() ("คู่สัญญา: " + Selection.Owner + "; ข้อตกลง: " + Selection. Link EndIf; EndProcedure

ในบทความนี้เราต้องการพูดคุยทุกอย่างกับคุณ ฟังก์ชันภาษาคิวรี 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 |

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

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

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

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

มีตัวเลือกอื่นสำหรับการใช้ฟังก์ชัน 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) วิธีคงเหลือ |. FROM |. Directory.Nomenclature AS No. |. LEFT CONNECTION RegisterAccumulations.GoodsInWarehouses.Remainings AS GoodsInWarehousesRemainings | PO (GoodsInWarehousesRemainings.

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 = // หากประเภทค่าเครื่องบันทึกคือ Document Receipt // จากนั้นแบบสอบถามจะส่งกลับ "Receipt of Goods" มิฉะนั้น "Sales of Goods" "SELECT | SELECT | WHEN Remaining.Registrar LINK Document.Receipt of GoodsServices | THEN "ใบเสร็จรับเงิน" |. ELSE "การบริโภค" |. สิ้นสุด AS ประเภทของการเคลื่อนไหว |. ทะเบียนสินค้าคงเหลือในคลังสินค้า.

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 |. ระบบการตั้งชื่อ |. อ่านคำสั่งอัตโนมัติ";

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

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

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

Query.Text = "SELECT | ProductsInWarehouses.Nomenclature AS Nomenclature, | ProductsInWarehouses.Warehouse, | SUM(GoodsInWarehouses.InStock) AS INSTOCK |FROM | RegisterAccumulations.ProductsInWarehouses AS ProductsInWarehouses | |GROUP BY | ProductsInWarehouses.Nomenclature, | Treasures.Warehouse";

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

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

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

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

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

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

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

Request.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 |CompensationRPORemaining.Comp ความหลงเหลืออยู่<>0 | และค่าตอบแทนRPORemains.AmountForCalcCompRemaining> 100" ;

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

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

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

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

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

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

การใช้ตัวดำเนินการ LIKE

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

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

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

  1. “%” – ลำดับของอักขระใดๆ ความยาวตามใจชอบ- ใช้เพื่อค้นหาคำหรือตัวเลขในสตริง
  2. “_” – อักขระเดี่ยวใดก็ได้ มีวัตถุประสงค์เพื่อบ่งชี้ถึงการมีอยู่ของอักขระตัวเดียว
  3. “[...]” คือลำดับอักขระเพื่อเปรียบเทียบกับอักขระในสตริง ด้วยความช่วยเหลือของรูปแบบดังกล่าว จะมีการตรวจสอบการจับคู่กับอักขระใดๆ ที่อยู่ในวงเล็บ คุณยังสามารถระบุช่วงของตัวเลขหรือตัวอักษร ([a-g], );
  4. “[^...]” เป็นรูปแบบตรงกันข้ามกับรูปแบบก่อนหน้า มีการตรวจสอบความแตกต่างระหว่างอักขระที่ระบุในบรรทัดและอักขระที่อยู่ในวงเล็บ

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

SELECT Nomenclature.Name AS ชื่อจาก Directory.Nomenclature AS Nomenclature WHERE Nomenclature.Name คล้ายกับ "% CUTTER%"

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


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

เลือกระบบการตั้งชื่อตามชื่อจากไดเร็กทอรี ระบบการตั้งชื่อตามระบบการตั้งชื่อ โดยที่ ระบบการตั้งชื่อ ชื่อคล้ายกับ "%#%" ตัวละครพิเศษ "#"

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

SELECT Nomenclature.Name AS Name FROM Directory.Nomenclature AS Nomenclature WHERE Nomenclature.Name SIMILAR to "%" + &ชื่อ + "%"

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

43
NULL – ค่าที่หายไป 26
อย่าสับสนกับค่าศูนย์! NULL ไม่ใช่ตัวเลข ไม่เท่ากับช่องว่าง การอ้างอิงว่างเปล่า หรือไม่ได้กำหนด 18
NULL คือค่าที่สร้างประเภท เช่น มีประเภท NULL และค่าเดียวของประเภทนี้ โมฆะ...ในการสร้างและดำเนินการแบบสอบถามไปยังตารางฐานข้อมูลในแพลตฟอร์ม 1C จะใช้ออบเจ็กต์พิเศษของภาษาการเขียนโปรแกรมแบบสอบถาม วัตถุนี้ถูกสร้างขึ้นโดยการเรียกโครงสร้างคำขอใหม่ สะดวกขอ... 12
ฉันต้องเผชิญกับงานเลือกเอกสารการชำระเงินทั้งหมดและจัดกลุ่มตามประเภทเอกสาร! เมื่อได้ดูที่อยู่อาศัยและบริการชุมชนและอินเทอร์เน็ตทั้งหมดแล้ว ฉันจึงตระหนักได้วิธีง่ายๆ

get Document type ไม่อยู่ในคำขอ: (ฉันต้อง... ผู้ดำเนินการชอบ

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

  • มีอักขระบริการพิเศษที่ไม่ถือเป็นสตริง:
  • สัญลักษณ์เปอร์เซ็นต์ "%": ระบุถึงจำนวนอักขระที่ต้องการในสตริง
  • "[...]" อักขระหนึ่งตัวขึ้นไปในวงเล็บเหลี่ยม: บ่งชี้ว่ามีอักขระใด ๆ ในรายการอยู่ นอกจากนี้ยังสามารถระบุช่วงของอักขระได้ (ตัวอย่าง)
  • ขีดล่าง "_": บ่งชี้ถึงการมีอยู่ของอักขระที่กำหนดเอง
อักขระปฏิเสธ "[^...]": หมายถึงการมีอยู่ของอักขระเดี่ยวใดๆ นอกเหนือจากที่ระบุไว้ในวงเล็บเหลี่ยม

หากคุณต้องการระบุอักขระพิเศษตัวใดตัวหนึ่งข้างต้นเพื่อเปรียบเทียบ คุณต้องใช้คีย์เวิร์ด "SPECIAL SYMBOL"

คุณสมบัติการใช้งานกับ DBMS ต่างๆไอบีเอ็ม DB2
"สามารถวางได้เฉพาะพารามิเตอร์ทางด้านขวาของตัวดำเนินการ SIMILAR อักขระตัวแทนเท่านั้นคือ "_" (ขีดล่างหมายถึงอักขระใดๆ) และ "%" (เปอร์เซ็นต์หมายถึงลำดับของอักขระใดๆ) กรณีใช้ DBMS" PostgreSQL " หรือ "ฐานข้อมูลออราเคิล "ตัวละครพิเศษ"วงเล็บเหลี่ยม

[...]" ได้รับการยอมรับก็ต่อเมื่อมีการระบุไว้ในข้อความในคำขอ และจะไม่ส่งผ่านเป็นพารามิเตอร์ไปยังคำขอ

ดังนั้นในฐานข้อมูลไฟล์ อักขระพิเศษจะถูกรับรู้ในลักษณะเดียวกันเสมอ และแตกต่างกันขึ้นอยู่กับ DBMS ที่ใช้ในเวอร์ชันไคลเอ็นต์-เซิร์ฟเวอร์

ตัวอย่าง: เลือกผลิตภัณฑ์ที่มีสัญลักษณ์ "%" ในชื่อ

เลือก | Ref.Link |จาก | สารบบ การตั้งชื่อ HOW Ref |. WHERE | Ref.Name เช่น "%\%" ตัวละครพิเศษ "\"

ตัวอย่าง เลือกสินค้าที่ชื่อขึ้นต้นด้วยคำว่า Tank

เลือก | Ref.Link |จาก | สารบบ การตั้งชื่อ HOW Ref |. WHERE | ชื่อผู้อ้างอิงคล้ายกับ "Bak%"

ตัวอย่าง: เลือกผลิตภัณฑ์ที่มีชื่อลงท้ายด้วยตัวเลข