ขอ .ข้อความ = "เลือก | หน่วยจัดเก็บข้อมูล.ลิงค์ |จาก | Directory.usStorageUnits วิธีการใช้StorageUnits // ตัวอย่างที่ 1: การเปรียบเทียบกับค่าบูลีนว่าง: |ที่ไหน | StorageUnits.AllowSelectionFromReserveZone = เท็จ // ตัวอย่างที่ 2. แต่ถ้ากำหนดบูลีนนี้ไว้ จะดีกว่านี้: // เงื่อนไขสำหรับบูลีนที่เป็นลบ: |ที่ไหน | ไม่ใช่หน่วยเก็บข้อมูล อนุญาตให้เลือกจากโซนสำรอง // ตัวอย่างที่ 3. การเลือกตามเงื่อนไขของฟิลด์ว่างที่มีประเภท “ไดเร็กทอรีประเภทเฉพาะ” |ที่ไหน | StorageUnits.ActiveSelectionArea = ค่า (Directory.usSelectionArea.EmptyRef) // ตัวอย่าง 3a การเลือกตามเงื่อนไขของช่องว่างที่มีประเภท “เอกสารประเภทเฉพาะ” |ที่ไหน | OurInformationRegister.Document = VALUE(Document.OurDocument.EmptyLink) // ตัวอย่าง 3b การคัดเลือกตามเงื่อนไขของช่องว่างที่มีประเภท “เอกสารประเภทต่างๆ” ( สนามคอมโพสิต) |ที่ไหน | (OurInformationRegister.Document = VALUE(Document.OurDocument1.EmptyLink) | OR OurInformationRegister.Document = VALUE(Document.OurDocument2.EmptyLink) | OR... (ฯลฯ - เราจะแสดงรายการเงื่อนไขสำหรับประเภทที่เป็นไปได้ทั้งหมดของฟิลด์คอมโพสิตนี้ตามลำดับ) ) // ตัวอย่างที่ 4 หรือในทางกลับกัน หากคุณต้องการเลือกค่าที่กรอกเป็นประเภท "string" เงื่อนไขจะช่วย: |ที่ไหน | หน่วยเก็บข้อมูลชื่อ > """" // ตัวอย่างที่ 5 หากคุณต้องการเลือกเอกสารประเภทเฉพาะด้วยประเภทข้อมูลคอมโพสิต เช่น ในการลงทะเบียน "RunningTasks" ทรัพยากร "งาน" จะมีประเภทคอมโพสิต ในบรรดาค่าที่ เอกสาร "การคัดเลือก" เป็นไปได้ |ที่ไหน | EXPRESS (ข้อมูล RegisterExecutedTasks.Task AS Document.Selection) LINK เอกสาร.Selection // ตัวอย่างที่ 5a อีกตัวอย่างที่คล้ายกันเมื่อคุณต้องการเลือกเอกสารประเภทใดประเภทหนึ่ง | ทางเลือก | เมื่อจะแสดง (ag การโต้ตอบเอกสาร DocumentBU AS เอกสารการรับสินค้าและบริการ) LINK เอกสาร การรับสินค้าและบริการ | THEN ""การรับสินค้าและบริการ"" | เมื่อใดที่จะแสดง (ag การโต้ตอบเอกสาร DocumentBU AS Document การขายสินค้าและบริการ) LINK เอกสาร การขายสินค้าและบริการ | THEN ""การขายสินค้าและบริการ"" | อื่น ๆ """" | สิ้นสุดเป็นมุมมองเอกสาร // ตัวอย่างที่ 6. การเลือกตามเงื่อนไขของค่าที่ไม่ได้กำหนด: |ที่ไหน | SavedSettings.User = ไม่ได้กำหนด // ตัวอย่างที่ 7 การเลือกตามประเภทของการเคลื่อนไหว "ขาเข้า" ของการลงทะเบียนการสะสม "ค่าใช้จ่าย" - ในทำนองเดียวกัน): |ที่ไหน | RegProductsInRetail.MovementType = VALUE (MovementTypeAccumulation.Incoming) // ตัวอย่างที่ 8 วิธีการระบุในคำขอว่าไม่จำเป็นต้องดำเนินการตามคำขอ (เช่น คุณต้องส่งคืนผลลัพธ์คำขอว่างโดยทางโปรแกรม ขึ้นอยู่กับเงื่อนไขบางประการ - Request.Text = StrReplace(Request.Text, "WHERE Doc.Link = &DocumentLink" , "เรื่องโกหกอยู่ที่ไหน");) ในการดำเนินการนี้ เพียงเพิ่มเงื่อนไข "Where is False" อย่างไรก็ตาม โดยไม่คำนึงถึงปริมาณข้อมูลที่ร้องขอในกลุ่มตัวอย่าง คำขอดังกล่าวจะถูกดำเนินการทันที | คำโกหกอยู่ที่ไหน // ตัวอย่างที่ 9. การตรวจสอบว่าผลลัพธ์การสืบค้นมีข้อมูล: ถ้าไม่ขอ.ดำเนินการ().ว่างเปล่า() แล้ว // ตัวอย่างที่ 10. การเลือกตามวันที่ว่าง: |ที่ไหน | tbStrings.CancellationDate = DATETIME (1, 1, 1)
1C ช่วยให้คุณทำให้การบัญชีง่ายขึ้นอย่างมากหรือเพียงแค่จัดการองค์กรใด ๆ ไม่ว่าจะเป็นร้านค้าขนาดเล็กหรือองค์กรขนาดใหญ่ โปรแกรมเป็นระบบจัดการฐานข้อมูลขนาดใหญ่ เพื่อไม่ให้สับสนในทั้งหมดนี้ คุณจะต้องสามารถดำเนินการง่ายๆ ต่างๆ และเข้าใจสาระสำคัญได้ ต่อไปคุณจะได้เข้าใจวิธีตรวจสอบประเภทของค่าในคำขอใน 1C รวมถึงค่าโดยทั่วไปรวมถึงวิธีแยกแยะความแตกต่างระหว่างค่าเหล่านี้
ประเภทค่า
1C: องค์กรได้รวมฟังก์ชันพิเศษไว้ในเวอร์ชันใหม่ (แพลตฟอร์ม 8.2) คุณสามารถเพิ่มพารามิเตอร์พิเศษใดๆ ให้กับชื่อหรือองค์ประกอบของระบบข้อมูลได้ สิ่งนี้ทำเพื่อให้ระบบแก้ไขและเพิ่มองค์ประกอบใหม่ได้ง่ายขึ้น ฟังก์ชันนี้เรียกว่า "ประเภทค่า"
อันที่จริงนี่เป็นหนึ่งในแนวคิดพื้นฐานที่มีอยู่ในภาษาการเขียนโปรแกรมส่วนใหญ่ คุณสามารถจำแนกข้อมูลต่างๆ ได้โดยการใช้มัน ตัวอย่างเช่น: วันที่ ตัวเลข สตริง ลิงก์ นี่เป็นเพียงการจำแนกประเภทพื้นฐาน อาจมีอีกมากมาย สมมติว่า หากคุณป้อนข้อมูลเกี่ยวกับเมืองลงในระบบของคุณ คุณสามารถใช้: ทวีป ประเทศ ภูมิภาค ฯลฯ
การตรวจสอบ
คุณสามารถตรวจสอบฟิลด์ใดฟิลด์หนึ่งได้โดยใช้ภาษาคิวรี หรือค่อนข้างจะเป็นฟังก์ชัน: TYPE VALUE นั่นคือหากเราต้องการทราบว่าเซลล์ที่สนใจมีข้อมูลประเภทใดเราต้องใช้คำสั่ง
ประเภทค่า(ค่า) = ประเภท(สตริง)
ในตัวอย่างข้างต้น เราได้กำหนดประเภทที่ง่ายที่สุดโดยใช้คำสั่ง อีกตัวอย่างหนึ่งของการตรวจสอบคำขอ:
เอกสารประกอบ
มีหลายประเภท ผู้ใช้สามารถดำเนินการกับประเภทเริ่มต้นหรือป้อนข้อมูลของตนเองเพื่อปรับปรุงฐานข้อมูล นี่คือบางส่วนของพวกเขา
- DocumentLink. ใช้สำหรับจัดเก็บการอ้างอิงไปยังอ็อบเจ็กต์ต่างๆ ภายในส่วนอื่นๆ ของระบบได้อย่างสะดวก
- DocumentObject - แก้ไขเอกสาร
- DocumentSelection - การเรียงลำดับวัตถุจากฐานข้อมูล
นอกจากนี้ยังมีข้อกำหนดพิเศษที่แสดงลักษณะของข้อมูลใดๆ:
- รูปร่าง;
- เส้น;
- บูลีน;
- ตัวเลข;
- วันที่;
- อาร์เรย์;
- ช่องทำเครื่องหมาย;
- รูปภาพ.
นี่เป็นเพียงบางส่วนเท่านั้น วัตถุใดๆ ก็สามารถเป็นได้เพียงบางอย่างจากรายการนี้เท่านั้น บูลีนเป็นพารามิเตอร์พิเศษที่รับค่าสองค่า: จริงหรือเท็จ นอกจากนี้ยังมีแท็กพิเศษที่ให้คุณปรับเปลี่ยนคำขอ: เมื่อใด ที่ไหน อย่างไร มิฉะนั้น ฯลฯ พวกเขาตั้งค่าอัลกอริธึมพฤติกรรมของโปรแกรม 1C มีความโดดเด่นด้วยความจริงที่ว่าคำเหล่านี้สามารถป้อนเป็นภาษารัสเซียได้เช่นเดียวกับสิ่งอื่นใด
สิ่งสำคัญคือต้องเข้าใจว่าทั้งหมดนี้จะถูกมองว่าเป็นความรู้ภาษาจีนสำหรับผู้เริ่มต้นและผู้ที่ไม่ใช่มืออาชีพ เพื่อให้เข้าใจถึงสิ่งที่เรากำลังพูดถึงและใช้ 1C อย่างมีประสิทธิภาพคุณจำเป็นต้องรู้พื้นฐานของการเขียนโปรแกรม โดยทั่วไปการตรวจสอบประเภทคำขอในโปรแกรม 1C จะค่อนข้างง่ายเมื่อเปรียบเทียบกับการดำเนินการอื่น ๆ
ภาษาคิวรี 1C เป็นหนึ่งในความแตกต่างที่สำคัญระหว่างเวอร์ชัน 7.7 และ 8 หนึ่งในจุดที่สำคัญที่สุดในการเรียนรู้การเขียนโปรแกรม 1C คือภาษาคิวรี ใน 1C 8.3 แบบสอบถามเป็นเครื่องมือที่ทรงพลังและมีประสิทธิภาพมากที่สุดในการรับข้อมูล ภาษาคิวรีช่วยให้คุณรับข้อมูลจากฐานข้อมูลได้อย่างสะดวก
ไวยากรณ์นั้นชวนให้นึกถึง T-SQL แบบคลาสสิกอย่างมาก ยกเว้นว่าใน 1C เมื่อใช้ภาษาคิวรี คุณสามารถรับข้อมูลได้โดยใช้โครงสร้าง Select เท่านั้น ภาษายังรองรับโครงสร้างที่ซับซ้อนมากขึ้นด้วย เช่น (คำขอภายในคำขอ) ข้อความค้นหาใน 1C 8 สามารถเขียนได้ทั้งภาษาซีริลลิกและภาษาละติน
ในบทความนี้ฉันจะพยายามพูดถึงคำหลักในภาษาคิวรี 1C:
- เลือก
- อนุญาต
- หลากหลาย
- ด่วน
- อันดับแรก
- เพื่อการเปลี่ยนแปลง
- ความหมาย
- ประเภทค่า (และตัวดำเนินการอ้างอิง)
- ทางเลือก
- จัดกลุ่มตาม
- มี
- ไม่เป็นโมฆะ
- ใช่ เป็นโมฆะ
- การเชื่อมต่อ - ขวา, ซ้าย, ภายใน, เต็ม.
รวมถึงลูกเล่นเล็กๆ น้อยๆ ของภาษา 1C ซึ่งคุณสามารถสร้างข้อความคำขอได้อย่างเหมาะสมที่สุด
ในการดีบักแบบสอบถามในระบบ 1C 8.2 มีการจัดเตรียมเครื่องมือพิเศษ - คอนโซลแบบสอบถาม คุณสามารถดูคำอธิบายและดาวน์โหลดได้โดยใช้ลิงก์ -
มาดูตัวดำเนินการที่สำคัญและน่าสนใจที่สุดของภาษาคิวรี 1C
เลือก
ในภาษาคิวรี 1C Enterprise 8 คิวรีใด ๆ จะเริ่มต้นด้วยคีย์เวิร์ด เลือก. ในภาษา 1C ไม่มีโครงสร้าง UPDATE, DELETE, CREATE TABLE, INSERT การยักย้ายเหล่านี้ดำเนินการในเทคโนโลยีออบเจ็กต์ มีวัตถุประสงค์เพื่ออ่านข้อมูลเท่านั้น
ตัวอย่างเช่น:
เลือก
ไดเรกทอรีปัจจุบันชื่อ
จาก
Directory.Nomenclature AS ไดเรกทอรีปัจจุบัน
แบบสอบถามจะส่งกลับตารางที่มีชื่อรายการ
ใกล้โครงสร้าง เลือกคุณสามารถค้นหาคำหลักได้ เพื่อการเปลี่ยนแปลง, อนุญาต, หลากหลาย, อันดับแรก …
อนุญาต— เลือกเฉพาะบันทึกจากตารางที่ผู้ใช้ปัจจุบันมีสิทธิ์
หลากหลาย— หมายความว่าผลลัพธ์จะไม่มีบรรทัดที่ซ้ำกัน
การคัดเลือก (กรณี)
บ่อยครั้งที่การออกแบบนี้ถูกประเมินโดยโปรแกรมเมอร์ต่ำเกินไป ตัวอย่างการใช้งาน:
ไดเรกทอรีปัจจุบันชื่อ
เมื่อ Directory ปัจจุบันบริการแล้ว
"บริการ"
สิ้นสุดวิธีการดูระบบการตั้งชื่อ
Directory.Nomenclature AS ไดเรกทอรีปัจจุบัน
ตัวอย่างจะส่งคืนค่าข้อความในช่อง "ประเภทรายการ" - "ผลิตภัณฑ์" หรือ "บริการ"
ที่ไหน
การออกแบบภาษาคิวรี 1C ซึ่งช่วยให้คุณสามารถกำหนดการเลือกข้อมูลที่ได้รับได้ โปรดทราบว่าระบบจะรับข้อมูลทั้งหมดจากเซิร์ฟเวอร์ จากนั้นจึงเลือกตามพารามิเตอร์นี้เท่านั้น
เลือก
ไดเร็กทอรี.ชื่อ
จาก
ไดเรกทอรีปัจจุบัน ระบบการตั้งชื่อ AS ไดเรกทอรีปัจจุบัน
โดยที่ CurrentDirectory.Service = TRUE
ในตัวอย่าง เราเลือกเรกคอร์ดที่ค่าของแอตทริบิวต์ "บริการ" ถูกตั้งค่าเป็น "จริง" ในตัวอย่างนี้ เราอาจได้รับตามเงื่อนไขต่อไปนี้:
"บริการอยู่ที่ไหน"
โดยพื้นฐานแล้ว เรากำลังเลือกแถวที่มีนิพจน์หลังคีย์เวิร์ดเท่ากับ "True"
คุณสามารถใช้เงื่อนไขโดยตรงในนิพจน์:
รหัสที่ไหน = "005215"
การใช้ตัวดำเนินการ “VALUE()” ในเงื่อนไข ใช้การเข้าถึงองค์ประกอบและการแจงนับที่กำหนดไว้ล่วงหน้าในคำขอ 1C:
โดยที่ประเภทรายการ = ค่า (การแจงนับประเภทรายการผลิตภัณฑ์)
สามารถระบุค่าเวลาได้ดังนี้
WHERE วันที่รับ > DATETIME(2012,01,01):
ส่วนใหญ่แล้ว เงื่อนไขจะถูกระบุเป็นพารามิเตอร์ที่ส่งไปยังคำขอ:
รับบทเรียนวิดีโอ 267 บทเรียนบน 1C ฟรี:
โดยที่ NomenclatureGroup= &NomenclatureGroup
สามารถกำหนดเงื่อนไขให้กับประเภทแอตทริบิวต์ได้หากเป็นประเภทผสม:
หากคุณต้องการจำกัดการเลือกจากรายการค่าหรืออาร์เรย์ คุณสามารถทำสิ่งต่อไปนี้:
ทะเบียนสะสมอยู่ที่ไหน นายทะเบียน B (&รายการเอกสารสำหรับการคัดเลือก)
เงื่อนไขยังสามารถซับซ้อนได้ ซึ่งประกอบด้วยเงื่อนไขหลายประการ:
โดยที่วันที่รับ > DATETIME(2012,01,01) และ NomenclatureGroup= &NomenclatureGroup และไม่ใช่บริการ
จัดกลุ่มตาม
การออกแบบภาษาคิวรี 1C 8.2 ที่ใช้ในการจัดกลุ่มผลลัพธ์
ตัวอย่างเช่น:
เลือก
การรับสินค้าและบริการ สินค้า สินค้า
SUM (การรับสินค้าบริการสินค้าปริมาณ) AS ปริมาณ
SUM(การรับสินค้าบริการสินค้าจำนวน) AS จำนวนเงิน
จาก
เอกสาร การรับสินค้าและบริการ สินค้า วิธีการรับสินค้าและบริการจัดกลุ่มตาม
การรับสินค้าการบริการสินค้าสินค้า
คำขอนี้จะสรุปการรับทั้งหมดตามจำนวนและปริมาณตามรายการ
นอกจากคีย์เวิร์ดแล้ว ผลรวมคุณสามารถใช้ฟังก์ชันรวมอื่นๆ ได้: ปริมาณ, จำนวนที่แตกต่างกัน, ขีดสุด, ขั้นต่ำ, เฉลี่ย.
มี
การออกแบบที่มักถูกลืม แต่สำคัญและมีประโยชน์มาก ช่วยให้คุณสามารถระบุการเลือกในรูปแบบของฟังก์ชันรวม ซึ่งไม่สามารถทำได้ในการออกแบบ ที่ไหน.
ตัวอย่างการใช้ HAVING ในคำขอ 1C:
เลือก
การรับสินค้าและบริการ สินค้า สินค้า
SUM (การรับสินค้าบริการสินค้าปริมาณ) AS ปริมาณ
SUM(การรับสินค้าบริการสินค้าจำนวน) AS จำนวนเงิน
จาก
เอกสาร การรับสินค้าและบริการ สินค้า วิธีการรับสินค้าและบริการจัดกลุ่มตาม
การรับสินค้าและบริการ สินค้า สินค้าSUM(การรับสินค้าบริการสินค้าปริมาณ) > 5
ดังนั้นเราจะเลือกจำนวนสินค้าที่มาถึงมากกว่า 5 ชิ้น
ความหมาย()
ตัวอย่างเช่น:
โดยที่ธนาคาร = มูลค่า (Directory.Banks.EmptyLink)
WHERE ประเภทระบบการตั้งชื่อ = ค่า (Directory.Nomenclature Types.Product)
โดยที่ประเภทรายการ = ค่า (การแจงนับประเภทรายการบริการ)
พิมพ์ตามคำขอ
สามารถตรวจสอบชนิดข้อมูลได้โดยใช้ฟังก์ชัน TYPE() และ VALUETYPE() หรือใช้ตัวดำเนินการ REFERENCE แบบลอจิคัล
ด่วน()
ตัวดำเนินการ Express ในแบบสอบถาม 1C ใช้เพื่อแปลงประเภทข้อมูล
ไวยากรณ์: ด่วน(<Выражение>ยังไง<Тип значения>)
เมื่อใช้มัน คุณสามารถแปลงค่าสตริงเป็นวันที่ หรือค่าอ้างอิงเป็นข้อมูลสตริง และอื่นๆ
ในการใช้งานจริง ตัวดำเนินการ Express() มักใช้ในการแปลงฟิลด์ที่มีความยาวไม่จำกัด เนื่องจากไม่สามารถเลือก จัดกลุ่ม ฟิลด์ที่มีความยาวไม่จำกัดได้ ฯลฯ หากไม่ได้แปลงฟิลด์ดังกล่าว คุณจะได้รับข้อผิดพลาด คุณไม่สามารถเปรียบเทียบฟิลด์ที่มีความยาวไม่จำกัดกับฟิลด์ประเภทที่เข้ากันไม่ได้.
เลือก
ข้อมูลการติดต่อวัตถุ
EXPRESS (ContactInfo.View AS ROW (150)) AS ดู
จาก
ทะเบียนข้อมูล ข้อมูลการติดต่อ ข้อมูลการติดต่ออย่างไรจัดกลุ่มตาม
EXPRESS (ContactInfo.Representation AS ROW (150))
ข้อมูลการติดต่อวัตถุ
ISNULL (อิสโมล)
ค่อนข้างเป็นฟังก์ชันที่มีประโยชน์ของภาษาคิวรี 1C ที่ตรวจสอบค่าในบันทึกและมีค่าเท่ากันหรือไม่ โมฆะ,ซึ่งจะทำให้คุณสามารถแทนที่ด้วยค่าของคุณเองได้ ส่วนใหญ่มักใช้เมื่อได้รับตารางยอดคงเหลือและการหมุนเวียนเสมือนเพื่อซ่อน โมฆะและใส่ 0 ชัดเจน (ศูนย์)
ISNULL(ภาษีก่อนเดือน ผลประโยชน์ FSS ที่ประยุกต์ใช้ 0)
ฟังก์ชั่นของภาษาคิวรี 1C ISNULL จะส่งคืนค่าศูนย์หากไม่มีค่า ซึ่งจะหลีกเลี่ยงข้อผิดพลาด
เข้าร่วม
การเชื่อมต่อมี 4 ประเภท: ซ้าย, ขวา, สมบูรณ์ภายใน.
การเชื่อมต่อด้านซ้ายและขวา
การรวมใช้เพื่อเชื่อมโยงสองตารางตามเงื่อนไขเฉพาะ คุณลักษณะเมื่อ เข้าร่วมทางซ้ายคือเราใช้ตารางแรกที่ระบุอย่างครบถ้วนและผูกตารางที่สองอย่างมีเงื่อนไข เขตข้อมูลของตารางที่สองที่ไม่สามารถผูกตามเงื่อนไขได้จะถูกเติมด้วยค่า โมฆะ.
ตัวอย่างของการเข้าร่วมด้านซ้ายในคำขอ 1C:
มันจะส่งคืนทั้งตารางและกรอกข้อมูลในช่อง "ธนาคาร" เฉพาะในสถานที่ที่ตรงตามเงื่อนไข "Counterparties.Name = Banks.Name" ถ้าไม่ตรงตามเงื่อนไข ฟิลด์ธนาคารจะถูกตั้งค่าเป็น โมฆะ.
เข้าร่วมขวาในภาษา 1C 8.3คล้ายกันอย่างแน่นอน การเชื่อมต่อด้านซ้ายยกเว้นข้อแตกต่างประการหนึ่ง: ใน สิทธิ์ในการเชื่อมต่อตาราง "หลัก" เป็นตารางที่สอง ไม่ใช่ตารางแรก
การเชื่อมต่อเต็มรูปแบบ
การเชื่อมต่อเต็มรูปแบบแตกต่างจากซ้ายและขวาตรงที่จะแสดงบันทึกทั้งหมดจากสองตารางและเชื่อมต่อเฉพาะรายการที่เชื่อมต่อตามเงื่อนไขได้
ตัวอย่างเช่น:
การเชื่อมต่อเต็มรูปแบบ
Directory.Banks ธนาคารอย่างไรโดย
ภาษาคิวรีจะส่งกลับทั้งสองตารางโดยสมบูรณ์ก็ต่อเมื่อตรงตามเงื่อนไขบันทึกการรวมเท่านั้น ไม่เหมือนกับการรวมซ้าย/ขวา เป็นไปได้ที่ NULL จะปรากฏในสองฟิลด์
เข้าร่วมภายใน
เข้าร่วมภายในแตกต่างจากแบบเต็มตรงที่จะแสดงเฉพาะบันทึกที่สามารถเชื่อมต่อได้ตามเงื่อนไขที่กำหนด
ตัวอย่างเช่น:
จาก
สารบบ คู่ค้า AS ลูกค้าเข้าร่วมภายใน
Directory.Banks ธนาคารอย่างไรโดย
Clients.Name = ธนาคารชื่อ
แบบสอบถามนี้จะส่งกลับเฉพาะแถวที่ธนาคารและคู่สัญญามีชื่อเหมือนกัน
บทสรุป
นี่เป็นเพียงส่วนเล็ก ๆ ของไวยากรณ์จากภาษาคิวรี 1C 8 ในอนาคตฉันจะพยายามพิจารณาบางประเด็นโดยละเอียดมากขึ้น แสดงและอีกมากมาย!
43
NULL – ค่าที่หายไป อย่าสับสนกับค่าศูนย์! NULL ไม่ใช่ตัวเลข ไม่เท่ากับช่องว่าง การอ้างอิงว่างเปล่า หรือไม่ได้กำหนด NULL คือค่าที่สร้างประเภท เช่น มีประเภท NULL และค่าเดียวของประเภทนี้ โมฆะ...
26
ในการสร้างและดำเนินการสืบค้นไปยังตารางฐานข้อมูลในแพลตฟอร์ม 1C จะใช้วัตถุพิเศษของภาษาการเขียนโปรแกรมสืบค้น วัตถุนี้ถูกสร้างขึ้นโดยการเรียกโครงสร้างคำขอใหม่ สะดวกขอ...
18
บทความนี้นำเสนอเทคนิคที่เป็นประโยชน์เมื่อทำงานกับแบบสอบถาม 1C v.8.2 รวมถึงข้อมูลที่ไม่ค่อยทราบเกี่ยวกับภาษาของแบบสอบถาม ฉันไม่ได้พยายามให้คำอธิบายที่สมบูรณ์ของภาษาคิวรี แต่ต้องการให้อยู่เฉพาะใน...
13
LIKE - ตัวดำเนินการสำหรับตรวจสอบสตริงเพื่อความคล้ายคลึงกับรูปแบบ อะนาล็อกของ LIKE ใน SQL ตัวดำเนินการ SIMILAR ช่วยให้คุณสามารถเปรียบเทียบค่าของนิพจน์ที่ระบุทางด้านซ้ายกับสตริงรูปแบบที่ระบุทางด้านขวา ความหมายของสำนวน...
ความสนใจ! บทเรียนนี้เป็นเวอร์ชันเบื้องต้น เนื้อหาอาจไม่สมบูรณ์
เข้าสู่เว็บไซต์ในฐานะนักเรียน
เข้าสู่ระบบในฐานะนักเรียนเพื่อเข้าถึงสื่อการสอนของโรงเรียน
ภาษาแบบสอบถาม 1C 8.3 สำหรับโปรแกรมเมอร์มือใหม่: ฟังก์ชั่นและตัวดำเนินการสำหรับการทำงานกับประเภท (ประเภทค่า, ประเภท, การอ้างอิง, ISNULL, EXPRESS)
โปรดจำไว้ว่าแต่ละแอตทริบิวต์ (คุณสมบัติ ฟิลด์) ของไดเร็กทอรี เอกสาร หรือออบเจ็กต์แอปพลิเคชันอื่น ๆ มีประเภทของตัวเอง และเราสามารถดูประเภทนี้ได้ในเครื่องมือกำหนดค่า:
ในภาษาคิวรี มีฟังก์ชันและตัวดำเนินการทั้งคลาสสำหรับการทำงานกับประเภทรายละเอียด มาดูพวกเขากันดีกว่า
ฟังก์ชันประเภทค่า
ฟังก์ชันนี้รับหนึ่งพารามิเตอร์ (ค่า) และส่งกลับประเภทของมัน สำหรับอุปกรณ์ประกอบฉากที่อธิบายไว้ในภาพ (ด้านบน) รสชาติไดเรกทอรี อาหารต่อไปนี้จะถูกส่งคืน:
ทีนี้มาดูอุปกรณ์ประกอบฉากกัน คุณสมบัติที่โดดเด่นที่ไดเร็กทอรี เมือง:
คุณจะเห็นว่าเสานี้สามารถมีได้หลายประเภท: เส้น, Directory.รสนิยม, ไดเรกทอรี.สี. รายละเอียดประเภทนี้เรียกว่าคอมโพสิต
หากเราพยายามกรอกค่าของรายละเอียดดังกล่าวในโหมด 1C:Enterprise ระบบจะถามเราว่าจะต้องป้อนค่าประเภทใด:
และหลังจากการเลือกของเราแล้วเท่านั้นที่จะอนุญาตให้เราป้อนค่าของประเภทที่เลือกได้
ดังนั้นองค์ประกอบไดเร็กทอรีประเภทเดียวกัน ( ไดเรกทอรี.เมือง) จะสามารถเก็บไว้ในแอตทริบิวต์เดียวกันได้ ( คุณสมบัติที่โดดเด่น) ค่าประเภทต่างๆ (สตริง สี หรือรสชาติ)
คุณสามารถดูสิ่งนี้ได้ด้วยตัวเองโดยคลิกที่องค์ประกอบของไดเร็กทอรี เมืองใน 1C: โหมดองค์กร คุณกำลังอ่านบทเรียนเวอร์ชันทดลอง มีบทเรียนฉบับเต็มให้เลือก
ที่นี่ค่าคุณลักษณะที่แตกต่างคือองค์ประกอบไดเร็กทอรี รสชาติ:
นี่คือบรรทัด:
และนี่คือองค์ประกอบของหนังสืออ้างอิงโดยทั่วไป สี:
นี่เป็นความเป็นไปได้ที่ประเภทข้อมูลคอมโพสิตจะเปิดให้เรา!
ฉันสงสัยว่าฟังก์ชันจะมีพฤติกรรมอย่างไร ค่าประเภทบนอุปกรณ์ประกอบฉาก องค์ประกอบที่โดดเด่นโดยมีประเภทข้อมูลคอมโพสิต:
สิ่งนี้น่าสนใจมากอยู่แล้ว มาดูทีละบรรทัดกัน
ประเภทของค่าของคุณลักษณะเฉพาะสำหรับองค์ประกอบรัสเซียมีค่าเท่ากับ โมฆะ. นี่เป็นครั้งแรกที่เราเจอประเภทนี้ ค่าประเภทนี้ใช้เพื่อกำหนดค่าที่หายไปเมื่อทำงานกับฐานข้อมูลเท่านั้น
นี่เป็นเรื่องจริง เนื่องจากองค์ประกอบ Russia เป็นกลุ่ม ไม่ใช่องค์ประกอบไดเรกทอรีทั่วไป เมืองดังนั้นจึงไม่มีฟิลด์ คุณสมบัติที่โดดเด่น. และประเภทของค่าที่หายไปดังที่เราอ่านข้างต้นจะเท่ากับเสมอ โมฆะ.
ประเภทของค่าคุณลักษณะเฉพาะของ Perm มีค่าเท่ากับ รสชาติ. นี่เป็นเรื่องจริง เนื่องจากค่าของคุณลักษณะเฉพาะที่ป้อนในฐานข้อมูลสำหรับเมืองระดับการใช้งานคือลิงก์ไปยังองค์ประกอบไดเรกทอรี รสชาติ.
สำหรับ Krasnoyarsk ประเภทของแอตทริบิวต์จะเท่ากับ สีเนื่องจากค่าที่เลือกในฐานข้อมูลเป็นลิงก์ไปยังองค์ประกอบไดเร็กทอรี สี.
สำหรับ Voronezh ประเภทของแอตทริบิวต์จะเท่ากับ เส้นเนื่องจากค่าที่ป้อนในฐานข้อมูลเป็นสตริงปกติ
อินเดียเป็นกลุ่มอีกแล้วจึงไม่มีความสำคัญ และประเภทของค่าที่หายไปอย่างที่เราจำได้ก็เท่ากับ โมฆะ.
นี่คือสิ่งที่ หากคุณไปที่องค์ประกอบไดเร็กทอรี เมืองมีชื่อ เซาเปาโลแล้วคุณจะเห็นว่าสนามนั้น คุณสมบัติที่โดดเด่นไม่ได้กรอกเลย มันว่างเปล่า. ก ช่องว่างทั้งหมดของประเภทคอมโพสิตจะมีความหมายพิเศษไม่ได้กำหนด .
กับ ไม่ได้กำหนดเราก็กำลังเผชิญหน้ากันเป็นครั้งแรกเช่นกัน ความหมาย ไม่ได้กำหนดใช้เมื่อจำเป็นต้องใช้ค่าว่างที่ไม่ได้เป็นประเภทอื่น นี่คือสถานการณ์ของเราอย่างแน่นอน และประเภทค่า ไม่ได้กำหนดอย่างที่คุณคงเดาได้อยู่แล้วว่าเท่ากับ โมฆะ.
ประเภทฟังก์ชัน
ใช้พารามิเตอร์เดียวเท่านั้น - ชื่อของประเภทดั้งเดิม ( เส้น, ตัวเลข, วันที่, บูลีน) หรือชื่อของตารางที่คุณต้องการรับประเภทลิงก์
ผลลัพธ์ของโครงสร้างนี้จะเป็นค่าประเภท Type สำหรับประเภทที่ระบุ
ฟังดูคลุมเครือใช่ไหม?
ลองดูที่การใช้งานของการออกแบบนี้แล้วทุกอย่างจะเข้าที่ทันที
สมมติว่าเราจำเป็นต้องเลือกรายการไดเร็กทอรีทั้งหมด เมืองซึ่งมีอุปกรณ์ประกอบฉากประกอบ คุณสมบัติที่โดดเด่นมีค่าเป็นประเภท เส้น:
ตอนนี้เรามาเลือกเรกคอร์ดทั้งหมดที่มีค่าแอททริบิวต์ คุณสมบัติที่โดดเด่นเป็นลิงก์ไปยังองค์ประกอบไดเร็กทอรี สี(โต๊ะ ไดเรกทอรี.สี):
ล่าถอย
อย่างที่คุณจำได้องค์ประกอบบางอย่างของไดเร็กทอรี เมืองไม่มีอุปกรณ์ประกอบฉาก คุณสมบัติที่โดดเด่น. การทำงาน ค่าประเภทสำหรับองค์ประกอบดังกล่าวที่มันสร้างขึ้น โมฆะ.
คุณจะเลือกองค์ประกอบดังกล่าวในแบบสอบถามได้อย่างไร? มีการจัดเตรียมตัวดำเนินการเชิงตรรกะพิเศษสำหรับสิ่งนี้ เป็นโมฆะ(เพื่อไม่ให้สับสนกับฟังก์ชัน ไม่เป็นโมฆะซึ่งเราจะดูด้านล่าง) คุณกำลังอ่านบทเรียนเวอร์ชันทดลอง มีบทเรียนฉบับเต็มให้เลือก
นี่คือตัวอย่างการใช้งาน:
ยอดเยี่ยม. แต่คุณสังเกตไหมว่าไม่มีองค์ประกอบของเซาเปาโลประเภทค่าอุปกรณ์ประกอบฉาก คุณสมบัติที่โดดเด่นซึ่งเขาแจกด้วย โมฆะ. ทำไมมันถึงเกิดขึ้น?
แต่ประเด็นก็คือสถานการณ์ของกลุ่ม (รัสเซีย อินเดีย บราซิล) ซึ่งการกรอกรายละเอียด คุณสมบัติที่โดดเด่นโดยหลักการแล้วเป็นไปไม่ได้ เนื่องจากไม่มีเลย แตกต่างจากสถานการณ์สำหรับองค์ประกอบเซาเปาโล ซึ่งสามารถเติมอุปกรณ์ประกอบฉากได้ แต่เพียงแต่ไม่ได้เติมเข้าไปและเท่ากันอย่างที่เราจำได้กับ มูลค่าพิเศษ ไม่ได้กำหนด.
เพื่อเลือกบันทึกทั้งหมดที่มีความจำเป็น คุณสมบัติที่โดดเด่นปัจจุบัน แต่ยังไม่เต็ม ควรใช้โครงสร้างอื่น:
แต่การเปรียบเทียบกับ UNDEFINED เพื่อกำหนดแอตทริบิวต์ว่าง (ไม่ได้กรอก) จะใช้ได้กับประเภทคอมโพสิตเท่านั้น
อย่างไรก็ตาม ตัวดำเนินการเชิงตรรกะ IS NULL มีรูปแบบการปฏิเสธที่มีลักษณะดังนี้:
ตัวดำเนินการทางลอจิคัล LINK
ตัวอย่างเช่น ลองเลือกจากไดเร็กทอรี เมืองเฉพาะระเบียนที่มีค่าของแอตทริบิวต์คอมโพสิตเท่านั้น คุณสมบัติที่โดดเด่นเป็นลิงก์ไปยังองค์ประกอบไดเร็กทอรี รสชาติ:
อย่างที่คุณจำได้ เราสามารถแก้ไขปัญหาเดียวกันได้โดยใช้ ค่าประเภทและ พิมพ์:
ฟังก์ชัน ISNULL
ฟังก์ชันนี้ออกแบบมาเพื่อแทนที่ค่า โมฆะไปสู่ความหมายที่แตกต่าง
เราจำความหมายนั้นได้ โมฆะส่งคืนหากไม่มีแอตทริบิวต์ที่ร้องขอ (ฟิลด์ คุณสมบัติ)
เช่น อุปกรณ์ประกอบฉาก คุณสมบัติที่โดดเด่นสำหรับกลุ่มไดเร็กทอรี เมือง:
การทำงาน ไม่เป็นโมฆะจะช่วยให้เราส่งออกค่าที่แตกต่างออกไปหากค่านี้เท่ากับ โมฆะ. คุณกำลังอ่านบทเรียนเวอร์ชันทดลอง มีบทเรียนฉบับเต็มให้เลือก ให้ในกรณีนี้เป็นบรรทัดว่า "ไม่มีอุปกรณ์ประกอบฉากดังกล่าว!":
ปรากฎว่าถ้าพารามิเตอร์ตัวแรกของฟังก์ชัน ไม่เป็นโมฆะไม่เท่ากับ โมฆะแล้วเขาก็กลับมา ถ้าเป็น NULL พารามิเตอร์ตัวที่สองจะถูกส่งกลับ
ฟังก์ชันด่วน
ฟังก์ชันนี้ใช้สำหรับเขตข้อมูลที่มีประเภทคอมโพสิตเท่านั้น ตัวอย่างที่ดีของฟิลด์ดังกล่าวคือทรัพย์สิน คุณสมบัติที่โดดเด่นสำหรับองค์ประกอบไดเร็กทอรี เมือง.
ดังที่เราจำได้ว่า ฟิลด์คอมโพสิตสามารถเป็นหนึ่งในหลายประเภทที่ระบุในตัวกำหนดค่า
สำหรับสนาม คุณสมบัติที่โดดเด่นประเภทที่ถูกต้องดังกล่าวคือ เส้น, ไดเรกทอรี.สีและ Directory.รสนิยม.
บางครั้งจำเป็นต้องแปลงค่าของฟิลด์คอมโพสิตเป็นประเภทเฉพาะ
มาแสดงรายการค่าฟิลด์ทั้งหมดกัน คุณสมบัติที่โดดเด่นพิมพ์ อ้างอิงสี:
เป็นผลให้ค่าองค์ประกอบทั้งหมดที่เป็นประเภท ไดเรกทอรีสียังคงเต็มและถูกแปลงเป็นประเภทที่ระบุ ค่าประเภทอื่นทั้งหมด ( เส้น, Directory.รสนิยม) ตอนนี้เท่ากันแล้ว โมฆะ. นี่คือลักษณะเฉพาะของการหล่อแบบโดยใช้ฟังก์ชัน ด่วน.
คุณสามารถแปลงประเภทเป็นประเภทดั้งเดิมได้ ( บูลีน, ตัวเลข, เส้น, วันที่) หรือเป็นประเภทอ้างอิง คุณกำลังอ่านบทเรียนเวอร์ชันทดลอง มีบทเรียนฉบับเต็มให้เลือก แต่ประเภทที่จะทำการหล่อจะต้องรวมอยู่ในรายการประเภทสำหรับฟิลด์คอมโพสิตนี้ มิฉะนั้นระบบจะเกิดข้อผิดพลาด
ทำการทดสอบ
เริ่มการทดสอบ
1. เลือกข้อความที่ถูกต้องที่สุด
2. รายละเอียดที่สามารถรับค่าได้หลายประเภทเรียกว่า
3. ในการกำหนดประเภทของค่าแอตทริบิวต์ ให้ใช้ฟังก์ชัน
4. รายละเอียดที่ว่างเปล่าของประเภทคอมโพสิตมีความสำคัญ