2.3الطبعات والتقارير (محرر الطبعات)
الأساسي في 30 ثانية
- الطبعات هي المستندات المطبوعة أو المصدَّرة التي ينتجها التطبيق (فواتير، سندات تسليم، قوائم، إحصائيات، ملصقات)؛ ويقترح WinDev محرر طبعات مرئيًا مخصصًا.
- تنقسم الطبعة إلى كتل تُطبع في أوقات مختلفة: بداية المستند، أعلى الصفحة، الجسم (يتكرر لكل سجل)، أسفل الصفحة، نهاية المستند.
- الفواصل هي آلية التقارير بعينها: التجميع (حسب العميل، الشهر، الفئة) يُنشئ كتلة بداية وكتلة نهاية فاصل توضع فيهما المجاميع الفرعية — بشرط أن تكون البيانات مرتّبة.
حالة مصغّرة متسلسلة — ياسين يُصدر فاتورة التجارة
ياسين، مطوّر WinDev في شركة صغيرة لتجارة العتاد الكهربائي بوهران، عليه إنتاج فواتير العملاء لتطبيق الإدارة. يُنشئ طبعة في محرر الطبعات ويربطها بـمصدر بيانات: استعلام مُحضَّر مسبقًا (طلب + سطور + عميل)، مصفّى ومرتّب. يضع الحقول في كتلة الجسم (تتكرر لكل سطر)، وترويسة الفاتورة في كتلة بداية المستند، والشعار والعنوان في أعلى الصفحة، ثم المجموع العام في نهاية المستند. وبما أن الفواتير تسرد أحيانًا عدة طلبات لكل عميل، يضع فاصلًا حسب العميل للحصول على مجاميع فرعية. وأخيرًا، يخطط لـتصدير PDF للإرسال بالبريد الإلكتروني ولـمعاملات (رقم الطلب) لإعادة استخدام الطبعة.
حالة مستقلة لهذا القسم: تعود في الدرس والمخطط والسكربت وتحدي 48 ساعة للقسم 2.3.
1. مستندات، لا كود
الطبعات هي المستندات المطبوعة أو المصدَّرة التي ينتجها التطبيق: فواتير، سندات تسليم، قوائم، إحصائيات، ملصقات، كشوفات. وهو مجال يبرع فيه WinDev بشكل خاص، عبر محرر طبعات مرئي مخصص. نرسم الطبعة، ونربطها بـمصدر بيانات (ملف من التحليل، أو استعلام، أو متغير)، ويدير WinDev ترقيم الصفحات والفواصل والمجاميع.
2. كتل الطبعة
المفهوم المفتاح هو الكتل: مناطق تُطبع في أوقات مختلفة. بداية المستند (مرة واحدة: صفحة الغلاف، ترويسة الفاتورة)، أعلى الصفحة (في كل صفحة: الشعار، العنوان)، الجسم (يتكرر لكل سجل — وهو القلب)، أسفل الصفحة (رقم الصفحة، ملاحظات)، نهاية المستند (المجاميع العامة، التوقيع).
3. الفواصل والتصدير
وتُضاف إليها كتل الفاصل: عند التجميع (حسب العميل، الشهر، الفئة)، تُقدّم كتلة بداية الفاصل المجموعة، وتعرض كتلة نهاية الفاصل مجاميعها الفرعية — بشرط ضروري هو أن تكون البيانات مرتّبة على هذا الحقل. ومن النقاط العملية: يمكن عرض الطبعة أو طباعتها أو تصديرها (وخصوصًا PDF، وهو مطلوب جدًا)، ويمكن تمرير معاملات إليها (الفترة، العميل). وممارسة جيدة: تحضير البيانات عبر استعلام بدلًا من مضاعفة الحسابات في الطبعة.
🔎 مثال ملموس — 🔎 مثال ملموس — الفاصل وتصدير PDF
الحصول على مجاميع فرعية حسب العميل ثم النشر: يجمع ياسين بين الفواصل والمعاملات والتصدير.
// Lancer l'apercu de l'etat facture pour une commande donnee
iApercu("ETAT_Facture", {pNumCommande})
// Structure des blocs
Debut de document -> en-tete (raison sociale, coordonnees)
Haut de page -> logo + titre
Corps -> une ligne par article
Rupture client -> sous-total par client (donnees TRIEES)
Fin de document -> total general
Lecture : le corps se repete par enregistrement ; les ruptures font les sous-totaux
Reflexe : preparer les donnees via une REQUETE triee + prevoir l'export PDF
القراءة: كتلة الجسم تكرر كل سطر، وفاصل العميل يضع المجاميع الفرعية في نهاية المجموعة.
الدرس: يجب أن تكون البيانات مرتّبة حتى تكون الفواصل صحيحة، والطبعة قابلة لإعادة الاستخدام بفضل المعامل {pNumCommande}.
مفردات القسم
- طبعة
- المستند المطبوع أو المصدَّر الذي ينتجه التطبيق: فاتورة، سند تسليم، قائمة، إحصائية، ملصق.
مثال بسيط: ينشئ ياسين طبعة «فاتورة عميل» للتجارة.
ما ليس كذلك: نافذة إدخال معروضة على الشاشة.
رد فعل: إنتاج مستند → طبعة.
- كتل الطبعة
- المناطق المطبوعة في أوقات مختلفة: بداية المستند (مرة)، أعلى الصفحة (كل صفحة)، الجسم (لكل سجل)، أسفل الصفحة، نهاية المستند.
مثال بسيط: يضع ياسين سطور الفاتورة في الجسم.
ما ليس كذلك: كتلة واحدة تُطبع دفعة واحدة.
رد فعل: التكرار لكل سجل → كتلة الجسم.
- الفاصل (التجميع)
- التجميع حسب قيمة (عميل، شهر، فئة): كتلة البداية تُقدّم المجموعة، وكتلة النهاية تعرض مجاميعها الفرعية.
مثال بسيط: يضع ياسين فاصلًا حسب العميل للمجاميع الفرعية.
ما ليس كذلك: مجرد فرز دون مجموع فرعي.
رد فعل: مجاميع فرعية حسب المجموعة → فاصل.
- مصدر البيانات
- ما تستند إليه الطبعة: ملف من التحليل، أو استعلام (موصى به)، أو متغيرات.
مثال بسيط: يربط ياسين الفاتورة باستعلام طلب + سطور + عميل.
ما ليس كذلك: قيم تُدخل يدويًا في الطبعة.
رد فعل: تحضير البيانات بعناية → استعلام كمصدر.
- تصدير PDF
- يمكن عرض الطبعة أو طباعتها أو تصديرها — وPDF هو الصيغة الأكثر طلبًا (بريد إلكتروني، أرشفة، نشر).
مثال بسيط: يرسل ياسين الفاتورة PDF بالبريد إلى العميل.
ما ليس كذلك: الطباعة على الورق فقط، دون ملف قابل للنشر.
رد فعل: نشر أو أرشفة مستند → تصدير PDF.
في التطبيق — عمليًا — إنشاء طبعة بمجاميع
- حضّر أولًا استعلامًا يوفّر بالضبط البيانات المطلوبة (مصفّاة، مرتّبة) بدلًا من حساب كل شيء في الطبعة، كما يفعل ياسين.
- أنشئ الطبعة على هذا المصدر وضع الحقول في كتلة الجسم (التي تتكرر لكل سجل).
- أضف كتلتي أعلى الصفحة (الشعار، العنوان) وأسفل الصفحة (رقم الصفحة)، ثم نهاية المستند للمجموع العام.
- عرّف فاصلًا (حسب العميل، حسب الشهر) للحصول على مجاميع فرعية حسب المجموعة، وخطط لتصدير PDF وكذلك لمعاملات (الفترة، العميل).
سكربت خطوة بخطوة — إصدار الفاتورة كما يفعل ياسين (5 دقائق)
1) حضّر استعلامًا طلب + سطور + عميل، مصفّى ومرتّب حسب العميل. 2) أنشئ طبعة واربطها بهذا الاستعلام. 3) ضع السطور في كتلة الجسم، والترويسة في بداية المستند، والمجموع العام في نهاية المستند. 4) ضع فاصلًا حسب العميل للمجاميع الفرعية. 5) أضف معاملًا {pNumCommande} واختبر المعاينة (iApercu)، ثم صدّر إلى PDF.
دون فرز على حقل التجميع، قد تظهر مجموعة من جديد وتفسد المجاميع الفرعية: رتّب المصدر.
قالب للنسخ واللصق — طبعتي للفاتورة
Source del'etat : REQUETE (commande + lignes + client) filtree et TRIEE
Debut de document : en-tete (raison sociale, coordonnees)
Haut de page : logo + titre
Corps : une ligne par article (repete par enregistrement)
Bas de page : numero de page
FIN de document : TOTAL general
Rupture (client) : sous-total par client -> donnees TRIEES imperativement
Parametre : {pNumCommande} Export : PDF
فاتورة عميل
ينتج ياسين الفاتورة بترويسة وسطور ومجموع عام، قابلة للتصدير إلى PDF.
قائمة إعادة التزويد
يصدر ياسين قائمة المنتجات دون حد المخزون، مرتّبة حسب المورّد.
إحصائيات شهرية
يجمع ياسين المبيعات حسب الشهر بفاصل ومجاميع فرعية.
ملصقات المنتجات
يولّد ياسين صفائح ملصقات لمقالات التجارة.
✓ ممارسات جيدة
- حضّر البيانات عبر استعلام (مصفّى، مرتّب) بدلًا من حساب كل شيء في الطبعة.
- ضع السطور في كتلة الجسم والمجموع في نهاية المستند.
- خطط لـتصدير PDF ولـمعاملات لإعادة الاستخدام.
✗ أخطاء شائعة
- نسيان الفرز قبل الفاصل → مجاميع فرعية خاطئة.
- وضع السطور في مكان غير كتلة الجسم.
- مضاعفة الحسابات في الطبعة بدلًا من تحضير استعلام.
النقاط الأساسية
- الطبعات تنتج مستندات التطبيق (فواتير، قوائم، إحصائيات، ملصقات).
- تنقسم الطبعة إلى كتل: بداية المستند، أعلى الصفحة، الجسم (لكل سجل)، أسفل الصفحة، نهاية المستند.
- الفواصل هي آلية التقارير: مجاميع فرعية حسب المجموعة، بشرط فرز البيانات.
- ممارسة جيدة: تحضير البيانات عبر استعلام، والتخطيط للمعاملات وتصدير PDF.
تحدي 48 ساعة — طبّقه غدًا
كما يفعل ياسين، أنشئ طبعة مرتبطة بـاستعلام مرتّب، وضع السطور في كتلة الجسم والمجموع في نهاية المستند. أضف فاصلًا حسب العميل (أو حسب الشهر) للحصول على مجاميع فرعية، ثم صدّر الطبعة إلى PDF. اشرح في جملة واحدة لماذا يجب أن تكون البيانات مرتّبة على حقل التجميع.
- أنشئ طبعة مرتبطة باستعلام وأضع الحقول الصحيحة في الكتلة الصحيحة.
- أعرف كيف أحصل على مجاميع فرعية حسب المجموعة بفاصل.
- أعرف كيف أصدّر طبعة إلى PDF مع معاملات.
أسئلة شائعة
كيف أحصل على مجاميع فرعية حسب المجموعة في طبعة؟
باستخدام الفواصل: نعرّف تجميعًا على حقل (العميل، الشهر، الفئة)، وهذا يُنشئ كتلة بداية وكتلة نهاية فاصل — وفي كتلة النهاية توضع المجاميع الفرعية. وشرط ضروري: أن تكون البيانات مرتّبة على هذا الحقل، وإلا عادت مجموعة لاحقًا وتصبح المجاميع الفرعية خاطئة.
هل أحسب المجاميع في الطبعة أم في المصدر؟
حضّر البيانات عبر استعلام (مصفّى، مرتّب، وربما بدوال تجميعية): فتكتفي الطبعة عندئذ بالعرض ووضع المجاميع الفرعية عند الفواصل. أما مضاعفة الحسابات في الطبعة فتجعلها أعقد وأقل قابلية لإعادة الاستخدام؛ والممارسة الجيدة هي تحضير البيانات مسبقًا.
كيف نحصل على مجاميع فرعية حسب المجموعة في طبعة؟