1C إنشاء خطة التبادل خطوة بخطوة. التبادل المجدول باستخدام الوسائل القياسية. ما هو تنسيق EnterpriseData


إذا كانت مؤسستك توظف أكثر من 5 أشخاص، فمن المرجح أنك تستخدم منتجات 1C. دائمًا ما تقوم المؤسسات بتثبيت العديد من قواعد بيانات 1C، لأن كل واحدة منها تحل مجموعة معينة من المشكلات. على سبيل المثال، تعمل الشركة في مبيعات التجزئة وتحافظ على المحاسبة، وفي مثل هذه الحالة، يقوم العميل عادةً بتثبيت UT (إدارة التجارة) وBP (محاسبة المؤسسات). حتى رجل الأعمال الفردي البسيط الذي لديه العديد من الموظفين قد يعمل كشركة كهذه!

لماذا يجب علي إعداد تبادل البيانات؟

دعونا نواصل النظر في الوضع مع UT وBP. لنتخيل أنه لم يتم تكوين التبادل الخاص بنا في الوقت الحاليما هي الإجراءات التي يتعين علينا القيام بها لتعكس المعاملات المحاسبية في كلتا قاعدتي البيانات؟ هذا صحيح، سنقوم أولاً بملء البيانات في UT، وبعد ذلك سيتعين علينا إدخال نفس البيانات في BP، لأننا لا نستطيع، على سبيل المثال، إدخال استلام البضائع في UT، ولكن لا يمكننا القيام بذلك في بي بي.

حتى إذا قررت استخدام تبادل البيانات القياسي (إعداد تبادل البيانات القياسي (مزامنة 1C))، فهذا لا يعني أنه يمكن تكوينه في قاعدة البيانات الخاصة بك. تنشأ المشاكل، على سبيل المثال، إذا لم تقم بتحديث قاعدة البيانات لفترة طويلة (من أجل الحفاظ على تبادل قياسي، يجب أن تكون قواعد البيانات الخاصة بك محدثة) أو الكائنات التي ستقوم بنقلها من قاعدة بيانات إلى أخرى تم تعديلها (في هذه الحالة لن يعمل التبادل القياسي بشكل صحيح)، باستثناء كل هذا حتى لو اختلفت إصدارات منصة قاعدة البيانات (7.7 – 8.3)، فمن المرجح أيضًا أن يتم تعديل تبادل البيانات أو تطويره من الصفر.

من يحتاج إلى استخدام تبادل البيانات بين قواعد بيانات 1C؟

إذا كانت العبارات أدناه ذات صلة بك، فأنت بحاجة إلى تكوين التبادل بين التكوينات الخاصة بك:

  • لديك أكثر من قاعدة بيانات 1C
  • يتطلب نقل سريع للمعلومات من قاعدة بيانات إلى أخرى والعكس
  • تحتاج إلى التبادل التلقائي أو التبادل في الوقت الحقيقي

تطوير وتكوين تبادل البيانات بين تكوينات 1C

سيسمح لك تبادل البيانات المصمم بشكل صحيح بما يلي:

  • تفريغ وتحميل الكائنات من قاعدة بيانات إلى أخرى
  • التبادل بين إصدارات مختلفة من 1C
  • تبادل البيانات في الوقت الحقيقي
  • تقليل تكلفة رواتب الموظفين بشكل كبير، لأنه سيكون لديهم الآن المزيد من وقت الفراغ
  • وفر وقتك وميزانيتك

تطوير قواعد تبادل البيانات باستخدام مثال قواعد بيانات UT وBP المعدلة

لدينا قاعدتي بيانات تم فيهما تعديل وثيقة "استلام البضائع والخدمات"، وعلى وجه الخصوص، تم إضافة تفاصيل جديدة إلى المستندات والأجزاء الجدولية، وتمت إزالة بعض التفاصيل القياسية، ونتيجة لذلك لا يتم تبادل البيانات القياسية لا يعمل. قمنا بتطوير قاعدة تبادل جديدة وكتبناها في ملف.


الكلمات الرئيسية: الموزعة، URDB، XML، التسجيل، العقدة، العقدة، التسجيل التلقائي، الأولي، الصورة، POP3، SMTP، MailMessage، الطرفية، المركزية، النسخ المتماثل، التبادل

إخلاء المسؤولية وشروط الاستخدام

جميع العلامات التجارية المذكورة عن طريق الخطأ في هذه المقالة مملوكة لأصحابها.
تم نشر هذه المقالة بموجب ترخيص Creative Commons Attribution-Share Alike 3.0 Unported.
http://creativecommons.org/licenses/by-sa/3.0/

اسمحوا لي أن أشير على الفور إلى أن كل ما يلي ينطبق على إصدار النظام الأساسي 8.0.7.36 والإصدارات الأحدث.

الخطوة 1: إنشاء خطة التبادل

نقوم بإنشاء خطة تبادل في التكوين. دعنا نسميها، على سبيل المثال، "DistributedBase". مطلوب في
في خصائص خطة التبادل، حدد مربع الاختيار "قاعدة المعلومات الموزعة".

في علامة التبويب "أخرى"، انقر فوق الزر "التركيب" لتحديد الكائنات التي سيتم تضمينها في التبادل. بواسطة
افتراضيًا، يمكنك تمكين كافة الكائنات ("الإجراءات" - "تمكين الكل"). نقطة مهمة هي المعلمة
"التسجيل التلقائي". بشكل عام، يجب تمكينه لجميع الكائنات.

ملاحظة: عند إضافة كائنات جديدة إلى التكوين، لا يتم تضمينها في خطة التبادل. أولئك. بعد
لإضافة كائن، يجب إضافته إلى خطة التبادل.

إذا كنت تريد عدم مشاركة بعض الكائنات في التبادل، فما عليك سوى استبعادها من القائمة
خطة التبادل. ولكن بعد ذلك تظل السيطرة على التكامل المرجعي بالكامل على ضميرك. لو ل
على سبيل المثال، لا يتم تضمين مستند معين في خطة التبادل، ولكن يتم تضمين السجل الذي تتم عليه الحركات،
ثم في قاعدة البيانات المتلقية، من الممكن تمامًا تلقي حركات التسجيل بدون مستند مسجل، وهو ما
أوافق، هذا ليس جيدا.

من حيث المبدأ، هذه الإجراءات كافية لكي يعمل RDB في الوضع "اليدوي". للقيام بذلك نطلق
Enterprise، افتح خطة التبادل الخاصة بنا من خلال قائمة "العمليات". من حيث التبادل، فهو موجود دائما
العقدة المحددة مسبقًا "بنقطة". هذا وصف للعقدة الحالية. يجب فتحه وملؤه. في لدينا
في هذه الحالة، سيكون حقلا "الرمز" و"الاسم" متاحين. لنقم بتعيين الرمز "AA" لعقدتنا ونطلق عليه اسمًا
"وسط". دعونا نضيف عقدة واحدة إلى خطة التبادل. دعنا نخصص له الرمز "BB" ونطلق عليه اسم "Peripheral".

الآن يمكننا إنشاء صورة للقاعدة الطرفية. ويتم ذلك عن طريق النقر على زر "إنشاء الأولي".
صورة". يجب تحديد القاعدة الطرفية في قائمة العقد. يتم إنشاء صورة قاعدة البيانات على شكل أمان معلومات جاهز
في الكتالوج أو على خادم 1C:Enterprise. (على عكس الإصدار 7.7، حيث تم إنشاء صورة أمن المعلومات كملف
التفريغ). بعد ذلك، يمكن نقل قاعدة البيانات التي تم إنشاؤها إلى الموقع المطلوب ببساطة عن طريق نسخ الملف 1CV8.1CD
(لنسخة الملف)، أو من خلال أداة التهيئة من خلال تحميل وتنزيل البيانات.

إذا قمت بفتح خطة التبادل في نظام أمن المعلومات الطرفي، فسترى أن العقدة "بنقطة"، أي. حاضِر
أصبحت العقدة "الطرفية" عقدة، وأصبحت أيقونة العقدة "المركزية" حمراء، أي. العقدة
"المركزية" هي العقدة الرئيسية بالنسبة للعقدة الحالية.

يمكن إجراء التبادل في الوضع "اليدوي" باستخدام زري "كتابة التغييرات" و"قراءة".
التغييرات". في الحالة الأولى، سيُطلب منك تحديد ملف حيث سيتم كتابة التغييرات، في الحالة الثانية
- الملف الذي سيتم قراءة التغييرات منه. يتم التبادل بتنسيق XML. يتم تسجيل التغييرات ل
العقدة المحددة.

الخطوة 2: تحميل التغييرات إلى ملف XML وإرسالها عبر البريد الإلكتروني

لذلك أنشأنا خطة تبادل، وأنشأنا نظامًا لأمن المعلومات الطرفية، وحتى تعلمنا كيفية نقل البيانات فيما بينها
قواعد. الآن مهمتنا هي تعليم قواعد البيانات كيفية التبادل عبر البريد الإلكتروني.

نضيف تفصيلين إلى خطة التبادل: عنوان البريد الإلكتروني من النوع "سلسلة" ونوع "تنفيذ التبادل".
"منطقي". في عنوان البريد الإلكتروني، سنقوم بتخزين عنوان البريد الإلكتروني للعقدة، أي. العنوان الذي سنكون فيه
إرسال رسائل التبادل. هناك حاجة إلى Props ExecuteExchange لتعطيل التشغيل التلقائي بسرعة
إرسال-إرسال الرسائل.

دعونا نجعل إجراءات العمل مع البريد الإلكتروني عالمية، أي. دعونا نجعل ذلك ممكنا
استخدام كل من MAPI (الإرسال والاستقبال عبر عميل البريد الإلكتروني، على سبيل المثال، MS Outlook) و
الوصول المباشر إلى خوادم SMTP/POP3.

دعونا نضيف عدة ثوابت إلى التكوين:

في مكان ما بشكل عام نوفر تحرير قيم هذه الثوابت.

دعونا نضيف وحدة مشتركة، نسميها "rbDistributedBase". نكتب فيه:

الإجراء rbSendExchangeMessages() تصدير UseSMTP = Constants.UseSMTPExchange.Receive(); // أولاً نقوم بإنشاء كائن بريد، والذي، وفقًا للإعدادات، سيكون من نوع InternetMail، // إذا تم استخدام الوصول المباشر إلى الخوادم، أو البريد إذا تم استخدام MAPI.إذا استخدم SMTP ثم // بالنسبة لكائن من نوع InternetMail، قم بإنشاء ملف تعريف البريد وتعبئته. MailProfile = New InternetMailProfile; MailProfile.SMTPServerAddress = Constants.SMTPExchangeServerAddress.Get(); MailProfile.SMTPPort = Constants.SMTPExchangeServerPort.Receive(); MailProfile.SMTPUser = Constants.SMTPExchangeServerUser.Receive(); MailProfile.SMTP كلمة المرور = Constants.SMTPExchangeUserPassword.Receive(); MailProfile.WaitTime = Constants.ServerWaitTime.Get(); البريد = بريد إنترنت جديد ()؛ محاولة Mail.Connect(MailProfile); تقرير الاستثناء(" التبادل: خطأ في الاتصال بملف تعريف البريد! فشل التبادل!" + ErrorDescription(), messageStatus.VeryImportant); Return; EndAttempt; وإلا البريد = New Mail(); Attempt Mail.Connect(); تقرير الاستثناء("" + ErrorDescription(), messageStatus.VeryImportant); Return; EndAttempt; EndIf ; // بعد ذلك، حدد جميع العقد من خطة التبادل، باستثناء العقدة الحالية، // التي تحتوي على مجموعة سمات "إجراء التبادل". SelectionNodes = ExchangePlans.DistributedBase.Select(); أثناء تكرار حلقة SelectNodes.Next() إذا لم تكن SelectNodes.PerformExchange ثم تابع؛ إنهاء إذا؛ إذا كان SelectionNodes.Link = ExchangePlans.DistributedBase.ThisNode() ثم تابع؛ إنهاء إذا؛ ElectronicAddress = AbbrLP(SelectionNodes.ElectronicAddress); إذا كان عنوان البريد الإلكتروني = "" ثم تابع؛ إنهاء إذا؛ // باستخدام كائنات XMLRecord وMessageRecord، نقوم بتسجيل التغييرات // للعقدة المحددة في ملف XML. Node = SelectionNodes.Link; XMLRecord = NewXMLRecord(); messageFileName = TemporaryFileDirectory() + "Message_" + AbbreviatedLP(ExchangePlans.DistributedBase.ThisNode().Code) + "_ " + AbbreviatedLP(Node.Code) + ".xml "؛ EntryXML.OpenFile(MessageFileName); messageRecord = ExchangePlans.CreateMessageRecord(); messageRecord.StartRecord(XMLRecord, Node); ExchangePlans.WriteChanges(WriteMessage); WriteMessage.FinishRecord(); WriteXML.Close(); // ثم نقوم بإنشاء حرف جديد، وإرفاق ملف XML الناتج به و // أرسل إلى العنوان المحدد في عنوان البريد الإلكتروني للعقدة.ملف = ملف جديد (MessageFileName)؛ موضوع الرسالة = "1C:Exchange" + Abbr.LP(ExchangePlans.DistributedBase.ThisNode().Code) + "_" + Abbr.LP(Node.Code); إذا UseSMTP ثم MailMessage = New InternetMailMessage؛ MailMessage.Subject = messageSubject; MailMessage.Attachments.Add(MessageFileName, File.Name); MailMessage.Recipients.Add(EmailAddress); Mail.Send(MailMessage); آخر MailMessage = MailMessage الجديد؛ MailMessage.Subject = messageSubject; MailMessage.Attachments.Add(MessageFileName); MailMessage.Recipients.Add(EmailAddress); Mail.Send(MailMessage, False); إنهاء إذا؛ إذا Constants.OutputExchangeMessages.Get() ثم تقرير(" التبادل: تبادل الرسائل للعقدةتم إرسال " + Node.Name + "! "، messageStatus.Information)؛ EndIf؛ RemoveFiles(MessageFileName); EndCycle; Mail.Disconnect(); EndProcedure

أوصي بإضافة لوحة إضافية إلى الواجهة، على أحد الأزرار التي يمكنك من خلالها إجراء مكالمة إلى هذا
إجراءات. الآن كل ما تبقى هو إطلاق المؤسسة، وتكوين عنوان البريد الإلكتروني لأمن المعلومات الطرفية،
حدد مربع "التبادل"، وانقر على زر الإجراء الموجود على اللوحة وقم بتشغيله لتلقي البريد
البريد الإلكتروني المحدد عناوين. من المفترض أن تتلقى خطابًا بالموضوع "1C:Exchange AA_BB" وملفًا مرفقًا
"Message_AA_BB.xml".

وبذلك، تم إنجاز نصف المهمة: لقد علمنا مجموعة الثماني كيفية إرسال رسائل تبادل RDB عبر البريد الإلكتروني
بريد.

الخطوة 3. تلقي التحديثات عبر البريد الإلكتروني وتسجيلها في أمن المعلومات

لنقم الآن بالإجراء العكسي: تلقي التحديثات عبر البريد الإلكتروني وتسجيلها في أمن المعلومات.

إلى معلمات الجلسة، أضف المعلمة "تبادل قاعدة البيانات الموزعة قيد التقدم" من النوع المنطقي. سأشرح ذلك أدناه
ميعاد.

دعونا نضيف الإجراء التالي إلى الوحدة النمطية المشتركة rbDistributedBase:

الإجراء rbGetExchangeMessages() تصدير UseSMTP = Constants.UseSMTPExchange.Receive(); // تمامًا كما في الإجراء rbSendExchangeMessages()، قم أولاً بإنشاء كائنالبريد في حالة استخدام SMTP ثم MailProfile = New InternetMailProfile؛ MailProfile.POP3ServerAddress = Constants.POP3ExchangeServerAddress.Get(); MailProfile.POP3Port = Constants.POP3ExchangeServerPort.Get(); MailProfile.User = Constants.POP3ExchangeServerUser.Get(); MailProfile.Password = Constants.UserPasswordPOP3Exchange.Receive(); MailProfile.WaitTime = Constants.ServerWaitTime.Get(); البريد = بريد إنترنت جديد ()؛ محاولة Mail.Connect(MailProfile); تقرير الاستثناء(" التبادل: خطأ في الاتصال بملف تعريف البريد! |فشل التبادل!"،MessageStatus.VeryImportant)؛ Return؛ EndAttempt؛ وإلا البريد = New Mail()؛ Attempt Mail.Connect()؛ تقرير الاستثناء(" التبادل: حدث خطأ أثناء الاتصال بملف تعريف البريد الإلكتروني الخاص بالمستخدم! |فشل التبادل!"، messageStatus.VeryImportant)؛ Return؛ EndAttempt؛ EndIf؛ messageArray = صفيف جديد؛ إذا UseSMTP ثم AllMessages = Mail.Select(False)؛ Else AllMessages = Mail.Select(False, False); EndIf; // اختر من بين جميع الحروف التي لها الموضوع "1C:Exchange". // ملاحظة صغيرة ولكنها مهمة: // نعتقد أن جميع الرسائل المستلمة ذات الموضوع "1C:Exchange" مقصودة //بالضبط للعقدة الحالية، //أولئك. أن العقد المختلفة من حيث التبادل لها عناوين بريد إلكتروني مختلفة.لكل رسالة من جميع الرسائل دورة إذا كان ليو (موضوع الرسالة، 8)<>"1C:Exchange" ثم تابع؛ إنهاء إذا؛ TryMessageArray.Add(Message); // احفظ مرفق البريد الإلكتروني على القرص. // سنترك التحقق الدقيق من المرفقات خلف الكواليس في الوقت الحالي.المرفق = الرسالة.المرفقات؛ messageFileName = TemporaryFileDirectory() + Attachment.Name; ExchangeData = Attachment.Data; ExchangeData.Write(MessageFileName); // باستخدام كائنات XMLReader وMessageReader، نقرأ البيانات // التحديثات من الملف المحفوظ. قبل تسجيل التحديثات في أمن المعلومات // قم بتعيين معلمة الجلسة لتبادل قاعدة البيانات الموزعة قيد التقدم على True. // ثم نقرأ التغييرات في أمن المعلومات: Exchange Plans.ReadChanges(ReadMessage). // في الوقت نفسه، نقوم بحفظ الرسائل في مصفوفة حتى نتمكن لاحقًا من حذفها جميعًا مرة واحدة. ReadXML = ReadXML الجديد ()؛ ReadXML.OpenFile(MessageFileName); messageReader = ExchangePlans.CreateMessageReader(); ReadMessage.StartReading(ReadingXML); SessionParameters.DistributedBaseExchange قيد التقدم = True؛ ExchangePlans.ReadChanges(ReadMessage); ReadMessage.FinishReading(); ReadXML.Close(); إذا Constants.OutputExchangeMessages.Get() ثم تقرير(" التبادل: تم قبول بيانات التبادل",MessageStatus.Information); EndIf; تقرير الاستثناء(" التبادل: خطأ أثناء تلقي بيانات التبادل:" + ErrorDescription(), messageStatus.VeryImportant); EndAttempt; // بعد الانتهاء من قراءة بيانات التبادل، ارجع // تم تعيين معلمة الجلسة DistributedBase Exchange قيد التقدم على False. SessionParameters.DistributedBaseExchange قيد التقدم = False؛ محاولة حذف الملفات (MessageFileName)؛ استثناء // إذا لم ينجح الأمر، حسنًا this.EndAttempt; EndCycle; إذا كنت تستخدم SMTP ثم Mail.DeleteMessages(MessageArray); إنهاء إذا؛ قطع الاتصال () ؛ EndProcedure

الآن حول ما هو مطلوب لمعلمة جلسة تبادل قاعدة البيانات الموزعة قيد التقدم.
الحقيقة هي أنه عند قراءة البيانات باستخدام أسلوب ExchangePlans.ReadChanges()، يتم إجراء مكالمة
إجراءات المعالج لحدث BeforeWrite() للكائنات المعدلة/المضافة. وإذا عند التسجيل
لأي كائن في إجراء المعالج، سيتم تعيين معلمة الرفض على True، بعد ذلك
عند تنفيذ ExchangePlans.ReadChanges()، سيحدث استثناء، وبالتالي التبادل
لن يتم تنفيذه. يمكن أن تكون قيمة معلمة جلسة DistributedBase Exchange قيد التقدم
تحليلها في إجراءات المعالج من أجل تجنب مثل هذا الموقف.
مع إصدار الإصدار 12 (على الرغم من أنني قد أكون مخطئًا بشأن الإصدارات)، أصبحت أهمية هذه الطريقة إلى حد ما
deprecatedA، نظرًا لأن الكائنات تمتلك الآن الخاصية خيارات الصرف، منهم، في بلده. يتم تعيين هذه الخاصية إلى True متى
حفظ البيانات عبر خطة المشاركة.

الآن، في الواجهة الموجودة على اللوحة الخاصة بنا، نضيف زرًا آخر نعلق عليه مكالمة لهذا
إجراءات. هيا نطلق المؤسسة ونستمتع بها.
تم الانتهاء من كل شيء تقريبًا، ولم يتبق سوى القليل: لجعل إجراءاتنا تعمل تلقائيًا.
الخطوة 4. إعداد التبادل التلقائي

لذلك، نحن قريبون تقريبا من الهدف من قصتنا. لم يتبق سوى خطوة واحدة: الإطلاق
تنفيذ إجراءات الصرف آلياً. هيا بنا نبدأ.

لنقم بإضافة ثابت، الفاصل الزمني للتبادل التلقائي DistributedBase، من النوع Number(5,0).

دعونا نضيف معلمة تنفيذ تبادل قاعدة البيانات الموزعة إلى إعدادات المستخدم. للتكوين
تتم "إدارة التجارة" على النحو التالي:

* في خطة أنواع الخصائص "إعدادات المستخدم" سنضيف محددًا مسبقًا
خاصية إجراء تبادل لقواعد البيانات الموزعة من النوع المنطقي.
* في شكل عنصر الدليل "المستخدمون" قمنا بإعداد تغيير في هذه المعلمة (مثل هذا
يمكن القيام به في وحدة النموذج، عن طريق القياس مع المعلمات الأخرى).

أضف الإجراء إلى الوحدة النمطية rbDistributedBase:

إجراء rbPerformExchange(user) تصدير إذا كان npGetDefaultValue(user, "") ثم rbGetExchangeMessages(); rbSendExchangeMessages(); إنهاء إذا؛ EndProcedure

إلى وحدة التطبيق:

الإجراء CheckConnectionAutoExchange() تصدير إذا npGetDefaultValue(chCurrentUser, " تنفيذ تبادل قواعد البيانات الموزعة") و Constants.DistributedBaseAutoExchangeInterval.Get() > 0 ثم ConnectWaitHandler(" تنفيذ التبادل التلقائي"، Constants.DistributedBaseAutoExchangeInterval.Get())؛ وإلا، DisableWaitHandler(" تنفيذ التبادل التلقائي"); EndIf؛ إجراء EndProcedure ExecuteAutoExchange() تصدير rbExchange(glCurrentUser); DisableWaitHandler(" تنفيذ التبادل التلقائي"); إذا كان npGetDefaultValue(chCurrentUser، " تنفيذ تبادل قواعد البيانات الموزعة") و Constants.DistributedBaseAutoExchangeInterval.Get() > 0 ثم ConnectWaitHandler(" تنفيذ التبادل التلقائي"، Constants.DistributedBaseAutoExchangeInterval.Get()); EndIf; إجراء EndProcedure DisableAutoExchange() تصدير DisableWaitHandler(" تنفيذ التبادل التلقائي"); EndProcedure

أضف الأسطر التالية إلى إجراء WhenSystemStart() لوحدة التطبيق:

(بعد توصيل المعدات التجارية)
...
SessionParameters.DistributedBaseExchange قيد التقدم = False؛ CheckAutoExchangeConnection();

دعونا نضيف بضعة أزرار أخرى إلى اللوحة الخاصة بنا للتحكم في العملية: أضف إجراءً إلى واحد
CheckConnectAutoExchange()، من ناحية أخرى - DisableAutoExchange()

نطلق المؤسسة، ونقوم بتكوين خصائص المستخدم والفاصل الزمني للتبادل التلقائي، وهذا كل شيء!

الآن، عند إدخال قاعدة البيانات ضمن هذا المستخدم الأكثر تكوينًا، سيتم تشغيل المعالج
في انتظار ExecuteAutoExchange(). وبطبيعة الحال، تحتاج أيضًا إلى تكوين مستخدم في قاعدة البيانات الطرفية
للتبادل.

ملاحظة أخرى صغيرة ولكنها مهمة:

في كل الجمال الذي خلقناه، هناك مشكلة واحدة: التغيير في التكوين. في
عندما تتلقى القاعدة الطرفية رسالة تحتوي على تغييرات في التكوين، فإنها
سيتم قبوله، ولكن سيحدث استثناء. في هذه الحالة، سيتم تغيير التكوين
محمل. لتحديث تكوين قاعدة البيانات، تحتاج إلى طرد كافة المستخدمين، انتقل إلى
المكوّن وتحديث تكوين قاعدة البيانات (من الجيد تحميل البيانات قبل القيام بذلك). ل
وللأسف هذا شر لا بد منه. يمكنك أن تجعل حياتك أسهل قليلاً عن طريق كتابة ملف بات قصيرًا
شيء من هذا القبيل:

1cv8.exe التكوين /F<путь к ИБ>/ن<Пользователь>/ ص<Пароль>/تحديثIBCfg

وملاحظة أخرى:

لسوء الحظ، ملفات XML ليست مضغوطة، ولكن لحسن الحظ، فهي مضغوطة بشكل مثالي. ممكن في
إجراءات إرسال واستقبال الرسائل وإضافة التعبئة والتفريغ للملفات. COLOR="#666666">يمكن القيام بذلك إما باستخدام أرشيف خارجي، أو باستخدام VK، على سبيل المثال Wheel.AddIn
(http://1c.proclub.ru/modules/mydownloads/personal.php?cid=81&lid=2714) .
مع إصدار الإصدار العاشر (على ما يبدو)، أصبح الاقتراح السابق قديمًا إلى حد ما، منذ النظام الأساسي
كانت هناك أدوات مدمجة لضغط الملفات باستخدام خوارزمية ZIP. أولئك. أصبح من الممكن الآن ضغط الملفات
بدون استخدام VK.

أنا أعتبر تنظيم تبادل البيانات تلقائيًا بالكامل باستخدام مثال 1C: تبادل إدارة المؤسسات الصناعية (PEM) ==> 1C: المحاسبة (BP) 2.0 باستخدام قواعد التبادل التعسفية.

هناك قاعدتي بيانات: 1C:UPP وEnterprise Accounting 2.0. يتم إنشاء عدد من المستندات في UPP: مبيعات السلع والخدمات، واستلام البضائع والخدمات، والفواتير. يقوم قسم المحاسبة بإنشاء مستندات حول التدفق النقدي: تسويات التدفق النقدي والتسويات النقدية وأوامر الدفع.

يختلف هيكل المستندات في هذه التكوينات إلى حد ما، وبالتالي تمت كتابة قواعد التبادل التعسفية باستخدام المنتج "تحويل البيانات 2.1".

الخطوة 1. إعداد عقد التبادل.

سيتم استخدام خطة التبادل "الكاملة" لتبادل البيانات. للقيام بذلك، انتقل إلى عمليات BP ==> خطط التبادل ==> كاملة.

تحتوي خطة التبادل دائمًا على عقدة تبادل واحدة محددة مسبقًا. هناك ثلاث نقاط هنا:

1) لا يمكنك استخدام عقدة محددة مسبقًا في إعداد التبادل

2) لم يتم تحديد رمز هذه العقدة بشكل افتراضي ويجب تحديده

3) في قواعد البيانات التي يتم تنظيم تبادل البيانات بينها، يجب ألا تتطابق رموز العقد المحددة مسبقًا، سيؤدي ذلك إلى حدوث خطأ.

في خطة التبادل "الكاملة" في BP، سنقوم بتنفيذ الإجراءات التالية:

1) نشير إلى رمز واسم العقدة المحددة مسبقًا. لنفترض أن الاسم = "محدد مسبقًا"، الرمز = 001.

2) لنقم بإنشاء عقدة تبادل جديدة، ونسميها "UPP" ونعطيها الرمز 003.

وبالمثل، افتح خطة التبادل "الكاملة" 1C: UPP وقم بالخطوات التالية:

1) نشير إلى رمز واسم العقدة المحددة مسبقًا. على سبيل المثال، الاسم = "محدد مسبقًا"، الرمز = "002".

2) لنقم بإنشاء عقدة تبادل جديدة، ونسميها "BP" ونعطيها الرمز 003.

يجب أن تتطابق رموز عقد التبادل غير المحددة مسبقًا في قاعدة بيانات UPP وBP.

الخطوة 2. قم بإنشاء إعدادات لتبادل البيانات تلقائيًا.

في قاعدة بيانات UPP في الواجهة "الكاملة". القائمة "الخدمة" ==> "تبادل البيانات الأخرى" ==> "جميع إعدادات تبادل البيانات".

في النموذج الذي يفتح، حدد "قواعد المعلومات الموزعة" وانقر فوق الزر "إضافة".

في النافذة التي تظهر، يجب عليك تحديد اسم الإعداد. في حقل "العقدة"، يجب عليك تحديد خطة التبادل "الكاملة" والإشارة إلى عقدة التبادل التي تم إنشاؤها مسبقًا.

في مربع الحوار الذي يفتح، يجب عليك تحديد قواعد تبادل البيانات التعسفية.

في الحقل "نوع التبادل"، حدد "التبادل عبر الاتصال بقاعدة معلومات" وحدد معلمات الاتصال: نوع قاعدة المعلومات وإصدار النظام الأساسي والمسار أو العنوان على الخادم والمستخدم وكلمة المرور.

بعد ذلك، عليك الذهاب إلى علامة التبويب "التبادل حسب القواعد" والنقر على زر "إعدادات التحميل". يجب ألا تحتوي قواعد التبادل على قاعدة بأسلوب أخذ العينات "الطلب العشوائي".. سيؤدي هذا إلى خطأ

بعد تنزيل الإعدادات، يمكنك حفظ الإعدادات ومحاولة تنزيل البيانات. للقيام بذلك، تحتاج إلى تغيير أي من كائنات نظام المعلومات المدرجة في إعدادات التحميل والنقر على زر "Exchange" في لوحة النموذج.

الخطوة 3. إعداد تبادل البيانات.

لإعداد التبادل التلقائي للبيانات، يجب عليك الانتقال إلى علامة التبويب "التبادل التلقائي" والنقر فوق الزر "إضافة". في النافذة التي تظهر، يمكنك ضبط جدول التبادل (الوقت، التكرار) أو تبادل البيانات عند وقوع حدث (على سبيل المثال، قيام مستخدم بتسجيل الدخول إلى النظام)

الآن يمكنك التحقق من الإعدادات التي تم إنشاؤها

تتكون أنظمة التحكم الآلي في معظم الحالات من قواعد بيانات منفصلة وغالبًا ما يكون لها هيكل موزع جغرافيًا. وفي الوقت نفسه، يعد تبادل البيانات الذي يتم تنفيذه بشكل صحيح شرطًا ضروريًا للتشغيل الفعال لهذه الأنظمة.

قد يتطلب الإعداد الأولي للبورصة عددًا من الإجراءات، ليس فقط من حيث البرمجة، ولكن أيضًا الاستشارات، حتى لو كنا نتعامل مع مصادر متجانسة، كما هو الحال مع المنتجات الموجودة على منصة 1C:Enterprise. لماذا يمكن أن يصبح إعداد تبادل 1C (أو، كما يطلق عليه أيضًا، مزامنة البيانات في 1C 8.3) المهمة الأكثر استهلاكًا للوقت والمكلفة لمشروع التكامل، سننظر إليها في هذه المقالة.

يتيح لك تبادل البيانات في بيئة 1C ما يلي:

  • القضاء على الإدخال المزدوج للوثائق؛
  • أتمتة العمليات التجارية ذات الصلة؛
  • تحسين التفاعل بين الإدارات الموزعة.
  • التحديث الفوري لبيانات عمل المتخصصين من مختلف الإدارات.
  • "التمييز" بين أنواع المحاسبة المختلفة.*

* في الحالات التي تختلف فيها بيانات أحد أنواع المحاسبة اختلافًا كبيرًا عن نوع آخر، فمن الضروري ضمان سرية المعلومات و"تحديد" تدفقات المعلومات. على سبيل المثال، لا يتطلب تبادل البيانات بين 1C UT و1C Accounting تحميل بيانات الإدارة إلى قاعدة بيانات المحاسبة التنظيمية، أي. ستكون المزامنة في 1C غير مكتملة هنا.

إذا تخيلنا العملية القياسية لتنفيذ تبادل البيانات الأولية، عندما يكون أحد كائناتها على الأقل منتج 1C، فيمكننا التمييز بين المراحل التالية:

  • تنسيق تكوين البورصة؛
  • تعريف النقل (بروتوكولات التبادل)؛
  • وضع القواعد؛
  • الجدولة.

تحديد تكوين تبادل 1C

يمكن تقسيم كائنات التبادل إلى "مصدر" و "مستقبل". وفي الوقت نفسه، يمكنهم أداء دورين في نفس الوقت، وهو ما يسمى التبادل ثنائي الاتجاه. يتم تحديد المصدر والوجهة بشكل منطقي حسب حاجة النظام أو وظيفته.*

*على سبيل المثال، عند دمج "WA: Financier" - وهو حل للحفاظ على المحاسبة المالية وإدارة عمليات الخزانة، تم تطويره على أساس "1C:Enterprise"، يوصي خبراء WiseAdvice به كنظام رئيسي. ويرجع ذلك إلى توفر أدوات التحكم للالتزام بقواعد سياسة التطبيق، وبالتالي التأكد من فعالية الحل.

بعد ذلك، بناءً على المتطلبات المستلمة والمسجلة من المستخدمين، يتم إنشاء قائمة بيانات التبادل، وتحديد حجمها، ومتطلبات تكرار التبادل، وتحديد عملية التعامل مع الأخطاء ومعالجة المواقف الاستثنائية (التصادمات).

في نفس المرحلة، اعتمادًا على أسطول الأنظمة الحالية وهيكل المؤسسة، يتم تحديد تنسيق التبادل:

قاعدة المعلومات الموزعة

  • يتضمن RIB التبادل بين تكوينات قاعدة بيانات 1C المتطابقة، مع بنية تحكم واضحة "رئيسية-تابعة" لكل زوج تبادل. كعنصر من عناصر منصة التكنولوجيا، يمكن لـ RIB، بالإضافة إلى البيانات، نقل تغييرات التكوين والمعلومات الإدارية لقاعدة البيانات (ولكن فقط من السيد إلى العبد).

تبادل البيانات العالمي في 1C

  • آلية تسمح لك بتكوين تبادل قواعد بيانات 1C، سواء مع التكوينات على النظام الأساسي 1C:Enterprise أو مع أنظمة الطرف الثالث. يتم التبادل عن طريق نقل البيانات إلى تنسيق xml عالمي وفقًا لـ "خطط التبادل".

بيانات المؤسسة

  • أحدث تطوير لـ 1C، مصمم لتنفيذ تبادل البيانات بتنسيق xml بين المنتجات التي تم إنشاؤها على النظام الأساسي 1C:Enterprise مع أي أنظمة أتمتة. يؤدي استخدام EnterpriseData إلى تبسيط التعديلات المرتبطة بالتبادل. في السابق، عندما يتم تضمين تكوين جديد في النظام، كان من الضروري تنفيذ آلية لاستيراد وتصدير البيانات، سواء له أو للأنظمة الحالية. الآن، لا تحتاج الأنظمة التي تدعم EnterpriseData إلى أي تعديلات، حيث تحتوي على نقطة دخول وخروج واحدة فقط.

تعريف النقل (بروتوكولات التبادل)

بالنسبة للنظام الموجود على النظام الأساسي 1C:Enterprise 8، يتم توفير مجموعة واسعة من الإمكانيات لتنظيم التبادل مع أي موارد معلومات باستخدام المعايير العالمية المقبولة عمومًا (XML، الملفات النصية، Excel، اتصال ADO، وما إلى ذلك). لذلك، عند تحديد نقل بيانات التبادل، يجب عليك الاعتماد على إمكانيات قاعدة البيانات لنظام الطرف الثالث.

مزامنة الدلائل

المبدأ الأساسي للمزامنة الفعالة للأدلة هو وجود نقطة دخول واحدة. ولكن إذا كنا نتحدث عن العمل مع الأدلة التي تم ملؤها تاريخيًا وفقًا لقواعد مختلفة، فمن الضروري تحديد مجالات المزامنة بوضوح لجلب التبادل إلى "قاسم مشترك".*

*في هذه المرحلة، قد يكون من الضروري القيام بعمل لتطبيع البيانات المرجعية على جانب مصدر البيانات. اعتمادًا على حالة الأدلة وحجمها، قد تتطلب عملية مقارنة العناصر والتعرف على الأخطاء والتكرارات وتحديدها، بالإضافة إلى ملء الحقول المفقودة وتعيين حقول المزامنة، عمل مجموعة كاملة من الخبراء، سواء على المستوى جزء من المتكامل (مالك تقنية تطبيع البيانات الرئيسية) ومن جانب العميل.

وضع القواعد

تعتمد القدرة على عرض البيانات من أنظمة المصدر في أجهزة الاستقبال على قواعد التبادل المحددة بشكل صحيح. تنظم القواعد المقدمة بتنسيق XML مدى توافق التفاصيل الأساسية لكائنات المصدر والمستقبل. تم تصميم حل 1C:Data Conversion لأتمتة إنشاء قواعد لتنفيذ عمليات التبادل لمرة واحدة والدائمة.

يضمن عدم فقدان البيانات أثناء خطة تبادل التبادل. يعد هذا جزءًا لا يتجزأ من أي تكوين على منصة 1C:Enterprise، والذي يصف بشكل كامل إجراء تبادل 1C: تكوين البيانات (المستندات التي تحتوي على تفاصيل "محددة") والعقد (قواعد معلومات جهاز الاستقبال والمرسل)، بالإضافة إلى تنشيط RIB لـ اتجاهات التبادل المختارة.

يتم تسجيل أي تغيير في البيانات المدخلة في خطة التبادل ويتلقى علامة "تم التغيير". وإلى أن تتطابق البيانات المتغيرة مع بعضها البعض في عقد جهاز الاستقبال والإرسال، لن تتم إعادة تعيين الإشارة، وسيرسل النظام رسائل تحكم إلى كلا العقدتين. بعد تحميل البيانات والتأكد من مطابقتها الكاملة في كلا النظامين، يتم إعادة ضبط الإشارة.

جدول الصرف في 1C

لأتمتة التبادل المنتظم، يتم تعيين وتيرة تحميل البيانات. يعتمد تكرار التبادل على الحاجة والقدرات التقنية. كما تسمح لك التكوينات الموجودة على النظام الأساسي 1C:Enterprise بتكوين تبادل البيانات عند وقوع حدث ما.

بعد النظر في العملية القياسية لتنفيذ التبادل، دعونا ننتبه إلى العوامل التي ستتطلب تحسينات في مراحل مختلفة:

  • تكوينات قاعدة البيانات غير القياسية والمعدلة للغاية؛
  • إصدارات مختلفة من منصة 1C:Enterprise؛
  • إصدارات التكوين التي لم يتم تحديثها لفترة طويلة؛
  • كائنات التبادل التي خضعت للتعديلات سابقًا؛
  • الحاجة إلى قواعد صرف غير قياسية؛
  • مجموعة مختلفة تمامًا وتكوين التفاصيل في الكتب المرجعية الموجودة.

نظرًا لأن الإجراءات القياسية لتنفيذ تبادل البيانات الأولية تتطلب معرفة متخصصة، فمن المستحسن تنفيذها بمشاركة متخصصين في 1C. فقط بعد إكمال جميع الخطوات الموضحة أعلاه، يجب عليك متابعة إعداد البورصة في التكوين. دعونا نلقي نظرة على تكامل قواعد البيانات باستخدام مثال 1C:UPP و1C:Retail (يتم إعداد التبادل مع 1C:UT باستخدام نفس المخطط). يتم أيضًا تضمين تبادل SCP - SCP في المزامنة القياسية، وهو أمر نموذجي لأنظمة الأتمتة واسعة النطاق في أكبر المؤسسات الصناعية.

في القائمة الفرعية "الخدمة"، حدد "تبادل البيانات مع المنتجات الموجودة على النظام الأساسي..." (يؤدي تحديد التبادل المباشر مع "البيع بالتجزئة" غالبًا إلى حدوث أخطاء على مستوى كائنات COM). يرجى ملاحظة رسالة الخدمة "هذه الميزة غير متوفرة".


لحل هذه المشكلة، تحتاج إلى تحديد "تكوين الاتصالات"


...وحدد المربع. بعد ذلك، تجاهل رسالة الخطأ.


في إعدادات مزامنة البيانات، حدد "إنشاء تبادل مع "البيع بالتجزئة"...



قبل تكوين إعدادات الاتصال من خلال دليل محلي أو دليل شبكة، يجب عليك التأكد من وجود مساحة على القرص للدليل. على الرغم من أنه، كقاعدة عامة، لا يستغرق أكثر من 30-50 ميجابايت، إلا أنه في حالات استثنائية قد يتطلب ما يصل إلى 600 ميجابايت. يمكنك إنشاء الدليل المطلوب مباشرة من أداة التهيئة.



عند الاتصال عبر دليل الشبكة، نتجاهل عرض تكوين الاتصال عبر عنوان FTP وعبر البريد الإلكتروني بالنقر فوق "التالي".


في الإعدادات، نقوم بإدخال البادئات يدويًا - رموز قواعد البيانات (عادةً BP، UPP، RO)، وقم بتعيين القواعد وتاريخ البدء لتحميل البيانات. ستتم الإشارة إلى البادئة في اسم المستندات للإشارة إلى قاعدة البيانات التي تم إنشاؤها فيها. إذا لم يتم تعديل قواعد التحميل، فسيتم تحميل البيانات بشكل افتراضي وفقًا لجميع المعلمات المتاحة.



نقوم بإنشاء ملف إعدادات الصرف لـ "البيع بالتجزئة" حتى لا نكرر أفعالنا. إذا كنت بحاجة إلى إرسال البيانات فورًا بعد إعداد المزامنة، فحدد المربع.


لأتمتة عملية التبادل، تحتاج إلى إعداد جدول زمني.


القائمة "البيع بالتجزئة".


حدد المربع وحدد "المزامنة".


نقوم بإجراء الإعداد "العكسي" عن طريق تحديد إدارة مؤسسات الإنتاج.




قم بتحميل ملف الإعدادات الذي تم إنشاؤه في UPP.


نضع علامة اختيار، يلتقط النظام العنوان تلقائيًا.





نحن نتصرف بنفس الطريقة كما في UPP.









مقارنة بيانات التحقق (يوصى بإجراء مقارنة يدوية للبيانات في المرحلة التحضيرية، لأن هذا العمل يمكن أن يصبح الأكثر كثافة في العمالة في عملية تنفيذ التبادل). يتم فتح نافذة المقارنة بالنقر المزدوج على الفأرة.



في حالة حدوث خطأ في المزامنة، سيتم استبدال "التفاصيل..." بـ "أبدًا...".


"التفاصيل..." يفتح السجل بالمعلومات المحدثة عن البورصة.


مستعد.