จะรับประเภท (ประเภท) ของเอกสารในคำขอได้อย่างไร ประเภทค่าคำขอ 1s 8

ขอ .ข้อความ = "เลือก | หน่วยจัดเก็บข้อมูล.ลิงค์ |จาก | 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. รายละเอียดที่ว่างเปล่าของประเภทคอมโพสิตมีความสำคัญ

คุณชอบบทความนี้หรือไม่? แบ่งปันกับเพื่อน: