แบบฟอร์มการพิมพ์ปลั๊กอิน 1c การเพิ่มการพิมพ์ภายนอกไปยังฐานข้อมูล

ลองเขียนแบบพิมพ์ง่าย ๆ ใน 1s 8.1 - 8.2ในตัวอย่างการกำหนดค่า การบัญชีองค์กร 2.0. สมมติว่าคุณต้องการเขียนข้อมูลภายนอก แบบพิมพ์ไปที่เอกสาร: แสดงข้อมูลหลักของเอกสารรวมทั้งจากส่วนตาราง สินค้า: การตั้งชื่อ ราคา ปริมาณ และปริมาณ

คุณสามารถดาวน์โหลดตัวอย่างผลลัพธ์โดย .

ในตัวกำหนดค่า 1C Enterprises 8สร้างการประมวลผลภายนอก ( ไฟล์->ใหม่->การประมวลผลภายนอก) ตั้งชื่อ สร้างแอตทริบิวต์ที่จำเป็นสำหรับแบบฟอร์มการพิมพ์ภายนอก อ้างอิงถึงวัตถุด้วยประเภท DocumentReference.Realization of GoodsServices.

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

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

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

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

การเขียนโปรแกรม

ไปที่โมดูลวัตถุที่พิมพ์ได้กันเถอะ การกระทำ->เปิดโมดูลวัตถุ.

มาสร้างฟังก์ชันการส่งออกที่จำเป็นสำหรับการพิมพ์แบบฟอร์มกันเถอะ ผนึก().

ฟังก์ชั่นพิมพ์ () ส่งออก EndFunctions

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

TabDoc = SpreadsheetDocument ใหม่ เลย์เอาต์ = GetLayout("เลย์เอาต์" ); พื้นที่ส่วนหัว = Layout.GetArea ("ส่วนหัว" ); ScopeData = Layout.GetScope ("ข้อมูล" ); AreaFooter = Layout.GetArea("ชั้นใต้ดิน" );

กรอกพารามิเตอร์ หมวกแล้วเอาไป เอกสารสเปรดชีต.

ส่วนหัว Area.Parameters.HeaderText = +ObjectReference.Number; HeaderScope.Parameters.Organization = LinkToObject.Organization; TabDoc.Output (พื้นที่ส่วนหัว);

เพื่อให้ได้แถวของตาราง สินค้าใช้แบบสอบถาม

คำขอ = คำขอใหม่; Query.SetParameter("อ้างอิง", ObjectReference); Query.Text = "เลือก | การรับรู้ของสินค้า บริการ สินค้า การตั้งชื่อ | การรับรู้ของสินค้า บริการ สินค้า จำนวน | การรับรู้ของสินค้า บริการ สินค้า ราคา, | ขายสินค้า บริการ สินค้า จำนวน| จาก | เอกสารการขายสินค้าบริการสินค้า AS Realization of GoodsServicesGoods|ที่ไหน | ImplementationProductsServicesProducts.Reference = &อ้างอิง";

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

การเลือก = Query.Execute().Select();

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

ผลรวม = 0 ; จำนวนทั้งหมด = 0 ; ในขณะที่ Selection.Next() วนรอบ FillPropertyValues(DataArea.Parameters, Selection); TotalSum = ผลรวมทั้งหมด + Sample.Sum; TotalQuantity = TotalQuantity + Sample.Quantity; ปริมาณทั้งหมด TabDoc.Output (พื้นที่ข้อมูล); สิ้นสุดรอบ ;

กรอกและแสดงพื้นที่ ชั้นใต้ดิน.

AreaBasement.Parameters.TotalQuantity = TotalQuantity; RegionBasement.Parameters.TotalAmount = TotalAmount; TabDoc.Output (RegionFooter);

เราส่งคืนเอกสารสเปรดชีตที่กรอกจากฟังก์ชัน ผนึก().

ส่งคืน TabDoc;

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

5. การเชื่อมต่อที่พิมพ์ได้กับเอกสาร

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

เราเพิ่มองค์ประกอบใหม่ของไดเร็กทอรี โหลดแบบฟอร์มที่พิมพ์จากดิสก์และเลือกประเภทของเอกสาร

ตอนนี้อยู่ในเอกสาร ขายสินค้าและบริการพิมพ์ใหม่จะปรากฏขึ้น

พิมพ์แบบฟอร์มลงทะเบียนอัตโนมัติ

เพื่อหลีกเลี่ยงความจำเป็นในการเลือกประเภทของเอกสารด้วยตนเองเมื่อเชื่อมต่อที่พิมพ์ได้ คุณสามารถกำหนดค่า การลงทะเบียนอัตโนมัติ. ในการทำเช่นนี้ เราได้เพิ่มรูปแบบใหม่และเรียกมันว่า พารามิเตอร์_การลงทะเบียนอัตโนมัติ(เท่านั้น) และในเซลล์แรกเราเขียน เอกสารต่างๆ<Наименование документа> (หรือ หนังสืออ้างอิง.<Наименование справочника> ).

ตอนนี้เมื่อเชื่อมต่อแบบฟอร์มการพิมพ์เราจะได้รับแจ้งให้ใช้ ตัวเลือกการลงทะเบียนอัตโนมัติ.

งานพิมพ์ภายนอกสำหรับแอปพลิเคชันทั่วไป (สำหรับการกำหนดค่า Enterprise Accounting 2.0, Payroll and Human Resources 2.5, Retail Management 10.3 เป็นต้น) ค่อนข้างง่ายที่จะสร้างเมื่อเปรียบเทียบกับงานพิมพ์ภายนอกสำหรับแอปพลิเคชันที่มีการจัดการ

ทำไมต้องสร้างสิ่งพิมพ์ภายนอก

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

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

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

พิจารณาขั้นตอนการสร้างแบบฟอร์มการพิมพ์ภายนอก 1C ในขั้นตอน:

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

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

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

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

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

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

ขั้นตอนการพิมพ์เอกสารอิเล็กทรอนิกส์ 1C เรียกว่า 1C พิมพ์ได้

เอกสารแต่ละฉบับสามารถพิมพ์ 1C ได้หลายชุด ตัวอย่างเช่น เอกสารการขายสินค้าและบริการ (เช่น การขาย) พิมพ์ในรูปแบบ 1C ที่สามารถพิมพ์ได้: TORG-12, Invoice, Waybill, Act of Services Rendered และอื่นๆ

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

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

แบบฟอร์มการพิมพ์ภายนอก 1C เป็นเทมเพลตการพิมพ์ที่จัดเก็บแยกต่างหากจากการกำหนดค่าเอง

อย่างไรก็ตาม นี่คือทฤษฎีทั้งหมด จะสร้างงานพิมพ์ของคุณเองได้อย่างไร? และดียิ่งขึ้นไปอีก - จะเปลี่ยนแปลงสิ่งที่มีอยู่ได้อย่างไร?

วิธีพิมพ์เอกสาร 1C

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

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

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

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

พิมพ์หน้านี้มาจากไหน?

แบบฟอร์มการพิมพ์ 1C . อยู่ที่ไหน

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

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

กลับไปที่หน้าต่างการกำหนดค่า 1C กัน เปิดสาขา General จากนั้นเปิดสาขา General Layouts นี่คือตำแหน่งของเลย์เอาต์ส่วนใหญ่ โดยเฉพาะอย่างยิ่งสำหรับแบบฟอร์มการพิมพ์ที่รัฐกำหนด 1C - TORG 12 ใบแจ้งหนี้ ฯลฯ

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

แต่นั่นไม่ใช่ทั้งหมด! นอกจากนี้ยังมีเค้าโครงภายนอก พวกเขาเก็บไว้ที่ไหน?

กลับไปที่โหมด 1C Enterprise ผ่านเมนูผู้ใช้ด้วย สิทธิ์ในการบริหารปฏิบัติการ/แค็ตตาล็อก เลือกไดเร็กทอรีการประมวลผลภายนอก

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

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

เค้าโครงของแบบฟอร์มที่พิมพ์ 1C

เลย์เอาต์ของแบบฟอร์ม 1C ที่พิมพ์มีดังต่อไปนี้

อย่างที่คุณเห็นมันถูกแบ่งออกเป็นบล็อค บล็อกอาจเป็นแนวนอน (ชื่อทางด้านซ้าย) หรือแนวตั้ง (ชื่ออยู่ด้านบน)

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

ในการกำหนดขอบเขต ให้เลือกหลายแถว (หรือหลายคอลัมน์) แล้วเลือกตาราง/ชื่อ/กำหนดชื่อจากเมนู หากต้องการลบ - นอกจากนี้ยังมีคำสั่ง Remove name

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

อย่างไรก็ตาม ตามค่าเริ่มต้น ชื่อเซลล์ที่กำหนดเองจะไม่ปรากฏ หากต้องการดู ให้เลือกรายการเมนู ตาราง/ชื่อ/แสดงเซลล์ที่มีชื่อ

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

บล็อกทั่วไป (มักใช้) สำหรับแบบฟอร์มการพิมพ์:

  • ส่วนหัว - แสดงชื่อเรื่องของเอกสาร
  • บรรทัด - แสดงหนึ่งบรรทัดของตาราง บล็อกนี้ซ้ำหลายครั้งเท่าที่คุณต้องการเพื่อพิมพ์บรรทัด
  • ส่วนท้าย - แสดงส่วนท้ายของเอกสาร

ตอนนี้เราต้องจัดการกับ

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

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

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

  • "การบัญชี 2.0"
  • "การจัดการการค้า 10.3"
  • "เงินเดือนและ HR 2.5"
  • "ระบบอัตโนมัติแบบบูรณาการ 1.1"
  • "ควบคุม โรงงานผลิต 1.3"
  • "ค้าปลีก 1.0"
  • และโครงแบบอื่นๆ ที่คล้ายคลึงกัน

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

1 — เมนูบริการ 2 - เลือก "แบบฟอร์มการพิมพ์ภายนอกและการประมวลผล" 3 - ถัดไป - "แบบฟอร์มการพิมพ์ภายนอก" (ดูรูปด้านล่าง ↓)

เพื่อโน้มน้าวคุณว่าคำสั่งนี้เหมาะสำหรับการกำหนดค่าอื่น ๆ ในรูปแบบ "ปกติ" - เราจะนำเสนอชื่อย่อเดียวกัน 1-2-3 ขั้นตอน แต่ไม่ใช่ใน "การจัดการการค้า 10.3" แต่ใน "การบัญชี 2.0" ทุกอย่างเหมือนเดิมยกเว้นคำที่เปลี่ยนแปลงเล็กน้อยในย่อหน้าย่อยคือ ...

1 - เมนู "บริการ" (เช่นเดียวกับใน "UT 10.3" และอื่น ๆ )
2 - ที่นี่ "รายงานและการประมวลผลเพิ่มเติม" และไม่ใช่ "แบบฟอร์มการพิมพ์ภายนอกและการประมวลผล" เช่นเดียวกับใน "UT 10.3"
แต่ความหมายเหมือนกันและอยู่ในที่เดียวกันในเมนู "บริการ"
3 - แล้ว - "แบบฟอร์มการพิมพ์ภายนอกเพิ่มเติม" เช่น คำพิเศษ "เพิ่มเติม" เมื่อเปรียบเทียบกับ "UT 10.3" (ดูรูปด้านล่าง ↓)

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

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

7 - เราเลือกไดเร็กทอรีที่มีไฟล์ของแบบฟอร์มการพิมพ์ภายนอกที่เราต้องการ 8 - เลือกไฟล์ของเรา 9 - คลิก "เปิด" (ดูรูปด้านล่าง↓)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

มาบันทึกไฟล์การประมวลผลภายนอกลงในฮาร์ดไดรฟ์กัน สำหรับสิ่งนี้เราจะใช้เมนู ไฟล์ -> บันทึก, ไอคอน บันทึก(ฟลอปปีดิสก์สีน้ำเงิน) หรือแป้นพิมพ์ลัด ctrl+s. ตั้งชื่อไฟล์ที่บันทึกไว้ว่า "PrintForm"

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

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

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

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

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

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

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

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

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

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

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

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

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

การเพิ่มตารางลงในเลย์เอาต์

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

การเพิ่มส่วนท้ายให้กับเลย์เอาต์

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

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

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

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

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

พิมพ์ฟังก์ชัน () ส่งออก EndFunction

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

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

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

TabDoc = SpreadsheetDocument ใหม่

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

เลย์เอาต์ = GetLayout("เลย์เอาต์");

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

พื้นที่ส่วนหัว = เค้าโครง GetArea("ส่วนหัว"); AreaData = Layout.GetArea ("ข้อมูล"); AreaFooter = Layout.GetArea ("ชั้นใต้ดิน");

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

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

Header Area.Parameters.HeaderText = "แบบฟอร์มการพิมพ์"+ReferenceToObject.Number;

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

HeaderScope.Parameters.Organization = LinkToObject.Organization; พื้นที่ส่วนหัว Parameters.Account = LinkToObject.Account; ส่วนหัว Area.Parameters.IncomingDate = ObjectReference.Date; Header Area.Parameters.Counterparty Agreement = ข้อตกลง LinkToObject.Counterparty

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

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

การเขียนคำขอพิมพ์คนพิการ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

พารามิเตอร์ของตารางเสมือนถูกเติมให้คลิกปุ่ม ตกลง.

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

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


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

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

Zapros.Tekst = "SELECT | PostuplenieTovarovUslugTovary.Nomenklatura, | PostuplenieTovarovUslugTovary.Summa, | PostuplenieTovarovUslugTovary.Tsena, | PostuplenieTovarovUslugTovary.Kolichestvo, | TsenyNomenklaturySrezPoslednih.Tsena AS TsenaNaSegodnya | จาก | Dokument.PostuplenieTovarovUslug.Tovary AS PostuplenieTovarovUslugTovary | ซ้ายเข้าร่วม RegistrSvedeniy.TsenyNomenklatury.SrezPoslednih (| &CurrentDate, PriceType = &PriceType) AS PricesItemsSliceLast | By Incoming GoodsServicesGoods.Nomenclature | = PricesItemsSliceLast.Nomenclature |WHERE | Incoming GoodsServicesGoods.Reference = &Reference";

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

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

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

การเลือก = Query.Execute().Select();

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

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

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

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

ผลรวม = 0; จำนวนทั้งหมด = 0;

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

ในขณะที่ Selection.Next() วนรอบ FillPropertyValues(DataArea.Parameters, Selection); TotalSum = ผลรวมทั้งหมด + Sample.Sum; TotalQuantity = TotalQuantity + Sample.Quantity; ปริมาณทั้งหมด TabDoc.Output (พื้นที่ข้อมูล); สิ้นสุดรอบ;

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

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

AreaBasement.Parameters.TotalQuantity = TotalQuantity; RegionBasement.Parameters.TotalAmount = TotalAmount; TabDoc.Output (RegionFooter);

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

กลับ TabDoc;

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

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

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

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

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

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

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

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

บทความที่คล้ายกัน

2022 selectvoice.ru. ธุรกิจของฉัน. การบัญชี. เรื่องราวความสำเร็จ ไอเดีย. เครื่องคิดเลข วารสาร.