التكوين
تكوين المكون
Section titled “تكوين المكون”يمكن تكوين مكون Object Team Member مباشرة في Lightning App Builder بالخصائص التالية:
| الخاصية | النوع | الافتراضي | الوصف |
|---|---|---|---|
| Card Title | String | Team Members | العنوان المعروض على بطاقة المكون |
| Max Displayed Members | Integer | 5 | الحد الأقصى لعدد أعضاء الفريق المعروضين قبل الطي. اضبطه على 0 لإظهار الجميع |
عندما يتجاوز عدد أعضاء الفريق الحد المكوّن، تنطوي القائمة وتظهر زر “Show all (X more)”. النقر عليه يوسع القائمة الكاملة، مع زر “Show less” لطيها مرة أخرى. يظهر مالك السجل دائمًا أولاً في القائمة، بغض النظر عن حد العرض.


سلوك حد العرض
Section titled “سلوك حد العرض”| الإعداد | السلوك |
|---|---|
| Max Displayed Members = 5 (افتراضي) | يعرض أول 5 أعضاء، “Show X more” للباقي |
| Max Displayed Members = 0 | جميع أعضاء الفريق مرئيون، بدون طي/توسيع |
| Max Displayed Members = 3 (مخصص) | يعرض أول 3 أعضاء، “Show X more” للباقي |
أدوار أعضاء الفريق
Section titled “أدوار أعضاء الفريق”عند إضافة مستخدمين إلى فريق، تقوم بتعيين أحد الأدوار التالية لهم:
| الدور | الوصف | القدرات |
|---|---|---|
| Owner | مالك السجل | يتم تعيينه تلقائيًا عند إنشاء سجل. لا يمكن تعيينه أو إزالته يدويًا. لديه وصول كامل لإدارة أعضاء الفريق. يتم حذفه تلقائيًا عندما لا يوجد مستخدمون آخرون في الفريق. |
| Manager | مسؤول الفريق | يمكنه إضافة وتحرير وإزالة أعضاء الفريق. استخدم هذا الدور للمستخدمين الذين يحتاجون لإدارة تكوين الفريق. |
| User | عضو فريق قياسي | يمكنه عرض قائمة أعضاء الفريق ولكن لا يمكنه تعديلها. استخدم هذا الدور للمستخدمين الذين يحتاجون فقط للوصول إلى السجل. |

مزامنة تغيير المالك
Section titled “مزامنة تغيير المالك”عندما يتغير مالك السجل (مثل إعادة تعيين حساب Account لمندوب مبيعات آخر)، لا يتم تحديث عضو فريق Owner تلقائيًا. ينشئ النظام سجل Owner عند إضافة أول عضو فريق، لكنه لا يتتبع تغييرات المالك اللاحقة على السجل الأصلي.
للحفاظ على مزامنة Owner في الفريق مع مالك السجل، تحتاج لإنشاء Record-Triggered Flow.
الإعداد عبر Flow (موصى به)
Section titled “الإعداد عبر Flow (موصى به)”- انتقل إلى Setup > Flows
- انقر على New Flow > Record-Triggered Flow
- حدد الكائن (مثل Account)
- كوّن المشغل: “A record is updated”
- أضف Entry Condition: Formula >
ISCHANGED({!$Record.OwnerId})evaluates totrue - اضبط “When to Run the Flow” على “After the record is saved”
- أضف عنصر Action
- ابحث عن “Sync Team Member Owner”
- اضبط معامل “Record ID” على
{!$Record.Id} - اترك “Object API Name” فارغًا (يتم اشتقاقه تلقائيًا من Record ID)
- احفظ وقم بـ Activate الـ Flow

الإعداد عبر Apex Trigger
Section titled “الإعداد عبر Apex Trigger”trigger AccountOwnerSync on Account(after update) { List<tucariofts.SyncOwnerInvocable.SyncOwnerRequest> requests = new List<tucariofts.SyncOwnerInvocable.SyncOwnerRequest>();
for (Account acc : Trigger.new) { Account oldAcc = Trigger.oldMap.get(acc.Id); if (acc.OwnerId != oldAcc.OwnerId) { tucariofts.SyncOwnerInvocable.SyncOwnerRequest req = new tucariofts.SyncOwnerInvocable.SyncOwnerRequest(); req.recordId = acc.Id; requests.add(req); } }
if (!requests.isEmpty()) { tucariofts.SyncOwnerInvocable.syncOwners(requests); }}الاستدعاء من كود Apex (سجل واحد)
Section titled “الاستدعاء من كود Apex (سجل واحد)”tucariofts.SyncOwnerInvocable.SyncOwnerRequest request = new tucariofts.SyncOwnerInvocable.SyncOwnerRequest();request.recordId = accountId;
List<tucariofts.SyncOwnerInvocable.SyncOwnerResult> results = tucariofts.SyncOwnerInvocable.syncOwners( new List<tucariofts.SyncOwnerInvocable.SyncOwnerRequest>{ request } );
if (results[0].success) { System.debug('Owner synced: ' + results[0].oldOwnerId + ' → ' + results[0].newOwnerId);} else { System.debug('Sync failed: ' + results[0].message);}كائن النتيجة
Section titled “كائن النتيجة”| الحقل | النوع | الوصف |
|---|---|---|
success | Boolean | هل نجحت المزامنة |
message | String | رسالة النتيجة أو تفاصيل الخطأ |
oldOwnerId | Id | معرف المستخدم للمالك السابق |
newOwnerId | Id | معرف المستخدم للمالك الجديد |
سيناريوهات الخطأ
Section titled “سيناريوهات الخطأ”| السيناريو | النتيجة |
|---|---|
| لا يوجد أعضاء فريق على السجل | success = false، “No Owner team member found” |
| المالك لم يتغير | success = true، “Owner unchanged, no update needed” |
| Record ID null | success = false، “Record ID is required” |
| معرف سجل غير صالح | success = false، رسالة خطأ |
قيود مهمة
Section titled “قيود مهمة”Queues كمالكين غير مدعومة — لا يدعم Flexible Team Share Queues كمالكي فريق. عندما يكون السجل مملوكًا لـ Queue:
- يستخدم النظام المستخدم الحالي (الشخص الذي يضيف أول عضو فريق) كـ Owner في الفريق
- إذا قمت لاحقًا بتغيير مالك السجل من Queue إلى User، قم بتشغيل إجراء Sync Owner لتحديث الفريق
- إذا قمت بتغيير المالك من User إلى Queue، سيبقى Owner في الفريق كالمستخدم السابق
يجب إنشاء Flow لكل كائن — تحتاج لإنشاء Flow منفصل لكل نوع كائن تريد مزامنة المالك عليه. يعمل Invocable Action مع أي كائن، لكن Salesforce يتطلب Record-Triggered Flows منفصلة لكل كائن.
الوصول المؤقت مع تاريخ الانتهاء
Section titled “الوصول المؤقت مع تاريخ الانتهاء”عند إضافة عضو فريق، يمكنك اختياريًا تعيين End Date لمنح وصول مؤقت لسجل. هذا مفيد لـ:
- التعاون القائم على المشاريع مع جداول زمنية محددة
- الاستشاريين أو المقاولين المؤقتين
- تغطية الإجازات أو المسؤوليات المفوضة
- فترات المراجعة أو التدقيق
كيف يعمل
Section titled “كيف يعمل”- عند إضافة أو تحرير عضو فريق، اضبط حقل End Date على آخر يوم يجب أن يكون لديه وصول
- يحتفظ عضو الفريق بالوصول الكامل حتى نهاية ذلك اليوم
- بعد مرور End Date، تقوم مهمة التنظيف المجدولة تلقائيًا بإزالة عضو الفريق وإلغاء وصوله

عملية التنظيف التلقائية
Section titled “عملية التنظيف التلقائية”- تعمل مهمة batch المجدولة يوميًا (افتراضيًا في الساعة 2:00 صباحًا) لإزالة أعضاء الفريق منتهي الصلاحية
- عند إزالة عضو فريق، يتم أيضًا حذف سجل المشاركة الخاص به، مما يلغي الوصول إلى السجل
- يمكن إدارة مهمة التنظيف من معالج التكوين

المهمة المجدولة
Section titled “المهمة المجدولة”يتضمن Flexible Team Share مهمة تنظيف تلقائية تزيل أعضاء الفريق منتهي الصلاحية. يتم جدولة هذه المهمة تلقائيًا أثناء تثبيت الحزمة.
التحقق من المهمة
Section titled “التحقق من المهمة”- انتقل إلى Setup > Scheduled Jobs
- ابحث عن Flexible Team Share - Expired Member Cleanup
- تحقق من أن المهمة مجدولة للتشغيل يوميًا

إدارة المهمة اليدوية
Section titled “إدارة المهمة اليدوية”يمكن للمسؤولين إدارة مهمة التنظيف من معالج التكوين:
- Schedule Job — جدولة يدويًا إذا لم تكن قيد التشغيل
- Unschedule Job — إيقاف التنظيف التلقائي
- Run Now — تنفيذ التنظيف فورًا
استكشاف الأخطاء وإصلاحها
Section titled “استكشاف الأخطاء وإصلاحها”تحذير “Configuration Not Found”
Section titled “تحذير “Configuration Not Found””العرض: يظهر نافذة تحذير منبثقة تنص على عدم وجود تكوين لهذا الكائن.
السبب: تمت إضافة مكون Team Member إلى صفحة سجل قبل تكوين الكائن في معالج التكوين.
الحل:
- انتقل إلى معالج التكوين (تطبيق Flexible Team Share > Configuration)
- أضف وانشر تكوينًا لهذا الكائن
- ارجع إلى صفحة السجل — يجب أن يعمل المكون الآن بشكل صحيح

خطأ “No Access”
Section titled “خطأ “No Access””العرض: يعرض المكون رسالة “No Access” مع أيقونة قفل بدلاً من أعضاء الفريق.
السبب: المستخدم الحالي ليس لديه Permission Set Group المطلوب معينًا.
الحل:
- انتقل إلى Setup > Permission Set Groups
- قم بتعيين Admin أو User Permission Set Group للمستخدمين المتأثرين
- قد يحتاج المستخدمون لتسجيل الخروج وإعادة تسجيل الدخول لتطبيق التغييرات

تحذير “Limit Reached”
Section titled “تحذير “Limit Reached””العرض: زر “Add Team Member” معطل ورسالة تشير إلى الوصول للحد الأقصى.
السبب: لقد وصلت إلى الحد الأقصى لعدد أعضاء الفريق المسموح به.
الحل: قم بإزالة أعضاء الفريق غير النشطين أو غير الضروريين لتحرير المساحات.
| أعضاء الفريق ضمن الحد | أعضاء الفريق تجاوزوا الحد |
|---|---|
![]() | ![]() |

المشاركة لا تعمل
Section titled “المشاركة لا تعمل”العرض: تتم إضافة أعضاء الفريق بنجاح لكنهم لا يستطيعون الوصول إلى السجل.
السبب: إعداد المشاركة الافتراضي على مستوى المؤسسة (OWD) للكائن معين على Public Read/Write.
الحل:
- انتقل إلى Setup > Sharing Settings
- قم بتغيير OWD للكائن إلى Private أو Public Read Only
- ملاحظة: تغيير إعدادات OWD قد يؤثر على وصول المستخدمين الآخرين — استشر مسؤول Salesforce الخاص بك
للأسئلة أو المشاكل، يرجى الاتصال بـ support@tucario.com.

