> ## Documentation Index
> Fetch the complete documentation index at: https://docs.get-clara.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# عرض بيانات السجل المرتبط

> اعرض بيانات من سجلات مرتبطة (مثل معلومات الشركة على الفرص) باستخدام سير العمل.

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

## الاستخدامات الشائعة

| المصدر | الوجهة | الحقول المطلوب نسخها                              |
| ------ | ------ | ------------------------------------------------- |
| الشركة | الفرصة | الصناعة، حجم الشركة، الإيراد السنوي المتكرر (ARR) |
| شخص    | الفرصة | البريد الإلكتروني، الهاتف، المسمّى الوظيفي        |
| الفرصة | الشركة | قيمة آخر صفقة، تاريخ آخر صفقة رابحة               |

## نسخ أساسي للحقل

### مثال: نسخ البريد الإلكتروني لجهة الاتصال إلى الفرصة

**الهدف**: عند تعيين نقطة اتصال على فرصة، انسخ البريد الإلكتروني لجهة الاتصال إلى الفرصة لسهولة الوصول.

### المتطلبات الأساسية

أنشئ حقول الوجهة في **الإعدادات → نموذج البيانات → الفرص** قبل إنشاء سير العمل:

* البريد الإلكتروني لجهة الاتصال (النوع: Email)
* هاتف جهة الاتصال (النوع: Phone)

### إعداد

1. **المحفّز**: يتم تحديث السجل (الفرص، حقل نقطة الاتصال)

2. **الفلتر**: تحقّق من أن نقطة الاتصال غير فارغة

3. **البحث في السجلات**: اعثر على الشخص المرتبط
   * الكائن: الأشخاص
   * الفلتر: المعرّف يساوي `{{trigger.object.pointOfContact.id}}`

4. **تحديث السجل**:
   * الكائن: الفرص
   * السجل: `{{trigger.object.id}}`
   * البريد الإلكتروني لجهة الاتصال: `{{searchRecords[0].email}}`
   * هاتف جهة الاتصال: `{{searchRecords[0].phone}}`

## نسخ عدة حقول

### مثال: مزامنة معلومات الشركة مع جميع الفرص المرتبطة

**الهدف**: عند تغيّر تفاصيل الشركة، حدّث جميع الفرص المرتبطة.

### إعداد

1. **المحفّز**: يتم تحديث السجل (الشركات)
   * الحقول: الصناعة، حجم الشركة، الإيراد السنوي

2. **البحث في السجلات**: اعثر على جميع الفرص الخاصة بهذه الشركة
   * الكائن: الفرص
   * الفلتر: معرّف الشركة يساوي `{{trigger.object.id}}`

3. **Iterator**: التكرار عبر كل فرصة

4. **تحديث السجل** (داخل الـ Iterator):
   * الكائن: الفرص
   * السجل: `{{iterator.currentItem.id}}`
   * صناعة الشركة: `{{trigger.object.industry}}`
   * حجم الشركة: `{{trigger.object.companySize}}`
   * الإيراد السنوي المتكرر للشركة: `{{trigger.object.annualRevenue}}`

## النسخ عند إنشاء السجل

### مثال: تعبئة الفرصة مسبقًا ببيانات الشركة

**الهدف**: عند إنشاء فرصة مرتبطة بشركة، انسخ تلقائيًا معلومات الشركة الأساسية.

### المتطلبات الأساسية

أنشئ حقول الوجهة في **الإعدادات → نموذج البيانات → الفرص**:

* صناعة الشركة (النوع: Text)
* حجم الشركة (النوع: Number)

### إعداد

1. **المحفّز**: يتم إنشاء السجل (الفرص)
   * الفلتر: الشركة ليست فارغة

2. **البحث في السجلات**: احصل على تفاصيل الشركة المرتبطة
   * الكائن: الشركات
   * الفلتر: المعرّف يساوي `{{trigger.object.company.id}}`

3. **تحديث السجل**:
   * الكائن: الفرص
   * السجل: `{{trigger.object.id}}`
   * صناعة الشركة: `{{searchRecords[0].industry}}`
   * حجم الشركة: `{{searchRecords[0].employees}}`

<Note>
  **قيود المهام والملاحظات**: العلاقات في المهام والملاحظات مُحدّدة في الشفرة كعلاقات متعدّدة-لمتعدّدة وليست متاحة بعد في محفّزات أو إجراءات سير العمل. للوصول إلى هذه العلاقات، استخدم بدلًا من ذلك [API](/l/ar/developers/extend/api).
</Note>

## مزامنة ثنائية الاتجاه

### مثال: الحفاظ على تزامن جهة الاتصال الأساسية

**الهدف**: عند تغيّر جهة الاتصال الأساسية للشركة، حدّث جهة الاتصال. وعندما يصبح شخص ما جهة الاتصال الأساسية، حدّث الشركة.

### سير العمل 1: الشركة → الشخص

1. **المحفّز**: يتم تحديث السجل (الشركات، حقل جهة الاتصال الأساسية)
2. **تحديث السجل**: عيّن قيمة "Is Primary Contact" للشخص إلى true
3. **البحث في السجلات**: اعثر على جهة الاتصال الأساسية السابقة
4. **تحديث السجل**: عيّن قيمة "Is Primary Contact" لجهة الاتصال السابقة إلى false

### سير العمل 2: الشخص → الشركة

1. **المحفّز**: يتم تحديث السجل (الأشخاص، Is Primary Contact = true)
2. **تحديث السجل**: عيّن جهة الاتصال الأساسية للشركة إلى هذا الشخص

<Note>
  كن حذرًا مع المزامنات ثنائية الاتجاه لتجنّب الحلقات اللانهائية. استخدم عوامل تصفية للتحقّق مما إذا كانت القيمة قد تغيّرت فعلاً قبل التحديث.
</Note>

## استخدام الشيفرة للتعيين المعقّد

### مثال: تحويل البيانات أثناء النسخ

**الهدف**: نسخ رقم الهاتف من الشخص إلى الفرصة وتنسيقه.

```javascript theme={null}
export const main = async (params) => {
  const { phone } = params;

  if (!phone) return { formattedPhone: null };

  // Remove non-numeric characters
  const digits = phone.replace(/\D/g, '');

  // Format as (XXX) XXX-XXXX
  const formatted = digits.length === 10
    ? `(${digits.slice(0,3)}) ${digits.slice(3,6)}-${digits.slice(6)}`
    : phone;

  return { formattedPhone: formatted };
};
```

## أفضل الممارسات

### تجنّب الحلقات

* لا تنشئ سير عمل تُحفّز بعضها بعضًا بلا نهاية
* استخدم شروطًا خاصة بالحقول
* أضف تحقّقات لمعرفة ما إذا كانت القيمة قد تغيّرت فعلاً

### التعامل مع البيانات المفقودة

* تحقّق دائمًا من وجود سجل المصدر قبل النسخ
* وفّر قيمًا افتراضية للحقول الاختيارية
* استخدم عوامل تصفية للتخطّي عندما يكون حقل المصدر فارغًا

### الأداء

* نفّذ تحديثات دفعية عند النسخ إلى العديد من السجلات
* استخدم سير عمل مجدولة لعمليات المزامنة بالجملة
* فكّر في استخدام Iterator لتحديثات متعددة للسجلات

## ذات صلة

* [إجراءات سير العمل](/l/ar/user-guide/workflows/capabilities/workflow-actions)
* [محفّزات سير العمل](/l/ar/user-guide/workflows/capabilities/workflow-triggers)
