สิ่งพิมพ์ สิ่งพิมพ์แบบฟอร์มที่พิมพ์ได้ใน 1c

ทั้งหมด เอกสารอิเล็กทรอนิกส์สามารถพิมพ์ 1C บนกระดาษได้และทำได้โดยใช้แบบฟอร์มการพิมพ์ 1C แบบฟอร์มที่สามารถพิมพ์ได้ประกอบด้วยบล็อกที่มีชื่อ เช่น Header, Row และ Footer

วิธีทำแบบพิมพ์ก็ชัดเจนแล้ว วิธีแบ่งมันเป็นบล็อก - เช่นกัน แต่การพิมพ์ทั้งหมดนี้เกิดขึ้นได้อย่างไรใน 1C? และโดยเฉพาะอย่างยิ่ง - จะแสดงไม่เพียงแต่ข้อความของเค้าโครงเท่านั้น แต่ยังแสดงเนื้อหาของเอกสารอิเล็กทรอนิกส์ได้อย่างไร

นี่คือสิ่งที่เราจะดูในขณะนี้

การเตรียมเค้าโครงสำหรับการพิมพ์ใน 1C

ในการเริ่มต้นคุณจะต้องเริ่มต้นด้วยสิ่งที่ง่ายที่สุดและกรอกเค้าโครงสำหรับการพิมพ์ใน 1C ด้วยข้อความคงที่และเส้นตาราง ท้ายที่สุดแล้วจะต้องมีคนทำงานน่าเบื่อนี้เหรอ?

เราวางข้อความคงที่สำหรับการพิมพ์ใน 1C

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

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

เราวางการออกแบบเค้าโครงสำหรับการพิมพ์ใน 1C

เรามีพื้นที่ชื่อ String ในนั้นเมื่อพิมพ์ใน 1C แต่ละแถวของตารางของเอกสารผลิตภัณฑ์จะปรากฏขึ้น เราอาจต้องการให้ตารางดูเหมือนตารางเมื่อพิมพ์ใน 1C? จากนั้นคุณจะต้องวาดขอบเขตให้กับมัน

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

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

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

เราวางรูปภาพและดิ้นอื่น ๆ เพื่อพิมพ์ใน 1C

หลายคนถาม - จะวางสิ่งอื่นที่ไม่ใช่ข้อความลงในแบบฟอร์มที่พิมพ์ 1C ได้อย่างไร? ตัวอย่างเช่นรูปภาพ

และมันง่ายมาก ยิ่งกว่านั้นฉันจะบอกทันทีว่าบาร์โค้ด (ถ้าคุณต้องการพิมพ์) ก็เป็นรูปภาพเช่นกัน

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

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

วิธีวางเนื้อหาของเอกสารอิเล็กทรอนิกส์เมื่อพิมพ์ใน 1C

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

ส่วนที่หนึ่ง- จำเป็นต้องวางพารามิเตอร์ที่คุณจะแทนที่ค่าเมื่อพิมพ์ใน 1C บนเค้าโครง

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

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

ทำได้ดังนี้:

เค้าโครง = GetLayout("ชื่อเค้าโครง");
RegionSomething = Layout.GetArea("AreaName");
RegionSomething.Parameters.ParameterName = "สิ่งที่ฉันต้องการทดแทนจากฐานข้อมูล";

อย่างที่คุณเห็น เราเพียงแต่รับโครงร่างตามชื่อ จากนั้นก็เป็นพื้นที่หนึ่ง จากนั้นเราก็เข้าถึงพารามิเตอร์ตามชื่อของมัน

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

วิธีพิมพ์เค้าโครงใน 1C

หลังจากเค้าโครงพร้อมแล้ว ก็ถึงเวลาคิดเกี่ยวกับการเขียนโปรแกรมกระบวนการพิมพ์ใน 1C

โดยปกติการพิมพ์ใน 1C จะถูกตั้งโปรแกรมโดยหลายขั้นตอนที่อยู่ในโมดูลวัตถุเอกสาร -

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

สำหรับแต่ละตัวเลือกเค้าโครง จะมีการดำเนินการขั้นตอน PrintLayoutName() ซึ่งระบุการพิมพ์ของเค้าโครงเฉพาะ นั่นคือสิ่งที่เราจะดูตอนนี้

การเขียนโปรแกรมการพิมพ์ใน 1C ประกอบด้วยสามจุด

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

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

คำขอ = คำขอใหม่;
Query.Text = "เลือก
วันที่,
ตัวเลข,
องค์กร
จาก
เอกสาร.ชื่อเอกสาร
ที่ไหน
ลิงค์ = &DocumentForPrint";
Request.SetParameter("DocumentForPrint", ลิงก์);
เลือก = Query.Run().Select();
การเลือก ถัดไป();

จุดที่ 2. การกรอกเค้าโครงสำหรับการพิมพ์ใน 1C

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

ดังนั้นเราจึงต้องได้รับเอกสารสเปรดชีตก่อน จากนั้นจึงจัดวางเค้าโครง เราพิมพ์พื้นที่ทีละรายการโดยกรอกพารามิเตอร์เค้าโครง

TabDoc = TabularDocument ใหม่;
เค้าโครง = GetLayout("ชื่อเค้าโครง"); //หรือ GetGeneralLayout("")

areaHeader = Layout.GetArea("ส่วนหัว");
TabDoc.Output (ภูมิภาค Cap);

RegionRow = Layout.GetArea("แถว");
ในขณะที่ SelectingDocumentLines.Next() วนซ้ำ
RegionLine.Parameters.Product = SelectionDocumentLines.Product;
TabDoc.Output(ภูมิภาคสตริง);
สิ้นสุดรอบ;

areaCap = Layout.GetArea("ส่วนท้าย");
TabDoc.Output (พื้นที่ Footroom);

จุดที่ 2. การพิมพ์เอกสารใน 1C

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

ในกรณีอื่นๆ คุณสามารถใช้ฟังก์ชันมาตรฐานของออบเจ็กต์ TabularDocument ได้: TabDoc.Show() หรือ TabDoc.Print()

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

ทำไมต้องสร้างแบบฟอร์มการพิมพ์ภายนอก?

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

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

วิธีสร้างแบบฟอร์มการพิมพ์ภายนอก

มาดูกระบวนการสร้างแบบฟอร์มพิมพ์ 1C ภายนอกทีละขั้นตอน:

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

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

การสร้างแบบฟอร์มการพิมพ์ภายนอกโดยใช้แบบฟอร์มมาตรฐานที่มีการเปลี่ยนแปลงเล็กน้อย

ลองพิจารณาขั้นตอนนี้โดยใช้ตัวอย่างการสร้างรูปแบบการพิมพ์ภายนอกของเอกสารการโอนสากลสำหรับเอกสาร การขายสินค้าและบริการ 1C: การบัญชี จะแตกต่างจากแบบฟอร์มการพิมพ์มาตรฐานโดยมีตราประทับขององค์กร

  1. การสร้างการประมวลผลภายนอกด้วยอุปกรณ์ประกอบฉาก การอ้างอิงวัตถุประเภทข้อมูล - DocumentLink.การขายสินค้าและบริการ.
  2. เราค้นหาเค้าโครงของแบบฟอร์มที่พิมพ์ UPD มาตรฐาน (อยู่ในเค้าโครงทั่วไป) และคัดลอก (ลาก) ลงในหน้าต่างการประมวลผลภายนอก เค้าโครงของแบบฟอร์มการพิมพ์อื่น ๆ อาจอยู่ในเอกสารหรือหนังสืออ้างอิงเอง
  3. เราทำการเปลี่ยนแปลงที่จำเป็นกับเค้าโครงที่คัดลอกของแบบฟอร์มที่พิมพ์
  4. เราพบฟังก์ชันที่รับผิดชอบในการสร้างแบบฟอร์มที่พิมพ์ ฟังก์ชันนี้ควรส่งคืนเอกสารสเปรดชีตที่สร้างขึ้น คัดลอกเนื้อหาไปยังฟังก์ชันส่งออก ผนึก()ในโมดูลออบเจ็กต์การประมวลผลภายนอก
    ในกรณีของเรานี่คือฟังก์ชัน ส่งออก PrintUniversalTransferDocument()จากโมดูลวัตถุเอกสาร การขายสินค้าและบริการ
    หากการเปลี่ยนแปลงเค้าโครงมีความสำคัญ (พื้นที่และ/หรือพารามิเตอร์มีการเปลี่ยนแปลง) จะต้องทำการปรับเปลี่ยนฟังก์ชันการพิมพ์อย่างเหมาะสม
  5. เรากำลังพยายามบันทึกการประมวลผลภายนอก อย่างไรก็ตาม คุณอาจได้รับข้อความแสดงข้อผิดพลาดที่ระบุว่าขั้นตอนและฟังก์ชันบางอย่างที่เรียกใช้โดยฟังก์ชันการพิมพ์หายไป ต้องพบฟังก์ชันและขั้นตอนเหล่านี้ในเอกสารต้นฉบับและคัดลอกไปยังโมดูลออบเจ็กต์การประมวลผลภายนอกด้วย หรือปรับลิงค์หากมีการส่งออกฟังก์ชันหรือขั้นตอนดั้งเดิม
  6. (ไม่จำเป็น).หากต้องการทดสอบแบบฟอร์มการพิมพ์ภายนอก จะสะดวกในการสร้างแบบฟอร์มสำหรับวางอุปกรณ์ประกอบฉาก การอ้างอิงวัตถุ- ปุ่ม ดำเนินการต้องเรียกขั้นตอน ผนึก()จากโมดูลวัตถุ เมื่อต้องการทำเช่นนี้ เหตุการณ์คลิกปุ่มจะได้รับขั้นตอน:

ดำเนินการตามเค้าโครงมาตรฐานของแบบฟอร์มที่พิมพ์ซึ่งนักพัฒนาสร้างขึ้นในแอปพลิเคชัน (ซึ่งเรียกว่าเค้าโครง "ส่งมอบ")

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


หากต้องการเปลี่ยนเค้าโครงที่สามารถพิมพ์ได้:




การแก้ไขเค้าโครงของแบบฟอร์มที่พิมพ์เสร็จสมบูรณ์ เมื่อพิมพ์เอกสาร จะใช้เค้าโครงที่ทำการเปลี่ยนแปลง

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

เราหวังว่าคุณจะได้งานที่น่าพอใจ!

จะแทรกโลโก้บริษัทลงในเค้าโครงแบบฟอร์มที่พิมพ์ออกมาได้อย่างไร?

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


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

เราหวังว่าคุณจะได้งานที่น่าพอใจ!

บทความนี้จะบอกคุณโดยละเอียดว่าผู้เริ่มต้นที่มีความรู้เล็กน้อยเกี่ยวกับ 1C 8 สามารถสร้างแบบฟอร์มที่พิมพ์ได้อย่างไร ตัวอย่างเช่นลองใช้หนึ่งในการกำหนดค่า 1C 8 ที่พบบ่อยที่สุด - การบัญชี 2.0- การสร้างแบบฟอร์มการพิมพ์ขั้นตอนการเขียน 1C:

  • การสร้างไฟล์แบบฟอร์มการพิมพ์ภายนอก
  • การสร้างเค้าโครงแบบฟอร์มที่พิมพ์
  • การเขียนโค้ดโปรแกรมเพื่อแสดงข้อมูลแบบฟอร์มที่พิมพ์บนหน้าจอ
  • การสร้างพารามิเตอร์สำหรับการลงทะเบียนแบบฟอร์มที่พิมพ์โดยอัตโนมัติ
  • การเชื่อมต่อแบบฟอร์มการพิมพ์ภายนอกเข้ากับฐาน 1C วิสาหกิจ.

การสร้างแบบฟอร์มการพิมพ์ 1C คำชี้แจงของปัญหา

เราจำเป็นต้องมีในการกำหนดค่า การบัญชี 2.0สร้างแบบฟอร์มการพิมพ์สำหรับเอกสาร การรับสินค้าและบริการ- ในส่วนหัวของแบบฟอร์มที่พิมพ์ แสดงข้อมูลต่อไปนี้:

  • องค์กร;
  • คู่สัญญา;
  • ข้อตกลงคู่สัญญา
  • วันที่ได้รับ.

แสดงข้อมูลในส่วนตารางเป็นตาราง สินค้าเอกสาร. ตารางควรมีคอลัมน์ต่อไปนี้:

  • ศัพท์;
  • ปริมาณ;
  • ราคา;
  • รวม;
  • และราคาของสินค้าสำหรับวันที่ปัจจุบัน (ตามประเภทราคาจากเอกสาร)

ไฟล์ประมวลผลภายนอก

เรามาแก้ไขปัญหากันดีกว่า ก่อนอื่นเรามาเปิด 1C 8 ในโหมดกันก่อน ตัวกำหนดค่า- อยู่ในโหมดนี้ที่การพัฒนาทั้งหมดดำเนินการบนแพลตฟอร์ม 1C 8 ตอนนี้เราจำเป็นต้องสร้างไฟล์ประมวลผลภายนอก โดยคลิกที่เมนู ไฟล์ -> ใหม่…หรือตามไอคอนของไฟล์ใหม่

ในหน้าต่างที่เปิดขึ้น ให้เลือกรายการ การประมวลผลภายนอก.

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

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

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

มาบันทึกไฟล์ประมวลผลภายนอกลงในฮาร์ดไดรฟ์โดยใช้เมนู ไฟล์ -> บันทึก, รูปสัญลักษณ์ บันทึก(ฟล็อปปี้ดิสก์สีน้ำเงิน) หรือแป้นพิมพ์ลัด Ctrl+S- ตั้งชื่อไฟล์ที่บันทึกไว้ว่า “PrintForm”

การสร้างเค้าโครงแบบฟอร์มที่พิมพ์

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

มาเพิ่มโครงร่างใหม่ในแผนผังข้อมูลเมตาการประมวลผลภายนอก เราจะไม่เปลี่ยนแปลงอะไรในหน้าต่างตัวออกแบบโครงร่างแล้วคลิกปุ่ม พร้อม.

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

การเพิ่มส่วนหัวเค้าโครง

ก่อนอื่น เรามาสร้างพื้นที่กันก่อน หมวกจะแสดงข้อมูลส่วนหัวของแบบฟอร์มที่พิมพ์ออกมา สำหรับพื้นที่นี้ เราจะต้องมีเส้นเค้าโครงเจ็ดเส้น มาเลือกกันและตามที่ฉันเขียนไว้ข้างต้นให้กดคีย์ผสม Ctrl + Shift + Nในสนาม ชื่อเขียนว่า "หมวก" แล้วกดปุ่ม ตกลง.

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

โดยปกติแล้วเซลล์เลย์เอาต์สิบสามหรือสิบสี่เซลล์ก็เพียงพอแล้ว ให้เลือกเซลล์เหล่านั้นในแถวแรกของพื้นที่ หมวกและรวมเป็นเซลล์เดียว ( เมนูบริบท -> ผสาน- หลังจากนั้น ดับเบิลคลิกบนเซลล์ขนาดใหญ่ที่ได้ และเขียนชื่อของพารามิเตอร์ ในกรณีของเราคือ "TitleText" เพื่อให้ข้อความที่ป้อนกลายเป็นพารามิเตอร์แบบเต็มให้คลิกขวาที่เซลล์แล้วเลือกรายการในเมนูบริบท คุณสมบัติ- บนบุ๊กมาร์ก เค้าโครงมาหาสนามกันเถอะ การกรอกและเลือกค่า พารามิเตอร์- พารามิเตอร์ในรูปแบบ 1C ระบุด้วยวงเล็บปีกกา “<>».

ส่วนหัวของแบบฟอร์มที่พิมพ์ควรโดดเด่นเหนือข้อความอื่นๆ ดังนั้นให้เลือกเซลล์อีกครั้งและใช้ไอคอนบนแผงการจัดรูปแบบเค้าโครงเพื่อตั้งค่าการจัดแนวข้อความ อยู่ตรงกลางและขนาดตัวอักษร 14

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

รูปภาพนี้แสดงให้เห็นว่าพารามิเตอร์โครงร่างแตกต่างจากข้อความปกติอย่างไร

การเพิ่มส่วนหัวของตารางเค้าโครง

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

การเพิ่มตารางลงในเค้าโครง

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

การเพิ่มส่วนท้ายให้กับเค้าโครง

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

ผลลัพธ์ที่ได้ควรเป็นเค้าโครงที่มีลักษณะดังนี้:

การสร้างแบบฟอร์มการพิมพ์ 1C การเขียนโปรแกรม

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

คุณต้องสร้างฟังก์ชันการส่งออกในโมดูลออบเจ็กต์แบบฟอร์มการพิมพ์ภายนอก ผนึก().

ฟังก์ชั่น Print() ส่งออก EndFunction

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

การเริ่มต้นตัวแปรพื้นฐาน

เรามาสร้างตัวแปรกัน แท็บด็อกซึ่งจะมีเอกสารสเปรดชีต - นี่คือแบบฟอร์มที่พิมพ์ซึ่งเราจะแสดงพื้นที่ที่กรอกของเค้าโครง

TabDoc = TabularDocument ใหม่;

ให้เป็นตัวแปร เค้าโครงเราจะได้เค้าโครงแบบฟอร์มการพิมพ์ที่เราสร้างขึ้น ในการทำเช่นนี้เราใช้ฟังก์ชันในตัว รับเค้าโครง(<ИмяМакета>).

เค้าโครง = GetLayout("เค้าโครง");

เราจะแปลงพื้นที่ทั้งหมดของเลย์เอาต์ให้เป็นตัวแปร เมื่อต้องการทำเช่นนี้ เราใช้วิธีการจัดวาง รับพื้นที่(<ИмяОбласти>) .

HeaderArea = Layout.GetArea("ส่วนหัว"); AreaData = Layout.GetArea("ข้อมูล"); AreaFooter = Layout.GetArea("ส่วนท้าย");

การแสดงผลส่วนหัวของแบบฟอร์มที่พิมพ์ลงในเอกสารสเปรดชีต

ตัวแปรที่จำเป็นทั้งหมดได้รับการเตรียมใช้งานแล้ว มาเริ่มกรอกและแสดงพื้นที่เค้าโครงในเอกสารสเปรดชีตกันดีกว่า ก่อนอื่น เรามากรอกชื่อเรื่องของแบบฟอร์มที่พิมพ์ได้ เพื่อสิ่งนี้ เราจำเป็นต้องส่งผ่านพารามิเตอร์ ข้อความชื่อเรื่องซึ่งเราสร้างขึ้นในเค้าโครง ข้อความที่เราต้องการ ในการกรอกค่าพารามิเตอร์สำหรับพื้นที่เลย์เอาต์จะมีคอลเลกชันพิเศษที่เรียกว่า - ตัวเลือกจากที่ผ่าน “” คุณสามารถรับพารามิเตอร์ใดก็ได้ ในข้อความส่วนหัว เราจะถ่ายโอนข้อความ: "แบบฟอร์มที่พิมพ์" รวมถึงหมายเลขเอกสาร

Header Area.Parameters.TitleText = "พิมพ์แบบฟอร์ม"+LinkToObject.Number;

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

HeaderArea.Parameters.Organization = LinkToObject.Organization; HeaderArea.Parameters.Account = LinkToObject.Account; HeaderArea.Parameters.ReceiptDate = ObjectLink.Date; Header Area.Parameters.Counterparty Agreement = LinkToObject.Counterparty Agreement;

กรอกพารามิเตอร์ทั้งหมดของส่วนหัวแล้วเราจะแสดงในเอกสารสเปรดชีตที่เราสร้างขึ้นซึ่งเราใช้วิธีการนี้ เอาท์พุต(<Область>) .

TabDoc.Output(พื้นที่ส่วนหัว);

การเขียนคำร้องขอความพิการแบบพิมพ์

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

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

มาสร้างตัวแปรที่จะมีการร้องขอกัน

คำขอ = คำขอใหม่;

เราจะเขียนข้อความคำขอโดยใช้ตัวสร้างคำขอ เริ่มต้นด้วยการเขียน:

คำขอข้อความ = "";

วางเคอร์เซอร์ของเมาส์ระหว่างเครื่องหมายคำพูดแล้วกดปุ่มเมาส์ขวา ในเมนูบริบทที่เปิดขึ้น ให้เลือกรายการ ขอตัวสร้างมันจะช่วยเราได้มากในการสร้างแบบฟอร์มการพิมพ์ 1C หลังจากนี้ หน้าต่างตัวออกแบบแบบสอบถามจะเปิดขึ้น โดยมีหลายแท็บ แต่สำหรับการสืบค้นของเรา เราจะต้องการเพียงสี่แท็บ: "ตารางและฟิลด์", "ความสัมพันธ์", "เงื่อนไข", "การรวม / นามแฝง"

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

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

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

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

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

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

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

หากต้องการกรอกพารามิเตอร์ของตารางเสมือน ให้ไปที่แท็บ ตารางและเขตข้อมูลตัวสร้างแบบสอบถามในคอลัมน์ ตารางเลือกตาราง ราคาระบบการตั้งชื่อการตัดล่าสุดและกดปุ่ม ตัวเลือกตารางเสมือนตั้งอยู่ที่ด้านบนสุด ในหน้าต่างที่เปิดขึ้นในสนาม ระยะเวลาคุณควรตั้งค่าพารามิเตอร์ที่จะผ่านวันที่ที่จะทำการลดราคา ในกรณีของเรา นี่จะเป็นวันที่ปัจจุบัน (นั่นคือ วันนี้) ดังนั้นเราจะเรียกพารามิเตอร์ “&CurrentDate” ในช่องเงื่อนไข เราจะเขียนเงื่อนไขสำหรับประเภทราคา เราจะส่งเงื่อนไขดังกล่าวในพารามิเตอร์ด้วย ซึ่งเราจะเรียกว่า "&ประเภทราคา" สภาพผลลัพธ์จะมีลักษณะเช่นนี้ (โดยที่ ประเภทราคา- ลงทะเบียนการวัด ราคาสินค้า):

ประเภทราคา = &ประเภทราคา

กรอกพารามิเตอร์ตารางเสมือนแล้วคลิกปุ่ม ตกลง.

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

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


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

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

Request.Text = "SELECT | Receipt of GoodsServicesProducts.Nomenclature, | Receipt of GoodsServicesProducts.Amount, | Receipt of GoodsServicesProducts.Price, | Receipt of GoodsServicesProducts.Quantity, | PriceNomenclature Slice of Last.Price AS PriceToday | FROM | เอกสาร ใบเสร็จรับเงินของ GoodsServices.Goods AS Receipt ProductsServices Products |. การเชื่อมต่อด้านซ้าย

ดำเนินการตามคำขอ

เราจะส่งพารามิเตอร์ที่จำเป็นไปยังคำขอ เพื่อสิ่งนี้เราจะใช้วิธีการร้องขอ ตั้งค่าพารามิเตอร์(<ИмяПараметра>,<Значение>). หากต้องการรับวันที่ปัจจุบัน ให้ใช้ฟังก์ชันในตัว วันที่ปัจจุบัน()จะส่งกลับวันที่และเวลาของคอมพิวเตอร์

มาเรียกใช้แบบสอบถามเพื่อรับตัวอย่างพร้อมข้อมูลที่เราต้องการ เมื่อต้องการทำเช่นนี้ ขั้นแรกให้ใช้วิธีการร้องขอ วิ่ง()แล้วก็วิธีการ เลือก().

เลือก = Query.Run().Select();

กรอกตารางแบบฟอร์มที่พิมพ์

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

ในขณะที่ Select.Next() วนรอบ EndLoop;

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

ผลรวมทั้งหมด = 0; ปริมาณทั้งหมด = 0;

ภายในวงเราจะเติมเต็มพื้นที่ ข้อมูลข้อมูลจากองค์ประกอบการเลือกปัจจุบันไปเป็นตัวแปร ยอดรวมและ ปริมาณทั้งหมดเพิ่มค่าผลรวมและปริมาณ และสุดท้าย แสดงพื้นที่ในเอกสารสเปรดชีตโดยใช้วิธีที่เราคุ้นเคยอยู่แล้ว เอาท์พุต()- เนื่องจากชื่อของฟิลด์คำขอของเราตรงกับชื่อของพารามิเตอร์พื้นที่อย่างสมบูรณ์ ข้อมูลจากนั้นในการกรอกข้อมูลเราจะใช้ขั้นตอนในตัว FillPropertyValues(<Приемник>, <Источник>) ซึ่งคัดลอกค่าคุณสมบัติ<Источника>ถึงคุณสมบัติ<Приемника>.

ในขณะที่ Selection.Next() วนซ้ำ FillPropertyValues ​​(AreaData.Parameters, Selection);

TotalSum = TotalSum + ตัวอย่างผลรวม;

TotalQuantity = TotalQuantity + ตัวอย่าง.ปริมาณ; ชั้นใต้ดิน TabDoc.Output(AreaData); สิ้นสุดรอบ;

การส่งออกส่วนท้ายของแบบฟอร์มที่พิมพ์ออกมาลงในเอกสารสเปรดชีต

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

AreaFooter.Parameters.TotalQuantity = TotalQuantity; AreaFooter.Parameters.TotalSum = TotalSum; TabDoc.Output(AreaFooter);

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

กลับ TabDoc;

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

มันทำได้ดังนี้:

  • ในการประมวลผลภายนอก เราสร้างเค้าโครงใหม่ เราเรียกมันว่า "Settings_Auto-Registration" (สิ่งสำคัญคืออย่าทำผิดพลาด!)
  • ในเซลล์แรกของเค้าโครงที่เราเขียน เอกสาร.(หรือ ไดเรกทอรี) และชื่อของเอกสารที่คุณต้องการเชื่อมต่อกับแบบฟอร์มที่พิมพ์

การเชื่อมต่อแบบฟอร์มการพิมพ์ภายนอกเข้ากับฐาน

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

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

เพื่อนร่วมงาน!

เราสานต่อหัวข้อการสร้างรายงานใน 1C เมื่อเร็ว ๆ นี้ลูกค้าของเรามีปัญหาในการถ่ายโอนเอกสารจาก 1C 8.3

แอปพลิเคชัน ข้อมูลเพิ่มเติมในรูปแบบสิ่งพิมพ์ เลขที่ใบพิมพ์ ระบุวัน เวลา และผู้ใช้ที่ออกรายงาน

เราได้กล่าวถึงตัวอย่างที่คล้ายกันในการกำหนดค่า 8.2 ในรีลีสก่อนหน้านี้ ตอนนี้เราจะดูที่การตั้งค่าการพิมพ์ซึ่งทำให้เราสามารถทำทั้งหมดนี้ได้ในการกำหนดค่า 8.3

ยิ่งไปกว่านั้น ส่วนมากจะเป็นแบบอัตโนมัติใน 8.3

แล้วคุณจะรวมข้อมูลข้างต้นลงในงานพิมพ์ของคุณได้อย่างไร? ในกรณีนี้ควรทำอย่างไร?

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

ตัวเลือก 1. โดยตรงจากแบบฟอร์มที่พิมพ์ของรายงานหรือเอกสารที่สร้างขึ้น:

สร้างแบบฟอร์มใบแจ้งหนี้ที่พิมพ์ออกมาสำหรับการชำระเงินและเรียกผ่าน Ch. เมนู – ตาราง – การตั้งค่าการพิมพ์ – ส่วนหัวและส่วนท้าย และกำหนดค่าตามต้องการ
จะทำเพียงครั้งเดียวสำหรับแบบฟอร์มการพิมพ์ FORMED ใดๆ

การตั้งค่าฟิลด์ส่วนหัวและส่วนท้าย

ให้ความสนใจกับไอคอนทางด้านซ้าย มุมบนแบบฟอร์ม:

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

ตัวเลือกที่ 2 กำหนดค่าสำหรับการพิมพ์ใดๆ (รายงาน เอกสาร ใบรับรอง) จากโปรแกรม

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

ดูเหมือนว่านี้:

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

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

เมื่อพิมพ์แบบฟอร์มที่พิมพ์แล้ว ข้อมูลที่ระบุทั้งหมดจะแสดงอยู่ในนั้น

ตัวเลือกที่ 3: แก้ไขเค้าโครงในโหมดกำหนดเอง

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

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

เค้าโครงสามารถเปลี่ยนแปลงได้ในส่วนการดูแลระบบ – แบบฟอร์มที่พิมพ์ รายงาน การประมวลผล – เค้าโครงแบบฟอร์มที่พิมพ์

นี่คือตัวอย่างการแก้ไขเค้าโครงของ Order Invoice (เอกสาร Invoice สำหรับการชำระเงินให้กับผู้ซื้อ):

เราเลือกเลย์เอาต์โดยระบุที่ทางเข้าว่าเราจะแก้ไขและเพิ่มข้อมูลข้อความในตอนท้าย

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

บันทึกการเปลี่ยนแปลงและสร้างแบบฟอร์มที่สามารถพิมพ์ได้

และเราพิมพ์พร้อมกับการเปลี่ยนแปลง
แต่ความเป็นไปได้ในการแก้ไขดังกล่าวมีจำกัด)

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

แต่บ่อยครั้งก็เพียงพอแล้ว

บทความที่เกี่ยวข้อง

2024 liveps.ru การบ้านและปัญหาสำเร็จรูปในวิชาเคมีและชีววิทยา