מאפייני הזמנה: כשפתרונות סטנדרטיים אינם מספיקים
אתם צריכים להוסיף שדה «КПП» ו«כתובת חוקית» עבור קוני B2B, אבל בטופס ההזמנה הסטנדרטי הם לא קיימים. או שאתם צריכים לבדוק קוד קופון דרך שירות חיצוני. מאפייני ההזמנה הסטנדרטיים ב-1C-Bitrix מכסים רק 20% מהתרחישים האמיתיים — השאר דורש התאמות. הגדרה לא נכונה של מאפייני הזמנה עלולה להוביל לאובדן של עד 30% מההמרות ולסיכונים משפטיים (הפרת 54-FZ). אנו מגדירים את המאפיינים כך שהטופס יהיה נוח ויעמוד בדרישות החוק. עם ניסיון של למעלה מ-10 שנים ובהיותנו שותף מוסמך של 1C-Bitrix, יישמנו יותר מ-200 פרויקטים — מחנויות מקוונות פשוטות ועד פורטלי B2B מורכבים. בפרויקט אחד, הטמעת ולידציה מותאמת אישית צמצמה את מספר ההזמנות השגויות מ-10% ל-1.5%, מה שחסך ללקוח $2,000 בחודש. אנו מבטיחים עמידה ב-54-FZ ומספקים אחריות שביעות רצון.
אילו בעיות פותר התאמה אישית?
פרטי חברה ו-54-FZ
למכירות B2B יש צורך לאסוף INN, KPP וכתובת חוקית. השדות הסטנדרטיים של Bitrix אינם בודקים את פורמט ה-INN (10 או 12 ספרות) ואינם דורשים KPP. ולידציה מותאמת אישית דרך OnSaleOrderBeforeSaved פותרת משימה זו. לפי התיעוד של 1C-Bitrix, אירוע זה מופעל לפני שמירת ההזמנה ומאפשר להחזיר שגיאה אם הנתונים שגויים. הוספת שדות מוגדרים כראוי עבור ישויות משפטיות מעלה את ההמרה ב-20% — הלקוח לא עוזב את הטופס בגלל דרישות לא ברורות.
נראות מותנית: מציגים רק את מה שצריך
אם יש לכם מספר שיטות משלוח, השדה «קומה» נדרש רק למשלוח שליחים, ו«טרמינל» — לאיסוף עצמי. קישור בסיסי לסוג משלם אינו פותר משימה זו. הפתרון — מטפל JavaScript באירוע onDeliveryChanged, שמסתיר/מציג קבוצות מאפיינים. השוו: ניהול ידני של נראות דרך פאנל הניהול לוקח 10 דקות לכל תנאי, בעוד לוגיקת JS מותאמת אישית מוגדרת פעם אחת ועובדת עבור כל המשלוחים — מהיר פי 5 בקנה מידה.
איך להוסיף מאפיין הזמנה דרך API? (שלב אחר שלב)
שלב 1: הכינו פרמטרים: PERSON_TYPE_ID, NAME, CODE, TYPE, REQUIRED, SORT, GROUP_ID. שלב 2: קראו ל-OrderPropsTable::add() עם נתונים אלה.
שלב 3: בדקו את התוצאה — המתודה מחזירה אובייקט עם isSuccess(). דוגמה:
use Bitrix\Sale\Internals\OrderPropsTable;
$result = OrderPropsTable::add([
'PERSON_TYPE_ID' => 1,
'NAME' => 'ИНН организации',
'CODE' => 'INN',
'TYPE' => 'TEXT',
'REQUIRED' => 'Y',
'SORT' => 100,
'GROUP_ID' => 1,
'PROPS_GROUP_ID' => 2,
]);
if ($result->isSuccess()) {
$newId = $result->getId();
}גישה זו מהירה פי 10 מהוספה ידנית של כל מאפיין דרך פאנל הניהול בעת פריסה במספר אתרים.
למה ולידציה מותאמת אישית קריטית ל-54-FZ?
הולידציה הסטנדרטית של Bitrix אינה בודקת את סכום הבקרה של INN, פורמט מספרי טלפון ואינה משווה קודי קופון עם מערכות חיצוניות. ולידציה מותאמת אישית דרך use Bitrix\Sale\Internals\OrderPropsTable; $result = OrderPropsTable::add([ 'PERSON_TYPE_ID' => 1, 'NAME' => 'ИНН организации', 'CODE' => 'INN', 'TYPE' => 'TEXT', 'REQUIRED' => 'Y', 'SORT' => 100, 'GROUP_ID' => 1, 'PROPS_GROUP_ID' => 2, ]); if ($result->isSuccess()) { $newId = $result->getId(); } סוגרת פערים אלה. דוגמה לבדיקת INN:
AddEventHandler('sale', 'OnSaleOrderBeforeSaved', 'validateOrderProps');
function validateOrderProps(\Bitrix\Main\Event $event) {
$order = $event->getParameter('ENTITY');
$propCollection = $order->getPropertyCollection();
$inn = $propCollection->getItemByOrderPropertyCode('INN');
if ($inn && !empty($inn->getValue())) {
$innValue = preg_replace('/\D/', '', $inn->getValue());
if (strlen($innValue) !== 10 && strlen($innValue) !== 12) {
return new \Bitrix\Main\EventResult(
\Bitrix\Main\EventResult::ERROR,
new \Bitrix\Main\ResultError('Некорректный ИНН'),
'sale'
);
}
}
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS);
}ראו פרטים נוספים בתיעוד 1C-Bitrix על אירועים. ולידציה כזו מפחיתה את מספר ההזמנות השגויות ב-15% ומבטיחה עמידה בדרישות שירות המס הפדרלי.
סוגי מאפייני הזמנה: סטנדרטיים לעומת מותאמים אישית
| מאפיין סטנדרטי | הרחבה מותאמת אישית |
|---|---|
| מחרוזת (TEXT) | מסכות קלט, ביטויים רגולריים |
| רשימה (SELECT) | טעינת אפשרויות דינמית ב-AJAX |
| תיבת סימון (CHECKBOX) | הסכמה מותנית לתנאים נוספים |
| תאריך (DATE) | הגבלת טווח תאריכים, רק ימי חול |
| מיקום (LOCATION) | אינטגרציה עם שירותי גיאו חיצוניים |
| קובץ (FILE) | בדיקת פורמט/גודל, דחיסת תמונות |
מאפיינים סטנדרטיים עובדים עבור 80% מהמקרים הפשוטים, אבל כשנדרשת לוגיקה מותאמת אישית, פיתוח הוא בלתי נמנע.
השוואת גישות להגדרת מאפיינים
| קריטריון | ידנית דרך פאנל הניהול | דרך API | פיתוח מותאם אישית |
|---|---|---|---|
| זמן למאפיין | 5–10 דקות | 1–2 דקות (כולל קוד) | 30–60 דקות (כולל בדיקות) |
| מדרגיות | נמוכה | גבוהה (שימוש חוזר) | בינונית |
| גמישות | נמוכה | בינונית | גבוהה (נראות מותנית, ולידציה) |
שגיאות נפוצות בהגדרת מאפייני הזמנה
- שכחתם להגדיר
OnSaleOrderBeforeSaved— המאפיין לא מוצג לאף אחד. - אתם משתמשים ב-
AddEventHandler('sale', 'OnSaleOrderBeforeSaved', 'validateOrderProps'); function validateOrderProps(\Bitrix\Main\Event $event) { $order = $event->getParameter('ENTITY'); $propCollection = $order->getPropertyCollection(); $inn = $propCollection->getItemByOrderPropertyCode('INN'); if ($inn && !empty($inn->getValue())) { $innValue = preg_replace('/\D/', '', $inn->getValue()); if (strlen($innValue) !== 10 && strlen($innValue) !== 12) { return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::ERROR, new \Bitrix\Main\ResultError('Некорректный ИНН'), 'sale' ); } } return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS); }לטיני, אבל מאוחר יותר מתייחסים אליו לא נכון בקריאות API. - אתם לא בודקים את סדר המיון — השדות מוצגים בסדר אקראי.
- אתם מתעלמים ממטמון — לאחר הוספת מאפיין יש לנקות את מטמון הטופס.
איך לקבל ערכי מאפיינים בקוד
$order = \Bitrix\Sale\Order::load($orderId);
$propCollection = $order->getPropertyCollection();
$phone = $propCollection->getPhone();
$email = $propCollection->getUserEmail();
// Произвольное свойство по коду
$innProp = $propCollection->getItemByOrderPropertyCode('INN');
$innValue = $innProp ? $innProp->getValue() : null; מה כולל הגדרת מאפייני הזמנה במפתח סגור?
- ניתוח דרישות לטופס ההזמנה (סוגי משלמים, משלוח, 54-FZ)
- תכנון סכמת מאפיינים וקבוצות
- יישום דרך API או ממשק ניהול
- לוגיקת JavaScript לנראות מותנית
- ולידציה מותאמת אישית בצד השרת (INN, קודי קופון וכו')
- בדיקת כל תרחישי המילוי
- תיעוד ותמיכה
לוחות זמנים ועלות
- הוספת 3–5 מאפיינים פשוטים עם נראות לפי סוג משלם: 2–4 שעות, מ-$500.
- הגדרה מורכבת עם ולידציה מותאמת אישית, נראות מותנית ב-JS ואינטגרציה חיצונית: 1–2 ימי עבודה, מ-$1,500.
העלות המדויקת נקבעת באופן אישי לאחר ניתוח הצרכים שלכם. צרו קשר לייעוץ — נעריך את הפרויקט שלכם תוך יום עבודה אחד. הזמינו הגדרת מאפייני הזמנה וקבלו טופס שמעלה המרות ומפחית סיכונים משפטיים. קבלו ייעוץ על אופטימיזציה של טופס ההזמנה — המומחים שלנו יעזרו לתכנן פתרון לעסק שלכם. הניסיון שלנו מבטיח אינטגרציה חלקה ועמידה ב-54-FZ.

