Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 2s
123 lines
9.5 KiB
Plaintext
123 lines
9.5 KiB
Plaintext
---
|
|
title: الحقول
|
|
description: فهم دور الحقول وكيفية إدارتها.
|
|
---
|
|
|
|
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
|
|
|
|
## حول الحقول
|
|
|
|
الحقول مثل الأعمدة في جدول البيانات. تُخزّن أنواعًا مختلفة من البيانات مثل النصوص أو الأرقام أو التواريخ. يمكن أن تكون الحقول قياسية (مدمجة) أو مخصصة (التي تقوم بإنشائها).
|
|
|
|
### الحقول القياسية
|
|
|
|
الحقول القياسية تأتي مدمجة في Twenty للتعامل مع احتياجات الأعمال العامة.
|
|
|
|
على سبيل المثال، `الاسم الأول` و`الاسم الأخير` هما حقول قياسية في كائن `الأشخاص`. تخزن البيانات النصية للأسماء الفردية.
|
|
|
|
لا يمكنك حذف الحقول القياسية، ولكن يمكنك إلغاء تنشيطها إذا لم تكن بحاجة إليها.
|
|
|
|
يمكنك أيضًا تخصيص خيارات الحقول القياسية من نوع `SELECT`، على سبيل المثال خيارات `Stage` في الفرص.
|
|
|
|
<img src="/images/user-guide/fields/standard-fields.png" style={{width:'100%'}} />
|
|
|
|
### الحقول المخصصة
|
|
|
|
يمكن إضافة الحقول المخصصة إلى أي كائن. يمكنك تخزين النصوص أو الأرقام أو التواريخ أو الخيارات المنسدلة والمزيد. استخدم الحقول المخصصة لتتبع المعلومات الخاصة بأعمالك.
|
|
|
|
على سبيل المثال، الحقل المخصص لـ SpaceX يمكن أن يكون `حالة الصاروخ النشطة`، مما يشير إلى ما إذا كان الصاروخ يعمل.
|
|
|
|
<img src="/images/user-guide/fields/custom-fields.png" style={{width:'100%'}} />
|
|
|
|
## أنواع الحقول
|
|
|
|
يدعم Twenty أنواعًا متعددة من الحقول:
|
|
|
|
| النوع | الوصف | مثال |
|
|
| ----------------- | ----------------------------------------------------------------- | --------------------------- |
|
|
| العنوان | عنوان مُهيكل يتضمن الشارع، المدينة، الولاية، البلد، الرمز البريدي | عنوان المكتب |
|
|
| مصفوفة | قائمة بقيم نصية | الوسوم |
|
|
| قيمة منطقية | خانة اختيار صح/خطأ | نشط |
|
|
| العملة | قيمة نقدية مع رمز العملة | مبلغ الصفقة (USD) |
|
|
| تاريخ | قيم التاريخ | تاريخ الإغلاق |
|
|
| التاريخ والوقت | تاريخ مع الوقت | وقت الاجتماع |
|
|
| النطاق | نطاق موقع الويب (يُستخدم للشركات) | acme.com |
|
|
| البريد الإلكتروني | عناوين البريد الإلكتروني (مع الأساسي + الإضافي) | بريد جهة الاتصال الإلكتروني |
|
|
| JSON | بيانات JSON مُهيكلة | بيانات وصفية مخصصة |
|
|
| روابط | عناوين URL مع تسميات (أساسي + ثانوي) | موقع الويب، لينكدإن |
|
|
| نص طويل | نص متعدد الأسطر | الوصف، الملاحظات |
|
|
| التحديد المتعدد | خيارات متعددة من قائمة محددة مسبقًا | وسوم، فئات |
|
|
| رقم | قيم رقمية (صحيحة أو عشرية) | الكمية، الدرجة |
|
|
| هاتف | أرقام هواتف مع رمز البلد | هاتف العمل |
|
|
| تقييم | تقييم بالنجوم (1-5) | الأولوية، الدرجة |
|
|
| علاقة | روابط إلى السجلات في كائنات أخرى | الشركة → الأشخاص |
|
|
| اختيار | خيار واحد من قائمة محددة مسبقًا | المرحلة، الحالة |
|
|
| نص | سطر واحد من النص | الاسم، العنوان |
|
|
|
|
## إنشاء حقل مخصص
|
|
|
|
لإضافة حقل مخصص لأي كائن، اتبع هذه الخطوات:
|
|
|
|
1. اذهب إلى `الإعدادات` في الشريط الجانبي الأيسر.
|
|
2. اذهب إلى `نموذج البيانات`، ثم حدد الكائن الذي ترغب في تخصيصه.
|
|
3. تقدم من خلال النقر على `+ حقل جديد`.
|
|
4. اختر اسم الحقل والنوع الذي يناسب احتياجاتك. فكر في إضافة وصف للحقل لفهم أفضل.
|
|
|
|
أصبح الحقل الجديد الذي أنشأته الآن متاحًا ضمن حقول التطبيق. لعرضه في عرض محدد، انقر على قائمة الخيارات، ثم اختر `الحقول`.
|
|
|
|
<VimeoEmbed videoId="927628219" title="عرض توضيحي بالفيديو" />
|
|
|
|
**طريقة سريعة:** اضغط على زر **+** في أعلى يمين أي جدول كائن، ثم اختر `تخصيص الحقول`. سيأخذك هذا مباشرة إلى إعدادات نموذج البيانات.
|
|
|
|
<img src="/images/user-guide/fields/quick-new-field.png" style={{width:'100%'}} />
|
|
|
|
## إلغاء تنشيط حقل
|
|
|
|
يمكنك إلغاء تنشيط حقل لإخفائه من التطبيق دون فقدان بياناتك. اعتبره كإخفاء للحقل بدلاً من حذفه.
|
|
|
|
إليك كيفية القيام بذلك:
|
|
|
|
1. ابحث عن الحقل الذي تريد إلغاء تنشيطه في إعدادات الكائن الخاصة بك.
|
|
2. انقر على الثلاث نقاط `⋮` بجانب الحقل لفتح القائمة.
|
|
3. اختر `إلغاء التنشيط` من القائمة المنسدلة.
|
|
|
|
<img src="/images/user-guide/fields/deactivate-field.png" style={{width:'100%'}} />
|
|
|
|
ماذا يحدث عند إلغاء تنشيط حقل؟
|
|
|
|
1. **في التطبيق:** يختفي الحقل ولا يمكنك إضافة قيم جديدة إليه.
|
|
2. **العلاقات الموجودة:** إذا كان حقل علاقة، ستبقى الروابط القائمة ولكن لا يمكنك إنشاء روابط جديدة.
|
|
3. **الوصول عبر API:** لا يزال بإمكانك الوصول إلى الحقل وبياناته عبر API.
|
|
|
|
يمكنك إعادة تنشيط الحقول القياسية والمخصصة أو لديك خيار حذفها نهائيًا.
|
|
|
|
## جعل الحقول فريدة
|
|
|
|
اجعل الحقل فريدًا لضمان عدم إمكانية أن تحتوي السجلات المميزة على نفس القيمة. على سبيل المثال، عناوين البريد الإلكتروني فريدة لكل شخص.
|
|
|
|
إذا ظهرت لك رسالة خطأ عند تعيين خاصية التفرد، فتحقق من وجود قيم مكررة في بياناتك (بما في ذلك السجلات المحذوفة).
|
|
|
|
## الفهارس (متقدّم)
|
|
|
|
تُدار فهارس قاعدة البيانات تلقائيًا — ونادرًا ما تكون إضافة فهارسك الخاصة ضرورية، ومن السهل الوقوع في الأخطاء عند القيام بذلك. مع تفعيل الوضع المتقدّم، يكون لكل كائن قسم **Indexes** تحت `Settings → Data Model → <object>` للحالات التي تعلم فيها أنك بحاجة إلى فهرس.
|
|
|
|
## أفضل ممارسات تكوين الحقول
|
|
|
|
### اتفاقيات التسمية والقيود
|
|
|
|
* **يجب أن تكون الأسماء المفردة والجمع مختلفة**: يحتاج GraphQL API الخاص بنا إلى أسماء مميزة لعمليات التعديل
|
|
* **أسماء الحقول المحمية**: بعض الأسماء محجوزة للاستخدام الخاص بالنظام (مثل `Type`، `Application`)
|
|
|
|
### حقول العملة والهاتف
|
|
|
|
* **العملة الافتراضية**: يمكن تهيئتها عبر نموذج البيانات
|
|
* **أكواد الدول الافتراضية**: يمكن تهيئتها لحقول الهاتف عبر نموذج البيانات
|
|
|
|
### حقول الاختيار
|
|
|
|
* **يمكن اختيار خيار افتراضي** لكل حقل اختيار
|
|
|
|
### حقول نص السجلات
|
|
|
|
* **كل كائن لديه حقل عرض رئيسي واحد**: يظهر هذا الحقل في العمود الأول ويمثل السجل عند الربط بأشياء أخرى. يجب أن يكون حقل نصي. على سبيل المثال، يستخدم الأشخاص `الاسم` كحقل رئيسي، لذلك عندما تربط شخصًا بشركة، سترى اسمهم في عرض الشركة.
|