استيراد البيانات من Excel أو الاستعلامات
استيراد البيانات من Excel إلى Nama ERP
يتيح Nama ERP استيراد البيانات مباشرةً من ملفات Excel. فيما يلي أبرز النقاط والتوصيات لضمان عملية استيراد سلسة:
إرشادات عامة
- دعم الصيغ (Formulas): يمكنك استخدام صيغ Excel القياسية في الخلايا عند إعداد بياناتك.
- الممارسة الموصى بها: من الأفضل أولاً تصدير بيانات نموذجية من Nama ERP واستخدام الملف المُصدَّر كقالب للتنسيق والبنية.
دوال الاستيراد الخاصة
evalsql(sql statement)
تنفذ هذه الدالة جملة SQL وتستخدم النتيجة كقيمة للخلية أثناء الاستيراد.
أمثلة:
evalsql(select top 1 id from SalesInvoice order by valueDate desc)مع صيغة Excel:
="evalsql(select code from Account where subsidiaryType = '" & U13 & "')"- أعمدة
findByCodeوaltCode
إذا كانت مجموعة البيانات تحتوي على حقل ذي غرض خاص (مثل contactInfo.mobile) يعمل كمعرف فريد، يمكنك إضافة عمود باسم findByCode يحتوي على تلك القيمة. سيستخدمه النظام للعثور على السجل المقابل فقط إذا لم يكن حقل code متاحًا.
ينطبق نفس المنطق على عمود altCode.
الاستيراد المتقدم من Excel
لمشاهدة شرح مرئي، شاهد الفيديو التعريفي التالي: 📺 شرح الاستيراد من Excel
- التعامل مع الأرقام في سكريبتات Groovy
عند استخدام تعبيرات Groovy أثناء الاستيراد:
- تُحلَّل الحقول الرقمية (
LongوIntegerوDecimal) تلقائيًا من قيم الخلايا. - لتحليل خلية كرقم بشكل صريح، أضف البادئة
$قبل اسم الخلية.
أمثلة:
A + 5 * C
$A - 10 / $Cملاحظة
مراجع الخلايا غير حساسة لحالة الأحرف. على سبيل المثال، a+2 و$a صيغتان صحيحتان.
الاستيراد عبر مسار كيان (Entity Flow) من ملفات Excel أو جملة SQL
excel.importFrom="attachment"يحمّل ملف Excel المرفق. يمكنك استخدام أي حقل يُرجع اسمًا صالحًا لحقل مرفق. مثلاً، يمكنك وضع attachment1,attachment2,attachment3 في description 1 كقائمة منسدلة ثم استخدام
excel.importFrom=description1excel.activatedSheet="1"يجعل الورقة رقم 1 هي الورقة الحالية. يمكنك أيضًا استخدام اسم الورقة.
excel.activatedSheet="invoices-sheet"نفس السابق، لكن باستخدام اسم الورقة بدلاً من فهرسها.
excel.ignoreLinesFromTop="1"في حال وجود صف عناوين في الورقة.
excel.ignoreLinesFromBottom="1"نفس ignoreLinesFromTop، لكن من الأسفل.
details=[excel.rows]يجعل details بنفس حجم صفوف الورقة الحالية، مع مراعاة إعدادات ignoreLinesFromTop وBottom.
details.item.item=excel.rows.Aينسخ محتوى الخلية A في كل صف إلى السطر المقابل في الجدول details.
الخلايا هي: A,B,C, ……, AA,AB,AC,AD, ……, AZ,BA,BC,BD,...,BX,BY,BZ. لم يتم تطبيق CA وما فوقها، ولا نرى ذلك عمليًا.
details.text1=sql(select case when {excel.row1.A} = 'item' then 'ABC' when {excel.row1.B} = 'item' then 'BAC' else 'CAB' end)exel.row1يمنحك الوصول إلى الصف الأول حتى لو كان مُتجاهَلاً، لتسهيل الاستعلام عن صفوف العناوين.
الاستيراد من جملة SQL عبر مسار كيان (Entity Flow) أو إجراء واجهة مستخدم
sql.rows=sql(select top 10 id,code,n2,configuration_id from InvItem where section_id = {ref1.id})
details=[sql.rows]
details.item.itemCode=sql.rows.code
details.item.item=sql.rows.code
details.quantity.quantity.primeQty.value=sql.rows.n2
details.ref1=ref("ItemConfiguration",sql.rows.configuration_id)- في هذا المثال نُنفّذ جملة SQL بـ
sql.rows=sql(statement here). يمكنك أيضًا استخدام جمل SQL متعددة الأسطر بتغييرها إلى:
sql.rows=mlsql(select
Column1, column2 from Table
)endmlsql- يمكنك الوصول إلى أي عمود تُرجعه الاستعلام باستخدام sql.rows.columnAlias.
- يمكنك أيضًا استخدام فهرس العمود كالتالي: sql.rows.c1 ، sql.rows.c2، وهكذا.
- عند استيراد ملف العملاء والذي يحتوي على موقع جغرافي
contactInfo.address.region، مطلوب ملء الحقول التالية بناءً على الموقع الجغرافي:
contactInfo.address.country , contactInfo.address.city , contactInfo.address.state , contactInfo.address.area
وبالمثل في عنوان الشحن والدفع.
يمكنك استعمال التالي في مسار كيان
EAFieldValuesCalculatorلنسخ المسميات باللغة العربية:
contactInfo.address.country=contactInfo.address.region.$countryAr
contactInfo.address.city=contactInfo.address.region.$cityAr
contactInfo.address.state=contactInfo.address.region.$stateAr
contactInfo.address.area=contactInfo.address.region.$areaAr- لنسخ المسميات باللغة الإنجليزية:
contactInfo.address.country=contactInfo.address.region.$countryEn
contactInfo.address.city=contactInfo.address.region.$cityEn
contactInfo.address.state=contactInfo.address.region.$stateEn
contactInfo.address.area=contactInfo.address.region.$areaEn- لنسخ المسميات حسب اللغة الحالية للمستخدم:
contactInfo.address.country=contactInfo.address.region.$country
contactInfo.address.city=contactInfo.address.region.$city
contactInfo.address.state=contactInfo.address.region.$state
contactInfo.address.area=contactInfo.address.region.$area- بالطبع يمكنك تغيير
contactInfoإلى أي حقل آخر.