การสร้างแบบฟอร์มที่พิมพ์ 1c 8.2 สิ่งพิมพ์ การสร้างแผ่นพิมพ์ภายนอกขึ้นอยู่กับแผ่นพิมพ์มาตรฐานที่มีการเปลี่ยนแปลงเล็กน้อย

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

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


หากต้องการเปลี่ยนเค้าโครงของพิมพ์ให้ทำดังต่อไปนี้




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

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

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

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

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


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

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

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

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

ลองสร้าง VPF เช่นสำหรับเอกสาร ใบแจ้งหนี้ของผู้ซื้อแบบฟอร์มที่พิมพ์ ใบแจ้งหนี้การสั่งซื้อ(ฉันกำลังทำตัวอย่างบนแพลตฟอร์ม 8.3.8.1784 BP 3.0.43.247 DEMO base)

การสร้าง VPF

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

ดังนั้นทีละจุด:

  1. สำเนา โมดูลตัวจัดการ เอกสาร ใบแจ้งหนี้ของผู้ซื้อโดยเปิดใน Configurator คัดลอก ทั้งหมดโมดูล , ตัวอย่างเช่นโดยการคลิก Ctrl +ในภายหลัง Ctrl + C.
  2. เปิดตัวสร้างในโหมดการบัญชีเลือก ประเภทเอกสาร ใบแจ้งหนี้สำหรับการชำระเงินให้ผู้ซื้อ และกดปุ่ม วาง:
  1. เรากดปุ่มถัดไป การวิเคราะห์เราได้รับที่คั่นหนังสือ คำสั่งและฟังก์ชั่นรายการคำสั่งการพิมพ์ที่มีอยู่รายการขั้นตอนและฟังก์ชั่นของโมดูลตัวจัดการและข้อความของขั้นตอนที่เลือกในหน้าต่างด้านขวา ในหน้าต่างด้านซ้ายให้ลบช่องทำเครื่องหมายทั้งหมด (ปุ่มควบคุมที่ด้านบน) และทำเครื่องหมายในแบบฟอร์มการพิมพ์ที่เราต้องการ สั่งซื้อใบแจ้งหนี้ในหน้าต่างด้านซ้ายล่างขั้นตอนที่จำเป็นสำหรับการพิมพ์แบบฟอร์มที่เลือกจะถูกทำเครื่องหมายเป็นสีเขียวโดยอัตโนมัติ หากจำเป็นคุณสามารถทำเครื่องหมายขั้นตอนและฟังก์ชั่นอื่น ๆ โดยใช้ปุ่ม ต้องการ / ไม่จำเป็นพวกมันจะถูกถ่ายโอนไปยังการประมวลผลขั้นสุดท้าย แต่ VPF เหล่านั้นจะไม่ถูกใช้โดยอัตโนมัติดังนั้นคิดว่าคุณต้องการหรือไม่ ในหน้าต่างด้านขวาคุณสามารถดูข้อความของขั้นตอนและฟังก์ชั่นที่เลือกในหน้าต่างด้านล่างซ้าย ข้อความสามารถเปลี่ยนแปลงได้แม้ว่าฉันจะไม่เคยใช้โอกาสนี้ แต่คุณไม่เคยรู้เลยว่าใครจะต้องการบ้าง:

  1. ปุ่มถัดไป เพื่อรูปร่าง... สร้างข้อความของโมดูลประมวลผล HPF:

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

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

สิ่งที่ทำให้ฉันประหลาดใจทั้งมาตรฐานและภายนอกแทนที่จะให้จำนวนคำพูดให้จำนวนเงินในการสาธิตเป็นตัวเลข:

การเปลี่ยน VPF ที่ได้

เพื่อแก้ไขสถานการณ์และเพิ่มบางสิ่งบางอย่างของเราเองลงใน VPF ให้เริ่มทำการเปลี่ยนแปลง:

  1. แทรกเค้าโครงบัญชีลงใน VPF (โดยค่าเริ่มต้นจะใช้แบบเดียวกับในรูปแบบบัญชีมาตรฐาน) ในการทำสิ่งนี้เรามาดูว่ามีการใช้เลย์เอาต์อะไรบ้าง ในโมดูลวัตถุของ VPF:
หากการควบคุมการพิมพ์คุณต้องพิมพ์เค้าโครง (การรวบรวมแบบฟอร์มการพิมพ์ "InvoiceOrder") จากนั้น InvoiceDefaultTable \u003d GetInvoicePaidInvoiceTable (ObjectArray); การจัดการการพิมพ์ OutTTTDDocumentInCollection (CollectionPrintForms, "InvoiceOrder", "ใบแจ้งหนี้สำหรับการชำระเงิน", การพิมพ์เอกสารการค้าการพิมพ์ใบแจ้งหนี้การชำระเงิน (Invoice สำหรับการชำระเงิน, วัตถุการพิมพ์), "เค้าโครงทั่วไป PF_MXL_Invoice"; เอาท์พุทพารามิเตอร์. แทรก ("สร้าง ED", จริง); EndIf;

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

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

  1. เราวิเคราะห์ข้อความของขั้นตอนการพิมพ์และเพิ่มขั้นตอนและฟังก์ชั่นของโมดูลทั่วไปที่ใช้ในการสร้างรูปแบบการพิมพ์:
#Area AddedProcedures AND Function // ระหว่างบรรทัดเหล่านี้วางโพรซีเดอร์ที่คัดลอกมาจากโมดูลทั่วไป #EndArea
  • เราบันทึกสิ่งที่เกิดขึ้น (หรือคลิกที่การควบคุมไวยากรณ์) เราได้รับข้อความแสดงข้อผิดพลาด:

(ExternalProcessing.InvoicePayBuyer_ExternalPrinted.ObjectModule (371,3)): ขั้นตอนหรือฟังก์ชันที่มีชื่อที่ระบุไม่ได้ถูกกำหนดไว้ (PrintHeaderWarning)

<\u003e DisplayWarningHeader (ข้อมูลเอกสารผู้รับ, TabularDocument, เลย์เอาต์); (ตรวจสอบ: เซิร์ฟเวอร์)

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

  • ลบบรรทัด“ การพิมพ์เอกสารการค้า"- ตอนนี้ฟังก์ชั่นนี้จะถูกเรียกจากโมดูล VPF
  • เราบันทึก VPF ตรวจสอบในโหมดการบัญชี - ทุกอย่างใช้งานได้เฉพาะตอนนี้ทุกอย่างที่จำเป็นสำหรับการเปลี่ยนแปลงนั้นอยู่ใน VPF ตอนนี้คุณสามารถทำการเปลี่ยนแปลงที่จำเป็น
  1. เปลี่ยนข้อความของโมดูล VPF:
  • เรียกเค้าโครงในตัวแทนเค้าโครงทั่วไป - ค้นหาสาย "เค้าโครงทั่วไป.PF_MXL_InvoiceOrder",เราเห็นว่ามันอยู่ในฟังก์ชั่นที่เพิ่มเข้ามาจากโมดูลทั่วไปและไม่ต้องเปลี่ยนโมดูลทั่วไป การพิมพ์เอกสารการค้า (ทำให้การกำหนดค่าทั่วไปโดยใช้การสนับสนุนอย่างเต็มที่) เปลี่ยนฟังก์ชั่นของโมดูล VPF:
// Layout \u003d Print Control.Print Layout ("General Layout.PF_MXL_InvoiceOrder"); // เป็นเค้าโครง \u003d รับเค้าโครง ("PF_MXL_InvoiceOrder"); // กลายเป็น

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

  • มาแก้ไขจำนวนคำกันเถอะ - ด้วยเหตุผลบางอย่างที่แสดงเป็นตัวเลขมีตัวเลือกมากมายเช่นคุณสามารถใช้สตริงรูปแบบในเซลล์เค้าโครง Suma เป็นลูกบุญธรรมแต่นี่น่าเกลียดดังนั้นลองหาสถานที่ในข้อความโมดูลที่พารามิเตอร์นี้ถูกกรอกและแก้ไข เราเห็นบรรทัด:
PrintDataSumWord.SumWord \u003d GeneralPurposeBPCallServer.GenerateSumInWords (AmountKRecord ข้อมูลเอกสาร. สกุลเงิน);

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

PrintDataSumWord.SumWord \u003d GeneralPurposeBPServerCall.GenerateSumWord (AmountToRecord, InformationAbout เกี่ยวกับ Document.Contractor Agreement.CurrencyMutual Settlement); // ข้อมูลเกี่ยวกับเอกสาร. สกุลเงิน);

เราบันทึกตรวจสอบ:

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

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

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

การสร้างแบบฟอร์มการพิมพ์ 1C การกำหนดปัญหา

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

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

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

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

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

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

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

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

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

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

ลองบันทึกไฟล์ประมวลผลภายนอกไปยังฮาร์ดดิสก์ด้วยเหตุนี้เราจึงใช้เมนู ไฟล์ -\u003e บันทึกรูปสัญลักษณ์ บันทึก (ดิสเก็ตต์สีน้ำเงิน) หรือแป้นพิมพ์ลัด Ctrl + S... ลองตั้งชื่อไฟล์ "Printing Form" ที่บันทึกไว้

การสร้างเค้าโครงที่พิมพ์ได้

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

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

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

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

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

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

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

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

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

รูปภาพแสดงความแตกต่างของพารามิเตอร์โครงร่างจากข้อความปกติ

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

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

เพิ่มตารางไปยังเค้าโครง

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

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

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

ดังนั้นคุณควรได้รับเค้าโครงต่อไปนี้:

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

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

ในโมดูลของวัตถุของรูปแบบการพิมพ์ภายนอกคุณจะต้องสร้างฟังก์ชั่นการส่งออก พิมพ์ ()

ฟังก์ชั่นพิมพ์ () ส่งออกฟังก์ชั่นสิ้นสุด

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

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

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

TabDoc \u003d ใหม่ TabularDocument;

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

เค้าโครง \u003d รับเค้าโครง ("เค้าโครง");

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

Header Area \u003d Layout.GetArea ("Header"); DataScope \u003d Layout.GetScope ("Data"); AreaFooter \u003d Layout.GetArea ("ส่วนท้าย");

เอาต์พุตของส่วนหัวที่พิมพ์ได้ลงในเอกสารสเปรดชีต

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

AreaHapki.Parameters.TextHeader \u003d "พิมพ์ได้" + ReferenceObject.Number หมายเลขอ้างอิง

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

AreaHaps.Parameters.Organization \u003d ReferenceObject.Organization; AreaHaps.Parameters.Contractor \u003d ReferenceObject.Contractor; AreaHaps.Parameters.ArrivalDate \u003d ReferenceObject.Date; AreaHaps.Parameters.Contractor ข้อตกลง \u003d ReferenceObject.Contractor ข้อตกลง;

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

TabDok.Display (AreaHap);

การเขียนคำขอแต้มต่อที่พิมพ์ได้

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

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

ลองสร้างตัวแปรที่จะมีคำขอ

คำขอ \u003d คำขอใหม่;

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

Request.Text \u003d "";

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

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

ที่ด้านซ้ายของหน้าต่างผู้ออกแบบค้นหาคอลัมน์ ฐานข้อมูล... มันมีต้นไม้ของวัตถุเมตาดาต้าทั้งหมดเราจะพบสิ่งที่เราต้องการ เมื่อต้องการทำเช่นนี้เปิดสาขา เอกสาร และค้นหาเอกสาร การมาถึงของสินค้าและบริการเปิดและค้นหาส่วนตาราง ผลิตภัณฑ์โดยการลากไปยังคอลัมน์ตัวออกแบบคิวรี ตาราง... คุณสามารถลากได้สามวิธี: โดยการลากและวางโดยคลิกสองครั้งบนโต๊ะหรือเลือกและกดปุ่ม "\u003e" มาเปิดสาขากันเถอะ ลงทะเบียนข้อมูล และหาโต๊ะที่นั่น PricesNomenclature.SliceLastและลากไปยังคอลัมน์ ตาราง... สองตารางนี้เพียงพอสำหรับการสืบค้นของเรา

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

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

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

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

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

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

PriceType \u003d & PriceType

พารามิเตอร์ตารางเสมือนเต็มไปกดปุ่ม ตกลง.

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

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


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

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

Zapros.Tekst \u003d "SELECT | PostuplenieTovarovUslugTovary.Nomenklatura, | PostuplenieTovarovUslugTovary.Summa, | PostuplenieTovarovUslugTovary.Tsena, | PostuplenieTovarovUslugTovary.Kolichestvo, | TsenyNomenklaturySrezPoslednih.Tsena AS TsenaNaSegodnya | จาก | Dokument.PostuplenieTovarovUslug.Tovary AS PostuplenieTovarovUslugTovary | ซ้ายเข้าร่วม RegistrSvedeniy.TsenyNomenklatury.SrezPoslednih (| & วันที่ปัจจุบัน, PriceType \u003d & PriceType) AS PricesNomenclatureSliceLast | ON สินค้าที่เข้ามาServicesProducts.Nomenclature | \u003d ราคา NomencluresSliceLatest.Nomenclature | WHERE | สินค้าที่เข้ามา ServicesGoods.Link \u003d & Link ";

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

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

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

Selection \u003d Query.Run () เลือก ();

กรอกตารางที่พิมพ์ได้

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

ในขณะที่ Fetch.Next () Loop End of Loop;

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

TotalSum \u003d 0; TotalQuantity \u003d 0;

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

ในขณะที่ Fetch.Next () Loop FillPropertyValues \u200b\u200b(ScopeData.Parameters, Fetch); TotalSum \u003d TotalSum + Sample.Sum; TotalQuantity \u003d TotalQuantity + Sample.Quantity; TabDok.Display (AreaData); สิ้นสุดรอบ;

การส่งออกส่วนท้ายของแบบฟอร์มที่พิมพ์ไปยังกระดาษคำนวณ

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

AreaBoard.Parameters.TotalQuantity \u003d TotalQuantity; AreaBoard.Parameters.TotalSum \u003d TotalSum; TabDok.Display (พื้นที่ชั้นใต้ดิน);

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

การกลับมาของ TabDoc;

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

การสร้างแบบฟอร์มการพิมพ์ 1C พารามิเตอร์การลงทะเบียนอัตโนมัติ

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

มันทำดังนี้

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

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

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

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

2016-12-01T12: 56: 42 + 00: 00

ใน 1C: การบัญชี 8.3 (การแก้ไข 3.0) โอกาสที่ยอดเยี่ยมได้ปรากฏขึ้น ขณะนี้ผู้ใช้ใน 1C: โหมดองค์กรสามารถแก้ไขเค้าโครงของแบบฟอร์มที่พิมพ์ได้อย่างง่ายดาย

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

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

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

1. สร้างพิมพ์ (ใช้ปุ่ม "พิมพ์") และคลิกในแบบฟอร์มที่เปิด (ด้านขวา) "เพิ่มเติม" -\u003e "เปลี่ยนเค้าโครง":

2. เค้าโครงของแผ่นพิมพ์จะเปิดขึ้น ทำการเปลี่ยนแปลงที่จำเป็นกับมัน แต่ระวังอย่าทำเช่นนี้ ฉันจะบอกทันทีว่าแบบอักษรและขนาดของเขตข้อมูลสามารถเปลี่ยนแปลงได้อย่างแน่นอน แต่คุณสามารถลบเขตข้อมูลที่มีอยู่ (โดยเฉพาะอย่างยิ่งใน<угловых скобках>) ไม่คุ้มค่า หากคุณต้องการซ่อนเขตข้อมูล<угловых скобках>เพียงแค่ทำให้มันมองไม่เห็น (ตามสีหรือขนาด) แต่ควรอยู่ในแบบฟอร์มตามที่จำเป็นในรหัสโปรแกรม 1C

3. เราจะเพิ่มช่อง "รับผิดชอบ" และคลิกปุ่ม "บันทึกและปิด"

4. รูปแบบที่พิมพ์ถูกสร้างขึ้นใหม่ในรูปแบบใหม่ตามที่เราต้องการ

หากหลังจากเปลี่ยนแบบฟอร์มที่พิมพ์แล้วมันก็หยุดทำงาน

นับถือ Vladimir Milkin (อาจารย์และนักพัฒนา)

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

ตัวอย่างสำหรับ 1C 8.3 (แบบฟอร์มที่มีการจัดการ)

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

งาน

พัฒนาแบบฟอร์มสำหรับพิมพ์ภายนอกที่จะมีให้จากเอกสาร "ใบแจ้งหนี้สำหรับการชำระเงินให้กับผู้ซื้อ" และจะมีชื่อขององค์กรคู่ค้าและรายการสินค้าที่มีราคาจำนวนและปริมาณ

ไป!

สิ่งแรกที่ต้องทำคือสร้างไฟล์ประมวลผลภายนอก การประมวลผลควรมีสามประเด็นหลัก:
  1. แอตทริบิวต์ "ReferenceObject" ที่มีประเภท "DocumentLink.InvoicePayment to Buyer"
  2. เค้าโครงที่จะพิมพ์
  3. ส่งออกฟังก์ชั่น "พิมพ์ ()" ซึ่งส่งคืนเอกสารสเปรดชีต
การกระทำเหล่านี้สามารถเห็นได้ในรูปที่ # 1

"การวาดเค้าโครง"

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

ฟังก์ชั่น "พิมพ์ ()"

ตอนนี้แบบฟอร์มเกือบจะพร้อมแล้ว มันยังคงเขียนทางโปรแกรมในเขตข้อมูลของเอกสารสเปรดชีต การกระทำเหล่านี้จะดำเนินการในโมดูลของวัตถุการประมวลผลในฟังก์ชั่นที่เรียกว่า "พิมพ์" ซึ่งจะต้องส่งออก
ด่าน 1 การรับข้อมูลสำหรับส่วนหัวเติมพารามิเตอร์ส่วนหัวและแสดงไว้ในเอกสารสเปรดชีต TabularDocument \u003d ใหม่ TabularDocument; เค้าโครง \u003d รับเค้าโครง ("เค้าโครงของเรา"); Data Request \u003d คำขอใหม่ ("เลือก | ส่ง (ใบแจ้งหนี้สำหรับการชำระเงินให้แก่ผู้ซื้อผู้รับเหมา)] เป็นคู่สัญญา | การนำเสนอ (ใบแจ้งการชำระเงินให้แก่ผู้ซื้อหน่วยงาน) เป็นองค์กร | FROM | เอกสาร Data Query.SetParameter ("ลิงก์", LinkOnObject); ส่วนหัว \u003d Data Query.Run () เลือก (); Hat.Next (); พื้นที่ \u003d Layout.GetArea ("ส่วนหัว"); Region.Parameters.Fill (หัวเรื่อง); TabularDocument.Display (ภูมิภาค); ด่าน 2 การรับข้อมูลแบบตารางและเอาท์พุทสินค้าแบบทีละบรรทัด
Data Query.Text \u003d "SELECT | _Products.LineNumber, | การนำเสนอ (_Products.Nomenclature) เป็นการตั้งชื่อ, | _Products.Quantity, | _Goods.Potal, | _Products.Total | FROM | Document.Invoice ของสินค้า ลิงก์ \u003d & ลิงก์ "; Fetch \u003d Data Query.Run () เลือก (); ภูมิภาค \u003d Layout.GetScope ("Data"); ในขณะที่ Selection.Next () Loop Area.Parameters.Fill (Selection); TabularDocument.Display (ภูมิภาค); สิ้นสุดรอบ; ด่าน 3 การส่งคืนเอกสารสเปรดชีตและฟังก์ชั่นการพิมพ์ ส่งคืน TabularDocument;

เพิ่มแผ่นพิมพ์ภายนอกของเราไปที่ 1C

เราไปที่เมนู "บริการ - แบบฟอร์มการพิมพ์ภายนอกและการประมวลผล - แบบฟอร์มการพิมพ์ภายนอก"

ในหน้าต่างการสร้างองค์ประกอบที่เปิดขึ้นให้ทำสิ่งต่อไปนี้:

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

มาพิมพ์กัน!

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


ความสนใจ!อัลกอริทึมการพัฒนานี้เหมาะสำหรับ "แอปพลิเคชันปกติ" เท่านั้น รูปแบบการพิมพ์สำหรับการกำหนดค่าในโหมด Guided Application นั้นแตกต่างกัน!

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

 

การอ่านอาจเป็นประโยชน์: