ไฟล์สเปรดชีตภายนอก

สวัสดี Khabravchans!

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

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


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

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

ครั้งหนึ่งในองค์กรมีการเขียนโปรแกรมด้วยภาษา Delphi และใช้ MSSQL / Firebird เป็นฐานข้อมูล ในช่วงเวลารุ่งโรจน์นั้น เป็นไปได้ที่จะเชื่อมต่อกับฐานข้อมูลโดยใช้ภาษาใดก็ได้และดำเนินการหลายอย่าง - เลือกสมาชิกลูกหนี้ การชำระเงินภายหลังที่ได้รับ บันทึกการอ่านตราสาร ไม่น่าแปลกใจที่ชุดของสคริปต์ที่ทำให้รูทีนเป็นแบบอัตโนมัติมีการเติบโตอย่างต่อเนื่อง โปรแกรมเมอร์สามารถดำเนินการใด ๆ โดยไม่ต้องเปิดโปรแกรมเอง

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

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

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

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

#หากไม่ใช่การเชื่อมต่อภายนอก ให้เตือน ("สวัสดี!"); #จบถ้า

เนื่องจากการทำงานกับวัตถุ COM เป็นเทคโนโลยีที่ใช้ Windows เท่านั้น จึงไม่น่าแปลกใจที่จะไม่รวมอยู่ในการแจกจ่าย Python มาตรฐาน คุณจะต้องติดตั้งส่วนขยาย - ชุดของโมดูลที่มีฟังก์ชันการทำงานที่จำเป็นทั้งหมดสำหรับการเขียนโปรแกรมภายใต้ Windows ใน Python สามารถดาวน์โหลดได้เป็นตัวติดตั้ง exe ที่ประกอบไว้แล้ว ส่วนขยายนี้ให้การเข้าถึงรีจิสทรี บริการ ODBC วัตถุ COM และอื่นๆ หรือคุณสามารถติดตั้งการแจกจ่าย ActiveState Python ได้ทันที ซึ่งมีส่วนขยาย Win32 ออกมาจากกล่อง

บางครั้งฉันได้ทดลองกับการเชื่อมต่อ COM ในการพัฒนาเว็บแอปพลิเคชัน โดยเฉพาะบัญชีส่วนตัว มีการระบุข้อเสียดังต่อไปนี้:

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

จากประเด็นข้างต้นจึงตัดสินใจเปลี่ยนหลักการของการโต้ตอบโดยแบ่งออกเป็น 2 ส่วน - ส่วนแรกขึ้นอยู่กับแพลตฟอร์ม (Windows) ยกเลิกการโหลดข้อมูล 1C ในรูปแบบที่สะดวกและส่วนที่สองไม่ขึ้นกับแพลตฟอร์ม ทำงานกับข้อมูลโดยไม่สงสัยอะไรเกี่ยวกับหลักการ 1C

กลยุทธ์การดำเนินการมีดังนี้: สคริปต์ไพ ธ อนเชื่อมต่อกับ 1C ดำเนินการค้นหาที่จำเป็นและอัปโหลดข้อมูลไปยังฐานข้อมูล SQLite คุณสามารถเชื่อมต่อกับฐานข้อมูลนี้ได้จาก Python, PHP, Java โครงการส่วนใหญ่ของเราใช้ภาษา Python และเนื่องจากฉันเกลียดการเขียนแบบสอบถาม SQL แบบ Raw ด้วยมือ งานทั้งหมดกับฐานข้อมูล SQLite จึงทำผ่าน SQLAlchemy ORM จำเป็นต้องอธิบายโครงสร้างข้อมูลฐานข้อมูลในรูปแบบที่เปิดเผยเท่านั้น:

จาก sqlalchemy.ext.declarative นำเข้า declarative_base จาก sqlalchemy import Column, Integer, Numeric, DateTime, Unicode, Boolean, LargeBinary, ForeignKey Base = declarative_base() class Abonent(Base): __tablename__ = "abonents" id = Column(Integer, primary_key= True) บัญชี = คอลัมน์(Unicode(32), ดัชนี=True) รหัส = คอลัมน์(Unicode(32)) ที่อยู่ = คอลัมน์(Unicode(512)) fio = คอลัมน์(Unicode(256)) แหล่งที่มา = คอลัมน์(Unicode(16) ) psu = Column(Unicode(256)) tso = Column(Unicode(256)) np = Column(Unicode(256)) street = Column(Unicode(256)) house = Column(Integer) flat = Column(Integer) mro = คอลัมน์ (Unicode (256)) คลาสการชำระเงิน (ฐาน): __tablename__ = "การชำระเงิน" # และอื่น ๆ...

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

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

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

การทำงานกับวัตถุ COM ใน Python นั้นค่อนข้างผิดปกติ ประการแรก "pythonicity" ของรหัสหายไป - กฎสำหรับการตั้งชื่อตัวแปรและฟังก์ชั่นใน 1C ที่ไม่สอดคล้องกับ Zen ของ Python ประการที่สอง ทุกคนรู้ว่าวัตถุ 1C มักถูกเรียกว่าอักขระ Cyrillic ซึ่งจะทำให้เกิดปัญหาเมื่อพัฒนาใน Python ... แต่สามารถแก้ไขได้ ฉันขอแนะนำให้คุณดูรหัส:

นำเข้า pythoncom นำเข้า win32com.client V82_CONN_STRING = "Srvr=v8_server;Ref=v8_db;Usr=ชื่อผู้ใช้;Pwd=megapass;" pythoncom.CoInitialize() V82 = win32com.client.Dispatch("V82.COMConnector").Connect(V82_CONN_STRING)

ดังที่คุณเห็นจากรหัส ไคลเอนต์ได้รับการเตรียมใช้งานให้ทำงานกับ 1C วัตถุ COM ถูกกำหนดโดยชื่อ "V82.COMConnector" โปรดทราบว่าชื่อนี้ใช้ได้กับแพลตฟอร์ม V8.2 หากคุณมีเวอร์ชัน 8.1 ชื่อจะเป็น "V81.COMConnector"

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

การมีวัตถุ คุณสามารถเข้าถึงฟิลด์และเมธอดใดๆ ของบริบทสากล 1C ดำเนินการกับวัตถุสากล เช่น TabularDocument, TableValues ​​เป็นต้น โปรดทราบว่าเมื่อทำงานผ่านการเชื่อมต่อ COM 1C จะทำงานในโหมด "การเชื่อมต่อภายนอก" ไม่รวมคุณลักษณะใดๆ สำหรับงานโต้ตอบ เช่น กล่องโต้ตอบป๊อปอัป การแจ้งเตือน และที่สำคัญที่สุดคือฟอร์ม ฉันแน่ใจว่าคุณจะสาปแช่งนักพัฒนาการกำหนดค่ามากกว่าหนึ่งครั้งสำหรับการรวมฟังก์ชันการทำงานที่สำคัญที่สุดในขั้นตอน Button1Press() ในโมดูลแบบฟอร์มเอกสาร

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

Set Con = CreateObject("v81.COMConnector") Set v8 =Con.Connect("Connection string") Set AccountsManager = v8.Documents.Accounts.... Set AccountsRecord= AccountsManager.CreateItem() AccountsRecord.Account = ... . .... AccountsWrite.Write()

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

#coding=cp1251catalog = getattr(V82.Catalogs, "บัญชีส่วนตัว")

สิ่งต่อไปนี้มีความสำคัญ: ชื่อแอตทริบิวต์ ตลอดจนพารามิเตอร์ของฟังก์ชันและเมธอด จะต้องส่งผ่านในการเข้ารหัส cp1251 ดังนั้น เพื่อหลีกเลี่ยงความสับสนในการเขียนโค้ดล่วงหน้า จึงควรประกาศไว้ที่ส่วนต้นของไฟล์: #coding=cp1251 หลังจากนั้นคุณสามารถส่งสตริงโดยไม่ต้องกังวลเกี่ยวกับการเข้ารหัส แต่! สตริงทั้งหมดที่ได้รับจาก 1C (ผลลัพธ์ของการเรียกใช้ฟังก์ชัน คำขอ) จะถูกเข้ารหัสเป็น UTF-8

ตัวอย่างของรหัสที่เรียกใช้แบบสอบถามในสภาพแวดล้อม 1C วนซ้ำผลลัพธ์และบันทึกฐานข้อมูลใน SQLite:

#coding=cp1251 q = """ เลือกรหัส PersonalAccounts.Code AS, PersonalAccounts.Building.Location.Name + ", " + PersonalAccounts.ShortAddress AS ที่อยู่, PersonalAccounts.Subscriber.Name AS fio, PersonalAccounts.Division.Name AS psu, EXPRESS(ลักษณะเฉพาะPersonalAccountsSliceLast.Value AS Directory.Territorial GridOrganizations)ชื่อ AS tso, PersonalAccounts.Building.Settlement.Name AS np,PersonalAccounts.Building.Street.Name AS street,PersonalAccounts.Building.House AS flat,PersonalAccounts.Accounts บัญชีส่วนบุคคล Dression. Retor. ชื่อเป็น mro จาก reference book. Litsensation as a face account of the left connection of register. ลักษณะของการส่งสัญญาณ. Spaces (, vidicapiterism = value (reference book. Vidcharacteric -grinding orthoganization)) as character of the การเปิดรับแสง = V82.NewObject( "แบบสอบถาม", q) selection = query.Execute().Choose() CONN = db.connect() CONN.query(models.Abonent).delete() while selection.Next(): abonent = models.Abonent() abonent.account = Selection.code.strip() abonent.code = Selection.code abonent.fio = Selection.fio abonent.address = Selection.address abonent.psu = Selection.psu abonent.tso = Selection.tso abonent.source = u"ASRN" abonent.np = Selection.np abonent.street = Selection.street abonent.house = Selection.house abonent.flat = Selection.flat abonent.mro = Selection.mro CONN.add(abonent) CONN.commit()

ที่นี่ CONN คือเซสชันการเชื่อมต่อกับฐานข้อมูล SQLite มีการสร้างวัตถุคิวรี ข้อความถูกเติม ตามที่ระบุไว้ข้างต้น ข้อความคำขอต้องอยู่ใน cp1251 ซึ่งมีการประกาศการเข้ารหัสก่อน หลังจากดำเนินการค้นหา สมาชิกทั้งหมดจะถูกลบในฐานข้อมูลเพื่อไม่ให้เพิ่มรายการที่ซ้ำกัน จากนั้นพวกเขาจะถูกเพิ่มในรอบและการคอมมิตขั้นสุดท้ายจะตามมา

เมื่อทำงานกับคำขอ ฉันค้นพบกฎต่อไปนี้

เมื่อเลือกฟิลด์ ให้ตั้งชื่อละตินให้กับฟิลด์ การเข้าถึงฟิลด์เหล่านั้นผ่านตัวเลือก (จุด) จะสะดวกกว่ามาก แทนที่จะใช้ getattr()
- เลือกเฉพาะประเภทข้อมูลดั้งเดิม: สตริง ตัวเลข วันที่ และบูลีน อย่าเลือกลิงก์ไปยังวัตถุ (เอกสาร ไดเร็กทอรี)! ในบริบทนี้ คุณไม่จำเป็นต้องมีการอ้างอิงใดๆ เลยแม้แต่น้อย เพราะการเข้าถึงแอตทริบิวต์หรือเมธอดของการอ้างอิงจะส่งผลให้มีการร้องขอผ่านการเชื่อมต่อ COM หากคุณเข้าถึงแอตทริบิวต์ของลิงก์แบบวนซ้ำ มันจะช้ามาก
- หากคุณเลือกฟิลด์วันที่ ฟิลด์นั้นจะถูกส่งคืนเป็นวัตถุ PyTime นี้ ชนิดพิเศษข้อมูลสำหรับการถ่ายโอนข้อมูลวันที่-เวลาในการเชื่อมต่อแบบ COM ไม่สะดวกในการทำงานเหมือนกับวันที่และเวลาปกติ หากคุณส่งวัตถุนี้ไปที่ int() การประทับเวลาจะถูกส่งกลับ ซึ่งคุณสามารถรับ datetime ได้โดยใช้เมธอด fromtimestamp()

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

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

Link = getattr(V82.Catalogs, "SystemReports").FindByDescription("Elen's Verification Act") nav_url = V82.GetURL(link, "Report") name = V82.ExternalReports.Connect(nav_url) ExternalReport = V82.ExternalReports.Create (ชื่อ) setattr(ExternalReport, "PersonalAccount", อ้างอิง) table_doc = ExternalReport.GetDoc() path = V82.GetTempFileName("xls") table_doc.Write(path, V82 .SpreadsheetDocumentFileType.XLS) report = models.Report() รายงาน .account = reference.Code.strip() report.type = u"act" report.document = open(path, "rb").read() CONN.add(report)

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

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

#coding=cp1251acts = getattr(V82.Documents, "Act of Take Testimonies") act =acts.CreateDocument() setattr(act, "Indication", 1024.23) setattr(act, "Subscriber", "Ivanov") # การกรอก ในรายละเอียดอื่นๆ ..act.Write()
ขณะนี้การป้อนข้อมูลเป็นไปโดยอัตโนมัติ

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

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

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

ขอให้ทุกท่านโชคดี และจำไว้ว่า 1C ไม่ได้น่ากลัวอย่างที่คิด!

ในโปรแกรมภายนอกที่สร้างบน .NET Framework 4.x คุณต้องดูรายการเอกสารที่เลือก ผู้ใช้เลือกประเภทของเอกสาร จากนั้นรายการเอกสารในฐานข้อมูลจะถูกสร้างขึ้น การแสดงลิงค์เอกสารใช้เป็นข้อมูลที่แสดง

ภาพหน้าจอต่อไปนี้แสดงหน้าต่างหลักของโปรแกรม

ฉวยโอกาส Automation Client/Server เราสามารถเชื่อมต่อกับฐานข้อมูล 1C:Enterprise 8.x จากแอปพลิเคชันใดก็ได้และรับข้อมูลที่จำเป็น ยิ่งไปกว่านั้น ด้วยการใช้ความสามารถของ .NET Framework เราสามารถใช้ไวยากรณ์ของภาษาการเขียนโปรแกรมแพลตฟอร์มเพื่อทำงานผ่านวัตถุ COM ของการเชื่อมต่อ

ก่อนที่จะดำเนินการติดตั้งใช้งานโปรแกรมโดยตรง เรามาดูคุณลักษณะที่มีประโยชน์บางประการของ .NET 4.x ที่ทำให้การทำงานกับ Automation Client/Server ง่ายขึ้น

.NET 4.x และประเภท "ไดนามิก"

ในเวอร์ชันของแพลตฟอร์ม .NET 4.x สามารถใช้งานได้ ประเภทไดนามิกข้อมูล "ไดนามิก" คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับคุณลักษณะของการใช้ข้อมูลประเภทนี้ อ่านลิงค์ต่อไปนี้.

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

มันไม่เตือนอะไรคุณเลยเหรอ? รหัสประกอบด้วย Cyrillic และคล้ายกับไวยากรณ์ของภาษาโปรแกรมของแพลตฟอร์มมาก

การดำเนินการ

การใช้งานโปรแกรมนั้นค่อนข้างง่าย เมื่อป้อนสตริงการเชื่อมต่อฐานข้อมูล ผู้ใช้จะเลือกประเภทเอกสาร หลังจากนั้นรายการเอกสารทั้งหมดจะถูกสร้างขึ้น

เมื่อต้องการสร้างการเชื่อมต่อ จะใช้วิธี "GetConnection()" ซึ่งจะบันทึกการเชื่อมต่อ COM ที่สร้างขึ้นไปยังตัวแปรส่วนกลาง รหัสโปรแกรมวิธีการแสดงในภาพหน้าจอต่อไปนี้:

ก่อนที่รายการจะถูกขยาย เหตุการณ์ "ดร็อปดาวน์" จะเริ่มทำงาน ซึ่งสร้างรายการการเลือกตามการรวบรวมข้อมูลเมตาของเอกสาร:

หลังจากที่ผู้ใช้เลือกค่าจากรายการแบบเลื่อนลงแล้ว ข้อความ " SelectedIndexChanged" รหัสโปรแกรมตัวจัดการมีดังนี้:


นั่นคือทั้งหมด! หากสตริงการเชื่อมต่อถูกต้องและติดตั้งวัตถุ COM "v82connector" บนเครื่อง เมื่อเราเลือกเอกสารจากรายการข้อมูลเมตา เราจะเห็น รายการทั้งหมดเอกสารประเภทที่เลือก

ผลลัพธ์

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

8.41 เมื่อกำหนดประเภทของคุณสมบัติของวัตถุเอ็กซ์ดีทีโอ ข้อมูลประเภทประกอบด้วย:

1. พิมพ์ชื่อเท่านั้น

2. พิมพ์ชื่อและชื่อเนมสเปซ

3. พิมพ์ชื่อและชื่อแพ็คเกจ XDTO

4. พิมพ์ชื่อและชื่อโรงงาน XDTO

8.42 ผู้จัดการเว็บ บริการแก้ปัญหา:

1. การจัดการแหล่งเชื่อมต่อกับฐานข้อมูล

2. รองรับคำอธิบายบริการ WSDL การใช้งานโปรโตคอล SOAP

3. การสนับสนุนแอปพลิเคชันเว็บ

4. คำตอบที่ถูกต้อง 1,2

5. คำตอบที่ถูกต้อง 2.3

6. ตอบข้อ 1,2,3 ถูกต้อง

8.43 วัตถุการกำหนดค่า" เรา.เพื่อให้บริการ" ใช้สำหรับ:

2. การจัดระเบียบการเข้าถึงบริการเว็บด้วยลิงก์แบบคงที่

3. ฟังก์ชั่นการส่งออกของฐานข้อมูลนี้

8.44 วัตถุการกำหนดค่า" วสลิงค์"ใช้สำหรับ:

1. จัดระเบียบการเข้าถึงบริการเว็บแบบไดนามิก

2. องค์กรของการอุทธรณ์ไปยังเว็บ- บริการ แต่ลิงก์คงที่

3. ฟังก์ชั่นการส่งออกของฐานข้อมูลนี้

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

4. องค์ประกอบ XML

5. วัตถุหรือมูลค่าเอ็กซ์ดีทีโอ

6. ตอบข้อ 1, 2, 3 ถูก

8.46 เมื่อกล่าวถึงเว็บ บริการโดยสแตติกลิงก์ ลำดับของการดำเนินการมีดังนี้:

1. รับคำอธิบาย wsdl ตั้งค่าการเชื่อมต่อ (สร้างพร็อกซี) เรียกใช้การดำเนินการบริการ

2. ตั้งค่าการเชื่อมต่อ (สร้างพร็อกซี) เรียกใช้การดำเนินการบริการ

8.47 เมื่อกล่าวถึงเว็บ บริการผ่านลิงค์แบบไดนามิก ลำดับของการดำเนินการมีดังนี้:

1. รับwsdl คำอธิบาย การตั้งค่าการเชื่อมต่อ (การสร้างพร็อกซี) การเข้าถึงการดำเนินการบริการ

2. ตั้งค่าการเชื่อมต่อ (สร้างพร็อกซี) เรียกใช้การดำเนินการบริการ

3. โทรเรียกใช้บริการ

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

4. องค์ประกอบ XML

5. วัตถุหรือมูลค่าเอ็กซ์ดีทีโอ

6. ตอบข้อ 1,2,3 ถูกต้อง

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

1. ในหน้าต่างแก้ไขวัตถุ ส่วน "การแลกเปลี่ยนข้อมูล"

2. โดยการเรียกหน้าต่าง "Properties Palette" สำหรับวัตถุที่กำหนด

3. โดยการเรียกหน้าต่าง "เพิ่มเติม" สำหรับวัตถุนี้ (แท็บ "แผนการแลกเปลี่ยน")

4. ถูกทุกข้อ

5. คำตอบที่ 1 และ 3 ถูก

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

1. วัตถุเมื่อเปลี่ยนซึ่งวัตถุนี้ควรเข้าสู่การแลกเปลี่ยน

2. วัตถุที่ควรแลกเปลี่ยนเมื่อวัตถุนี้มีการเปลี่ยนแปลง

3. แผนการแลกเปลี่ยน เมื่อทำการแลกเปลี่ยน วัตถุนี้จะถูกเปลี่ยน

4. แผนการแลกเปลี่ยนที่จะคำนึงถึงการเปลี่ยนแปลงในวัตถุนี้

8.51 การแก้ไขโอเล่- ดำเนินการวัตถุ:

1. ตัวแก้ไขสเปรดชีตมีอยู่ในแพลตฟอร์ม

2. ตัวแก้ไขวัตถุ OLE ที่สร้างขึ้นในแพลตฟอร์ม

3. แอพพลิเคชั่นที่เกี่ยวข้องกับโอเล่-วัตถุ

8.52 ไฟล์ภายนอกเอกสารสเปรดชีต:

1. มีนามสกุล XML

2. มีนามสกุลMXL

3. สามารถมีนามสกุลใดก็ได้

4. ไม่มีอยู่จริง เอกสารสเปรดชีตทั้งหมดมีอยู่ในการกำหนดค่า

8.53 ระบบอัตโนมัติ-เซิร์ฟเวอร์ "1C:Enterprise 8"...

1. ให้การเข้าถึงคุณสมบัติและวิธีการทั้งหมดของบริบทส่วนกลาง

2. ให้การเข้าถึงคุณสมบัติและวิธีการเพิ่มเติมเพื่อดำเนินการเฉพาะกับการทำงานในโหมดการทำงานอัตโนมัติ

3. ช่วยให้คุณจัดการแอปพลิเคชันของระบบ 1C: Enterprise8 จากแอปพลิเคชันอื่นรวมถึงดำเนินการคล้ายกับการโต้ตอบ

4. คำตอบที่ได้รับทั้งหมดนั้นถูกต้อง

1. เป็นไปไม่ได้

2. ดำเนินการทั้งหมดในซอฟต์แวร์

3. ดำเนินการโดยใช้วัตถุการกำหนดค่า "แผนการแลกเปลี่ยน"

4. ดำเนินการโดยตัวช่วยสร้างการแลกเปลี่ยนที่สร้างขึ้นในแพลตฟอร์ม

9. การบำรุงรักษาโซลูชันแอปพลิเคชัน

9.1 ลำดับของแพลตฟอร์มและการกำหนดค่าที่ติดตั้งคืออะไร?

1. คุณต้องติดตั้งแพลตฟอร์มก่อน จากนั้นจึงติดตั้งการกำหนดค่าตามเทมเพลต

2. คุณต้องติดตั้งการกำหนดค่าก่อนและหลังแพลตฟอร์ม

3. ลำดับการติดตั้งไม่สำคัญ

9.2 การติดตั้งปกติของแพลตฟอร์ม "1C: Enterprise 8"...

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

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

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

4. เกี่ยวข้องกับการติดตั้งเวอร์ชันท้องถิ่นสำหรับผู้ใช้รายเดียว

9.3 ต้องทำอะไรเพื่ออัปเดตแพลตฟอร์มเทคโนโลยีระหว่างการติดตั้ง 1C: Enterprise ปกติ

1. ในโหมดตัวกำหนดค่า ให้ระบุไฟล์อัพเดต

2. เรียกใช้โปรแกรมติดตั้งที่มาพร้อมกับการแจกจ่าย

3. ระบุไฟล์การจัดส่งในโหมดตัวกำหนดค่า

9.4 การติดตั้งการดูแลระบบ...

1. เกี่ยวข้องกับการติดตั้งแพลตฟอร์มบนคอมพิวเตอร์ของผู้ใช้แต่ละคน

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

3. เกี่ยวข้องกับการติดตั้งการกำหนดค่าบนเซิร์ฟเวอร์ 1C: Enterprise พร้อมคำจำกัดความของผู้ใช้ที่มีสิทธิ์การเข้าถึงของผู้ดูแลระบบ

9.5 เมื่ออัปเดตแพลตฟอร์มเทคโนโลยีระหว่างการติดตั้งผู้ดูแลระบบของ 1C: Enterprise...

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

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

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

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

9.6 เป็นไปได้หรือไม่ระหว่างการติดตั้งปกติของ 1C: Enterprise in รุ่นไคลเอ็นต์เซิร์ฟเวอร์การทำงานของไคลเอ็นต์และแอปพลิเคชันเซิร์ฟเวอร์ของแพลตฟอร์มเทคโนโลยีรุ่นต่างๆ ?

1. อนุญาต

2. ไม่อนุญาต จำเป็นต้องอัปเดตทั้งแอปพลิเคชันเซิร์ฟเวอร์และแอปพลิเคชันไคลเอ็นต์

3. อนุญาต จำเป็นต้องอัปเดตแอปพลิเคชันเซิร์ฟเวอร์

9.7 การใช้โหมดแบทช์...

1. อนุญาตให้เข้า โหมดอัตโนมัติอัปโหลด/ดาวน์โหลด ทดสอบ และแก้ไขฐานข้อมูล

2. อนุญาตให้คุณเรียกใช้ทั้งสองโหมดของโปรแกรมโดยไม่มีการแทรกแซงแบบโต้ตอบ

3. ให้คุณทำการควบคุมไวยากรณ์และตรวจสอบการกำหนดค่า

4. คำตอบที่ถูกต้อง I และ 2

5. คำตอบที่ถูกต้อง 1,2 และ 3

9.8 เปิดตัวตัวเลือกจาก บรรทัดคำสั่ง 1C: องค์กร...

1. กำหนด ฐานข้อมูล, ผู้ใช้, เขา, รหัสผ่าน, โหมดเริ่มต้น, กฎสำหรับการดำเนินการที่ระบุในไฟล์ภายนอก

2. กำหนด infobase, ผู้ใช้, เขา, รหัสผ่าน, โหมดเริ่มต้น, กฎสำหรับการดำเนินการที่ระบุซึ่งระบุไว้ในบรรทัดคำสั่ง

3. Verpa ตอบฉันและ 2

4. ไม่มีคำตอบที่ถูกต้อง

9.9 บรรทัดคำสั่งอนุญาตอะไร

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

ในการเริ่มระบบ 1C:Enterprise เป็นเซิร์ฟเวอร์ OLE Automation จากแอปพลิเคชันภายนอก จะดำเนินการตามลำดับต่อไปนี้:

  • วัตถุถูกสร้างขึ้นด้วยตัวระบุ OLE:
    • V1СEnterprise.Application - เวอร์ชันคีย์อิสระ
    • V77.Application - รหัสขึ้นอยู่กับเวอร์ชัน;
    • V77S.Application - คีย์ขึ้นอยู่กับเวอร์ชัน, เวอร์ชัน SQL;
    • V77L.Application - คีย์ขึ้นอยู่กับเวอร์ชัน, เวอร์ชันในเครื่อง;
    • V77M.Application - คีย์ขึ้นอยู่กับเวอร์ชัน, เวอร์ชันเครือข่าย
  • ระบบ 1C:Enterprise ถูกเตรียมใช้งานโดยใช้วิธี Initialize
  • แอตทริบิวต์และวิธีการของระบบ 1C: Enterprise เรียกว่าเป็นเซิร์ฟเวอร์ OLE Automation

ความคิดเห็น
เนื่องจากโปรแกรม 1C:Enterprise เป็นทั้งเซิร์ฟเวอร์ OLE Automation และไคลเอนต์ OLE Automation จึงเป็นไปได้จาก 1C:Enterprise เพื่อเข้าถึงสำเนาของ 1C:Enterprise อีกชุดหนึ่ง (เช่น ไปยังการกำหนดค่าอื่น) สำหรับการแลกเปลี่ยนข้อมูล โดยพื้นฐานแล้ว ผลิตภัณฑ์ซอฟต์แวร์ที่ทันสมัยทั้งหมดสนับสนุนกลไก OLE Automation โดยเฉพาะอย่างยิ่งกับ MS Office, MS FoxPro และแอปพลิเคชันที่เขียนบนพวกเขา, DAO เป็นต้น ดังนั้นโปรแกรม 1C:Enterprise จึงสามารถรวมเข้ากับพวกเขาได้อย่างสมบูรณ์
.

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

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

คุณลักษณะของระบบ 1C:Enterprise เป็นเซิร์ฟเวอร์ OLE Automation

ระบบ 1C:Enterprise ตามที่เซิร์ฟเวอร์ OLE Automation จัดเตรียมไว้ให้ การเข้าถึงแบบเต็มถึงฉัน บริบททั่วโลก(ดู "บริบทการดำเนินการของหน่วยโปรแกรม") ดังนั้นวัตถุเซิร์ฟเวอร์ 1C: Enterprise OLE สามารถมีเป็นแอตทริบิวต์: ค่าคงที่ของระบบ, ค่าที่ระบุในตัวกำหนดค่า ค่าคงที่, การถ่ายโอน, ลงทะเบียน, ประเภทของการคำนวณ, กลุ่มประเภทการคำนวณตลอดจนตัวแปรที่ประกาศในโมดูลโปรแกรมส่วนกลางด้วย คำสำคัญส่งออก.

คำถาม 08.13 ของการสอบ 1C: Platform professional หากต้องการสร้างวัตถุที่จะใช้จากฐานข้อมูล 1C:Enterprise 8 เพื่อเข้าถึงฐานข้อมูล 1C:Enterprise 8 อื่นผ่าน OLE ให้ใช้ตัวสร้าง:

  1. ฐานใหม่ (InitString)
  2. ใหม่ OLEObject
  3. ใหม่ COMObject
  4. การสร้างวัตถุดังกล่าวจะกระทำโดยวิธีอื่น
ไวยากรณ์ที่ถูกต้องคือข้อที่สาม

คำถาม 08.51 ของการสอบ 1C: Platform professional ดำเนินการแก้ไขวัตถุ OLE:
  1. โปรแกรมแก้ไขสเปรดชีตในตัว
  2. ตัวแก้ไขวัตถุ OLE ในตัวแพลตฟอร์ม
  3. แอปพลิเคชันที่เกี่ยวข้องกับวัตถุ OLE
คำตอบที่ถูกต้องคือข้อสาม ดูคำจำกัดความของวัตถุ OLE
คำถาม 08.53 ของการสอบ 1C: Platform professional เซิร์ฟเวอร์อัตโนมัติ "1C:Enterprise 8"...
  1. ให้การเข้าถึงคุณสมบัติและวิธีการทั้งหมดของบริบทส่วนกลาง
  2. ให้การเข้าถึงคุณสมบัติและวิธีการเพิ่มเติมเพื่อดำเนินการเฉพาะกับการทำงานในโหมดการทำงานอัตโนมัติ
  3. ช่วยให้คุณจัดการแอปพลิเคชันระบบ 1C: Enterprise 8 จากแอปพลิเคชันอื่นรวมถึงดำเนินการคล้ายกับการโต้ตอบ
  4. คำตอบที่ได้รับทั้งหมดนั้นถูกต้อง
คำตอบที่ถูกต้องคือข้อสี่ - ระบบอัตโนมัติช่วยให้เข้าถึงแอปพลิเคชันได้เกือบสมบูรณ์
คำถาม 08.10 ของการสอบ 1C: Platform professional ในกระบวนงานที่จะเรียกเมื่อเชื่อมต่อกับฐานข้อมูลผ่าน COM คุณจะไม่สามารถใช้:
  1. DocObject=Doc.CreateDocument()
  2. Form.Open()
  3. คำขอ = คำขอใหม่
  4. ไม่มีคำตอบที่ถูกต้อง
คำตอบที่ถูกต้องคือคำตอบที่สอง

คำถาม 08.03 ของการสอบ 1C: Platform professional เมื่อเข้าถึงฐานข้อมูล 1C: Enterprise 8 ผ่าน OLE จะมีการดำเนินการตามขั้นตอน - ตัวจัดการเหตุการณ์ "ที่จุดเริ่มต้นของระบบ" ที่กำหนดไว้ ...

  1. ในโมดูลแอปพลิเคชัน
  2. ในโมดูลการเชื่อมต่อภายนอก
  3. ในโมดูลทั่วไป
  4. ในโมดูล OLE
คำตอบที่ถูกต้องคือคำตอบแรก Automation มองเห็นโมดูลแอปพลิเคชัน
คำถาม 08.06 ของการสอบ 1C: Platform professional เมื่อเข้าถึงฐานข้อมูล 1C: Enterprise 8 ผ่าน COMConnector จะมีการดำเนินการตามขั้นตอน - ตัวจัดการเหตุการณ์ "ที่จุดเริ่มต้นของระบบ" ที่กำหนดไว้ ...
  1. ในโมดูลแอปพลิเคชัน
  2. ในโมดูลการเชื่อมต่อภายนอก
  3. ในโมดูลทั่วไป
  4. ในโมดูล COM
คำตอบที่ถูกต้องคือคำตอบที่สอง เฉพาะโมดูลที่มีแอตทริบิวต์ "การเชื่อมต่อภายนอก" เท่านั้นที่พร้อมใช้งานสำหรับ COM

กำลังโหลด...
สูงสุด