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

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

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

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

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

แบบฟอร์มการพิมพ์มีสองประเภท:

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

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

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

แบบฟอร์มที่พิมพ์เก็บไว้ที่ไหน?

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

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

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

การสร้างแบบฟอร์มอย่างง่ายโดยใช้ Print Designer ในตัว

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

  1. ก่อนอื่น ให้เปิดในโหมด Configurator ค้นหาเอกสารที่คุณต้องการ เช่น การขายผลิตภัณฑ์และบริการ ในคุณสมบัติของเอกสาร ให้ไปที่ Actions - Designers - Print Designer
  2. เมื่อได้รับแจ้งให้ระบุตัวเลือกการทำงาน ให้เลือกแบบฟอร์มปกติ
  3. ตั้งชื่อเค้าโครงใหม่ เช่น "พิมพ์ใบแจ้งหนี้"
  4. เลือกรายละเอียดที่คุณต้องการดูในส่วนหัวของเอกสาร นอกจากนี้ จะต้องเลือกตามลำดับที่จะแสดง ในการเลือก คุณต้องใช้เคอร์เซอร์ไฮไลต์รายการในคอลัมน์ด้านซ้าย แล้วกดลูกศรตรงกลางหน้าจอเพื่อให้รายละเอียดปรากฏในคอลัมน์ด้านขวา
  5. ทำเครื่องหมายรายละเอียดที่จะแสดงในส่วนของตาราง การเลือกรายละเอียดเป็นไปตามหลักการเดียวกันกับย่อหน้าก่อนหน้า
  6. ในทำนองเดียวกัน ให้เลือกรายละเอียดส่วนล่างของเอกสาร
  7. ในขั้นตอนสุดท้ายของการสร้าง ให้เลือกว่าคุณต้องการพิมพ์ทันทีโดยไม่ต้องแสดงตัวอย่าง หรือไม่ว่าคุณต้องการปกป้องตารางหรือไม่ จากนั้นยืนยันการสร้างแบบฟอร์มด้วยปุ่มตกลง

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

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

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

ตอนนี้เรามาพูดถึงขั้นตอนเพิ่มเติมกันดีกว่า ลองดูตัวอย่างการสร้างเค้าโครง "ใบแจ้งหนี้" สำหรับเอกสาร "การขาย (การกระทำ, ใบแจ้งหนี้)"

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

ฟังก์ชั่น InformationOnExternalProcessing() ส่งออก
พารามิเตอร์การลงทะเบียน = โครงสร้างใหม่;
ArrayDestinations = อาร์เรย์ใหม่;
Array of Assignments.Add("Document.Sales of Goods and Services"); //ระบุเอกสารที่เรากำลังพิมพ์ภายนอก รูปร่าง
พารามิเตอร์การลงทะเบียนInsert("View", "PrintForm"); //อาจจะ - PrintableForm, การเติมวัตถุ, รายงานเพิ่มเติม, การสร้างวัตถุที่เกี่ยวข้อง...
พารามิเตอร์การลงทะเบียนInsert("Destination", Array of Destination);
พารามิเตอร์การลงทะเบียนInsert("ชื่อ", "คำสั่งซื้อขายสินค้า"); //ชื่อที่การประมวลผลจะถูกลงทะเบียนในไดเร็กทอรีของการประมวลผลภายนอก
พารามิเตอร์การลงทะเบียนแทรก ("SafeMode", FALSE);
พารามิเตอร์การลงทะเบียนInsert("เวอร์ชัน", "1.0");
Registration Options.Insert("ข้อมูล", "แบบฟอร์มที่พิมพ์ได้นี้ถูกสร้างขึ้นเป็นตัวอย่าง");
CommandTable = GetCommandTable();
AddCommand(CommandTable, "คำสั่งภายนอก", "ExternalOrder", "CallServerMethod", True, "พิมพ์ MXL");
พารามิเตอร์การลงทะเบียนInsert("Commands", CommandTable);
พารามิเตอร์การลงทะเบียนกลับ;
EndFunction // ข้อมูลเกี่ยวกับการประมวลผลภายนอก ()
ฟังก์ชัน GetTableCommand()
คำสั่ง = ตารางค่าใหม่;
Commands.Columns.Add(“View”, New TypeDescription(“Row”));//คำอธิบายของแบบฟอร์มการพิมพ์สำหรับผู้ใช้จะเป็นอย่างไร
Commands.Columns.Add("ตัวระบุ", คำอธิบายประเภทใหม่ ("สตริง")); // พิมพ์ชื่อโครงร่างแบบฟอร์ม
Commands.Columns.Add("การใช้งาน", คำอธิบายประเภทใหม่ ("แถว")); //เรียก ServerMethod
Commands.Columns.Add("ShowAlert", NewTypeDescription("บูลีน"));
Commands.Columns.Add("ตัวแก้ไข", NewTypeDescription("แถว"));
ทีมกลับ;
EndFunction
ขั้นตอน AddCommand (CommandTable, View, Identifier, การใช้งาน, ShowAlert = False, Modifier = "")
NewCommand = CommandTable.Add();
NewCommand.View = ดู;
NewCommand.Identifier = ตัวระบุ;
NewCommand.Use = การใช้งาน;
NewCommand.ShowAlert = ShowAlert;
NewCommand.Modifier = ตัวดัดแปลง;
สิ้นสุดขั้นตอน

  1. บันทึกเค้าโครงสำหรับการพิมพ์เป็นไฟล์ในโฟลเดอร์ใดๆ บนฮาร์ดไดรฟ์ของคุณ ตั้งชื่อให้เหมาะสม

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

เพิ่มคำสั่ง(ตารางคำสั่ง, “ลำดับภายนอก”, “ลำดับภายนอก”):
ขั้นตอนการพิมพ์ (อาร์เรย์ของวัตถุ, คอลเลกชันของแบบฟอร์มการพิมพ์, วัตถุพิมพ์, พารามิเตอร์เอาต์พุต) ส่งออก
การจัดการการพิมพ์.Output TabularDocumentIntoCollection(
การรวบรวมแบบฟอร์มการพิมพ์
“คำสั่งภายนอก”
“คำสั่งภายนอก”
สร้างPrintForm (ArrayofObjects, PrintObjects);
EndProcedure // พิมพ์()

  1. แทรกเลย์เอาต์สำหรับการกรอกแบบฟอร์มที่พิมพ์โดยคลิกที่ชื่อของแบบฟอร์มภายนอกที่มุมซ้ายล่างแล้วเลือก "เลย์เอาต์" - "เพิ่ม" - "เอกสารสเปรดชีต" ตั้งชื่อ หลังจากนั้นกรอกสเปรดชีตพร้อมข้อมูลที่จำเป็น ตัวอย่างเช่น:
    • คำสั่งซื้อหมายเลขผลิตภัณฑ์ [หมายเลขการรับรู้] จาก [วันที่รับรู้] - คลิกขวา - คุณสมบัติ - เค้าโครง - การกรอก - เทมเพลต
    • สร้างคอลัมน์ที่คุณต้องการให้ปรากฏในเอกสารของคุณ
    • เลือกเซลล์ที่ป้อนคลิกตาราง - ชื่อ - กำหนดชื่อ - ป้อนชื่อ "ส่วนหัว"
    • คัดลอกแถวที่มีส่วนหัวของตาราง เลือกแล้วคลิกขวา - คุณสมบัติ - เค้าโครง - การเติม - พารามิเตอร์
    • เลือกบรรทัดและตั้งชื่อ เช่น “StringTCH”
    • สร้างส่วนท้าย: เขียน Total ซึ่งเป็นเซลล์ที่ควรแสดงจำนวนรวม ตั้งชื่อเป็น TotalTotal เลือก "พารามิเตอร์" ในคุณสมบัติ
    • ระบุผู้รับผิดชอบ และในคุณสมบัติของเซลล์ที่จะแสดงนามสกุล ให้ระบุ "พารามิเตอร์"
    • เลือกแถวล่างและตั้งชื่อช่วง "ส่วนท้าย"
  2. ในหน้าต่างป้อนข้อมูล ให้ป้อนฟังก์ชันสำหรับสร้างแบบฟอร์มที่พิมพ์:

ฟังก์ชั่น GeneratePrintForm (LinkToDocument, PrintObjects)
TabularDocument = TabularDocument ใหม่;
TabularDocument.ชื่อของพารามิเตอร์การพิมพ์ = “PRINT_PARAMETERS_Invoice สำหรับการชำระเงินให้กับ VRTU”;
รูปแบบการประมวลผล = GetLayout("ใบแจ้งการชำระเงินภายนอก");
//กรอกส่วนหัว
AreaHeader = ProcessingLayout.GetArea("ส่วนหัว");
AreaHeader.Parameters.DocumentNumber = LinkToDocument.Number;
AreaHeader.Parameters.DocumentDate = LinkToDocument.Date;
AreaHeader.Parameters.OrganizationName = LinkToDocument.Organization.Name;
//ส่งออกส่วนหัวในเอกสารสเปรดชีต
TabularDocument.Output (พื้นที่ส่วนหัว);
//กรอกข้อมูลในบรรทัด PM
RowArea = ProcessingLayout.GetArea("ROW");
สำหรับแต่ละบรรทัดปัจจุบันจากลิงก์เอกสาร รอบผลิตภัณฑ์
FillPropertyValues ​​(RowArea.Parameters, CurrentRow);
TabularDocument.Output (RowArea);
สิ้นสุดรอบ;
//ต่อเติมห้องใต้ดิน
AreaFooter = ProcessingLayout.GetArea("ส่วนท้าย");
AreaFooter.Parameters.QuantityTotal = LinkToDocument.Products.Total("ปริมาณ");
AreaFooter.Parameters.AmountTotal = LinkToDocument.Products.Total("จำนวน");
AreaFooter.Parameters.ResponsibleName = LinkToDocument.Manager.Name;
//ส่งออกส่วนท้ายไปยังเอกสารสเปรดชีต
TabularDocument.Output (AreaFooter);
TabularDocument.AutoScale = จริง;
กลับ TabularDocument;
EndFunction

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

บทสรุป

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

วิธีเพิ่ม (ลงทะเบียน) แบบฟอร์มที่พิมพ์ภายนอก (หรือการประมวลผล) ใน 1C Accounting 8.3 (การแก้ไข 3.0)

2019-05-15T13:40:54+00:00

บ่อยครั้งที่นักบัญชีต้องการแบบฟอร์มที่พิมพ์เพิ่มเติมสำหรับเอกสารมาตรฐาน 1C: การบัญชี 8.3 (แก้ไข 3.0) หรือคุณต้องการ การประมวลผลเพิ่มเติมเช่น เพื่อกรอกเอกสารโดยอัตโนมัติหรือป้อนเอกสารใหม่ตาม โดยปกติแล้วจะมีคนพัฒนาคุณสมบัติดังกล่าวแล้วและสามารถค้นหาหรือสั่งซื้อได้จากโปรแกรมเมอร์ และตอนนี้ได้รับการแก้ไขแล้ว เหลือเพียงเพิ่มเข้าแผนกบัญชีเท่านั้น วิธีการทำเช่นนี้? ข้อมูลเพิ่มเติมด้านล่างนี้ทีละขั้นตอน

1. เปิด 1C Accounting 3.0 และเลือกส่วน "การดูแลระบบ" -> "พิมพ์แบบฟอร์ม รายงานและการประมวลผล" ในแผงด้านซ้าย:

2. ที่นี่ ค้นหาและเลือก “รายงานและการประมวลผลเพิ่มเติม” หลังจากทำเครื่องหมายในช่อง “รายงานและการประมวลผลเพิ่มเติม” ทางด้านซ้าย:

3. คลิกปุ่ม "เพิ่มจากไฟล์..."

4. และเลือกไฟล์ที่มีรูปแบบการพิมพ์หรือการประมวลผลภายนอก (นามสกุล epf)

5. ในหน้าต่างใหม่ คลิกปุ่ม "บันทึกและปิด"

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

ขอแสดงความนับถือ, วลาดิมีร์ มิลกิน(ครูและนักพัฒนา)

สวัสดีตอนบ่าย.

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

เอาล่ะมาเริ่มกันเลย สิ่งที่เราได้รับในตอนท้ายสามารถใช้เป็นเทมเพลตได้

ขั้นตอนที่หนึ่ง- ชัดเจน. เราสร้าง การรักษาใหม่- มากำหนดชื่อตามใจชอบ: "ตัวอย่างการพิมพ์"

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

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

//ขั้นตอนการเตรียมโครงสร้างตารางคำสั่ง

ฟังก์ชัน GetTableCommand()

// สร้างตารางคำสั่งว่างและคอลัมน์ในนั้น
คำสั่ง = ตารางค่าใหม่;

// คำอธิบายแบบฟอร์มที่พิมพ์ออกมาสำหรับผู้ใช้จะเป็นอย่างไร
Commands.Columns.Add("ดู", NewTypeDescription("แถว"));

// ชื่อของโครงร่างของเรา เพื่อให้เราสามารถแยกแยะคำสั่งที่เรียกว่าในการประมวลผลการพิมพ์ได้
Commands.Columns.Add("ตัวระบุ", คำอธิบายประเภทใหม่ ("สตริง"));

// เป็นการกำหนดวิธีการเรียกใช้คำสั่งการประมวลผล
// ตัวเลือกที่เป็นไปได้:
// - OpeningForm - ในกรณีนี้ คอลัมน์ตัวระบุควรระบุชื่อของแบบฟอร์มที่ระบบจะเปิด
// - CallClientMethod - เรียกขั้นตอนการส่งออกไคลเอ็นต์จากโมดูลแบบฟอร์มการประมวลผล
// - เรียก ServerMethod - เรียกขั้นตอนการส่งออกเซิร์ฟเวอร์จากโมดูลวัตถุที่กำลังประมวลผล
Commands.Columns.Add("การใช้งาน", คำอธิบายประเภทใหม่ ("แถว"));

// พารามิเตอร์ถัดไประบุว่าควรแสดงการแจ้งเตือนเมื่องานการประมวลผลเริ่มต้นและสิ้นสุดหรือไม่ ไม่สมเหตุสมผลเมื่อเปิดแบบฟอร์ม
Commands.Columns.Add("ShowAlert", NewTypeDescription("บูลีน"));

// สำหรับแบบฟอร์มที่พิมพ์ จะต้องมีสตริง PrintMXL
Commands.Columns.Add("ตัวแก้ไข", คำอธิบายประเภทใหม่ ("แถว"));

ทีมกลับ;

EndFunction

//สร้างแถวใหม่ในตารางคำสั่ง

ฟังก์ชัน AddCommand(CommandTable, View, Identifier, การใช้งาน, ShowAlert = False, Modifier = "")
NewCommand = CommandTable.Add();
ทีมใหม่. ดู = ดู;
ทีมใหม่. ตัวระบุ= ตัวระบุ;
ทีมใหม่. การใช้งาน = การใช้งาน;
ทีมใหม่. ShowAlert= แสดงการแจ้งเตือน;
ทีมใหม่. โมดิฟายเออร์= โมดิฟายเออร์;
EndFunction

ฟังก์ชั่น InformationOnExternalProcessing() ส่งออก
พารามิเตอร์การลงทะเบียน = โครงสร้างใหม่;
ArrayDestinations = อาร์เรย์ใหม่;
อาร์เรย์ของ Assignments.Add("Document.Hiring");
พารามิเตอร์การลงทะเบียนInsert("View", "PrintForm"); //บางที - การกรอกออบเจ็กต์ รายงานเพิ่มเติม การสร้างออบเจ็กต์ที่เกี่ยวข้อง...
พารามิเตอร์การลงทะเบียนInsert("Destination", Array of Destination);
พารามิเตอร์การลงทะเบียนInsert("ชื่อ", "Hello World"); //ชื่อที่การประมวลผลจะถูกลงทะเบียนในไดเร็กทอรีของการประมวลผลภายนอก
พารามิเตอร์การลงทะเบียนInsert("เวอร์ชัน", "1.0");
พารามิเตอร์การลงทะเบียนแทรก ("SafeMode", TRUE);
Registration Parameters.Insert("Information", "SAMPLE");//นี่คือลักษณะของคำอธิบายของแบบฟอร์มที่พิมพ์ได้สำหรับผู้ใช้
CommandTable = GetCommandTable();
AddCommand(CommandTable, "Hello World", "Layout", "CallServerMethod", True, "MXL Print");
พารามิเตอร์การลงทะเบียนInsert("Commands", CommandTable);
พารามิเตอร์การลงทะเบียนกลับ;
EndFunction

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

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

ขั้นตอนที่สี่- น่าสนใจไม่น้อย

ฟังก์ชั่นการพิมพ์?

แต่ไม่ ตอนนี้มันไม่ใช่ฟังก์ชัน แต่เป็นขั้นตอน

ฉันจะเอาโครงร่างกลับมาได้อย่างไร?

ส่งไปยังฟังก์ชันโมดูลระบบย่อยการพิมพ์ทั่วโลก

ตกลง

นี่คือข้อความของขั้นตอนนี้:

ขั้นตอนการพิมพ์ (อาร์เรย์ของวัตถุ, คอลเลกชันของแบบฟอร์มการพิมพ์, วัตถุพิมพ์, พารามิเตอร์เอาต์พุต) ส่งออก
ถ้า PrintManagement.NeedPrintLayout(CollectionPrintForms, "Layout") แล้ว
การจัดการการพิมพ์.Output TabularDocumentIntoCollection (CollectionofPrintForms,
"เค้าโครง", "เค้าโครง",
GenerateTabDocumentSample (อาร์เรย์ของวัตถุ, วัตถุการพิมพ์));
สิ้นสุดถ้า;
สิ้นสุดขั้นตอน

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

ถัดไป การจัดการการพิมพ์ Output TabularDocumentIntoCollection(...) - นี่คือสิ่งที่เพิ่มเค้าโครงแบบตารางที่จำเป็นเพื่อให้สามารถแสดงบนหน้าจอได้ หากคุณต้องการแสดงเอกสารสเปรดชีตในหน้าต่างของคุณเอง (ไม่ใช่ในหน้าต่างมาตรฐาน) อย่าเรียกขั้นตอนนี้ แต่เพียงเขียนโค้ดของคุณที่นี่

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

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

ขั้นตอนที่ห้า- การสร้างเค้าโครง

ไชโย ในที่สุดเราก็จะลงลึกถึงอัลกอริธึมเค้าโครง การดึงข้อมูล ฯลฯ ในที่สุด

แต่ในตัวอย่างนี้เราจะทำตัวไม่ปกติและฉันจะไม่แสดงความคิดเห็นที่นี่ด้วยซ้ำ)))

ฟังก์ชั่น GenerateTabDocumentSample (อาร์เรย์ของวัตถุ, วัตถุการพิมพ์)
tabDoc = TabularDocument ใหม่;
เค้าโครง = GetLayout("เค้าโครง");

AreaHeader = Layout.GetArea("ส่วนหัว");
tabDoc.Output(areaHeader);

กลับ TabDoc;
EndFunction

เพียงเท่านี้ ขอบคุณสำหรับความสนใจของคุณ

บทความนี้อธิบายวิธีเชื่อมต่อแบบฟอร์มที่พิมพ์ภายนอกกับฐานข้อมูล 1C โดยใช้ตัวอย่างการกำหนดค่า "Trade Management 11.2"

การกำหนดค่า “Trade Management 11.2” เป็นการกำหนดค่าในแบบฟอร์ม “MANAGED”!

คำแนะนำของเรา “แสดง” วิธีการเชื่อมต่อแบบฟอร์มการพิมพ์ภายนอกเข้ากับ ฐานข้อมูล 1C พร้อมการกำหนดค่าในแบบฟอร์ม "จัดการ" ได้แก่:

  • "การบัญชี 3.0"
  • "การจัดการการค้า 11.2"
  • “การบริหารเงินเดือนและบุคลากร 3.1”
  • "ระบบอัตโนมัติที่ครอบคลุม 2.0"
  • "ควบคุม บริษัทขนาดเล็ก 1.6"
  • "ค้าปลีก 2.2"
  • และการกำหนดค่าอื่นที่คล้ายคลึงกัน

ในการเชื่อมต่อแบบฟอร์มการพิมพ์ภายนอกใน 1C เราจะต้องดำเนินการ 11 ขั้นตอน

1 — เมนู “ข้อมูลหลักและการดูแลระบบ” (ในการกำหนดค่าอื่น เช่น ใน Enterprise Accounting 3.0 อาจเรียกง่ายๆ ว่า “การดูแลระบบ”) 2 — เลือก “แบบฟอร์มที่พิมพ์ รายงาน และการประมวลผล” (ดูรูปด้านล่าง ↓)

3 — ขยายเมนูย่อย "รายงานและการประมวลผล" (ในการกำหนดค่าอื่น ๆ เช่น Enterprise Accounting 3.0 อาจไม่มีเมนูย่อยดังกล่าว ดังนั้นเราจึงไปยังขั้นตอนถัดไปทันที) 4 — ทำเครื่องหมายที่ช่อง “การใช้รายงานและการประมวลผลเพิ่มเติม” 5 — ไปที่ส่วน: รายงานและการประมวลผลเพิ่มเติม (ดูรูปด้านล่าง ↓) ()

6 — คลิกปุ่ม “สร้าง” (ดูรูปด้านล่าง ↓)

ใน 1C เวอร์ชันใหม่ (เริ่มตั้งแต่เดือนสิงหาคม 2559) โปรแกรมมีกลไกคำเตือนในตัวเกี่ยวกับอันตรายจากการใช้การประมวลผลภายนอกที่ไม่รู้จักซึ่งอาจมี "ไวรัส" ในโปรแกรมเวอร์ชันก่อนหน้า คำเตือนจะไม่ปรากฏขึ้น! หากสิ่งนี้เกิดขึ้น จำเป็นต้องเชื่อมต่อแบบฟอร์มการพิมพ์ภายนอก - 7 — คลิกปุ่ม “ดำเนินการต่อ” (ดูรูปด้านล่าง ↓)

8 — เลือกไดเร็กทอรีที่มีการประมวลผลอยู่ 9 — เลือกมัน (การประมวลผลที่เราต้องการ) 10 — คลิกปุ่ม “เปิด” หรือแทนที่จะทำตามขั้นตอนที่ 9 และ 10 คุณสามารถดับเบิลคลิกบนแบบฟอร์มภายนอกที่เราต้องการในหน้าต่างการเลือกได้ (ดูรูปด้านล่าง ↓)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

มาเริ่มสร้างเลย์เอาต์ของแบบฟอร์มการพิมพ์ 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 ถือว่าเสร็จสมบูรณ์แล้ว