คอมพิวเตอร์ Windows อินเทอร์เน็ต

1c เปลี่ยนกฎการแลกเปลี่ยนผ่านรูปแบบสากล 1C เสนอรูปแบบ EnterpriseData สำหรับการแลกเปลี่ยนข้อมูลทางธุรกิจ รูปแบบ EnterpriseData คืออะไร

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

ตัวย่อที่ยอมรับในเอกสารนี้

KD2- การแปลงข้อมูลการกำหนดค่า การแก้ไข 2.0
KD3- การกำหนดค่า การแปลงข้อมูล การแก้ไข 3.0 การกำหนดค่า 3.0.5.3
ED- EnterpriseData รูปแบบการแลกเปลี่ยนสากล

ตอบคำถามหลังจากรู้จัก KD3 ผิวเผิน ถ้าคุณรู้ว่าทำไมคุณถึงต้องการ KD3 คุณสามารถข้ามย่อหน้านี้ได้;)

คำถามและคำตอบ

  • KD3 เป็นรุ่นใหม่ของ KD2? เลขที่! นี่เป็นอีกหนึ่งเครื่องมือที่ช่วยแก้ปัญหาที่คล้ายกับ KD2 เครื่องมือแต่ละตัวมีแอปพลิเคชันของตัวเอง
  • KD3 ดีกว่า KD2 หรือไม่? เทียบกันไม่ได้เพราะ พวกเขาเป็นเครื่องมือที่แตกต่างกันและแต่ละอันมีข้อดีและข้อเสียของตัวเอง
  • ในการเปลี่ยนกฎการแลกเปลี่ยน KD3 คุณต้อง เพื่อลบการกำหนดค่าจากการสนับสนุน? เลขที่ ไม่จำเป็นต้องถอนตัวจากการสนับสนุน! ในการกำหนดค่าทั่วไป คุณสามารถเชื่อมต่อการประมวลผลภายนอกกับกฎได้มาตรฐาน และในการกำหนดค่าที่รองรับแพลตฟอร์ม 8.3.10 ขึ้นไป คุณสามารถแก้ไขกฎโดยใช้ส่วนขยาย
  • คุณต้องถ่ายโอนข้อมูลจากการกำหนดค่าภายในองค์กร เพื่อวัตถุประสงค์ในการศึกษา คุณสามารถใช้ KD3? หากคุณกำลังถามคำถามนี้ เป็นไปได้มากว่าคุณทำไม่ได้ สำหรับ KD3 การกำหนดค่าต้องมี BSP 2.3 และสูงกว่าที่มีการซิงโครไนซ์ผ่านรูปแบบสากล KD2 จะเหมาะกับคุณ 100% KD3 เป็นที่น่าสงสัย
  • สามารถใช้ KD3 สำหรับการกำหนดค่าที่ดัดแปลงทั่วไปได้หรือไม่ ใช่คุณสามารถ. หากข้อมูลที่ผิดปกติของคุณสามารถส่งผ่านได้โดยใช้อุปกรณ์ประกอบฉาก ED หรือ AdditionalInfo ก็ไม่เป็นไร มิฉะนั้น จะมีตัวเลือกในการเปลี่ยนรูปแบบการแลกเปลี่ยน (XML schema) ในกรณีนี้ ความสามารถของ CD3 จะเกือบเท่ากับ CD2 แต่ข้อได้เปรียบหลักของ CD3 จะหายไป - ความเก่งกาจของรูปแบบการแลกเปลี่ยน
  • การกำหนดค่าที่รองรับ ED สามารถแลกเปลี่ยนกันได้? ใช่! แต่สำหรับการแลกเปลี่ยน BP 3.0 - BP 3.0 เมื่อสร้างการซิงโครไนซ์ คุณจะไม่สามารถเลือก BP 3.0 ได้ ไม่เป็นไร เลือก "โปรแกรมอื่น" หากคุณต้องการการแลกเปลี่ยนแบบครั้งเดียว ก็เพียงพอแล้วที่จะใช้การประมวลผล "อัปโหลด / โหลด EnterpriseData" ในเมนูฟังก์ชันทั้งหมด
  • หลังจากอัปเดตการกำหนดค่า คุณต้องดาวน์โหลดกฎล่าสุดจากแพ็คเกจหรือไม่ เลขที่! กฎมีอยู่ในโมดูลการกำหนดค่า หากต้องการแลกเปลี่ยนกับฐานข้อมูล 1C อื่น คุณไม่จำเป็นต้องโหลดกฎของฐานข้อมูลอื่น ทำไม? รายละเอียดในบทความนี้
  • หลังจากอัปเดตฐานข้อมูลหนึ่งแล้ว จำเป็นต้องอัปเดตฐานข้อมูลอื่นที่เข้าร่วมในการแลกเปลี่ยนให้ทันสมัยหรือไม่ เลขที่! ไม่จำเป็นต้องอัปเดตฐานข้อมูลทั้งหมดที่เข้าร่วมในการแลกเปลี่ยนแบบซิงโครนัส นี่คือข้อดีอย่างหนึ่งของ KD3
  • การกำหนดค่าของเราได้รับการปรับปรุงอย่างมาก มีเอกสารและไดเรกทอรีประเภทใหม่ KD3 สามารถถ่ายโอนได้หรือไม่ มีโอกาสที่จะไม่สามารถทำได้โดยไม่ต้องเปลี่ยนรูปแบบ นี่เป็นหนึ่งใน "ข้อเสีย" ของ KD3 เมื่อเปรียบเทียบกับ KD2

ทำไมเราถึงต้องการ KD3? ข้อดีข้อเสีย

ข้อดีของ KD3

ลองพิจารณาข้อดีหลักของ KD3 โดยใช้ตัวอย่างงานที่พบบ่อย มีการกำหนดค่า UT 11.3 ซึ่งไม่ได้อัปเดตด้วยเหตุผลบางประการ จำเป็นต้องจัดระเบียบการแลกเปลี่ยนกับ BP 3.0 ซึ่งอัปเดตเป็นรุ่นปัจจุบันอย่างต่อเนื่อง

ไม่มีปัญหา.

  • รูปแบบการแลกเปลี่ยนสากลที่ใช้ใน KD3 ได้รับการออกแบบมาเพื่อแก้ปัญหาดังกล่าว
  • กฎการแลกเปลี่ยนใน UT ไม่ได้สร้างขึ้นเพื่อแลกเปลี่ยนกับ BP แต่สำหรับการแลกเปลี่ยนกับ EnterpriseData รูปแบบสากล
  • หากเราดำเนินการในแง่ของ KD2 UT จะแลกเปลี่ยนกับการกำหนดค่า ED ซึ่งจะไม่เปลี่ยนแปลง BP 3.0 ยังแลกเปลี่ยนกับ ED

การกำหนดค่าแต่ละรายการมีกฎเกณฑ์ของตนเองในการแลกเปลี่ยนกับ ED ดังนั้น UT จะอัปโหลดข้อมูลไปยังรูปแบบเดียวกันเสมอ การกำหนดค่า BP 3.0 ไม่ว่าจะใหม่แค่ไหน ก็ควรสามารถรับข้อมูลจากรูปแบบนี้ได้

ปรากฎว่า UT ไม่จำเป็นต้องกังวลเกี่ยวกับความจริงที่ว่า BP จะเปลี่ยนรายละเอียดบางอย่าง งานนี้ง่าย - อัปโหลดไปยัง ED และการกำหนดค่า PSU ควรยอมรับข้อมูลจากรูปแบบนี้

  • เนื่องจากแหล่งที่มาจะอัปโหลดการกำหนดค่าในรูปแบบเดียวเสมอ ตัวรับสัญญาณการกำหนดค่าใดๆ สามารถอัปโหลดข้อมูลจากรูปแบบสากลนี้ได้
    เหล่านั้น. สำหรับการแลกเปลี่ยนโดยพลการ UT - BP, UT - KA, UT - ERP, KA-BP, ERP - BP ไม่จำเป็นต้องเขียนกฎแต่ละข้อ ใน KD3 กฎนั้นเป็นสากล การกำหนดค่าใดๆ ที่สนับสนุนการแลกเปลี่ยนรูปแบบสากลสามารถแลกเปลี่ยนกับการกำหนดค่าใดๆ ที่สนับสนุนรูปแบบ ED

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

ข้อเสียของ KD2

กฎการแลกเปลี่ยนเป็นแบบเฉพาะสำหรับการกำหนดค่าแต่ละคู่ ชุดค่าผสมของการแลกเปลี่ยนด้านบนทั้งหมดระหว่างการกำหนดค่าประเภทต่างๆ และการกำหนดค่าเวอร์ชันต่างๆ จำเป็นต้องมีกฎการแลกเปลี่ยนของตนเอง ดังนั้น เพื่อแก้ปัญหาดังกล่าวในการแลกเปลี่ยน UT 11.3 และ BP 3.0 จำเป็นต้องดีบักและปรับแต่งกฎการแลกเปลี่ยนเกือบทุกครั้งที่อัปเดต BP 3.0

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

ข้อเสียของ KD3

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

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

ข้อดีหลักจะจางลงเล็กน้อยเนื่องจากกรอบเวลาที่จำกัดในการสนับสนุนรูปแบบ สิ่งนี้เกิดขึ้นแล้วโดยผู้ใช้ UT 11.1, UT 11.2 ที่แลกเปลี่ยนกับ BP 3.0 เวลาการสนับสนุนแสดงไว้ที่นี่ มันบอกว่าระยะเวลารองรับรูปแบบที่รับประกันขั้นต่ำคือหนึ่งปี จริงๆ แล้วประมาณ 3 ปี ดังนั้น หากคุณตั้งค่าการซิงโครไนซ์ในวันนี้ อย่างน้อยหนึ่งปีคุณจะไม่สามารถอัปเดตฐานข้อมูล UT 11 จากนั้นอัปเดตการกำหนดค่าหรือเพียงแค่เพิ่มรูปแบบใหม่ ทำการเปลี่ยนแปลงเล็กน้อยใน BSP และในกฎ ในกรณีที่จำเป็น. ทำอย่างไร? จะกล่าวถึงในบทความนี้ต่อไป

ข้อดีของ KD2

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

ในการเชื่อมต่อกับข้อดีและข้อเสียข้างต้น ขอแนะนำให้ใช้ KD3 สำหรับการกำหนดค่าทั่วไป KD2 สามารถใช้ได้กับการกำหนดค่าใดๆ แต่ด้วยข้อเสียของมัน อย่าลืมว่าบางครั้งอาจเหมาะสมกว่าที่จะใช้ KD3

ฉันหวังว่าคุณจะเข้าใจว่าทำไมถึงต้องการ KD3 เรายังคงทำบุญต่อไป

ยอมรับตัวย่อเพิ่มเติม

BSP- ไลบรารีของระบบย่อยมาตรฐาน
ภายใต้- กฎการประมวลผลข้อมูล
PKO- กฎการแปลงวัตถุ
PKPD- กฎสำหรับการแปลงข้อมูลที่กำหนดไว้ล่วงหน้า
PKS- กฎการแปลงทรัพย์สิน

พิจารณาตัวอย่าง - จำเป็นต้องเปลี่ยนกฎมาตรฐานสำหรับการแลกเปลี่ยน BP 3.0 และ UT 11.3

บนพื้นหลังสีเหลือง มีขั้นตอนจากคำแนะนำที่เปิดใน KD3 ลำดับของขั้นตอนที่เสนอในบทความนี้จะแตกต่างกัน เพื่อไม่ให้เกิดความสับสนและเริ่มดำเนินการตามหลักเหตุผลในทันที

ฉันจะเปลี่ยนกฎ ED ได้อย่างไร
  1. แก้ไขโมดูลด้วยกฎการแลกเปลี่ยนที่ถูกต้องในการกำหนดค่า เรายังไม่ได้พิจารณาตัวเลือกนี้เพราะ เพื่อทำความเข้าใจว่าต้องเปลี่ยนอะไรและที่ไหน ต้องทำอย่างน้อยหนึ่งครั้งใน KD3 ในกรณีนี้ จะง่ายกว่าในอนาคตในการแก้ปัญหาอย่างรวดเร็ว ดีบักในโมดูล และถ่ายโอนไปยัง KD3 หากจำเป็น
  2. ใช้ KD3.
    สิ่งนี้ทำใน KD2 ได้อย่างไร เรายกเลิกการโหลดข้อมูลเมตาของการกำหนดค่าทั้งสองและโหลดลงใน KD2
    ขั้นตอนที่ 1.สำหรับ KD3 เราทำเช่นเดียวกัน - ในแต่ละการกำหนดค่าในโหมดองค์กรโดยการประมวลผล \ tmplts \ 1c \ Conversion \ 3_0_5_3 \ MD83Exp.epfอัปโหลดข้อมูลเมตาการกำหนดค่า
    เช่น ไปยังโฟลเดอร์ “ D: \ กฎ BP3 \ BP 3.0.54.15 \", ชื่อไฟล์ " MD.xml».

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

// Elements.Settings.Visibility = False;

เราบันทึกการประมวลผล เปิดในโหมดองค์กร ตั้งค่าสถานะ "ยกเลิกการโหลดข้อมูลการลงทะเบียน" ยกเลิกการโหลด

ขั้นตอนที่ 3โหลดไฟล์ที่สร้างไว้ก่อนหน้านี้ “ MD.xml"ใน KD3 แฟล็กส่วน" วี เวอร์ชั่นใหม่การกำหนดค่า».

เพราะ ใน KD3 "การกำหนดค่าระดับกลาง" (ED) ใช้สำหรับการแลกเปลี่ยน เรายังโหลด "ข้อมูลเมตา" ของมันด้วย สคีมา XML, ไฟล์ที่มีนามสกุล "xsd" ขั้นตอนที่ 2.คุณสามารถใช้ได้จากการกำหนดค่า UT 11 หรือ BP 3.0 พวกเขาก็เหมือน ๆ กัน. เปิดการกำหนดค่าในแถบค้นหาให้ป้อน " เข้าสู่", เราเห็นในต้นไม้ ทั่วไป - แพ็คเกจ XDTOบางแพ็คเกจเช่นนี้: EnterpriseData_1_3_8, EnterpriseData_1_4_4และที่คล้ายคลึงกัน .. เหล่านี้เป็นเวอร์ชันของรูปแบบ 1.3 และ 1.4 ตามลำดับ และ 1.2, 1.1, 1.0 หากมี ปุ่มขวาเมาส์บนแพ็คเกจใน เมนูบริบทเลือก "".

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

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

ระยะที่ 2หลังจากโหลดข้อมูลเมตาลงใน CD3 เราจะดำเนินการโหลดกฎการแลกเปลี่ยนมาตรฐาน
สิ่งนี้ทำใน KD2 ได้อย่างไร กฎถูกโหลดเข้าสู่การแปลง
มันเกือบจะเหมือนกันใน KD3 เรายกเลิกการโหลดกฎจากกฎมาตรฐาน สร้างการแปลง จากนั้นโหลดกฎเข้าไป

การยกเลิกการโหลดกฎทั่วไปจากการกำหนดค่าเพื่อโหลดลงในCD3

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

เราเปิดการกำหนดค่า BP 3.0 หรือ UT 11.3 ในโหมดตัวกำหนดค่าในแถบค้นหาคุณสามารถป้อน " ผู้ชาย uni” เปิดโมดูลทั่วไป หากนี่คือ BP 3.0 ให้เปิดมัน ในโมดูลเปิด ไปที่เมนู ไฟล์ - บันทึกสำเนา, บันทึกไฟล์ด้วยชื่อที่ต้องการ เช่น “ D: \ Rules BP3 \ BP 3.0.54.15 \ Common โมดูล ExchangeManager ผ่าน UniversalFormat_Module».
เปิดการกำหนดค่า BP 3.0 หรือ UT 11.3 ในโหมดองค์กร การประมวลผลแบบเปิด \ tmplts \ 1c \ Conversion \ 3_0_5_3 \ อัปโหลดกฎการซิงค์.epf

ขาดการประมวลผลทั่วไป:

  • มักจะล้มเหลว
  • ยกเลิกการโหลดกฎจากการประมวลผลภายนอกที่เชื่อมต่อกับโหนด แต่เราต้องการกฎทั่วไป
  • ไม่ทำงานใน BP 3.0.53 และสูงกว่า

การปรับเปลี่ยนโมดูลของแบบฟอร์มการประมวลผลหลัก การเปลี่ยนแปลงขั้นตอนต่างๆ OnCreateAtServer.

& ขั้นตอน AtServer OnCreateAtServer (ยกเลิก, การประมวลผลมาตรฐาน) // รายการรูปแบบการเลือกเวอร์ชัน รูปแบบเวอร์ชัน = การจับคู่ใหม่; Data ExchangeRemovable.OnGettingAvailableFormatVersions (FormatVersions); สำหรับแต่ละ ExchangePlan จาก DataExchangeReturnUsedExchangePlansBSP () วงจรถ้า DataExchangeRepeat.ThisExchangePlanXDTO (ExchangePlan) จากนั้น ExchangePlan รูปแบบเวอร์ชัน = การจับคู่ใหม่ เวอร์ชัน BSP243 = GeneralPurposeClientServer.CompareVersions (เวอร์ชัน StandardSubsystemsServer.Library (), "2.4.3.1")> = 0; ModuleDataServer = วัตถุประสงค์ทั่วไป CommonModule ("Data ExchangeServer"); ถ้า VersionBSP243 แล้ว ExchangePlaneFormatVersions = DataExchange ModuleServer.ExchangePlanSettingsValue (ExchangePlan, "ExchangeFormatVersions "); มิฉะนั้น ExchangePlans [ExchangePlan] .GetExchangeFormatVersions (ExchangePlanFormatVersions); สิ้นสุดถ้า; สำหรับแต่ละ ExchangePlaneVersion จากโมดูล ExchangePlanFormatVersion CycleManager = FormatVersions.Get (ExchangePlaneVersion.Key); ถ้าหน่วยผู้จัดการ = ไม่ได้กำหนดหรือหน่วยผู้จัดการ<>ExchangePlaneVersion.Value จากนั้นFormatVersions.Insert (ExchangePlaneVersion.Key, ExchangePlaneVersion.Value); สิ้นสุดถ้า; สิ้นสุดรอบ; สิ้นสุดถ้า; สิ้นสุดรอบ; สำหรับ EachFormatVersion FROMFormatVersion.Loop Items.FormatVersionNumber.SelectionList.Add (FormatVersion.Key); สิ้นสุดรอบ; FormatVersionStoreAddress = PutToTemporaryStore (เวอร์ชันรูปแบบ, UniqueID); สิ้นสุดขั้นตอน

  • เราเลือก "รูปแบบหมายเลขเวอร์ชัน" เช่น " 1.3 »,
  • "ไดเรกทอรีแลกเปลี่ยน" - สร้างโฟลเดอร์เช่น ""
  • กดปุ่ม " ยกเลิกการโหลด».

เราทำซ้ำขั้นตอนเหล่านี้สำหรับรูปแบบเวอร์ชันอื่น ๆ และบันทึกไว้ในโฟลเดอร์ที่เกี่ยวข้อง "1.4", "1.5" ฯลฯ สำหรับ BP 3.0 ก็เพียงพอที่จะยกเลิกการโหลดรูปแบบทั้งหมดจาก 1.3 และสูงกว่า สำหรับการกำหนดค่าอื่นๆ ตั้งแต่ 1.2 ขึ้นไป

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

ไปที่ส่วน การแปลง - กำลังโหลดกฎการซิงโครไนซ์จากไฟล์.
:

    โหลดสถานที่: " เข้าสู่การแปลงที่มีอยู่»

    ไดเรกทอรีแลกเปลี่ยน: " D: \ กฎ BP3 \ BP 3.0.54.15 \ 1.3»

  • ไฟล์ที่มีโมดูลการแลกเปลี่ยน: " D: \ Rules BP3 \ BP 3.0.54.15 \ Common โมดูล Exchange Manager ผ่าน UniversalFormat13_ Module.txt»
  • การแปลง: " BP 3.0.54.15»

เมื่อโหลดกฎการซิงโครไนซ์จากไฟล์สำหรับ UT 11.3 ข้อผิดพลาดจะปรากฏขึ้น " ไม่พบฟิลด์ออบเจ็กต์" เหตุผลสำหรับ TekPKO.UseForReceive = False CD3 ต้องการข้อมูลเกี่ยวกับตัวเลือกการระบุเมื่อได้รับ หากสิ่งนี้ไม่อยู่ในไฟล์กฎ เกิดข้อผิดพลาด เราแก้ไขข้อผิดพลาดนี้ เราแก้ไขความเข้าใจผิดนี้ ไม่ว่าเราจะลบแบบฟอร์มนี้ออกจากการสนับสนุนหรือใช้ ส่วนขยาย.

// รูปแบบหลักของการประมวลผล LoadingSynchronizationRulesFromFiles // ก่อนทำการเปลี่ยนแปลง: // ขั้นตอนโหลดกฎสำหรับการแปลงวัตถุ & บนขั้นตอนเซิร์ฟเวอร์ LoadPKO () ... FillProperty Values ​​​​(TekPKO โครงสร้างแอตทริบิวต์); // ตัวเลือกการระบุ - ตรรกะพิเศษ TekPKO.ObjectIdentification Option = ตัวเลือกการแจงนับ.Object Identification [ตัวเลือก AttributesStructure.Identification]; ElseIf XMLReader.NodeType = XMLNodeType.EndItem จากนั้น // เขียน POC ที่โหลด ... // การเปลี่ยนแปลงถูกทำเครื่องหมายด้วย "// ED" // ขั้นตอนโหลดกฎสำหรับการแปลงวัตถุ & บนขั้นตอนเซิร์ฟเวอร์ LoadPKO () ... FillProperty Values ​​​​(TekPKO โครงสร้างแอตทริบิวต์); // ตัวเลือกการระบุ - ตรรกะพิเศษ ถ้า TekPKO.UseFor ได้รับแล้ว // ED TekPKO.Identification Variant = Enumerations.Object Identification Variant [Attributes Structure.Identifying Variant]; สิ้นสุดถ้า; ElseIf XMLReader.NodeType = XMLNodeType.EndItem จากนั้น // เขียน POC ที่โหลด ...

กดปุ่ม " ดาวน์โหลด». « ตัวจัดการมีไว้สำหรับการแปลงที่แตกต่างกัน: BP 3.0.44 (รูปแบบ 1.4) ดาวน์โหลดต่อไหม"คลิก" ใช่».
โดยไม่ต้องปิดแบบฟอร์มให้เลือก " ไดเรกทอรีแลกเปลี่ยน"และกดปุ่ม" ". เราทำซ้ำหลายครั้งในการโหลดกฎสำหรับแต่ละรูปแบบลงในการแปลงปัจจุบัน
หลังจากโหลดสำเร็จ ไปที่ส่วน " การแปลง "-" การตั้งค่ากฎการแปลง" เปิดการแปลงของเราจากแบบฟอร์มรายการ
หากเราเห็น POD ฯลฯ แสดงว่าการโหลดลง CD3 สำเร็จ

ตรวจสอบความถูกต้องของกฎการโหลด

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

  • เปิดตัวกำหนดค่า BP สร้างการประมวลผลภายนอกใหม่ เช่น ชื่อ “ การซิงโครไนซ์ของ EDBP", คำพ้องความหมายสำหรับ" การซิงโครไนซ์ ED BP 3.0».
  • ใน KD3 ในรูปแบบ " ตั้งกฎการแลกเปลี่ยน"กดปุ่ม" "แล้ววางโค้ดนี้จากคลิปบอร์ดลงในการประมวลผลใหม่ของเรา
  • ในตัวกำหนดค่า BP เราตรวจสอบโมดูลเพื่อหาข้อผิดพลาดทางไวยากรณ์ เราบันทึกการประมวลผล
  • สร้างการประมวลผลว่างอื่นใน BP เช่น ชื่อ “ การซิงโครไนซ์ EDB ทั่วไป", คำพ้องความหมายสำหรับ" การซิงโครไนซ์ ED BP 3.0 ทั่วไป". คัดลอกข้อความของโมดูลแหล่งจ่ายไฟทั่วไป Exchange ManagerUniversalFormat13ลงในโมดูลการประมวลผลและบันทึก

ลองเปรียบเทียบการรักษาทั้งสอง เมนู ไฟล์ - เปรียบเทียบไฟล์.

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

ในทำนองเดียวกัน เราสร้างการแปลงสำหรับ UT 11.3 ใน KD3

BP 3.0.54.15

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

พิจารณาตัวอย่างการแก้ไข

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

คุณต้องโอนอุปกรณ์ประกอบฉาก " ประเภทการตั้งชื่อ"หนังสืออ้างอิง" ศัพท์เฉพาะ "ประเภทตัวแปร" Directory.ViewsNomenclatures" หนังสืออ้างอิงประเภทนี้ไม่ได้จัดทำโดยกฎ KD3 มาตรฐานและไม่ได้รับการสนับสนุนโดยเวอร์ชันรูปแบบ ED ที่ต่ำกว่า 1.6

มีหลายตัวเลือกสำหรับการแก้ปัญหานี้

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

ก่อนดำเนินการปรับแต่งกฎมาตรฐาน ให้สร้างสองกลุ่มในกลุ่มกฎ " เพิ่มโดย», « เปลี่ยน". สิ่งนี้ทำใน " การแปลง -".
ใหม่ POD, PKO, อัลกอริธึม ฯลฯ เราจะสร้างในกลุ่ม "เพิ่ม" วัตถุมาตรฐานที่เราทำการเปลี่ยนแปลงจะถูกโอนไปยังกลุ่ม "เปลี่ยน" สิ่งนี้จะอำนวยความสะดวกในการบำรุงรักษากฎที่เปลี่ยนแปลงในภายหลัง

มาเริ่มกันเลยดีกว่า

การเปลี่ยนแปลงกฎใน UT 11.3

ใน KD3 ในรูปแบบ " UT 11.3.4.12 การตั้งกฎการแลกเปลี่ยน"บนแท็บ อัลกอริทึมการสร้างอัลกอริธึมใหม่

  • ชื่ออัลกอริทึม "AdditionalInfoInsert"
  • กลุ่ม: "เพิ่ม"

พารามิเตอร์: "DataXDTO, ชื่อ, AdditionalValue"

รหัสอัลกอริทึม

ถ้า DataXDTO.Property ("AdditionalInfo") และ TypeValue (DataXDTO.AdditionalInfo) = Type ("Structure") แล้ว AdditionalData = DataXDTO.AdditionalInfo; มิฉะนั้น AdditionalData = โครงสร้างใหม่; สิ้นสุดถ้า; AdditionalData.Insert (ชื่อ, AdditionalValue); DataXDTO.Insert ("ข้อมูลเพิ่มเติม", AdditionalData);

เราบันทึกอัลกอริทึมและไปที่แท็บ " กฎการแปลงวัตถุ»

โดยปุ่ม " หา"กำลังมองหา" ศัพท์เฉพาะ "เปิด PKO" Reference_Nomenclature_Send". ไปที่แท็บ " เมื่อส่ง". ที่นั่นเราเห็นฟิลด์ "ชื่อตัวจัดการ:" "" คุณสามารถทำการเปลี่ยนแปลงได้โดยตรงที่นั่น
สามารถเขียนโค้ดที่ซับซ้อนกว่าที่ต้องการการดีบักในการกำหนดค่าได้ เรากำลังมองหาในโมดูลการแลกเปลี่ยนใน UT 11.3 โพรซีเดอร์ชื่อ “ PQS_Reference_Nomenclature_Send_When SendingData“และจบที่นั่น
ในการถ่ายโอนการเปลี่ยนแปลงจาก UT 11.3 เป็น KD3 ให้คัดลอกขั้นตอนทั้งหมดไปยังคลิปบอร์ดไปยัง KD3 ในรูปแบบ " ตั้งกฎการแลกเปลี่ยน"กดปุ่ม" ".

สำหรับตัวอย่างของเรา รหัสคือ

หาก ValueFilled (DataIB.NomenclatureView) แล้ว // ED AdditionalInfoInsert (DataXDTO, "NomenclatureView", String (DataIB.NomenclatureView.UniqueIdentifier ())); ข้อมูลแทรกเพิ่มเติม (ข้อมูล XDTO, "NomenclatureNomenclatureName", General Purpose.ObjectAttributeValue (DataIB.NomenclatureView, "Name")); // AdditionalInfo Insert ... // เพิ่มรายละเอียดบริการอื่นๆ EndIf;

หลังจากโอนการเปลี่ยนแปลงไปยัง KD3 ให้กดปุ่ม " บันทึกโมดูลตัวจัดการการแลกเปลี่ยน"และโอนรหัสจากบัฟเฟอร์ไปยังโมดูล UT 11.3

การเปลี่ยนแปลงกฎใน BP 3.0

เราทำการเปลี่ยนแปลง PKO " Reference_Nomenclature_Getting", บน" เมื่อแปลงข้อมูล XDTO", ชื่อขั้นตอน" PKO_Reference_Nomenclature_Getting_WhenXDTODataConversion".

เพิ่มโค้ดในโมดูล "PKO_Reference_Nomenclature_Getting_WhenXDTODataConversion"

ถ้า DataXDTO.Property ("AdditionalInfo") และ TypeValue (DataXDTO.AdditionalInfo) = Type ("Structure") แล้ว // ED AdditionalData = DataXDTO.AdditionalInfo; ถ้า DopData.Property ("NomenclatureType") จากนั้นNomenclatureType = ExchangeDataXDTOServer.ObjectReferencePoUIDObjectXDTO (DopData.Nomenclature View, Type ("DirectoryLink.NomenclatureType"), Exchange Components); IfNomenclature.GetObject () = Undefined และ AdditionalData.Property ("NomenclatureKindName") จากนั้น // สร้าง newNomenclatureKindObject = Directories.NomenclatureTypes.CreateElement (); NomenclatureKindObject.SetNewLink (NomenclatureKind); Nomenclature typeObject.Name = AdditionalData.Nomenclature typeName; // กรอกรายละเอียดบริการอื่นๆ FillPropertyValues ​​​​(NomenclatureKindObject, AdditionalData); NomenclatureKindObject.Write (); NomenclatureKind = NomenclatureKindObject.Ref; สิ้นสุดถ้า; ReceivedData.NomenclatureType = NomenclatureType; สิ้นสุดถ้า; สิ้นสุดถ้า;

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

เราโอนโมดูลตัวจัดการการแลกเปลี่ยนไปยังโมดูลการกำหนดค่า BP 3 หรือการประมวลผลภายนอก

จะอัพโหลดกฎที่แก้ไขของ CD3 ไปยังฐานข้อมูลได้อย่างไร?

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

กฎที่เตรียมใน KD3 สามารถติดตั้งในการกำหนดค่าได้สามวิธี

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

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

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

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

//////// // Generic Data Exchange Module Overridden & แทน ("On Getting Available Format Versions") ขั้นตอน ED_ เมื่อได้รับ Format Versions (Format Versions) ED_Exchangeing DataServer เมื่อรับ Format Versions ที่พร้อมใช้งาน (Format Versions) ; EndProcedure //////// // Exchange Plan Data Synchronization ผ่านรูปแบบสากล: Manager Module # ถ้า Server หรือ Thick Client แอปพลิเคชันธรรมดาหรือการเชื่อมต่อภายนอก จากนั้น & แทน ("เมื่อได้รับการตั้งค่า") ขั้นตอน ED_When ได้รับการตั้งค่า (การตั้งค่า) การตั้งค่า .DefaultName = การกำหนดค่าทั่วไป; Settings.ThisExchangePlanXDTO = True; Settings.WarningOnMismatchRuleVersions = เท็จ; Settings.ExchangeFormat = "http://v8.1c.ru/edi/edi_stnd/EnterpriseData"; รูปแบบเวอร์ชัน = การจับคู่ใหม่; ED_DataServer เมื่อได้รับเวอร์ชันที่พร้อมใช้งานFormat (เวอร์ชันรูปแบบ); // การตั้งค่า ED.ExchangeFormatVersions = FormatVersions; Settings.ExchangePlanUsedInServiceModel = True; Settings.Algorithms.OnGettingExchangeSettingsVariants = True; Settings.Algorithms.OnGettingOptionDescriptionSettings = True; Settings.Algorithms.InteractiveOfSelectionPresentation = True; Settings.Algorithms.ConfigureInteractiveOffload = True; EndProcedure #EndIf //////// // โมดูลทั่วไปในส่วนขยาย ED_DataServer ขั้นตอน OnGetAvailableFormatVersions (FormatVersions) ExportFormatVersion.Insert ("1.2", ExchangeManagerViaUniversalFormat); รูปแบบ Versions.Insert ("1.3", ED_ExchangeManagerViaUniversalFormat); รูปแบบ Versions.Insert ("1.4", ED_ExchangeManagerViaUniversalFormat); รูปแบบ Versions.Insert ("1.5", ED_ExchangeManagerViaUniversalFormat); รูปแบบ Versions.Insert ("1.6", ED_ExchangeManagerViaUniversalFormat); EndProcedure //////// // โมดูลทั่วไปในส่วนขยาย ED_ExchangeManager ผ่าน UniversalFormat // การแปลง BP3.0.44 (รูปแบบ 1.6) จาก 11/27/2018 11:23:58 // การปรับปรุงสำหรับ BP 3.0.67 x ตั้งแต่ 31.12 ... ...

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

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

เชื่อมต่อการประมวลผลภายนอกด้วยกฎ BP 3.0.52 และสูงกว่า

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

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

ขั้นตอน EDm_PoluchitVersiyuFormataObmena (VersiiFormata หมายความ UzelInformatsionnoyBazy) แบบสอบถาม = แบบสอบถามใหม่ ( "SELECT ต่างๆ | SinhronizatsiyaDannyhCherezUniversalnyyFormat.PutKMenedzheruObmena AS PutKMenedzheruObmena, | SinhronizatsiyaDannyhCherezUniversalnyyFormat.VersiyaFormataObmena AS VersiyaFormataObmena | จาก | PlanObmena.SinhronizatsiyaDannyhCherezUniversalnyyFormat SinhronizatsiyaDannyhCherezUniversalnyyFormat HOW | WHERE | SinhronizatsiyaDannyhCherezUniversalnyyFormat.PutKMenedzheruObmena<>"" "" "| และการซิงโครไนซ์ข้อมูลผ่าน UniversalFormat.Ref = & Reference "); Request.SetParameter (" Reference ", InformationBase Node); Fetch = Request.Run () เลือก (); ขณะที่ Fetch.Next () Loop ProcessingName = Fetch.Path ไปที่ Runner ถ้า Common Exchange Manager ไม่ใช่ () แล้ว ProcessingData = New BinaryData (ProcessingName); ProcessingAddress = PutToTemporaryStore (ProcessingData); If GeneralPurpose.There is Protection Against Dangerous Actions () แล้ว ProcessingName = ExternalProcessing.Descriptions EndIf; EndIf; ExchangeManager = ExternalProcessing.Create (ProcessingName); FormatVersions.Insert (Selection.ExchangeFormatVersion, ExchangeManager); End of Loop; EndProcedure & แทน ("ExchangeFormatVersion") EDMNodeVersionNodeVersionValue ลินิน (โหนด InfoBase) จากนั้น ExchangePlaneName = InfoBaseNode.Metadata () .Name; ExchangeFormatVersions = DataExchangeServer.ExchangePlaneSettingsValue (ExchangePlaneName, "ExchangeFormatVersions "); EDm_GetExchangeFormatVersion (ExchangeFormatVersions โหนด InformationBase); มิฉะนั้นDataExchangeRedefinable.WhenGettingAvailableFormatVersions (ExchangeFormatVersions); สิ้นสุดถ้า; ถ้า ExchangeFormatVersions.Number () = 0 แสดงว่า CallExceptionStringFunctionsClientServer.SubstituteParametersVSString (HStr ("ru =" ไม่ได้ระบุเวอร์ชันรูปแบบการแลกเปลี่ยน | ชื่อแผนการแลกเปลี่ยน:% 1 | ขั้นตอน: GetExchangeFormatVersions (<ВерсииФорматаОбмена>) ""), DatabaseNode.Metadata (). ชื่อ); สิ้นสุดถ้า; ผลลัพธ์ = การแข่งขันใหม่; สำหรับแต่ละเวอร์ชัน FromVersionFormatExchange Cycle Result.Insert (AbbrLP (Version.Key), Version.Value); สิ้นสุดรอบ; ผลการคืนเงิน; EndFunction

วิธีการดีบักกฎในการประมวลผลภายนอก

    ในตัวกำหนดค่า " บริการ -> พารามิเตอร์ -> เริ่ม 1C: Enterprise -> เริ่มพารามิเตอร์" ระบุพารามิเตอร์" "

  • ด้านล่างนี้คือรหัสสำหรับส่วนขยายสำหรับ UT 11.4, KA 2.4, ERP 2.4 รหัสสำหรับ BP 3.0 ได้รับข้างต้น โมดูลตัวจัดการแผนการแลกเปลี่ยน การซิงโครไนซ์ข้อมูลผ่านรูปแบบสากล

รหัสส่วนขยาย ED Debug

& แทน ("GetExchangeFormatVersions") ขั้นตอน ED_GetExchangeFormatVersions (FormatVersions) DataExchangeUT.AvailableUniversalFormatVersions (FormatVersions); คำขอ = คำขอใหม่ ("เลือกความแตกต่าง | การซิงโครไนซ์ข้อมูลผ่าน UniversalFormat.PathTo Exchange Manager | การซิงโครไนซ์ข้อมูลผ่าน UniversalFormat.ExchangeFormatVersion | จาก | แผนการแลกเปลี่ยน<>"" "" "); Fetch = Query.Execute () Select (); ขณะที่ Fetch.Next () Loop ProcessingName = Fetch.PathToExchange Manager หากไม่ SharedPurposeClientServer.Debug Mode () จากนั้น // EDProcessingData = New BinaryData) ( NameProcessingData; AdresObrabotki = PomestitVoVremennoeHranilische (DannyeObrabotki) หาก ObschegoNaznacheniya.EstZaschitaOtOpasnyhDeystvy () จากนั้น ImyaObrabotki = VneshnieObrabotki.Podklyuchit (AdresObrabotki, ObschegoNaznacheniya.OpisanieZaschityBezPreduprezhdeny ()) มิฉะนั้น ImyaObrabotki = VneshnieObrabotki.Podklyuchit (AdresObrabotki); ENDIF; ENDIF; MenedzherObmena VneshnieObrabotki.Sozdat = ( ImyaObrabotki) VersiiFormata.Vstavit (Vyborka.VersiyaFormataObmena, MenedzherObmena) KonetsTsikla; KonetsProtsedury & แทน ( "DostupnyeVersiiFormataObmena") ขั้นตอน ED_DostupnyeVersiiFormataObmena (VersiiFormata) ObmenDannymiUT.DostupnyeVersiiUniversalnogoFormata (VersiiFormata) แบบสอบถาม = แบบสอบถามใหม่ ( "SELECT ต่างๆ | SinhronizatsiyaDannyhCherezUniversalnyyFormat.PutKMenedzher ที่การแลกเปลี่ยน | การซิงโครไนซ์ข้อมูลViaUniversalFormat.ExchangeFormatVersion | FROM | แผนการแลกเปลี่ยนการซิงโครไนซ์ข้อมูลผ่าน UniversalFormat AS การซิงโครไนซ์ข้อมูลผ่าน UniversalFormat | WHERE | การซิงโครไนซ์ข้อมูลผ่าน Universal Format.Path To Exchange Manager<>"" "" "); Fetch = Query.Execute () Select (); ขณะที่ Fetch.Next () Loop ProcessingName = Fetch.PathToExchange Manager หากไม่ SharedPurposeClientServer.Debug Mode () จากนั้น // EDProcessingData = New BinaryData) ( NameProcessingData; AdresObrabotki = PomestitVoVremennoeHranilische (DannyeObrabotki) หาก ObschegoNaznacheniya.EstZaschitaOtOpasnyhDeystvy () จากนั้น ImyaObrabotki = VneshnieObrabotki.Podklyuchit (AdresObrabotki, ObschegoNaznacheniya.OpisanieZaschityBezPreduprezhdeny ()) มิฉะนั้น ImyaObrabotki = VneshnieObrabotki.Podklyuchit (AdresObrabotki); ENDIF; ENDIF; MenedzherObmena VneshnieObrabotki.Sozdat = ( ชื่อการประมวลผล); รูปแบบ Versions.Insert (Fetch.ExchangeFormatVersion, ExchangeManager); EndLoop; EndProcedure

การดีบักทำได้ง่ายที่สุดในฐานข้อมูลไฟล์ เราตั้งค่าเบรกพอยต์ในการประมวลผลด้วยกฎเกณฑ์ หากต้องการค้นหาขั้นตอนที่จำเป็น ให้ใช้ KD3 เราพบ PKO, POD หรือ Algorithm ดู " ชื่อผู้ดูแล" หรือ " ชื่ออัลกอริทึม" เรากำลังหาขั้นตอนนี้ในโมดูลกฎ หลังจากแก้ไขโมดูลแล้ว อย่าลืมคัดลอกขั้นตอนไปที่คลิปบอร์ดแล้วกดปุ่ม" "ใน CD3 ระวัง ต้องเปิดการแปลงแบบเดียวกัน

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

ลิงก์ที่รู้จักกันดีไปยังเอกสารประกอบเกี่ยวกับ KD3:
  • 1C-Training Center หมายเลข 3 "การแปลงข้อมูล 3.0" - http://www.1c-uc3.ru/konvert30.html
คุณสามารถขยายขอบเขตการใช้ KD3 ได้โดยใช้เอกสารเผยแพร่เหล่านี้:
  • - การกำหนดค่าเวอร์ชันก่อนหน้าบนแพลตฟอร์ม 8.2 และต่ำกว่าจะเป็นไปตามข้อกำหนดของ ED
ประหยัดเวลาและใช้กฎสำเร็จรูปสำหรับ เวอร์ชั่นล่าสุดการกำหนดค่าอยู่ที่นี่
  • - ขยายฟังก์ชันการทำงาน แก้ไขข้อบกพร่อง

ในบทความนี้ผมจะอธิบายประสบการณ์เล็กๆ น้อยๆ ของผมในการจัดการแลกเปลี่ยนข้อมูลผ่านรูปแบบ EnterpriseData สากล

ในกรณีของฉัน การแลกเปลี่ยนได้รับการกำหนดค่าระหว่างการกำหนดค่า "การจัดการการค้า 11.2" (ต่อไปนี้คือ UT) และ "การบัญชีองค์กร 3.0.43" (ต่อไปนี้เรียกว่า BP) การแลกเปลี่ยนเป็นแบบทางเดียวจาก UT เป็น BP ก่อนการอัปเกรดจาก Trade Management 11.1 เป็นเวอร์ชัน 11.2 การแลกเปลี่ยนข้อมูลได้รับการกำหนดค่าโดยใช้การกำหนดค่า Data Conversion 2.0 อย่างไรก็ตามหลังจากเปลี่ยนเป็น "11.2" ใน "การจัดการการค้า" ข้อผิดพลาดปรากฏในการทำงานของผู้ใช้ มีการดำเนินการตามขั้นตอนในการอัปเดตกฎการแลกเปลี่ยน แต่ไม่ได้ให้ผลลัพธ์ใดๆ ดีบักเกอร์แสดงว่าปัญหาคือการสื่อสาร มีการตัดสินใจที่จะลบการตั้งค่าการสื่อสารในการกำหนดค่าทั้งสองและตั้งค่าอีกครั้ง

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

เกิดข้อผิดพลาดขณะเรียกวิธีการบริบท (ตรวจสอบ): เกิดข้อผิดพลาดในการตรวจสอบข้อมูล XDTO:
โครงสร้างของวัตถุ "/ บัญชีธนาคารของคู่สัญญา / ธนาคาร" ไม่ตรงกับประเภท: (http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.1)
ตรวจสอบคุณสมบัติ "BIC":
รูปร่าง: องค์ประกอบ
ชื่อ: (http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.1) BIC
ประเภทของ:
ทรัพย์สินที่จำเป็นหายไป
วัตถุ: สัญญากับคู่สัญญาเลขที่ ...

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

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

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

เหตุการณ์: การแลกเปลี่ยนข้อมูล
(SharedModule.LongedOperations.Module (371)): เวิร์กโฟลว์งานพื้นหลังสิ้นสุดลงอย่างผิดปกติ
CallException (ErrorText);

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

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

ด้วยเหตุนี้ ฉันจึงโหลดข้อมูลต่อไปนี้ลงใน "Data Conversion 3.0":

  • ข้อความของโมดูลทั่วไป "DataExchangeManagerViaUniversalFormat" จากสองฐาน
  • แผนผังของทั้งสองฐาน
  • คำอธิบายของรูปแบบ EnterpriseData (จากฐานข้อมูลใดฐานข้อมูลหนึ่ง)
  • กฎการแปลง

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

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

ฉันดำเนินการเพิ่มเอกสาร "คำสั่งซื้อไปยังซัพพลายเออร์" ในแผนการแลกเปลี่ยนโดยใช้ " การแปลงข้อมูล 3.0 " รุ่นมาตรฐาน UT - BP ของเอกสารนี้ในแผนการแลกเปลี่ยนไม่ใช่

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

นี่เป็นการแสดงครั้งแรกของการซิงโครไนซ์ข้อมูลผ่านรูปแบบ EnterpriseData สากล

ป.ล. หากคุณมีคำถามและข้อสังเกตของคุณเองเกี่ยวกับการแลกเปลี่ยนข้อมูลผ่านรูปแบบสากลและการกำหนดค่า " Data Conversion 3.0 "เขียนในความคิดเห็น เราจะแลกเปลี่ยนประสบการณ์

  • การซิงโครไนซ์ข้อมูล
  • รูปแบบข้อมูลองค์กรทั่วไป
  • การแปลงข้อมูล 3.0
  • การแปลงข้อมูล 2.0
  • การจัดการการค้า
  • การบัญชีองค์กร

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

เราจะตั้งค่าการแลกเปลี่ยนข้อมูลแบบทางเดียว, จาก UT ---> BP. เป็นไปได้ที่จะตั้งค่าการแลกเปลี่ยนแบบสองทาง แต่ในทางปฏิบัติไม่จำเป็นต้องทำบ่อยนัก ดังนั้นเราจะไม่พิจารณาในตัวอย่างของเรา

ขั้นตอนการเตรียมการสำหรับการตั้งค่าการแลกเปลี่ยนใน BP

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


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

เรายังคงกำหนดค่าการซิงโครไนซ์ข้อมูลใน UT . ต่อไป


หลังจากที่เราได้ดำเนินการที่จำเป็นทั้งหมดในฐานผู้รับ (BP 3.0) แล้ว เพื่อดำเนินการตั้งค่าการแลกเปลี่ยนข้อมูลต่อไป เราจำเป็นต้องเปิดฐานต้นทาง (UT 11.1) ไปที่แท็บ "การดูแลระบบ" ทางด้านซ้ายในเมนูเลือกรายการ "การตั้งค่าการซิงโครไนซ์ข้อมูล"... หากไม่ได้เปิดใช้งานการซิงโครไนซ์ ให้เปิดใช้งานโดยใช้ช่องทำเครื่องหมาย และอย่าลืมระบุคำนำหน้าของฐานต้นทาง เมื่อเราทำข้อ 1-4 ครบทุกข้อตามที่แสดงในภาพด้านล่างแล้ว คุณต้องคลิกที่ไฮเปอร์ลิงก์ "การซิงโครไนซ์ข้อมูล" (จุดที่ 5)


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

การกำหนดค่าจุดสำคัญในการแลกเปลี่ยนข้อมูลระหว่าง UT และ PSU


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


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


ในหน้าถัดไป เราต้องกรอกกฎสำหรับการส่งและรับข้อมูลจากการกำหนดค่า BP 3.0 (ตัวรับ) คลิก "เปลี่ยนกฎสำหรับการอัปโหลดข้อมูล"


หน้าต่าง "กฎการส่งข้อมูล" ได้เปิดขึ้นต่อหน้าเราในนั้นเราตั้งค่าพารามิเตอร์ต่อไปนี้:

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

หลังจากที่เราทำการตั้งค่าแล้ว ให้คลิก "บันทึกและปิด"


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


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



ในวรรค 3 เราจำเป็นต้องอนุญาตให้โพสต์เอกสารเมื่อโหลดลงในฐานข้อมูล คลิก "บันทึกและปิด"


ตอนนี้หน้าต่างควรมีลักษณะเหมือนที่แสดงด้านล่าง คลิก "ถัดไป"


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


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

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

ลองพิจารณาตัวอย่าง สมมติว่าใน UT มีคู่สัญญาชื่อ "PharmGroup LLC" และ TIN 1234567 และ BP มีคู่สัญญากับ TIN 1234567 แต่ชื่อ "PharmGroup" หากเราไม่เปรียบเทียบสองสิ่งนี้เมื่อ เปรียบเทียบข้อมูลในขั้นตอนการทำข้อมูลให้ตรงกัน จากนั้นหลังจากการซิงโครไนซ์ในตัวรับ (บัญชีองค์กร 3.0) เราจะมีคู่สัญญาสองรายที่มี TIN 1234567 และสองชื่อ "PharmGroup LLC" และ "PharmGroup" ตามลำดับ เพื่อหลีกเลี่ยงสถานการณ์ดังกล่าว จึงได้มีการคิดค้นกลไกสำหรับการจับคู่วัตถุ


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

ขั้นตอนสุดท้ายของการแลกเปลี่ยนข้อมูลระหว่าง 1C


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

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

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

การแลกเปลี่ยนข้อมูลในสภาพแวดล้อม 1C ช่วยให้:

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

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

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

  • การประสานงานขององค์ประกอบของการแลกเปลี่ยน
  • คำจำกัดความของการขนส่ง (โปรโตคอลการแลกเปลี่ยน);
  • ตั้งกฎ;
  • การจัดตารางเวลา

การระบุองค์ประกอบของการแลกเปลี่ยน 1C

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

* ตัวอย่างเช่น เมื่อรวม WA: Financier ซึ่งเป็นโซลูชันสำหรับการบัญชีการเงินและการจัดการกระบวนการบริหารเงิน ซึ่งพัฒนาบนพื้นฐานของ 1C: Enterprise ผู้เชี่ยวชาญของ WiseAdvice แนะนำให้ใช้เป็นระบบหลัก ทั้งนี้เนื่องมาจากความพร้อมของเครื่องมือควบคุมเพื่อให้เป็นไปตามกฎของนโยบายแอปพลิเคชัน และเพื่อให้มั่นใจถึงประสิทธิภาพของโซลูชัน

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

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

ฐานข้อมูลแบบกระจาย

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

การแลกเปลี่ยนข้อมูลสากลใน 1C

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

EnterpriseData

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

คำจำกัดความของการขนส่ง (โปรโตคอลการแลกเปลี่ยน)

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

การซิงโครไนซ์ไดเร็กทอรี

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

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

ตั้งกฎ

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

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

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

ตารางการแลกเปลี่ยนใน 1C

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

เมื่อพิจารณากระบวนการดำเนินการแลกเปลี่ยนมาตรฐานแล้ว เรามาใส่ใจกับปัจจัยที่จะต้องปรับปรุงในแต่ละขั้นตอน:

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

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

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


ในการแก้ปัญหานี้ คุณต้องเลือก "การตั้งค่าการสื่อสาร"


... และทำเครื่องหมายที่ช่อง ต่อไป เราจะเพิกเฉยต่อข้อความแสดงข้อผิดพลาด


ในการตั้งค่าการซิงโครไนซ์ข้อมูล เลือก "สร้างการแลกเปลี่ยนด้วย" การขายปลีก "...



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



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


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



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


ในการทำให้กระบวนการแลกเปลี่ยนเป็นแบบอัตโนมัติ คุณต้องตั้งค่ากำหนดการ


เมนูขายปลีก.


ทำเครื่องหมายที่ช่องและเลือก "การซิงโครไนซ์"


เราทำการตั้งค่า "ย้อนกลับ" โดยเลือก Manufacturing Enterprise Management




โหลดไฟล์การตั้งค่าที่สร้างใน SCP


เราติ๊ก ระบบจะรับที่อยู่โดยอัตโนมัติ





เราดำเนินการในลักษณะเดียวกับใน UPP









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



ในกรณีที่เกิดข้อผิดพลาดในการซิงโครไนซ์ "รายละเอียด ..." จะถูกแทนที่ด้วย "ไม่เคย ..."


"ในรายละเอียด ... " เปิดบันทึกการลงทะเบียนพร้อมข้อมูลล่าสุดเกี่ยวกับการแลกเปลี่ยน


พร้อม.