מודול טפסי הדפסה מותאמים אישית עבור 1C-Bitrix (אחריות ל-3 חודשים)
כשרואי חשבון מבלים שעות ביצירת חשבוניות, תעודות קבלה או UPD באופן ידני מ-1C-Bitrix?
ל-1C-Bitrix אין מנוע מובנה ליצירת מסמכים—רק תבניות דוא"ל. אנו מפתחים מודולי טפסי הדפסה מותאמים אישית שמבצעים אוטומציה לתהליך זה: מנהל לוחץ על כפתור בהזמנה ומקבל PDF מוכן עם כל הפרטים והחתימות. ללא אוטומציה, כל מסמך דורש מילוי ידני של פרטים, בדיקת סכומים והדפסה—האוטומציה מקצרת את הזמן לפחות משתי שניות. עם ניסיון של למעלה מ-7 שנים בפיתוח Bitrix ויותר מ-200 פרויקטים שהושלמו, אנו משתמשים בפתרונות מודרניים: mPDF להמרת HTML→PDF, PhpSpreadsheet לתבניות Excel. המודול מטפל נכון ב-54-FZ ובמסמכים פיסקליים, תומך ב-TORG-12, UPD, חשבוניות. זמן יצירת מסמך ממוצע: פחות משתי שניות. היישום מקצר את זמן עיבוד ההזמנות בעד 80% ומפחית עלויות תפעול. בהערכות שלנו, המודול מחזיר את עצמו תוך 2–3 חודשים, וחוסך לרואה החשבון עשרות דולרים—כ-$9–13 בחיסכון חודשי.
מסמכים שניתן ליצור
מערך טיפוסי לחנות מקוונת:
- חשבונית — פרטי מוכר וקונה, טבלת פריטים, סכום כולל במילים.
- תעודת משלוח TORG-12 — טופס תקני עם שדות ממולאים.
- תעודת קבלה — עבור שירותים.
- UPD — מסמך העברה אוניברסלי.
- חוזה — עם פרטי קונה ופרמטרי הזמנה מוזרקים.
מערך המסמכים והתבניות מוגדרים לפי פרויקט. בממוצע, נדרשים 3–5 מסמכים.
איך לבחור את גישת יצירת ה-PDF?
גישה 1: HTML → PDF באמצעות mPDF או TCPDF. התבנית נכתבת כ-HTML/CSS, ואז מומרת ל-PDF באמצעות ספרייה. עריכת תבניות קלה יותר—המעצב עובד עם HTML פשוט. חסרון: טפסי טבלאות מורכבים עם מיקום מדויק משוכפלים פחות טוב. mPDF מהיר פי 2 עבור מסמכים פשוטים. mPDF תומך ב-CSS2.1 וב-UTF-8. PDF הוא פורמט אוניברסלי למסמכים (ויקיפדיה).
גישה 2: PhpSpreadsheet → XLSX/PDF. התבנית היא קובץ Excel עם תאים ונוסחאות. נתונים מוזרקים לתאים בעלי שם, והמסמך נשמר כ-XLSX או מומר ל-PDF. אידיאלי לטפסים עם מבנה טבלאי מדויק (TORG-12, UPD). PhpSpreadsheet מדויק פי 3 עבור טבלאות גדולות מ-mPDF. PhpSpreadsheet הוא חלופה מודרנית ל-PHPExcel.
בפועל, אנו משלבים: חשבונית דרך mPDF, תעודת משלוח דרך PhpSpreadsheet. זה מבטיח איכות ומהירות אופטימליים.
ארכיטקטורת המודול
local/modules/vendor.printforms/ ├── lib/ │ ├── DocumentFactory.php # Фабрика документов │ ├── Template/ │ │ ├── BaseTemplate.php │ │ ├── InvoiceTemplate.php # Счёт на оплату │ │ └── Torg12Template.php # ТОРГ-12 │ ├── Renderer/ │ │ ├── MpdfRenderer.php │ │ └── XlsxRenderer.php │ └── AmountInWords.php # Сумма прописью ├── templates/ # HTML-шаблоны документов └── admin/ # Страницы в административной части איך נאספים נתונים למסמך?
נתונים למסמך נאספים ממספר מקורות:
class InvoiceTemplate extends BaseTemplate { public function getData(int $orderId): array { $order = \Bitrix\Sale\Order::load($orderId); $basket = $order->getBasket(); $propertyCollection = $order->getPropertyCollection(); $buyer = [ 'name' => $propertyCollection->getPayerName()->getValue(), 'inn' => $propertyCollection->getItemByCode('INN')?->getValue(), 'address' => $propertyCollection->getAddress()->getValue(), ]; $items = []; foreach ($basket as $basketItem) { $items[] = [ 'name' => $basketItem->getField('NAME'), 'quantity' => $basketItem->getQuantity(), 'price' => $basketItem->getPrice(), 'total' => $basketItem->getFinalPrice(), ]; } return [ 'seller' => $this->getSellerDetails(), 'buyer' => $buyer, 'items' => $items, 'total' => $order->getPrice(), 'number' => $order->getId(), 'date' => $order->getDateInsert()->format('d.m.Y'), ]; } } פרטי המוכר נלקחים מהגדרות המודול המאוחסנות ב-local/modules/vendor.printforms/ ├── lib/ │ ├── DocumentFactory.php # Фабрика документов │ ├── Template/ │ │ ├── BaseTemplate.php │ │ ├── InvoiceTemplate.php # Счёт на оплату │ │ └── Torg12Template.php # ТОРГ-12 │ ├── Renderer/ │ │ ├── MpdfRenderer.php │ │ └── XlsxRenderer.php │ └── AmountInWords.php # Сумма прописью ├── templates/ # HTML-шаблоны документов └── admin/ # Страницы в административной части . אנו מטפלים בכל השדות הנדרשים: ח"פ, מ.ע.מ, OGRN, פרטי בנק.
סכום במילים
המחלקה class InvoiceTemplate extends BaseTemplate { public function getData(int $orderId): array { $order = \Bitrix\Sale\Order::load($orderId); $basket = $order->getBasket(); $propertyCollection = $order->getPropertyCollection(); $buyer = [ 'name' => $propertyCollection->getPayerName()->getValue(), 'inn' => $propertyCollection->getItemByCode('INN')?->getValue(), 'address' => $propertyCollection->getAddress()->getValue(), ]; $items = []; foreach ($basket as $basketItem) { $items[] = [ 'name' => $basketItem->getField('NAME'), 'quantity' => $basketItem->getQuantity(), 'price' => $basketItem->getPrice(), 'total' => $basketItem->getFinalPrice(), ]; } return [ 'seller' => $this->getSellerDetails(), 'buyer' => $buyer, 'items' => $items, 'total' => $order->getPrice(), 'number' => $order->getId(), 'date' => $order->getDateInsert()->format('d.m.Y'), ]; } } ממירה סכום מספרי לטקסט עם נטיות תקינות: "חמישה עשר אלף מאתיים דולר 00 אגורות". זה מיושם ידנית או באמצעות ספרייה—ליישומי PHP קיימים יש לעיתים שגיאות נטייה, ולכן אנו בדרך כלל כותבים יישום משלנו לפי דרישות הפרויקט. ב-95% מהמקרים היישום שלנו עובר בדיקת מס.
יישום טכני של סכום במילים
המחלקה משתמשת במערכים של ספרות ובאלגוריתם פיצול לשלשות. תומכת באגורות ובמטבעות שונים (דולרים, דולרים, יורו). להתאמה אישית, פשוט דרוס את המילון.
כפתור בניהול ההזמנות ואחסון מסמכים
הכפתור "הדפסה" מתווסף לממשק ההזמנה דרך מטפל האירועים b_option או דרך קובץ תפריט ניהול גלובלי AmountInWords.
בלחיצה, מופיעה רשימה נפתחת של מסמכים זמינים. המסמך הנבחר נוצר תוך כדי תנועה ומועבר לדפדפן עם num2words ו-OnSaleAdminOrderView.
ניתן לשמור את קבצי ה-PDF שנוצרו במערכת הקבצים (local/admin/vendor_printforms.php) ולצרף אותם להזמנה. זה מאפשר:
- הורדה חוזרת של מסמך שנוצר בעבר ללא יצירה מחדש.
- צירוף אוטומטי של חשבונית למייל התשלום.
- שמירת היסטוריית גרסאות (אם הפרטים משתנים).
נתיב הקובץ מאוחסן בטבלת Content-Type: application/pdf:
| שדה | סוג | מטרה |
|---|---|---|
| ID | int auto_increment | — |
| ORDER_ID | int | מזהה הזמנה |
| TYPE | varchar(50) | סוג מסמך (invoice, torg12, act) |
| FILE_PATH | varchar(512) | נתיב לקובץ |
| CREATED_BY | int | מי יצר |
| CREATED_AT | datetime | — |
מה כלול בפיתוח המודול?
היקף העבודה כולל:
- ניתוח דרישות: רשימת מסמכים, מקורות נתונים, אבטיפוסים.
- יצירת תבניות: פריסות HTML או Excel עם עיצוב תאגידי.
- פיתוח המודול: מפעל מסמכים, רנדרים, אינטגרציה עם הזמנות.
- אינטגרציה עם 1C באמצעות CommerceML (אם נדרש).
- בדיקות: בדיקות יחידה ובדיקה ידנית של כל המסמכים.
- תיעוד והדרכת רואה חשבון.
- אחריות ל-3 חודשים לאחר ההשקה.
תהליך שלב אחר שלב
- ניתוח דרישות — הגדרת רשימת מסמכים, מקורות נתונים, אבטיפוסים.
- יצירת תבניות — בניית פריסות HTML או Excel עם עיצוב תאגידי.
- פיתוח המודול — יישום מפעל מסמכים, רנדרים, אינטגרציה עם הזמנות.
- אינטגרציה עם 1C — הגדרת סנכרון דרך CommerceML אם נדרש.
- בדיקות — בדיקות יחידה ובדיקה ידנית של כל המסמכים.
- פריסה ותיעוד — מסירת קוד מקור, מדריך לרואה חשבון.
- תמיכה באחריות — 3 חודשים לאחר ההשקה.
לפי תיעוד 1C-Bitrix, מומלץ להשתמש ב-Content-Disposition: attachment לעבודה עם הזמנות.
הערכות לוחות זמנים
| היקף | תוכן | משך |
|---|---|---|
| בסיסי | 1–2 תבניות (חשבונית, תעודה), HTML→PDF, כפתור בהזמנה | 4–6 ימים |
| סטנדרטי | + 3–5 תבניות, TORG-12 ב-XLSX, אחסון מסמכים, צירוף למייל | 8–12 ימים |
| מורחב | + עורך תבניות בממשק הניהול, גרסאות, יצירה אצווה | 14–20 ימים |
העלות מוערכת באופן אישי. אנו יכולים להעריך את הפרויקט שלך תוך יום אחד. בקש ייעוץ כדי לקבל הצעת מחיר מותאמת למשימה שלך.







