จะรับข้อมูลจากส่วนตารางของเอกสารได้อย่างไร? เข้าถึงตารางส่วนที่ 1s 8

💖 ชอบไหม?แชร์ลิงก์กับเพื่อนของคุณ

มีชิ้นส่วนแบบตารางสำหรับวัตถุจำนวนมากใน 1C:

  • ไดเรกทอรี
  • เอกสาร
  • รายงานและการประมวลผล
  • ผังบัญชี
  • แผนประเภทลักษณะเฉพาะ
  • แผนประเภทการคำนวณ
  • กระบวนการทางธุรกิจและงาน

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

มาดูเทคนิคบางอย่างในการทำงานกับส่วนต่างๆ แบบตารางกัน

วิธีเลี่ยงส่วนที่เป็นตาราง

หากต้องการสำรวจส่วนของตาราง คุณสามารถใช้การวนซ้ำได้ สำหรับทุกคน

สำหรับแต่ละแถวจากส่วนตารางของวงจร

รายงาน (แอตทริบิวต์ String. TabularPart);

เอ็นด์ไซเคิล ;

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

วิธีรับและข้ามแถวที่เลือกของส่วนที่เป็นตาราง

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

หากต้องการดูรายการบรรทัดที่เลือก ให้ใช้รหัสต่อไปนี้:

หากต้องการวนซ้ำบรรทัดที่เลือก ให้ใช้การวนซ้ำ สำหรับทุกคน:

SelectedRows = FormElements ชื่อเขตข้อมูลตาราง แถวที่เลือก;

สำหรับแต่ละแถวจากแถวที่เลือก วนซ้ำ

//เนื้อหาวนซ้ำ

เอ็นด์ไซเคิล ;

วิธีเลือกแถวของส่วนตาราง (เขตข้อมูลตาราง) โดยทางโปรแกรมและยกเลิกการเลือก

หากต้องการยกเลิกการเลือกแถวของช่องตารางโดยทางโปรแกรม:

องค์ประกอบของแบบฟอร์ม ชื่อเขตข้อมูลตาราง แถวที่เลือก ชัดเจน() ;

หากต้องการเลือกแถวทั้งหมดของเขตข้อมูลตารางโดยทางโปรแกรม:

สำหรับแต่ละ CurrentRow จาก TabularPart Loop
องค์ประกอบของแบบฟอร์ม ชื่อเขตข้อมูลตาราง เส้นที่เลือก เพิ่ม(แถวปัจจุบัน);
เอ็นด์ไซเคิล ;

วิธีเคลียร์ส่วนของโต๊ะ

ตารางส่วนหนึ่ง ชัดเจน() ;

วิธีรับแถวปัจจุบันของส่วนของตาราง

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

สำหรับรูปแบบปกติ โค้ดจะมีลักษณะดังนี้:

องค์ประกอบของแบบฟอร์ม ชื่อเขตข้อมูลตาราง ข้อมูลปัจจุบัน;

สำหรับแบบฟอร์มที่ได้รับการจัดการ:

องค์ประกอบ ชื่อเขตข้อมูลตาราง ข้อมูลปัจจุบัน;

วิธีเพิ่มแถวใหม่ในส่วนของตาราง

เพิ่มบรรทัดใหม่ต่อท้ายส่วนของตาราง:

NewRow = ส่วนของตาราง เพิ่ม() ;

เพิ่มบรรทัดใหม่ในส่วนใดก็ได้ของตาราง (บรรทัดถัดไปจะถูกเลื่อน):

NewRow = ส่วนของตาราง แทรก(ดัชนี)
//ดัชนี - จำนวนบรรทัดที่เพิ่ม การกำหนดหมายเลขบรรทัดเริ่มต้นจากศูนย์

ใหม่แถว. อุปกรณ์ประกอบฉาก1 = "มูลค่า" ;

วิธีกรอกรายละเอียดของแถวตารางโดยทางโปรแกรม

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

ขั้นตอนที่สร้างโดยตัวจัดการมีพารามิเตอร์สามตัว:

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

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

ขั้นตอน TabularPartAtStartEditing (องค์ประกอบ, NewRow, คัดลอก)

//หากผู้ใช้แก้ไขบรรทัดที่มีอยู่ เราจะไม่ทำอะไรเลย
ถ้าไม่ใช่ NewRow แล้ว
กลับ;
สิ้นสุดถ้า ;

//หากเป็นบรรทัดใหม่ ให้ตั้งค่าบัญชีการบัญชี
TechString = รายการ ข้อมูลปัจจุบัน; // รับแถวปัจจุบันของส่วนตาราง
เทคสตริง การบัญชี = ผังบัญชี พึ่งตนเองได้. จำเป็นบัญชี;
สิ้นสุดขั้นตอน

บ้าน สำหรับนักพัฒนามือใหม่ เรียนรู้การเขียนโปรแกรม

จะรับข้อมูลจากส่วนตารางของเอกสารได้อย่างไร?

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

เมื่อต้องการทำเช่นนี้ คุณสามารถใช้คำขอกับข้อความต่อไปนี้:

เลือกการขายสินค้าและบริการต่างๆ ศัพท์ AS ศัพท์จากเอกสาร การขายสินค้าและบริการ

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

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

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

เลือกการขายสินค้าและบริการต่างๆ ตามระบบการตั้งชื่อจากเอกสาร การขายสินค้าและบริการ วิธีการขายสินค้า และบริการ ลิงค์ = &Link

ในการบัญชีเงินและสินค้ามีการใช้ตารางต่าง ๆ กันอย่างแพร่หลายในธุรกิจ เอกสารเกือบทุกฉบับจะเป็นตาราง

ตารางหนึ่งแสดงรายการสินค้าที่จะจัดส่งจากคลังสินค้า ตารางอื่นแสดงภาระผูกพันในการชำระค่าสินค้าเหล่านี้

ดังนั้นใน 1C การทำงานกับตารางจึงถือเป็นจุดเด่น

ตารางใน 1C เรียกอีกอย่างว่า "ส่วนตาราง" ไดเร็กทอรี เอกสาร และอื่นๆ มีสิ่งเหล่านี้

อันเป็นผลมาจากการดำเนินการแบบสอบถาม แบบสอบถามจะส่งกลับตารางที่สามารถเข้าถึงได้ในสองวิธีที่แตกต่างกัน

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

//ตัวเลือกที่ 1 – การเข้าถึงผลลัพธ์การสืบค้นตามลำดับ

//ไปเอาโต๊ะ.
เลือก = Query.Run().Select();
// เราดูทุกบรรทัดของผลลัพธ์การสืบค้นตามลำดับ
ในขณะที่ Select.Next() วนซ้ำ
รายงาน(ชื่อที่เลือก);
สิ้นสุดรอบ;

//ตัวเลือก 2 – การอัปโหลดไปยังตารางค่า
คำขอ = คำขอใหม่ ("เลือกชื่อจาก Directory.Nomenclature");
//ไปเอาโต๊ะ.
ตาราง = Query.Run().Unload()
//นอกจากนี้ เรายังวนซ้ำทุกบรรทัดได้ด้วย
สำหรับแต่ละแถวจากรอบตาราง
รายงาน (String.Name);
สิ้นสุดรอบ;
//หรือเข้าถึงสตริงโดยพลการ
Row = Table.Find("พลั่ว", "ชื่อ");

คุณลักษณะที่สำคัญคือในตารางที่ได้รับจากผลลัพธ์แบบสอบถาม คอลัมน์ทั้งหมดจะถูกพิมพ์อย่างเคร่งครัด ซึ่งหมายความว่าโดยการร้องขอฟิลด์ Name จากไดเร็กทอรี Nomenclature คุณจะได้รับคอลัมน์ประเภท String ที่มีความยาวที่อนุญาตได้ไม่เกิน N ตัวอักษร

ตารางบนแบบฟอร์ม (ไคลเอ็นต์แบบหนา)

ผู้ใช้ทำงานกับตารางเมื่อวางบนแบบฟอร์ม

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

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

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

คลิกปุ่ม "..." ในคุณสมบัติข้อมูล หากต้องการดูรายการส่วนต่างๆ แบบตาราง คุณต้องขยายสาขา Object

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

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

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

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

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

ในการจัดการตาราง คุณต้องแสดงแผงคำสั่งในแบบฟอร์ม เลือกรายการเมนู แบบฟอร์ม/แทรกการควบคุม/แถบคำสั่ง

ในคุณสมบัติของแถบคำสั่ง ให้เลือกกล่องกาเครื่องหมายป้อนอัตโนมัติเพื่อให้ปุ่มบนแผงปรากฏขึ้นโดยอัตโนมัติ

ตารางบนฟอร์ม (ไคลเอ็นต์แบบบาง/ที่มีการจัดการ)

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

หากคุณต้องการวางตารางค่า ให้เพิ่มแอตทริบิวต์ของฟอร์มใหม่และระบุประเภท – ตารางค่าในคุณสมบัติ

หากต้องการเพิ่มคอลัมน์ ให้ใช้เมนูคลิกขวาบนแอตทริบิวต์แบบฟอร์มนี้ เลือกเพิ่มคอลัมน์แอตทริบิวต์

จากนั้นลากตารางไปทางซ้ายด้วย

เพื่อให้ตารางปรากฏขึ้น แผงคำสั่งในคุณสมบัติของตาราง ให้เลือกค่าในส่วนการใช้งาน – ตำแหน่งแถบคำสั่ง

การอัพโหลดตารางไปยัง Excel

ตาราง 1C ใดๆ ที่อยู่บนแบบฟอร์มสามารถพิมพ์หรืออัปโหลดไปยัง Excel ได้

โดยคลิกขวาที่พื้นที่ว่างในตารางแล้วเลือกรายการ

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

บอกเพื่อน