ตัวอย่างของกฎการแปลงวัตถุ ตัวอย่างของกฎการแปลงวัตถุ 1C การแปลงข้อมูลของกฎการอัปโหลด

หนังสือเรียนเกี่ยวกับกฎการแปลงข้อมูล 1C (ฉบับที่ 2) สำหรับการอัปโหลดข้อมูล

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

กฎการอัปโหลดข้อมูลจะระบุออบเจ็กต์ที่ผู้ใช้ได้รับอนุญาตให้อัปโหลด

วิธีที่ง่ายที่สุดในการอธิบายเรื่องนี้คือการใช้ตัวอย่างที่เฉพาะเจาะจง มากำหนดปัญหากัน: มีการกำหนดค่าที่คล้ายกันสองรายการ "การบัญชีองค์กร" จำเป็นต้องโหลดไดเร็กทอรี "Nomenclature" จากการกำหนดค่าหนึ่งไปยังอีกการกำหนดค่าหนึ่ง

ให้เราแสดงลำดับของการกระทำในกรณีนี้:

  1. สร้างกฎการแลกเปลี่ยนข้อมูลใหม่
  2. ในหน้าต่างข้อความที่ปรากฏขึ้น ระบุว่าเราต้องการสร้างกฎการแปลงออบเจ็กต์ใหม่ด้วยตนเอง:
  3. ระบุวัตถุต้นทางและปลายทาง:

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

  5. หากคุณไปที่แท็บ "กฎการอัปโหลดข้อมูล" คุณจะเห็นว่ามีเพียงกฎการอัปโหลดเดียวเท่านั้นที่ถูกสร้างขึ้น นั่นคือเราบอกโปรแกรมว่าเมื่อทำการยกเลิกการโหลดข้อมูลเฉพาะออบเจ็กต์ของไดเร็กทอรี "Nomenclature" เท่านั้นที่ต้องถูกยกเลิกการโหลด (บวกกับออบเจ็กต์เหล่านั้นที่องค์ประกอบของไดเร็กทอรี "Nomenclature" อ้างอิงถึงจะถูกยกเลิกการโหลดด้วย):

  6. กฎเกณฑ์พร้อมใช้งานอย่างสมบูรณ์ มาบันทึกเป็นไฟล์กันเถอะ:

  7. มาเปิดโปรแกรม "การบัญชีองค์กร" กันดีกว่า มาเปิดการประมวลผลแบบสากลสำหรับการอัปโหลดและดาวน์โหลดข้อมูลจาก XML และโหลดกฎการแลกเปลี่ยน:

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

  8. หลังจากอัปโหลดไฟล์ข้อมูลแล้ว สิ่งที่เหลืออยู่คือการโหลดข้อมูลนี้ลงไป ฐานข้อมูล- ผู้รับ:

ความสนใจ!!!

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

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

การเพิ่มประสิทธิภาพที่ค่อนข้างง่ายเหล่านี้สามารถลดเวลาในการอัพโหลดข้อมูลได้ 30-40 (!!!)% หรือมากกว่านั้น!

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

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

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

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

ลองดูบางส่วนของพวกเขา:

  • แลกเปลี่ยนผ่านไฟล์ข้อความ
  • การใช้แผนการแลกเปลี่ยน
  • ฯลฯ

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

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

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

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

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

ข้อได้เปรียบประการที่สามที่ฉันจะทราบคือการไม่มีข้อจำกัดในการกระจายข้อมูล นักพัฒนาเองเลือกวิธีการส่งข้อมูลไปยังการกำหนดค่าตัวรับ มีสองตัวเลือกที่พร้อมใช้งานทันที: การอัปโหลดไปยังไฟล์ xml และการเชื่อมต่อโดยตรงไปยังฐานข้อมูล (COM/OLE)

กำลังศึกษาสถาปัตยกรรม

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

การกำหนดค่า “CD” เป็นตัวสร้างภาพประเภทหนึ่งโดยได้รับความช่วยเหลือจากนักพัฒนาในการสร้างกฎการแลกเปลี่ยน มันไม่รู้วิธีดาวน์โหลดข้อมูล การประมวลผลบริการภายนอกเพิ่มเติมที่รวมอยู่ในแพ็คเกจการแจกจ่ายซีดีมีหน้าที่รับผิดชอบในเรื่องนี้ มีหลายอย่าง (XX ในชื่อไฟล์คือหมายเลขเวอร์ชันแพลตฟอร์ม):

  • MDXXExp.epf- การประมวลผลช่วยให้คุณสามารถอัปโหลดคำอธิบายของโครงสร้างฐานข้อมูลไปยังไฟล์ xml คำอธิบายโครงสร้างถูกโหลดลงในซีดีเพื่อการวิเคราะห์และสร้างกฎการแลกเปลี่ยนเพิ่มเติม
  • V8ExchanXX.epf- อัพโหลด/ดาวน์โหลดข้อมูลจากฐานข้อมูลตามกฎการแลกเปลี่ยน ในการกำหนดค่ามาตรฐานส่วนใหญ่ การประมวลผลจะเกิดขึ้นทันที (ดูรายการเมนู "บริการ") การประมวลผลเป็นแบบสากลและไม่เชื่อมโยงกับการกำหนดค่า/กฎเฉพาะใดๆ

เอาล่ะ จากทั้งหมดที่กล่าวมาข้างต้น เรามากำหนดขั้นตอนของการพัฒนา Conversion ใหม่กันดีกว่า:

  1. คำจำกัดความของงาน จำเป็นต้องเข้าใจอย่างชัดเจนว่าข้อมูลใดที่ต้องถ่ายโอน (จากออบเจ็กต์การกำหนดค่าใด) และที่สำคัญที่สุดคือจะถ่ายโอนข้อมูลไปที่ใด
  2. การเตรียมคำอธิบายโครงสร้างการกำหนดค่า (แหล่งที่มา/อ่างล้างจาน) เพื่อการโหลดลงในซีดีในภายหลัง ปัญหาได้รับการแก้ไขโดยการประมวลผลบริการ MDXXExp.epf
  3. กำลังโหลดคำอธิบายโครงสร้างที่เตรียมไว้ลงในความปลอดภัยของข้อมูล
  4. การสร้างกฎการแลกเปลี่ยนโดยใช้เครื่องมือซีดีภาพ
  5. ดำเนินการอัปโหลด/ดาวน์โหลดตามกฎการแปลงข้อมูลที่สร้างขึ้นโดยใช้การประมวลผล V8ExchanXX.epf
  6. การแก้ไขกฎการแลกเปลี่ยน (ถ้าจำเป็น)

การแปลงที่ง่ายที่สุด

สำหรับการสาธิต เราจะต้องมีการกำหนดค่าที่ปรับใช้สองแบบ ฉันตัดสินใจเลือกใช้ตัวเลือก: “Trade Management” ฉบับที่ 10 และโซลูชันเล็กๆ น้อยๆ ที่เขียนขึ้นเองที่บ้าน งานคือการถ่ายโอนข้อมูลจากการกำหนดค่า "UT" มาตรฐาน เพื่อความกระชับ เราจะเรียกโซลูชันที่เขียนขึ้นเองว่า "Sink" และการจัดการการค้า "แหล่งที่มา" มาเริ่มแก้ไขปัญหาด้วยการถ่ายโอนองค์ประกอบจากไดเร็กทอรี "Nomenclature"

ก่อนอื่น มาดูรูปแบบการแปลงข้อมูลและอ่านรายการการกระทำที่ต้องทำอีกครั้ง จากนั้นเราจะเปิดการกำหนดค่า "แหล่งที่มา" และเปิดการประมวลผลบริการ MD82Exp.epf ในนั้น

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

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

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

ดังนั้นเราจึงคงการตั้งค่าเริ่มต้นไว้ทั้งหมดและอัปโหลดคำอธิบายการกำหนดค่าไปยังไฟล์ เราทำซ้ำขั้นตอนที่คล้ายกันสำหรับฐานที่สอง

เปิดซีดีแล้วเลือกในเมนูหลัก “ไดเรกทอรี” -> “การกำหนดค่า”- ไดเร็กทอรีเก็บคำอธิบายโครงสร้างของการกำหนดค่าทั้งหมดที่สามารถใช้เพื่อสร้างการแปลงได้ เราโหลดคำอธิบายการกำหนดค่าเพียงครั้งเดียว จากนั้นจึงใช้คำอธิบายดังกล่าวได้หลายครั้งเพื่อสร้าง Conversion ที่แตกต่างกัน

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

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

  • ชื่อไฟล์กฎการแลกเปลี่ยน - กฎการแลกเปลี่ยนที่สร้างขึ้นจะถูกบันทึกไว้ภายใต้ชื่อนี้ คุณสามารถเปลี่ยนชื่อไฟล์ได้ตลอดเวลา แต่ทางที่ดีควรตั้งค่าตอนนี้ ซึ่งจะช่วยประหยัดเวลาในอนาคต ฉันตั้งชื่อกฎสำหรับตัวอย่างสาธิต: “rules-ut-to-priemnik.xml”
  • ชื่อ - ชื่อของการแปลง ชื่อนี้สามารถเป็นอะไรก็ได้ ฉันจำกัดตัวเองไว้ที่ “Demo” UT ถึงผู้รับ”

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

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

มาดูหน้าต่าง “การตั้งค่ากฎการแลกเปลี่ยน” กันดีกว่า อินเทอร์เฟซอาจดูสับสนเล็กน้อย - จำนวนมากแท็บอัดแน่นไปด้วยการควบคุม ในความเป็นจริงทุกอย่างไม่ยากนักคุณเริ่มคุ้นเคยกับความบ้าคลั่งนี้หลังจากทำงานกับแอปพลิเคชันไม่กี่ชั่วโมง

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

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

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

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

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

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

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

กฎเกณฑ์การแลกเปลี่ยนพร้อมแล้ว เราเลือกออบเจ็กต์สำหรับการซิงโครไนซ์ และกฎสำหรับการแปลงคุณสมบัติและกฎการอัปโหลดถูกสร้างขึ้นโดยอัตโนมัติ มาบันทึกกฎการแลกเปลี่ยนลงในไฟล์ จากนั้นเปิด IB “Source” (ในกรณีของฉันคือ UT) และเปิดการประมวลผลบริการในนั้น V8Exchan82.epf.

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

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

ปัญหาโลกแห่งความจริง

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

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

ภารกิจที่ 1 กรอกรายละเอียดที่ขาดหายไป

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

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

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

ถ้าไม่ใช่ Object.ThisGroup ดังนั้น Object.Organization = Constants.CurrentOrganization.Get(); สิ้นสุดถ้า;

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

ภารกิจที่ 2 รายละเอียดในทะเบียนข้อมูล

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

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

ขั้นตอนต่อไปคือการสร้างกฎการอัปโหลด ไปที่แท็บที่เหมาะสมแล้วคลิกปุ่ม “ เพิ่ม- ในหน้าต่างสำหรับเพิ่มกฎการอัปโหลด ให้กรอก:

  • วิธีการสุ่มตัวอย่าง เปลี่ยนเป็น "อัลกอริทึมตามอำเภอใจ";
  • กฎการแปลง เลือกการลงทะเบียนข้อมูล “ประเภทลูกค้า”;
  • รหัส (ชื่อ) ของกฎ เขียนลงไปว่า "กำลังยกเลิกการโหลดประเภทไคลเอ็นต์";

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

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

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

DataFetch = ตารางค่าใหม่ (); DataSelection.Columns.Add("ลูกค้า"); DataSelection.Columns.Add("ClientType"); SelectingDataFromDirectory = Directories.Accounts.Select(); ขณะ SelectingDataFromDirectory.Next() วนซ้ำ หากเลือก DataFromDirectory.ThisGroup ให้ดำเนินการต่อ

สิ้นสุดถ้า; ถ้าเลือกข้อมูลจาก Directory.Buyer แล้ว NewRow = Data Selection.Add(); NewRow.Client = DataFetchFromDirectory.Link; ประเภทของลูกค้า” กฎการแปลงคุณสมบัติ: ลูกค้าและประเภทลูกค้า เราจะปล่อยให้แหล่งที่มาว่างเปล่า และในตัวจัดการเหตุการณ์ "ก่อนที่จะยกเลิกการโหลด" เราจะเขียน:

//สำหรับคุณสมบัติ “ไคลเอนต์” ค่า = Source.Client; //สำหรับคุณสมบัติ “ClientType” ถ้า Source.Client = "ผู้ซื้อ" ดังนั้น Expression = "Enumerations.ClientTypes.Buyer" ElseIf Source.Client = "ซัพพลายเออร์" จากนั้น Expression = "Enumerations.ClientTypes.Supplier"; สิ้นสุดถ้า;

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

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

ภารกิจที่ 3 เทคนิคการใช้ชิ้นส่วนโต๊ะ

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

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

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

DataFetch = ตารางค่าใหม่ (); //จะมีส่วนของตารางอีกส่วนหนึ่งที่นี่ Data Selection.Columns.Add("Products"); //ที่นี่จะมีส่วนที่เป็นตาราง Data Selection.Columns.Add("Services"); SelectionData.Columns.Add("ลิงก์");

ภารกิจที่ 4 การถ่ายโอนข้อมูลไปยังการดำเนินการ

หากองค์กรใช้ระบบบัญชีหลายระบบ ไม่ช้าก็เร็วก็จะต้องย้ายข้อมูลพร้อมกับธุรกรรมรุ่นต่อ ๆ ไป

ในการกำหนดค่า “ บีพี"มี เอกสารสากลการดำเนินการ” และเหมาะสำหรับการขึ้นรูปสายไฟเพิ่มเติม มีเพียงปัญหาเดียว - เอกสารถูกสร้างขึ้นมาอย่างชาญฉลาดและข้อมูลไม่สามารถถ่ายโอนเข้าไปได้อย่างง่ายดาย

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

ภารกิจที่ 5 การซิงโครไนซ์ข้อมูลในหลายรายละเอียด

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

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

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

ในกรณีเช่นนี้ การซิงโครไนซ์ออบเจ็กต์ตามเกณฑ์ต่างๆ จะถูกต้องมากกว่า การค้นหาคู่สัญญาตาม INN, KPP, ชื่อหรือแบ่งการค้นหาออกเป็นหลายขั้นตอนจะถูกต้องมากกว่า

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

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

อัลกอริธึมดังกล่าวสามารถนำไปใช้ได้ค่อนข้างมาก ในตัวจัดการเหตุการณ์ “ ค้นหาช่อง” เราสามารถระบุเกณฑ์การค้นหาได้สูงสุด 10 เกณฑ์และสำหรับแต่ละเกณฑ์จะกำหนดองค์ประกอบของช่องค้นหาของตัวเอง:

ถ้า SearchOptionNumber = 1 ดังนั้น SearchPropertyNameString = “TIN, KPP”; มิฉะนั้นIfSearchOptionNumber = 2 จากนั้นSearchPropertyNameString = “ชื่อ”; สิ้นสุดถ้า;

มีวิธีแก้ไขหลายประการอยู่เสมอ

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

ในความคิดของฉัน บริษัท 1C เพิกเฉยต่อหัวข้อการใช้การแปลงข้อมูลอย่างไม่ยุติธรรม ในช่วงที่เทคโนโลยีมีอยู่ทั้งหมด มีหนังสือเล่มเดียวเท่านั้นที่ได้รับการตีพิมพ์: “1C: Enterprise 8 การแปลงข้อมูล: การแลกเปลี่ยนระหว่างโซลูชันแอปพลิเคชัน” หนังสือเล่มนี้ค่อนข้างเก่า (2551) แต่ก็ยังแนะนำให้ทำความคุ้นเคยกับหนังสือเล่มนี้

ความรู้เกี่ยวกับแพลตฟอร์มยังเป็นสิ่งจำเป็น

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

หนังสือเรียนเกี่ยวกับการแปลงข้อมูล 1C (ฉบับที่ 2) การสร้างกฎการแลกเปลี่ยนอัตโนมัติ

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

หลังจากสร้างกฎการแลกเปลี่ยนข้อมูลใหม่ ตั้งค่าการกำหนดค่าต้นทางและปลายทาง และบันทึก Conversion ใหม่แล้ว เราไม่มีกฎการแปลงออบเจ็กต์เดียว

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

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

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

สำหรับบรรทัดการจับคู่วัตถุที่ยังมีช่องทำเครื่องหมายอยู่ โปรแกรมจะสร้างกฎการแปลงวัตถุ

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

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

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

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

คุณปฏิบัติตามหลักการเดียวกันทุกประการเมื่อสร้างกฎ Conversion มูลค่าได้

การดำเนินการสำหรับการเปรียบเทียบค่า "ด้วยตนเอง":

การดำเนินการสำหรับการจับคู่ค่าอัตโนมัติ:

สิ่งที่เหลืออยู่คือการบอกโปรแกรมถึงวิธีการค้นหาอ็อบเจ็กต์ในฐานข้อมูลตัวรับที่สอดคล้องกับอ็อบเจ็กต์ในฐานข้อมูลต้นทาง

หนังสือเรียนเกี่ยวกับกฎการแปลงข้อมูล 1C (ฉบับที่ 2) สำหรับการแปลงวัตถุ

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

นอกเหนือจากนั้น ยังมีคุณสมบัติอีกหลายประการที่เราจะพยายามเปิดเผยความหมาย

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

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

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

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

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

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

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

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

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

การแลกเปลี่ยนออนไลน์

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

  1. ตามกฎของการขนถ่าย หากวัตถุได้รับการขนถ่ายแล้ว ให้ทำการขนถ่ายตามที่เป็นอยู่
  2. ตามกฎของการขนถ่าย หากวัตถุไม่ได้ถูกขนถ่าย เราก็จะไม่ขนถ่าย
  3. เมื่ออัปโหลดโดยใช้ลิงก์ไปยังออบเจ็กต์ เราจะอัปโหลดทั้งหมด

ตัวอย่างเช่น หากคุณไม่ต้องการโอนรายการทั้งหมดจาก IS หนึ่งไปยังอีก IS แต่มีเพียงอันเดียวที่มีลิงก์ ช่องทำเครื่องหมายก็จะดำเนินการ

อย่าแทนที่วัตถุที่สร้างขึ้นในฐานข้อมูลผู้รับเมื่อทำการโหลด- การตั้งค่าจะกำหนดว่าจำเป็นต้องถ่ายโอน (ย้อนกลับ) วัตถุที่สร้างขึ้นในฐานข้อมูลที่มีการจัดระเบียบการแลกเปลี่ยนหรือไม่ นั่นคือหากเอกสารถูกสร้างขึ้นใน infobase 1 และเข้าสู่ infobase 2 ผ่านการแลกเปลี่ยน แล้วควรโอนไปยัง infobase 1 เมื่อมีการเปลี่ยนแปลงในฐานข้อมูล 2 หรือไม่ การตั้งค่าอนุญาตให้คุณระบุลำดับความสำคัญของวัตถุเมื่อทำการแลกเปลี่ยน ณ ตำแหน่งที่ การสร้างมัน นั่นคือ การเปลี่ยนแปลงในฐานข้อมูลที่สร้างวัตถุนั้นจะถูกกระจายไปทุกที่ และการเปลี่ยนแปลงในฐานข้อมูลอื่นจะไม่ส่งผลกระทบต่อวัตถุนี้ในฐานข้อมูล 1

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

ตัวเลือกการตั้งค่าช่องค้นหา- โต๊ะด้วย ตัวเลือกที่เป็นไปได้การตั้งค่าช่องค้นหาสำหรับผู้ใช้ ผู้ออกแบบกฎจะกำหนดชุดค่าผสมที่เป็นไปได้ของช่องค้นหาที่ผู้ใช้สามารถเลือกได้เมื่อตั้งค่าการแลกเปลี่ยน การตั้งค่าทั้งหมดที่ระบุโดยนักพัฒนากฎจะต้องได้รับการประมวลผลในโค้ดตัวจัดการ "ช่องค้นหา" ตัวแปร SearchSettings ในตัวจัดการจะกำหนดอ็อพชันการจับคู่ที่ผู้ใช้เลือก (SettingNameForAlgorithm จากแถวตารางที่เกี่ยวข้อง) หากผู้ใช้ไม่ได้เลือกตัวเลือกที่ตรงกัน หรือไม่มีการเสนอตัวเลือกใดๆ การตั้งค่าการค้นหาจะเป็นสตริงว่าง

ในแท็บ "ขั้นสูง" คุณสามารถแก้ไขชื่อของกฎ การรวมกฎนั้นในกลุ่มที่ต้องการ รวมถึงคำอธิบายของกฎได้