تغيير أو تعطيل وضع التوافق. تغيير أو تعطيل وضع التوافق نقل امتداد لمنصة جديدة

💖 أحببته؟شارك الرابط مع أصدقائك

تكلفة العمل وخيارات الترجمة من إصدارات مختلفة

الترجمة 8.1 → 8.2.13 الترجمة 8.2.13 إلى 8.2.16 الترجمة 8.2.16 ← 8.3.10
السعر ، فرك. * 54000 12000 ₽ 76800

قائمة بجميع التغييرات في الإصدارات المختلفة من النظام الأساسي متوفرة على الروابط:
للمنصة 8.2:
http://downloads.v8.1c.ru/content/Platform/8_2_19_106/1cv8upd.htm

قبل البدء في الترجمة إلى الإصدار 8.3 ، تحتاج إلى:

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

ترجمة التكوين 8.1 → 8.2.13

تكلفة العمل: 54000 فرك.

ترجمة التكوين 8.2.13 → 8.2.16 (بما في ذلك إعادة الهيكلة)

التغييرات الرئيسية:
تم تغيير وضع تخزين الثوابت وإعدادات سجلات التراكم. كل كائن له جدول قاعدة البيانات الخاص به
تم إعادة تصميم تنفيذ آلية القفل المُدار.
بالنسبة لحدث السجل التكنولوجي "TLOCK" ، تتم كتابة الخاصية "Txt" فقط في وضع التوافق مع الإصدار 8.2.13
تأثير وضع التصحيح على سرعة العمل في 1C: تم تقليل وضع Enterprise لعميل رفيع وعميل سميك وخادم واتصال خارجي.
التنفيذ الأمثل لاستعلام مثل "ValueType (Field1) = ValueType (Field2)" إذا كان "Field1" و "Field2" يحتويان على قيم نوع مرجعي.
بالنسبة لحقول النموذج المُدارة التي تعرض سمة النوع المركب ، يتم تسريع فتح قائمة التحديد السريع في الحالات التي يشتمل فيها النوع المركب على أنواع مرجعية بإعدادات تحديد سريع مختلفة.
لسجل معلومات جديد مستقل وغير دوري ، يتم تجميع الفهرس حسب الأبعاد

التغييرات التي تتطلب تغييرات التكوين:

عند تعطيل وضع التوافق ، تكون معلمة "الفترة" الخاصة بطريقة "Get ()" الخاصة بمدير سجل المعلومات الدورية إلزامية. في وضع التوافق مع الإصدار 8.2.13 والإصدار 8.1 ، لم يتغير السلوك (يمكن استخدام الطريقة دون تحديد معلمة ، ولكن النتيجة غير محددة).
عند استخدام الأسلوبين "SetValue ()" و "UseFromDataSource ()" لكائن "DataLockItemItem" في نفس الوقت ، يتم طرح استثناء. في وضع التوافق مع الإصدار 8.2.13 ، لم يتغير السلوك (تعطى الأولوية للقيمة المحددة بواسطة طريقة "UseFromDataSource ()").
لا يتم دعم تخزين قيم البيانات غير القابلة للتسلسل. في وضع التوافق ، لم يتغير السلوك.
إذا كانت قاعدة البيانات عبارة عن ملف واحد ، فيجب تحويل قاعدة المعلومات. بعد بدء التحويل ، سيكون العمل مع قاعدة المعلومات هذه مع الإصدارات السابقة من منصة 1C: Enterprise 8 أمرًا مستحيلًا. إذا تم إجراء التطوير باستخدام مستودع التكوين ، فيجب عليك عمل نسخة من المستودع قبل تحويل قاعدة المعلومات

مهم. للحصول على تأثير تغيير وضع التوافق ، تحتاج إلى إجراء إعادة هيكلة من خلال المُكوِّن: "الإدارة ← الاختبار والإصلاح ← إعادة هيكلة جداول قاعدة المعلومات".

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

في هذه الحالة ، يجب عليك القيام بما يلي:
قم بتثبيت إصدار خادم 1C 8.2.19 بشكل منفصل ونشر قاعدة البيانات قيد الدراسة عليها
افتح قاعدة البيانات في أداة التهيئة على الإصدار 8.2.19 من خادم 1C ، وقم بتغيير وضع التوافق إلى "عدم الاستخدام"
إجراء إعادة هيكلة جداول قاعدة المعلومات
بعد اكتمال إعادة الهيكلة ، انقل قاعدة المعلومات إلى الخادم الأصلي 1C الإصدار 8.3

تكلفة نقل التكوين من وضع التوافق 8.2.13 إلى وضع 8.2.16 (وضع عدم التوافق عند استخدام النظام الأساسي 8.2.16 و 8.2.19 ووضع التوافق 8.2.16 عند استخدام النظام الأساسي 8.3) هو 12000 فرك.

يمكن تنزيل نموذج عقد العمل.

ترجمة التكوين 8.2.16 ← 8.3.10

يتضمن عمل ترجمة التكوين تحسينات التكوين التالية:

1. القضاء على التعارض في اسم الملكية. تغيير أسماء المتغيرات لمطابقة الخصائص الجديدة التي ظهرت في 1C: Enterprise 8.3.
2. القضاء على تعارض الأسماء بالصور. إعادة تسمية أسماء الصور بأسماء تطابق الأسماء من مكتبة الصور.
3. تنقيح الكود عند تغيير خصائص هيكل ثابت. استبدال بيان خصائص هيكل ثابت بإعادة إنشاء هيكل ثابت أو استبدال استخدامه بنوع مماثل من "الهيكل".
4. استبدال القيم غير القابلة للتسلسل في التخزين المؤقت برمز مدعوم في 1C: Enterprise 8.3.
5. استبدال استخدام استدعاء طريقة "إظهار" لسمات النموذج المُدار ، باستخدام الخصائص "CurrentElement" و "CurrentPage" و "Activate"
6. استبدال أسماء كائنات البيانات الوصفية التي يزيد طولها عن 80 حرفًا ، بأسماء بطول 80 حرفًا أو أقل لكائنات البيانات الوصفية
7. إعادة تسمية الطرق والخصائص وفقًا لمنهجية التحول إلى الإصدار 8.3.
8. صقل آليات العمل مع التحديدات والتصميم الشرطي والتجميعات والترتيب في القوائم الديناميكية.
9. تحسين رمز الطلبات بالكلمة الرئيسية "RESULTS ON GENERAL" ، التي تم تفريغها في الوضع
"تجاوز نتيجة الاستعلام. بالتجميع" ، من أجل الحفاظ على منطق العمل القديم.
10. التغييرات في أسماء فئات كائنات COM. استبدال الاسمين "V82.COMConnector" بـ "V83.COMConnector" و "V82.Application" بـ "V83.Application".
11. رفض في كود البرنامج من حدث "Start of SelectionFromList" لإدخال الحقول في وضع الاختيار من القائمة
12. رفض في رمز البرنامج من خاصية "SelectionListButton" لحقول الإدخال عن طريق تعيين خاصية "DropdownListButton".
13. تغيير الرمز مع مراعاة التغيير في نوع القيمة التي يتم إرجاعها بواسطة طريقة السياق العام "SafeMode ()"
14. تغيير الرمز مع مراعاة التغيير في نتيجة الاستعلام إلى الثوابت (عند الوصول إلى حقل "القيمة" في الجدول الثابت ، إذا كان الثابت يخزن قيمة "ValueStorage" أو "UniqueIdentifier" أو "ExternalDataSourceTableReference" يكتب).
15. استبدال خاصية التكوين "MainRole" بـ "MainRoles"
16. رفض خصائص "المستخدم" و "كلمة المرور" لكائن "InternetProxy" واستبدالها بأساليب "Set ()" و "User ()" و "Password ()".
17. تنقيح الكود لدعم أمر "إظهار في القائمة" ، وفقًا لمنهجية التبديل إلى الإصدار 8.3.
18. تحسين الكود للحفاظ على المنطق السابق لعملية النظام مع تغيير قيمة الإرجاع لخاصية SystemInformation.OSVersion ،
19. تنقيح الكود للحفاظ على المنطق القديم للنظام عند عدم استخدام نظام تعداد WindowOpeningVariant ، والذي لم يعد متوفرًا في الإصدار 8.3.
20. تنقيح الكود مع مراعاة رفض استخدام النوافذ المشروطة.
21. تحسين كود دعم عميل الويب ، أي رفض مكالمات الخادم وفتح النوافذ في "قبل الإغلاق" ، ورفض مكالمات الخادم في "عند الإغلاق".
22. تنقيح الكود لإمكانية الاستخدام الصحيح لوظيفة RoleAvailable () ، عند تمرير الوظيفة كمعامل إلى الدور المفقود.
23. بالنسبة لتطبيق مُدار: بدءًا من الإصدار 8.3.8 في معالجات أحداث التطبيق المُدارة قبل إيقاف تشغيل النظام ، وإيقاف تشغيل النظام ، وكذلك في معالجات أحداث النموذج المُدارة التي تكون في وضع الإغلاق ، قبل الإغلاق ، عند الإغلاق ، يمنع فتح النوافذ وإجراء أي مكالمات للخادم. من الضروري تحسين التكوين بحيث يتم تنفيذ إغلاق النماذج بشكل صحيح - بدون مكالمات الخادم.
24. تعارض اسم المتغير: لا يمكنك استخدام اسم المتغير FormParameters في وحدة نمطية. لذلك ، من الضروري إنهاء جميع وحدات النموذج المدارة التي تستخدم المتغيرات المسماة FormParameters عن طريق إعادة تسمية هذه المتغيرات.

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

تكلفة العمل: 76800 روبل روسي

يمكن تنزيل نموذج عقد العمل.

يمكن أن تكون تكلفة تحويل التكوين إلى وضع التوافق مع 8.3.10 زيادة، لو:
يستخدم التكوين النماذج المدارة
من الضروري التوقف عن استخدام الطريقة
من الضروري الحفاظ على قابلية تشغيل التكوين في نظام التشغيل Linux

لقد أصدرنا إصدارًا جديدًا من لوحة الهاتف لـ 1C.

  • إصدار 1.2.24.10 ل عاديالتطبيقات
  • إصدار 1.4.26.17 ل تمكنتالتطبيقات

في نسخة الإصدار لتطبيق مُدار ، أصبح من الممكن تضمين لوحة هاتفية مع الحد الأدنى من التعديلاتالتكوين الأساسي مع آلية التوسعإعدادات.

فوائد استخدام الامتداد

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

الميزة العظيمة لاستخدام الامتدادات هي تحديث أوتوماتيكيالتكوين الرئيسي. الآن ليست هناك حاجة لتغيير إعدادات الدعم لتكوين نموذجي.

ميزات تضمين لوحة هاتفية لـ 1 درجة مئوية

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

2) في التكوين الرئيسي ، نضيف الدور MIKO_Softphone، والتي نقوم بإزالة جميع الحقوق الخاصة بها.

عند إضافة كائن بيانات وصفية جديد ، في هذه الحالة دور ، من الضروري تحديث الدليل معرفات كائن البيانات الوصفية. عندما أضفنا هذا الدور إلى الامتداد ، تجاهلت التكوينات النموذجية ذلك ، أي عند تحديث دليل MetadataObjectIdentifiers ، لم يظهر الدور فيه. لهذا السبب ، لم تعمل آلية ملف تعريف إعدادات لوحة الهاتف بشكل صحيح ، حدث خطأ: " لم يتم العثور على معرف كائن البيانات الوصفية لدور MIKO_Softphone".

علاوة على ذلك ، لم يحدث هذا الموقف في جميع التكوينات ، كما في "إدارة التجارة ، 11.2.3.218"و "أتمتة متكاملة ، 2.0.3.222"لم تكن هناك مشاكل مع الدور عندما تمت إضافته إلى الامتداد نفسه. لتوفير بعض التنوع في حلنا وضمان التشغيل السلس في معظم التكوينات التي ندعمها ، قررنا إضافة الدور MIKO_softphoneفي التكوين الرئيسي واستعارته في الامتداد ، ثم قم بتنفيذ الإعدادات الخاصة بهذا الدور في الامتداد.

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

تلخيص

حتى بما في ذلك القدرة على تغيير التكوين الرئيسي وإجراء تغييرات طفيفة على التكوين ، فقد جعلنا عملية تضمين لوحة الهاتف أسهل بكثير. الآن لا تحتاج إلى إجراء تغييرات على الوحدات النمطية للتطبيق المُدار أو إضافة معالجة وأنظمة فرعية إلى التكوين أو إعداد الأدوار. الامتداد سيفعل كل هذا من أجلك! سنستمر في تحسين عملية تضمين لوحة هاتفية لـ 1C!

توجد تعليمات لتضمين لوحة هاتفية لـ 1C باستخدام آلية التمديد.

اطرح أسئلتك من خلال نموذج الملاحظات.

© 2019. MIKO LLC جميع الحقوق محفوظة.

في هذه المقالة ، أقترح النظر في ماهية "امتداد التكوين" ، وكيفية إضافة امتداد أو تعطيله. بدءًا من الإصدار 1C في عام 8.3.6.1977 ، تم تقديم آلية جديدة في النظام الأساسي - ملحقات التكوين. أولا ، نظرية صغيرة.

الامتدادات في 1C تشبه التكوينات المتوازية التي يتم دمجها تلقائيًا مع تكوين المورد الرئيسي. علاوة على ذلك ، في الامتدادات ، يمكنك إضافة كائناتك الخاصة واستعارة كائنات من التكوين الرئيسي.

ما هي الامتدادات؟

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

يستلزم الخروج من الدعم الكامل عددًا من المضايقات:

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

عند استخدام الامتدادات ، عند إجراء التغييرات ، لن يلمس المبرمج التكوين القياسي. سيتم إجراء جميع التغييرات باستخدام الإضافات ، والتي (كما كتبت أعلاه) هي أيضًا تكوينات. وبالتالي ، سيظل التكوين الرئيسي في الدعم الكامل.

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

فيديو - تمديدات في 1C في 45 دقيقة

احصل على 267 درس فيديو 1C مجانًا:

مثال على إضافة امتداد إلى 1C

لإظهار ماهية الامتداد ، من الأفضل إعطاء مثال على إنشائه في مكون 1C.

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

كما ترى ، فإن تكوين الامتداد له نفس البنية تمامًا مثل التكوين الرئيسي. فقط هو في البداية نقي تمامًا ، بدون أشياء.

لقد كتبت مؤخرًا مقالًا عن كيفية صنع مقال خاص بك. باستخدام مثالها ، أريد أن أجعله مضمّنًا باستخدام امتداد.

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

لذلك ، سنستعير الدليل من التكوين الرئيسي:

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

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

هذا هو الهيكل الذي حصلت عليه:

دعونا نرى ما حصلنا عليه. نقوم بتحديث تكوين قاعدة البيانات وتشغيل البرنامج في 1C: وضع المؤسسة ، والانتقال إلى قائمة "الإدارة". نعم ، لقد نسيت تقريبًا ، يجب إغلاق تكوين الامتداد ، وإلا فلن يبدأ البرنامج:

تم إصدار إصدار جديد من النظام الأساسي 8.3.11 ، والذي يسمح لك بإضافة كائنات بيانات التعريف وتعديلها من خلال امتداد. هل يمكننا حقًا تنفيذ أي تحسينات الآن دون إزالة التكوين من الدعم؟ هل يستحق الوعد جبال من الذهب لعميل دون أي عواقب؟

بادئ ذي بدء ، يجب أن تكون على دراية بالقيود التي تفرضها الإضافات.

القيود على الأشياء التي تم إنشاؤها

على هذه اللحظةثستطيع ان تخلق:

  • الكتب المرجعية
  • توثيق
  • سجلات المعلومات
  • خطط الصرف

يمكنك إضافة تفاصيل إلى:

  • الكتب المرجعية
  • توثيق

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

تعتمد وظيفة الملحقات على وضع التوافق للتكوين الذي يتم تطبيق الامتداد عليه.

وضع التوافق 8.3.8- يمكنك فقط تغيير أشكال الكائنات ووحداتها النمطية وإضافة التقارير والمعالجة الخاصة بك.

وضع التوافق 8.3.10- يمكنك تغيير الوحدات النمطية الشائعة ، ووحدات الكائن والمدير ، والأدوار ، واستخدام التوجيهات "قبل" ، و "بعد" ، و "بدلاً من ذلك" لأية وحدات.

وضع التوافق "لا تستخدم"- يمكنك استخدام جميع وظائف الامتدادات ، بما في ذلك إضافة كائنات جديدة.

في الوقت الحالي ، يحتوي UT 11.3 النموذجي على وضع التوافق 8.3.8. في وضع التوافق UT 11.4 ، 8.3.10 ، على سبيل المثال ، بالنسبة إلى UT ، لا تتوفر معظم وظائف الامتدادات ، بما في ذلك إنشاء كائنات البيانات الوصفية.

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

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


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


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

الاستنتاجات

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