รายการองค์ประกอบค่า 1c โครงสร้างการรวบรวมสากล

ไวยากรณ์แบบเต็ม(คลิกเพื่อขยาย)

รายการค่า

คำอธิบาย:

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

รายการคอลเลกชัน: ValueListElement

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

คุณสามารถเข้าถึงองค์ประกอบการรวบรวมโดยใช้ตัวดำเนินการ [...] ดัชนีขององค์ประกอบถูกส่งผ่านเป็นอาร์กิวเมนต์ ( นับจาก 0).

คุณสมบัติ:

วิธีการ:

แทรก (ดัชนี, ค่า, การแสดง, ป้ายกำกับ, รูปภาพ) แทรกองค์ประกอบใหม่ลงในรายการค่าที่ตำแหน่งที่ดัชนีที่ระบุSelectItem (ชื่อเรื่อง, รายการ) เรียกหน้าต่างขึ้นมาเพื่อ การเลือกแบบโต้ตอบองค์ประกอบหนึ่งที่รวมอยู่ในรายการค่า องค์ประกอบ- องค์ประกอบที่ควรวางตำแหน่งรายการค่าในตอนแรกระหว่างการเลือกแบบโต้ตอบ หากค่าพารามิเตอร์ไม่ใช่องค์ประกอบรายการค่าที่รวมอยู่ใน รายการนี้การวางตำแหน่งจะไม่เกิดขึ้นยกเลิกการโหลดค่า()สร้างอาร์เรย์และคัดลอกค่าของรายการองค์ประกอบค่าลงไปAdd(Value, Representation, Label, Image)เพิ่มองค์ประกอบใหม่ต่อท้ายรายการค่าโหลดค่า(ArrayValues)โหลดรายการค่าพร้อมค่าจากอาร์เรย์ที่ส่งผ่าน ในกรณีนี้ องค์ประกอบก่อนหน้าทั้งหมดของรายการจะถูกลบออกกรอกหมายเหตุ(เครื่องหมาย) กำหนดเครื่องหมายสำหรับองค์ประกอบทั้งหมดของรายการค่าดัชนี (องค์ประกอบ) รับดัชนีขององค์ประกอบในรายการค่า หากไม่พบ ระบบจะส่งคืน -1Count() รับจำนวนองค์ประกอบในรายการค่าFindByValue(SearchValue) ค้นหาค่าขององค์ประกอบในรายการค่า หากไม่มีองค์ประกอบใดเก็บค่าเท่ากับค่าการค้นหา ค่านั้นจะถูกส่งกลับ ไม่ได้กำหนด. ค้นหาด้วย ID(ตัวระบุ)ดึงรายการองค์ประกอบค่าตามตัวระบุ หากไม่พบองค์ประกอบก็จะถูกส่งกลับ ไม่ได้กำหนด. ทำเครื่องหมายรายการ(ส่วนหัว) ตั้งค่าหรือยกเลิกการเลือก (แบบโต้ตอบ) รายการในรายการค่า การส่งคืน จริงหากกดปุ่ม "ตกลง" ในกล่องโต้ตอบ โกหก- มิฉะนั้น.Clear() ล้างรายการค่า โดยลบองค์ประกอบทั้งหมดออกจากรายการแสดงการเลือกองค์ประกอบ(DescriptionNotificationsOnClosing, Title, Element) เรียกหน้าต่างขึ้นมาสำหรับการเลือกองค์ประกอบใดองค์ประกอบหนึ่งที่รวมอยู่ในรายการค่าแบบโต้ตอบรายการแสดงรายการ(คำอธิบายของการแจ้งเตือนการปิด ส่วนหัว) ออกแบบมาเพื่อการตั้งค่าสถานะเครื่องหมายแบบโต้ตอบสำหรับองค์ประกอบของรายการค่ารับ (ดัชนี) ดึงค่าตามดัชนี ทำงานคล้ายกับตัวดำเนินการShift (องค์ประกอบ, ออฟเซ็ต) เลื่อนองค์ประกอบของรายการค่าไปข้างหน้าหรือข้างหลังตามจำนวนตำแหน่งที่ระบุCopy() สร้างสำเนาของรายการค่าเรียงลำดับตามค่า(ทิศทาง) เรียงลำดับรายการค่าจากน้อยไปหามากหรือจากมากไปน้อยของค่าที่จัดเก็บโดยองค์ประกอบ ดูตัวอย่างด้านล่างเรียงลำดับตามมุมมอง(ทิศทาง) เรียงลำดับรายการค่าจากน้อยไปหามากหรือจากมากไปน้อยตามลำดับตัวอักษรของการเป็นตัวแทนขององค์ประกอบที่รวมอยู่ในรายการค่า ดูตัวอย่างด้านล่างลบ (องค์ประกอบ) ลบองค์ประกอบออกจากรายการค่าโดยที่ องค์ประกอบ- ดัชนีขององค์ประกอบที่จะลบหรือองค์ประกอบนั้นเอง

นักออกแบบ:

รายการค่าใหม่
&ขั้นตอน OnClient ExecuteCode(คำสั่ง) /// วิธีสร้างรายการค่าใน 1 วินาที 8.3, 8.2รายการ = รายการค่าใหม่; /// วิธีเพิ่มองค์ประกอบในรายการค่าใน 1 วินาที 8.3, 8.2 // เพิ่มพารามิเตอร์วิธีการ:// - ความหมาย // - ผลงาน // - ทำเครื่องหมาย (จำเป็น) // - รูปภาพ (จำเป็น)รายการ. เพิ่ม(1980, // ค่าองค์ประกอบ "ปีเกิดของวาสยา"// ผลงาน ) ; รายการ. เพิ่ม(1985, "ปีเกิดของจูเลีย") ; // ค่าสามารถมีได้หลายประเภทรายการ. Add("Polina" , "ชื่อลูก" ) ; /// วิธีแทรกองค์ประกอบลงในรายการค่าใน 1s 8.3, 8.2 // แทรกเข้าไปในตำแหน่งที่ 2 (องค์ประกอบมีหมายเลขเริ่มต้นจาก 0) // องค์ประกอบที่มีค่า 2010 และการเป็นตัวแทน // "ปีที่ลูกสาวร่วมเกิด"รายการ. ส่วนแทรก(2, 2010, "ปีที่ลูกสาวร่วมของพวกเขาเกิด") ; /// วิธีเลี่ยงองค์ประกอบของรายการค่าใน 1 วินาที 8.3, 8.2สำหรับแต่ละองค์ประกอบจากรายงานการวนรอบรายการ (Element. Representation + ": " + String(Element.Value) ) ; เอ็นด์ไซเคิล ; /// วิธีล้างรายการค่าใน 1 วินาที 8.3, 8.2รายการ. ชัดเจน() ; รายการ. เพิ่ม("วันจันทร์"); รายการ. เพิ่ม("วันอังคาร"); รายการ. เพิ่ม("วันพุธ" ) ; /// วิธีค้นหาจำนวนองค์ประกอบของรายการค่ารวมทั้ง /// รับองค์ประกอบรายการตามดัชนีใน 1 วินาที 8.3, 8.2 // นับเลขตั้งแต่เริ่มต้นสำหรับดัชนี = 0 ตามรายการ ปริมาณ() - รายงานรอบการผลิต 1 รอบ(รายการ[ดัชนี]) ; เอ็นด์ไซเคิล ; /// วิธีค้นหาองค์ประกอบรายการตามค่าใน 1 วินาที 8.3, 8.2ค่าวันอังคาร = รายการ FindByValue("วันอังคาร"); /// วิธีค้นหาดัชนีขององค์ประกอบในรายการใน 1 วินาที 8.3, 8.2รายงาน(List.Index(มูลค่าวันอังคาร)) ; // 1 เนื่องจากการกำหนดหมายเลขเริ่มต้นจากศูนย์ /// วิธีจัดเรียงรายการตามค่าใน 1 วินาที 8.3, 8.2 // คือ: วันจันทร์ วันอังคาร วันพุธรายการ. SortByValue(SortDirection.Descending); // กลายเป็น: วันพุธ วันจันทร์ วันอังคาร /// วิธีลบองค์ประกอบออกจากรายการค่าใน 1 วินาที 8.3, 8.2 // ลบองค์ประกอบแรก // พารามิเตอร์: องค์ประกอบรายการ // หรือดัชนีองค์ประกอบ// คุณสามารถทำรายการนี้ได้ ลบ(รายการ[ 0 ]) ; // หรือไม่ก็ // รายการลบ (0); /// วิธีเปลี่ยนองค์ประกอบของรายการค่าใน 1 วินาที 8.3, 8.2 // ย้ายองค์ประกอบศูนย์ไปข้างหน้าหนึ่งตำแหน่ง // คือ: วันจันทร์ วันอังคารรายการ. ย้าย(0, 1); // กลายเป็น: วันอังคารวันจันทร์ /// วิธีทำสำเนารายการใน 1 วินาที 8 ListCopy = รายการ คัดลอก() ; สี = รายการค่าใหม่; สี เพิ่ม("สีแดง" ); สี เพิ่ม("สีเขียว" ) ; สี เพิ่ม("สีฟ้า" ) ; /// วิธีอัปโหลดค่ารายการลงในอาร์เรย์ใน 1s 8.3, 8.2 ArrayColors = สี ยกเลิกการโหลดค่า() ; /// วิธีโหลดค่ารายการจากอาร์เรย์ใน 1s 8.3, 8.2สี LoadValues(อาร์เรย์สี); สิ้นสุดขั้นตอน /// วิธีทำการเลือกค่าจากรายการแบบไม่มีโหมด /// ค่าใน 1 วินาที 8.3, 8.2&ในขั้นตอนไคลเอนต์ วิธีสร้างสีที่ไม่ใช่ ModalValueSelection (คำสั่ง) = รายการค่าใหม่; สี เพิ่ม("สีแดง" ); สี เพิ่ม("สีเขียว" ) ; สี เพิ่ม("สีฟ้า" ) ; // ขั้นตอน AfterSelectingElement ถูกกำหนดไว้ด้านล่าง AlertAfterElementSelection = คำอธิบายการแจ้งเตือนใหม่ ( "หลังจากเลือกองค์ประกอบ", วัตถุนี้ ) ; สี ShowElementSelection ( การแจ้งเตือน AfterElementSelection , "เลือกสีที่คุณชื่นชอบ") ; สิ้นสุดขั้นตอน &ขั้นตอนบนไคลเอนต์หลังจากการเลือกองค์ประกอบ (องค์ประกอบ, พารามิเตอร์) ส่งออกหากองค์ประกอบ<>ไม่ได้กำหนดไว้แล้วรายงาน (Element.Value) ; สิ้นสุดถ้า ; สิ้นสุดขั้นตอน /// วิธีทำเครื่องหมายค่าแบบไม่มีโหมดจากรายการ /// ค่าใน 1 วินาที 8.3, 8.2&ในขั้นตอนของลูกค้า วิธีสร้างการทำเครื่องหมายค่าที่ไม่ใช่ Modal (คำสั่ง) สี = รายการค่าใหม่; สี เพิ่ม("สีแดง" ); สี เพิ่ม("สีเขียว" ) ; สี เพิ่ม("สีฟ้า" ) ; // ขั้นตอน AfterMarkingElements ถูกกำหนดไว้ด้านล่าง AlertAfterMarkingItems = คำอธิบายการแจ้งเตือนใหม่ ( "รายการหลังการทำเครื่องหมาย", วัตถุนี้ ) ; สี ShowTagItems( AlertAfterTagItems, "เลือกสีที่คุณชื่นชอบ") ; สี FillNotes(จริง) ; สิ้นสุดขั้นตอน &ขั้นตอนบนไคลเอ็นต์หลังจากการทำเครื่องหมายองค์ประกอบ (องค์ประกอบ, พารามิเตอร์) ส่งออกหากองค์ประกอบ<>ไม่ได้กำหนดแล้วสำหรับแต่ละสีจากองค์ประกอบรอบถ้าสี ทำเครื่องหมายแล้วรายงาน(Color.Value) ; สิ้นสุดถ้า ; เอ็นด์ไซเคิล ; สิ้นสุดถ้า ; สิ้นสุดขั้นตอน /// วิธีทำการเลือกค่ากิริยาจากรายการใน 1 วินาที 8.3, 8.2&ในขั้นตอนไคลเอนต์ วิธีสร้าง ModalValueSelection (คำสั่ง) สี = รายการค่าใหม่; สี เพิ่ม("สีแดง" ); สี เพิ่ม("สีเขียว" ) ; สี เพิ่ม("สีฟ้า" ) ; SelectColor = สี เลือกรายการ( "เลือกสีที่คุณชื่นชอบ") ; หากเลือกสี<>ไม่ได้กำหนด จากนั้นรายงาน (SelectColor.Value) ; สิ้นสุดถ้า ; สิ้นสุดขั้นตอน /// วิธีทำเครื่องหมายค่าจากรายการแบบ modally /// ค่าใน 1 วินาที 8.3, 8.2&ในขั้นตอนของลูกค้า วิธีสร้าง Modal Mark of Values ​​​​(คำสั่ง) Colours = รายการค่าใหม่; สี เพิ่ม("สีแดง" ); สี เพิ่ม("สีเขียว" ) ; สี เพิ่ม("สีฟ้า" ) ; ถ้าเป็นสี. ทำเครื่องหมายรายการ( "เลือกสีที่คุณชื่นชอบ") จากนั้นสำหรับแต่ละสีจากวงจรสีถ้าเป็นสี ทำเครื่องหมายแล้วรายงาน(Color.Value) ; สิ้นสุดถ้า ; เอ็นด์ไซเคิล ; สิ้นสุดถ้า ; // นี่คือวิธีที่คุณสามารถตั้งค่าเครื่องหมายทั้งหมดในคราวเดียว // แสดงรายการเป็นค่าเฉพาะสี FillNotes(จริง) ; สิ้นสุดขั้นตอน /// ดาวน์โหลดและเรียกใช้ตัวอย่างเหล่านี้บนคอมพิวเตอร์ของคุณ

บทความนี้เกี่ยวกับอะไร?

บทความนี้ยังคงกล่าวถึงชุดบทความ "ขั้นตอนแรกในการพัฒนา 1C" ครอบคลุมถึงหลักการทำงานกับคอลเลกชันสากล หลังจากอ่านบทความแล้ว คุณจะได้เรียนรู้:

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

การบังคับใช้

บทความนี้กล่าวถึงแพลตฟอร์ม 1C:Enterprise 8.3 ของรุ่นปัจจุบัน

วิธีทำงานกับคอลเลกชันสากลใน 1C

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

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

สิ่งสำคัญคือต้องเข้าใจว่าคอลเลกชันไม่ได้จัดเก็บไว้ในฐานข้อมูล (เราไม่ได้พูดถึงประเภทข้อมูล Value Store ซึ่งสามารถจัดเก็บข้อมูลได้เกือบทุกประเภท)

มีอยู่ ประเภทต่างๆคอลเลกชันสากล: อาร์เรย์, โครงสร้าง, การจับคู่, อาร์เรย์คงที่, ตารางค่า, ส่วนตารางฯลฯ แต่คอลเลกชันทั้งหมดมีพฤติกรรมคล้ายกัน

คอลเลกชันสามารถสร้างขึ้นเป็นผลมาจากการทำงานของฟังก์ชัน (ฟังก์ชันส่งคืนคอลเลกชันสากลเป็นค่า)

มีอยู่ คอลเลกชันใหม่ด้วยตนเองโดยการเข้าถึง Constructor และสร้างอินสแตนซ์ของคลาส

ตัวอย่างเช่น: OurArray = อาร์เรย์ใหม่;

ตัวสร้างสำหรับคอลเลกชันทั่วไปจำนวนมากได้รับการกำหนดพารามิเตอร์

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

คำอธิบายที่สอดคล้องกันของ Constructor อยู่ในตัวช่วยไวยากรณ์

ดังนั้นด้วยการใช้พารามิเตอร์ตัวสร้าง คุณสามารถตั้งค่าพฤติกรรมที่ต้องการของวัตถุที่กำหนดได้ทันที

แต่พารามิเตอร์เป็นทางเลือก นักพัฒนาไม่สามารถตั้งค่าและกำหนดพฤติกรรมของ Array เพิ่มเติมได้ตามที่เห็นสมควร

คอลเลกชันสากลเกือบทั้งหมดสามารถสร้างขึ้นได้โดยใช้ตัวสร้าง (ข้อยกเว้นคือส่วนของตารางซึ่งทำหน้าที่เป็นอ็อบเจ็กต์การกำหนดค่า)

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

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

ตัวอย่างเช่น, อาร์เรย์ของเรา. โปรดทราบว่าในกรณีนี้ ระบบจะส่งคืนองค์ประกอบ Array ที่มีดัชนี 3 และนี่คือองค์ประกอบที่สี่ของ Array

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

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

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

สำหรับคอลเลกชันทั่วไปส่วนใหญ่ วิธีการที่ใช้ได้แก่ นับ จัดทำดัชนี เพิ่ม แทรก ลบ และค้นหา

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

วิธีการ Index ไม่มีอยู่สำหรับคอลเลกชันทั้งหมด แต่สำหรับคอลเลกชันที่สามารถอ้างอิงองค์ประกอบได้เท่านั้น ตัวอย่างก็คือ ตารางค่า.

ตารางค่า– นี่คือคอลเลกชันเฉพาะของแถว โดยแถวสามารถมีคอลัมน์ที่แตกต่างกันได้ ประเภทต่างๆค่านิยม

แต่ละบรรทัดแสดงถึงเอนทิตีที่เป็นอิสระ คุณสามารถรับลิงค์ได้ผ่านบรรทัดนี้คุณสามารถเข้าถึงค่าของคอลัมน์ในบรรทัดนี้

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

วิธีการเพิ่มค่าใหม่ให้กับ คอลเลกชันนี้มีอยู่ในคอลเลกชันสากลเกือบทุกแห่ง รูปแสดงวิธีการเติมอาร์เรย์ด้วยค่าตั้งแต่ 0 ถึง 10 ในสองวิธี

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

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

ไวยากรณ์: แทรก (,)

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

หากต้องการลบองค์ประกอบออกจากคอลเลกชัน ให้ใช้วิธีการ ลบ. วิธีการ Delete ระบุตามดัชนีว่าองค์ประกอบใดที่เราจะลบ

ไวยากรณ์: ลบ()
ตัวอย่างการใช้งาน: OurArray.Delete(5);

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

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

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

หากพบค่า วิธีการนี้จะส่งคืนดัชนีหรือสตริงที่ระบุ หากไม่พบค่า ระบบจะส่งกลับค่าประเภท ไม่ได้กำหนด. สัมพันธ์กับ Array จะส่งกลับ ดัชนีหรือค่า ไม่ได้กำหนด.

ตัวอย่างการใช้งาน: ตัวแปรของเรา = OurArray.Find(8);

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

วิธีการเพิ่มเติมสำหรับ Array

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

โดยเฉพาะอย่างยิ่ง ตัวแปร QuantumInArray สามารถกำหนดได้แตกต่างกัน:

ปริมาณInArray = OurArray.InBorder();
จากนั้น เมื่ออธิบายวงจร ไม่ควรลบสิ่งใดออกจากตัวแปรนี้

วิธีการ Set ช่วยให้คุณสามารถกำหนดค่าให้กับองค์ประกอบ Array ตามดัชนีได้

ไวยากรณ์: ติดตั้ง(,)

ตัวอย่าง: OurArray.Set(2,8);

ทางเลือกอื่น: อาร์เรย์ของเรา = 8;

คุณสามารถใช้วิธีการสำหรับอาร์เรย์ รับสำหรับการอ่านค่าดัชนีโดยไม่ต้องใช้วงเล็บเหลี่ยม

ไวยากรณ์: รับ()

ตัวอย่าง: ตัวแปรของเรา = OurArray.Get(2);

ทางเลือกอื่น: ตัวแปรของเรา = OurArray;

โครงสร้างการรวบรวมสากล

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

โครงสร้างคือคอลเลกชัน แต่ละค่าประกอบด้วยคู่ องค์ประกอบแรกของคู่เรียกว่า สำคัญ. องค์ประกอบที่สองของคู่คือ ความหมาย.

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

โครงสร้างนี้ใช้งานได้สะดวกมากหากเราต้องการสร้างรายการพารามิเตอร์บางอย่าง ถ้านี้ โครงสร้างเรียกว่า โครงสร้างของเราจากนั้นเราจะอ้างอิงถึงสองค่าของมันดังนี้: OurStructure.Code และ OurStructure.Name

การเข้าถึงประเภทนี้สะดวกกว่าถ้าเรากำหนดพารามิเตอร์ทั้งหมดใน Array และเข้าถึงด้วยดัชนี

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

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

นอกจากนี้ โครงสร้างจะถูกใช้หากขั้นตอนและฟังก์ชันมีพารามิเตอร์ที่ส่งผ่านจำนวนมาก

จากนั้นจะสะดวกกว่ามากในการเขียนพารามิเตอร์ทั้งหมดลงในโครงสร้างแล้วส่งต่อ เหล่านั้น. พารามิเตอร์ของขั้นตอนและฟังก์ชันเป็นแบบ "บรรจุ"

แยกกันก็ควรสังเกตว่าเป็น สำคัญไม่มีบรรทัดใดๆ ที่สามารถปรากฏในโครงสร้างได้อย่างแน่นอน มีข้อจำกัดบางประการ

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

การเริ่มต้นที่ยอมรับได้ สำคัญด้วยตัวอักษรหรือขีดล่าง ดังนั้น, สำคัญต้องเป็นไปตามข้อกำหนดสำหรับการสร้างตัวระบุ

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

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

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

องค์ประกอบโครงสร้างเข้าถึงได้โดยใช้ชื่อคีย์เท่านั้น อย่างไรก็ตาม For Each loop ยังใช้ได้กับโครงสร้างด้วย แต่คุณไม่ควรยึดถือลำดับขององค์ประกอบโครงสร้าง

โครงสร้างถูกสร้างขึ้นในลักษณะเดียวกับคอลเลกชันทั่วไปอื่นๆ โดยใช้ตัวสร้างใหม่ โดยระบุประเภทข้อมูล โครงสร้าง

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

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

ตัวอย่างเช่น: โครงสร้างของเรา = โครงสร้างใหม่ (“รหัส, ชื่อ”, 133, “วาสยา”);

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

มีวิธีการเพิ่มค่าใหม่ให้กับโครงสร้าง แทรกซึ่งจะแทรกคู่ใหม่ (คีย์และค่า)

ตัวอย่างเช่น: OurStructure.Insert(“สมาชิกในครอบครัว”,3);

โครงสร้างมีลักษณะเป็นอีกวิธีหนึ่งที่ใช้ค่อนข้างบ่อย นี่คือวิธีการ คุณสมบัติ.

เมื่อใช้วิธีการนี้ คุณจะเข้าใจได้ว่ามีองค์ประกอบในโครงสร้างนี้ที่คีย์มีชื่อเช่นนั้นหรือไม่

หากมีองค์ประกอบดังกล่าว ระบบจะส่งคืนค่า True มิฉะนั้นจะคืนค่าเป็น False

ตัวอย่างเช่น การแสดงออก โครงสร้างของเราทรัพย์สิน (“สมาชิกในครอบครัว”)จะเท่ากับค่า True วิธีนี้ใช้ค่อนข้างบ่อยเมื่อวิเคราะห์โครงสร้าง

เช่นเดียวกับคอลเลกชันสากลอื่นๆ คุณสามารถเข้าถึงคุณสมบัติของโครงสร้างตามดัชนีได้ แต่ดัชนีสำหรับโครงสร้างเป็นค่าสตริง

ตัวอย่างเช่น: รายงาน (โครงสร้างของเรา ["สมาชิกในครอบครัว"]);

อย่างไรก็ตาม เราไม่ควรลืมว่าโครงสร้างเป็นชุดของวัตถุที่ไม่เรียงลำดับ ซึ่งเป็นเหตุผลว่าทำไมการเข้าถึงด้วยดัชนี 0, 1, 2 จึงเป็นที่ยอมรับไม่ได้

คอลเลกชันทั่วไป รายการของค่า

รายการค่าเป็นรายการเชิงเส้นขององค์ประกอบประเภทข้อมูลใดๆ

แต่ละองค์ประกอบประกอบด้วยค่าหลายค่า แผนผังรายการค่าสามารถแสดงเป็นรายการที่มีสี่คอลัมน์ได้

คอลัมน์แรก - เครื่องหมาย. มีชนิดข้อมูลบูลีนและอนุญาตให้ผู้ใช้ทำเครื่องหมายหรือยกเลิกการทำเครื่องหมายในช่อง

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

คอลัมน์ที่สามคือค่าที่เก็บไว้นั่นคือ นี่คือข้อมูลประเภทใดก็ได้ และอาจแตกต่างกันในบรรทัดที่ต่างกัน

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

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

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

เราจะพบ รายการค่าในผู้ช่วยซิแท็กซ์ ตัวสร้าง รายการค่าไม่กำหนดพารามิเตอร์ (คุณไม่สามารถตั้งค่าเริ่มต้นใดๆ ได้)

มีวิธีต่างๆ เช่น:

  • แทรก(,) ;
  • เพิ่ม(,);
  • ปริมาณ();
  • ดัชนี().

นอกจากนี้ยังมีวิธีพิเศษ เช่น ยกเลิกการโหลดค่า(). สิ่งนี้จะสร้างอาร์เรย์ที่จะคัดลอกรายการค่าลงไป ตัวอย่างเช่น:

อาร์เรย์ขององค์ประกอบ = รายการ PriceTypes.OutloadValues();

นอกจากนี้ยังมีวิธีย้อนกลับ:
ListPriceTypes.LoadValues(ArrayItems);

มีวิธีการค้นหา:
FindByValue(); FindByIdentifier()

มีวิธีคัดลอก:
ListCopy = PriceTypeList.Copy();
วิธีการนี้มีวัตถุประสงค์เพื่อทำการแก้ไขบางอย่างกับสำเนา

มีวิธีดังนี้:
เรียงลำดับตามค่า();
เรียงลำดับตามมุมมอง()

วิธีการ เลือกรายการ(,)และ ทำเครื่องหมายรายการ()เรียกกล่องโต้ตอบโมดอลที่หยุดการทำงานของอัลกอริทึมจนกว่าผู้ใช้จะปิดหน้าต่าง

เมื่อต้องการใช้วิธีการเหล่านี้ในคุณสมบัติการกำหนดค่า โหมดการใช้กิริยาจะต้องตั้งค่าเป็น ใช้.

โค้ดตัวอย่างที่เรียกจากโมดูลแอปพลิเคชันที่ได้รับการจัดการ:

แสดงรหัสนี้ในโหมดผู้ใช้ (กล่องโต้ตอบโมดอล)

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

เราสร้าง ทีมใหม่ กรอกของขวัญให้โอนไปยังแบบฟอร์มและกำหนดตัวจัดการการดำเนินการสำหรับแบบฟอร์ม

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

หากต้องการคุณสามารถแก้ไขรายการได้: สามารถเพิ่มองค์ประกอบบางส่วนได้, บางส่วนสามารถลบออกได้

การปฏิบัติตามข้อกำหนดการรวบรวมอเนกประสงค์

คอลเลกชั่นนี้มีความคล้ายคลึงกับ โครงสร้าง. เช่นเดียวกับโครงสร้าง การแมปคือชุดของค่าที่ประกอบด้วยคีย์และค่านั้นเอง

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

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

ตัวสร้างการปฏิบัติตามข้อกำหนดซึ่งแตกต่างจากโครงสร้างไม่มีความสามารถในการระบุพารามิเตอร์

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

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

เมื่อแทรกองค์ประกอบลงในคอลเลกชัน Match นอกเหนือจากวิธีการ แทรก(,)อีกวิธีในการแทรกค่าคือการใช้ตัวดำเนินการมอบหมายปกติ

ตัวอย่างเช่น: การแข่งขันของเรา = การแข่งขันใหม่;
นัด = 999;

เหล่านั้น. หากไม่มีองค์ประกอบอยู่ในคอลเลกชัน องค์ประกอบนั้นจะถูกเพิ่มโดยใช้ตัวดำเนินการมอบหมาย และหากมีอยู่ องค์ประกอบนั้นจะได้รับการอัปเดต

สิ่งนี้ตรงกันข้ามกับโครงสร้าง

ตารางค่านิยมของคอลเลกชันสากล

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

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

ความแตกต่าง ตารางค่าจากอาร์เรย์สองมิติ:

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

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

ดังนั้น, ตารางค่าประกอบด้วยชุดแถวและชุดคอลัมน์ ทั้งแถวและคอลัมน์เป็นคอลเลกชัน

เหล่านั้น. ภายในคอลเลกชัน ตารางค่ามีอีกสองคอลเลกชัน ลองหันไปหาผู้ช่วยไวยากรณ์แล้วค้นหา ตารางค่า.

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

จุดสำคัญ! ขั้นตอนการสร้าง ตารางค่าจะต้องคอมไพล์ &OnServer

ก่อนที่คุณจะเริ่มทำงานด้วย ตารางค่าคุณต้องพิจารณาว่าจะมีคอลัมน์ใด (เช่น สร้างคอลัมน์เหล่านั้น) ไวยากรณ์:

เพิ่ม(,)
(ไม่จำเป็น)
ประเภท: สตริง.
(ไม่จำเป็น)
ประเภท: คำอธิบายประเภท
(ไม่จำเป็น)
ประเภท: สตริง.
(ไม่จำเป็น)
ประเภท: หมายเลข.

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

เพื่อเรียกโพรซีเดอร์นี้เราจะใช้คำสั่ง

ในคำอธิบาย ตารางค่าองค์ประกอบของคอลเลกชันได้อย่างแม่นยำ ค่าตารางแถว.

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

เพื่อเพิ่ม บรรทัดใหม่ไปที่ตารางคุณต้องใช้วิธีการอย่างใดอย่างหนึ่ง เพิ่ม(), หรือ แทรก(). ในกรณีที่สอง คุณควรระบุว่าควรวางบรรทัดที่ต้องการในตำแหน่งใด

ในการกำหนดค่าให้กับคอลัมน์ เราใช้จุดเพื่อเข้าถึงชื่อคอลัมน์หรือดัชนี (โดยใช้วงเล็บเหลี่ยม)

สำหรับการกรอก ตารางค่าสามารถใช้วิธีการต่อไปนี้:

ชัดเจน()– เพื่อลบแถวทั้งหมดออกจาก ตารางค่า.

เติมค่า(,)– ให้คุณเติมคอลัมน์ทั้งหมดหรือคอลัมน์ที่เลือกด้วยค่าเดียว
โหลดคอลัมน์(,)– โหลดคอลัมน์จากอาร์เรย์
ยกเลิกการโหลดคอลัมน์()– ยกเลิกการโหลดคอลัมน์ลงในอาร์เรย์

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

สำเนา(,)– ช่วยให้คุณสร้างตารางใหม่ตามตารางที่มีอยู่ ตารางค่าและไม่ใช่ทุกแถวและทุกคอลัมน์ แต่มีเพียงบางแถวเท่านั้น ค่าส่งคืน – ตารางค่า.

คุณสามารถคัดลอกโครงสร้างได้ ตารางค่า. มีวิธีที่สอดคล้องกันสำหรับสิ่งนี้ คัดลอกคอลัมน์(). เราจะได้อันเปล่าๆ ตารางค่าด้วยโครงสร้างที่ต้องการ

ใน ตารางค่ามีวิธีหนึ่ง ทั้งหมด(). คุณสามารถระบุคอลัมน์ที่คุณต้องการรวมค่าตัวเลขได้ สัมพันธ์กับโค้ดที่แสดงก่อนหน้านี้ใน Tableau คุณสามารถคำนวณค่าได้: TK.Total (“จำนวน”).

ใน ตารางค่าเป็นไปได้ที่จะจัดกลุ่ม (ยุบ) ค่าตัวเลขด้วยค่าที่เหมือนกันของบางคอลัมน์โดยใช้วิธีการ ทรุด(,).

สัมพันธ์กับโค้ดที่แสดงก่อนหน้านี้ใน Tableau คุณสามารถคำนวณค่าได้: TK.Collapse("วันในสัปดาห์", "จำนวน")

ตารางค่าสามารถแสดงบนหน้าจอผู้ใช้เพื่อให้คุณสามารถดำเนินการใด ๆ กับมันได้ แต่ไม่เหมือน รายการค่าคุณไม่สามารถเรียกตารางบนหน้าจอจากโค้ดโปรแกรมได้

เพื่อแสดงผล ตารางค่าบนหน้าจอ ให้สร้างแอตทริบิวต์ของฟอร์มและกำหนดประเภทข้อมูลให้กับมัน ตารางค่า.

หลังจากนั้นควรแสดงตารางผลลัพธ์ในแบบฟอร์ม

ในโมดูลแบบฟอร์มที่ส่วนท้ายของอัลกอริทึมที่คอมไพล์ไว้ก่อนหน้านี้ (ในขั้นตอนการสร้างตารางค่า) คุณควรเพิ่ม:
ValueInFormData(TK, ตาราง);

คอลเลกชันสากล ต้นไม้แห่งคุณค่า

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

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

เนื่องจากแถวสามารถอยู่ในลำดับรองซึ่งกันและกัน แต่ละแถวจึงสามารถมีพาเรนต์ได้ เช่นเดียวกับแถวรองด้วย

มาสร้างคำสั่ง Tree ที่เกี่ยวข้องและขั้นตอนการประมวลผลกัน

มาสร้างกันเถอะ โดยมีแถวหลักหนึ่งแถวและแถวรองสองแถว

มาสร้างแอตทริบิวต์ของแบบฟอร์มกันดีกว่า เดอร์ซน(ชนิดข้อมูล – ทรีค่า)

สำหรับแอตทริบิวต์นี้ เราจะสร้างคอลัมน์ปีและเดือน

ย้ายองค์ประกอบที่เกี่ยวข้อง เดอร์ซนบนแบบฟอร์ม

ในตอนท้าย ขั้นตอน TreeOnServer()มาเพิ่ม:

ValueInFormData(TreeZn, DerZn);

เรามาตรวจสอบสิ่งที่เกิดขึ้นในโหมดผู้ใช้กันดีกว่า

การใช้ปุ่ม เพิ่มคุณสามารถเพิ่มบรรทัดใหม่ได้ พวกเขายังสามารถสร้างลำดับชั้นได้

ในการสำรวจองค์ประกอบทั้งหมดของแผนผังคุณค่า เราจำเป็นต้องใช้การเรียกซ้ำ เช่น เรียกขั้นตอนจากตัวมันเอง ตัวอย่างเช่น การประมวลผลแผนผังค่าอาจมีลักษณะดังนี้:

นี่เป็นการสรุปความคุ้นเคยครั้งแรกของเรากับคอลเลกชันสากล

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

ในหน่วยนี้เราจะมาทำความรู้จักกับประเภทข้อมูลใหม่ของภาษา 1C ที่เรียกว่า รายการค่า

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

// สร้างรายการค่า

รายการเพิ่ม(23);

จนถึงตอนนี้ทุกอย่างดูเหมือนอาร์เรย์มากใช่ไหม แต่ขอเดินหน้าต่อไป หากต้องการแสดงตัวเลขเหล่านี้ให้ผู้ใช้เห็น เราเขียนว่า:

// วนซ้ำแต่ละองค์ประกอบของรายการสำหรับแต่ละองค์ประกอบจากรายการ รายงานวนซ้ำ (Element.Value);

// แสดงค่าขององค์ประกอบ EndCycle;

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

มาดูคุณสมบัติเพิ่มเติมบางอย่างกัน ค่านิยม

จัดเรียงได้

ตัวอย่างเช่น เราสามารถจัดเรียงรายการค่าต่างๆ ได้อย่างง่ายดาย รายการสามารถทำได้ด้วยตัวเอง:

List.SortByValue(SortDirection.Age); ในกรณีของอาร์เรย์ปกติ เราจะต้องใช้อัลกอริธึมการเรียงลำดับอย่างใดอย่างหนึ่ง (เช่น "บับเบิ้ล")

สามารถค้นหาได้

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

ใส่หมายเลข(หมายเลข); // ป้อนตัวเลขจากผู้ใช้ FoundElement = List FindByValue(ตัวเลข);

หาก FoundItem = ไม่ได้กำหนด ดังนั้น OpenValue("ไม่พบหมายเลข " + ​​หมายเลข + " ในรายการ!"); มิฉะนั้น

OpenValue("Number " + Number + " อยู่ในรายการ นี่คือ:" + FoundElement.Value);

สิ้นสุดถ้า; รายการค่า

รองรับการแทรกและการลบ

รายการค่าต่างๆ เช่น อาร์เรย์ รองรับการแทรกและการลบองค์ประกอบ:

รายการ. แทรก(0, 1,000);

// ใส่หลักพันที่จุดเริ่มต้นของรายการ List.Delete(O); // และลบออกจากรายการทันที แทรก(List.Quantity(), 13);

// ใส่ 13 ที่ท้ายรายการ Report(List[List.Quantity() - 1]);

// แสดงองค์ประกอบสุดท้ายของรายการ (13)

รองรับวงเล็บเหลี่ยม

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

รายงาน (รายการค่า); // แสดงองค์ประกอบที่สองของรายการ ดังนั้น เราสามารถดูองค์ประกอบทั้งหมดของรายการได้ดังนี้:

สำหรับ A = 0 โดย List.Quantity() - 1 รายงานลูป (List[A].Value);

สิ้นสุดรอบ;

สามารถสร้างสำเนาของตัวเองได้

รายการค่ามีคุณสมบัติที่ยอดเยี่ยม - สามารถสร้างสำเนาของตัวเองได้:

ListCopy = รายการ.คัดลอก();

// ทำสำเนาของรายการ // ตอนนี้เราสามารถเปลี่ยนสำเนาของรายการได้อย่างปลอดภัย // ในขณะที่รายการดั้งเดิมจะไม่เปลี่ยนสำเนาของรายการ ค่า = 123456;

สามารถแปลงเป็นอาร์เรย์ได้

และสุดท้าย คุณสามารถดัมพ์องค์ประกอบทั้งหมดของรายการลงในอาร์เรย์ได้อย่างง่ายดายเมื่อใดก็ได้:

ArrayNumbers = รายการ ยกเลิกการโหลดค่า();

//ทิ้งลงในอาร์เรย์

สำหรับ A = 0 โดย ArrayNumber.Quantity() - 1 รอบ

รายงาน (ArrayNumbers[A]); // ไม่จำเป็นต้องระบุ // ค่าตัวเลือก

สิ้นสุดรอบ;

เพื่อฝึกฝนและรวบรวมเนื้อหาของหน่วยนี้ ขอแนะนำให้ทำภารกิจต่อไปนี้ให้เสร็จสิ้น

จำเป็นต้องป้อนตัวเลข 5 ตัวจากผู้ใช้ ค้นหาตัวเลขที่ใหญ่ที่สุดและเล็กที่สุดแล้วแสดงให้ผู้ใช้เห็น โซลูชันต้องใช้รายการค่า

สารละลาย

รายการ = รายการค่าใหม่;

// สร้างรายการค่าสำหรับ A = 1 ถึง 5 หมายเลขรอบ = 0;

ใส่หมายเลข(หมายเลข); // ป้อนตัวเลขจากรายการผู้ใช้เพิ่ม (หมายเลข); // และเพิ่มเข้าไปในรายการ EndCycle; // และต่อ ๆ ไป 5 ครั้ง

// เรียงลำดับรายการตัวเลข

รายการ. จัดเรียงตามค่า(SortDirection.Age);

// หลังจากการเรียงลำดับ องค์ประกอบแรกของรายการคือ // องค์ประกอบที่เล็กที่สุด และองค์ประกอบสุดท้ายคือ OpenValue ที่ใหญ่ที่สุด("องค์ประกอบที่เล็กที่สุด" + รายการ +

" และที่ใหญ่ที่สุด " + List[List.Quantity() - 1]);