פיתוח בונה טפסים מותאם אישית עבור 1C-Bitrix

איך אנו בונים בונה טפסים מותאם אישית על 1C-Bitrix לאינטגרציית CRM גמישה תארו לעצמכם: מנהל מבקש טופס יצירת קשר. אתם בונים אותו, אבל כעבור שבוע הם צריכים שדה "תאריך לידה" המקושר ל-CRM. וכך זה נמשך כל פעם. מודול 'טפסי אינטרנט' הסטנדרטי ב-1C-Bitrix מיושן — האינטר
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
פיתוח בונה טפסים מותאם אישית עבור 1C-Bitrix
בינוני
~1-2 שבועות

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1460
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1019
  • פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    פיתוח מבוסס Bitrix, Bitrix24, 1C לחברה פיתוח ווידג'ט להזמנת תורים אונליין למרכז רפואי
    764
  • פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    פיתוח על בסיס 1C Enterprise עבור MIRSANBEL
    882
  • פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    פיתוח אתר על CRM Bitrix24 עבור DOLBIMBY
    810
  • פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    פיתוח על בסיס Bitrix24 עבור חברת TECHNOTORGKOMPLEKS
    1166

כיצד אנו בונים בונה טפסים מותאם אישית על 1C-Bitrix לשילוב CRM גמיש

תארו לעצמכם: מנהל מבקש טופס משוב. אתם בונים אותו, אבל כעבור שבוע הם צריכים שדה "תאריך לידה" המקושר ל-CRM. וכך זה נמשך כל פעם. מודול 'טפסי האינטרנט' הסטנדרטי ב-1C-Bitrix מיושן — הממשק אינו רספונסיבי, האינטגרציה עם מערכות חיצוניות מסתמכת על פתרונות עוקפים, ושינוי שדות דורש מפתח. כתוצאה מכך, עד 40% מזמן הצוות מושקע בעבודה חוזרת, והעסק מאבד לידים עקב שינויים איטיים.

אנו בונים בונה טפסים מותאם אישית שבו המנהל יוצר שדות, מגדיר ולידציה, הפניות ואינטגרציה עם Bitrix24 — הכל דרך ממשק אינטרנט. ללא שינויי קוד לאחר השחרור. זה מקצר את פריסת הטפסים משבועות לשעות וחוסך עד 30% מתקציב התחזוקה. בונה מותאם אישית חוסך כ-$2,000 בחודש בעלויות עבודה חוזרת. המומחיות שלנו כוללת 9+ שנות פיתוח Bitrix ו-50+ פרויקטי התאמת טפסים. נתונים אלה מגובים בפרויקטים פנימיים של החברה.

מדוע טפסי אינטרנט סטנדרטיים אינם מתאימים לפרויקטים מורכבים

מודול ה-form ב-Bitrix הוא כמו חלקי חילוף: פונקציונלי, אך לא בנוי למהירות. בעיות:

  • אין ממשק מובייל רספונסיבי.
  • הוולידציה מוגבלת לכללים בסיסיים — אין regex מותאם אישית או תלות בין שדות.
  • הנתונים נשמרים רק בטבלת המודול, לא ישירות ל-HL-blocks או לשירותי צד שלישי.
  • אינטגרציית CRM דורשת handler מותאם אישית לאירוע onFormResultAdd — אחד לכל טופס.

בונה מותאם אישית פותר את כל זה עם ארכיטקטורה אחת: מטא-דאטה של טופס → HL-block → renderer אוניברסלי → handler הגשה יחיד עם חיבור CRM. ב-90% מהמקרים, זה מספיק כדי לכסות כל דרישה עסקית ללא עבודה נוספת.

כיצד מטא-דאטה מאוחסן ב-HL-Blocks

כל תצורת הטופס חיה בשתי רשומות HL-block. הראשונה מחזיקה הגדרות שדות (JSON), השנייה מחזיקה הגדרות התנהגות (JSON). תוצאות ההגשה נשמרות בטבלה נפרדת. סכמה זו הוכחה על 50+ פרויקטים ומטפלת בעד 1000 הגשות ביום. תיעוד: HL-blocks ORM.

// Таблица форм b_hl_form_builder class FormBuilderTable extends \Bitrix\Main\ORM\Data\DataManager { public static function getTableName(): string { return 'b_hl_form_builder'; } public static function getMap(): array { return [ new IntegerField('ID', ['primary' => true, 'autocomplete' => true]), new StringField('TITLE'), new StringField('SLUG'), new TextField('FIELDS_JSON'), new TextField('SETTINGS_JSON'), new BooleanField('IS_ACTIVE', ['values' => [false, true]]), new IntegerField('SUBMISSIONS_COUNT'), new DatetimeField('CREATED_AT'), ]; } } // Таблица результатов b_hl_form_submissions class FormSubmissionTable extends \Bitrix\Main\ORM\Data\DataManager { public static function getTableName(): string { return 'b_hl_form_submissions'; } public static function getMap(): array { return [ new IntegerField('ID', ['primary' => true, 'autocomplete' => true]), new IntegerField('FORM_ID'), new TextField('DATA_JSON'), new StringField('USER_IP'), new StringField('USER_AGENT'), new IntegerField('USER_ID'), new IntegerField('CRM_ENTITY_ID'), new DatetimeField('CREATED_AT'), ]; } } 

// Таблица форм b_hl_form_builder class FormBuilderTable extends \Bitrix\Main\ORM\Data\DataManager { public static function getTableName(): string { return 'b_hl_form_builder'; } public static function getMap(): array { return [ new IntegerField('ID', ['primary' => true, 'autocomplete' => true]), new StringField('TITLE'), new StringField('SLUG'), new TextField('FIELDS_JSON'), new TextField('SETTINGS_JSON'), new BooleanField('IS_ACTIVE', ['values' => [false, true]]), new IntegerField('SUBMISSIONS_COUNT'), new DatetimeField('CREATED_AT'), ]; } } // Таблица результатов b_hl_form_submissions class FormSubmissionTable extends \Bitrix\Main\ORM\Data\DataManager { public static function getTableName(): string { return 'b_hl_form_submissions'; } public static function getMap(): array { return [ new IntegerField('ID', ['primary' => true, 'autocomplete' => true]), new IntegerField('FORM_ID'), new TextField('DATA_JSON'), new StringField('USER_IP'), new StringField('USER_AGENT'), new IntegerField('USER_ID'), new IntegerField('CRM_ENTITY_ID'), new DatetimeField('CREATED_AT'), ]; } } הוא מערך של אובייקטי שדה. כל אחד מכיל id, type, label, דגל required, ומאפיינים כמו מסכת טלפון או אפשרויות select.

[ { "id": "field_name", "type": "text", "label": "Ваше имя", "placeholder": "Иван Иванов", "required": true, "width": "half" }, { "id": "field_phone", "type": "tel", "label": "Телефон", "required": true, "mask": "+7 (000) 000-00-00", "width": "half" }, { "id": "field_service", "type": "select", "label": "Услуга", "options": ["Разработка", "Аудит", "Поддержка"], "required": true }, { "id": "field_message", "type": "textarea", "label": "Сообщение", "rows": 4, "required": false } ] 

FIELDS_JSON שולט בהתנהגות: טקסט כפתור, הודעת הצלחה, הודעות דוא"ל, הגדרות CRM.

{ "submit_text": "Отправить заявку", "success_message": "Спасибо! Мы свяжемся с вами.", "redirect_url": null, "send_email": "[email protected]", "crm_integration": { "enabled": true, "entity_type": "LEAD", "source_id": "WEB", "responsible_id": 5 }, "notification_template": "FORM_SUBMIT" } 

כיצד להגדיר אינטגרציית CRM עם Bitrix24?

לאחר ההגשה, נוצר ליד באמצעות [ { "id": "field_name", "type": "text", "label": "Ваше имя", "placeholder": "Иван Иванов", "required": true, "width": "half" }, { "id": "field_phone", "type": "tel", "label": "Телефон", "required": true, "mask": "+7 (000) 000-00-00", "width": "half" }, { "id": "field_service", "type": "select", "label": "Услуга", "options": ["Разработка", "Аудит", "Поддержка"], "required": true }, { "id": "field_message", "type": "textarea", "label": "Сообщение", "rows": 4, "required": false } ] . שדות שם, טלפון ודוא"ל ממופים לפי סוג השדה. ניתן להגדיר אחראי ומקור. להלן handler טופס אוניברסלי שמקבל בקשת POST מכל טופס, מאמת שדות חובה, שומר נתונים ויוצר ליד.

// /local/ajax/form_builder_submit.php $data = json_decode(file_get_contents('php://input'), true); $formId = (int)($data['form_id'] ?? 0); $form = FormBuilderTable::getByPrimary($formId)->fetch(); if (!$form || !$form['IS_ACTIVE']) { echo json_encode(['error' => 'Form not found']); exit; } $fields = json_decode($form['FIELDS_JSON'], true) ?? []; $settings = json_decode($form['SETTINGS_JSON'], true) ?? []; // Валидация обязательных полей $errors = []; foreach ($fields as $field) { if ($field['required'] && empty($data[$field['id']])) { $errors[$field['id']] = 'Поле обязательно'; } } if ($errors) { echo json_encode(['errors' => $errors]); exit; } // Собрать данные для сохранения $submissionData = []; foreach ($fields as $field) { $submissionData[$field['label']] = htmlspecialchars($data[$field['id']] ?? ''); } // Сохранить результат $subId = FormSubmissionTable::add([ 'FORM_ID' => $formId, 'DATA_JSON' => json_encode($submissionData, JSON_UNESCAPED_UNICODE), 'USER_IP' => $_SERVER['REMOTE_ADDR'], 'CREATED_AT' => new \Bitrix\Main\Type\DateTime(), ])->getId(); // CRM-интеграция if ($settings['crm_integration']['enabled'] ?? false) { \Bitrix\Main\Loader::includeModule('crm'); $nameField = findFieldByType($fields, 'text'); $phoneField = findFieldByType($fields, 'tel'); $emailField = findFieldByType($fields, 'email'); $leadId = \CCrmLead::Add([ 'TITLE' => $form['TITLE'] . ': ' . ($data[$nameField['id']] ?? 'Новый лид'), 'NAME' => $data[$nameField['id']] ?? '', 'PHONE' => [['VALUE' => $data[$phoneField['id']] ?? '', 'VALUE_TYPE' => 'WORK']], 'EMAIL' => [['VALUE' => $data[$emailField['id']] ?? '', 'VALUE_TYPE' => 'WORK']], 'SOURCE_ID' => 'WEB', 'COMMENTS' => json_encode($submissionData, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT), ]); // Обновляем запись сабмита ID созданного лида FormSubmissionTable::update($subId, ['CRM_ENTITY_ID' => $leadId]); } echo json_encode(['success' => true]); 

כיצד ממשק הניהול בנוי

דף הניהול הוא SETTINGS_JSON או SPA נפרד ב-React/Vue ב-{ "submit_text": "Отправить заявку", "success_message": "Спасибо! Мы свяжемся с вами.", "redirect_url": null, "send_email": "[email protected]", "crm_integration": { "enabled": true, "entity_type": "LEAD", "source_id": "WEB", "responsible_id": 5 }, "notification_template": "FORM_SUBMIT" } . גרסה פשוטה ללא גרירה ושחרור משתמשת בכפתור "הוסף שדה" ומיון באמצעות חצים. זה מהיר יותר לפיתוח ומכסה 90% מהמשימות.

כיצד רינדור הטפסים עובד בצד הלקוח

הקומפוננטה CCrmLead::Add מקבלת SLUG של טופס, שולפת תצורה מה-HL-block, ומוציאה שדות. התבנית עוברת על מערך השדות ומייצרת HTML לפי סוג (text, tel, select, textarea). מסכות, שדות תלויים ו-captcha נתמכים.

השוואה: טפסי אינטרנט סטנדרטיים מול בונה מותאם אישית

קריטריון מודול סטנדרטי בונה מותאם אישית
רספונסיביות לא כן, מסגרת CSS
סוגי שדות מותאמים אישית רק מוגדרים מראש כל סוג דרך JSON
אינטגרציית CRM דרך event handler מובנית, מיפוי שדות
אחסון נתונים רק טבלאות סטנדרטיות HL-blocks, כל סכמה
שינוי שדות דרך קוד דרך פאנל ניהול
זמן לטופס חדש 1–2 ימים 15–30 דקות (פי 10 מהר יותר)

מה כלול בעבודה

  • מתודולוגיה: ניתוח תהליכים עסקיים, אב-טיפוס שדות, הסכמת ולידציה.
  • פיתוח: HL-blocks, ממשק ניהול, קומפוננטת רינדור ו-handler.
  • אינטגרציה: שליחת דוא"ל, קישור CRM (Bitrix24), ייצוא ל-Excel.
  • תיעוד: תיאור מבנה טבלאות, הוראות למנהלים.
  • תמיכה: תיקוני באגים ושיפורים קלים בתוך חודש מהשחרור.

תהליך העבודה

  1. ניתוח — זיהוי סוגי שדות, כללי ולידציה, תרחישי אינטגרציה.
  2. עיצוב — ארכיטקטורת HL-block, סכמת נתונים, מוקאפ ממשק.
  3. יישום — קוד בונה, renderer, handler, חיבור CRM.
  4. בדיקות — אימות מול 10+ תרחישים: הגשה, שגיאות, XSS, עומס.
  5. פריסה והדרכה — העלאה לסביבת production, העברה למנהלים.

לוחות זמנים לפיתוח

אפשרות היקף לוח זמנים
בונה בסיסי ניהול שדות, שמירה, רינדור 8–12 ימים
עם אינטגרציית CRM + לידים, מיפוי שדות, התראות 12–18 ימים
גרירה ושחרור + אנליטיקה + עורך ויזואלי, סטטיסטיקות טפסים 18–28 ימים

למה לבחור בנו

  • 9+ שנות ניסיון עם Bitrix ו-Bitrix24.
  • 50+ פרויקטים מוצלחים של התאמת טפסים.
  • גישה אישית: אנו קובעים דרישות, לוח זמנים ועלות לפני התחלה.
  • אחריות על קוד ותמיכה לאחר מסירה.

בהשוואה לטפסי אינטרנט סטנדרטיים, הבונה שלנו מקצר את זמן הפריסה פי 10 ומוריד עלויות תחזוקה ב-80%. צרו קשר להערכת פרויקט חינם תוך יום אחד. קבלו ייעוץ עכשיו.