שילוב DaData עם 1C-Bitrix: הצעות כתובות וניקוי
כאשר לקוח מבצע הזמנה, הוא מזין כתובת באופן ידני בפורמט חופשי: "msk lenina 5 apt 12", "מוסקבה, רחוב לנין 5". מסד הנתונים הופך לבלאגן, האינטגרציה עם חברות השילוח נשברת, וחישוב המשלוח נכשל. DaData מתקן ומנרמל את הכתובת מול FIAS ישירות בזמן הקלט. אנו מגדירים אינטגרציה זו עבור הפרויקט שלך תוך התחשבות במאפייני הקטלוג ובתהליכים העסקיים. שגיאות כתובת הן גורם עיקרי להחזרות וחוסר שביעות רצון של לקוחות. עם DaData, אתה מפחית את שיעור המשלוחים השגויים מ-30% לפחות מ-5%, וחוסך סכום משמעותי על בדיקה ידנית בכל חודש. לדוגמה, חנות עם 1,000 הזמנות ביום מבזבזת כ-20 שעות על בדיקת כתובות ידנית—לאחר האינטגרציה, רק שעתיים. זה לא רק חוסך בעלויות אלא גם מגביר את נאמנות הלקוחות: הזמנות מגיעות בדיוק בזמן.
מה DaData מספק
- הצעות קלט (Suggestions API) — השלמה אוטומטית של כתובות המקושרות ל-FIAS/KLADR.
- תקינה (Cleaner API) — המרת כתובות חופשיות לצורה מנורמלת.
- גיאוקידינג — קואורדינטות לפי כתובת וכתובת לפי קואורדינטות.
- הצעות ארגונים — INN → כל פרטי החברה.
איך לחבר את Suggestions API
הירשם ב-dadata.ru, קבל מפתח API ומפתח סודי. מגבלות התוכנית החינמית: 10,000 בקשות ליום. עבור סביבת production, מומלצת תוכנית בתשלום החל מכמה אלפי דולרים לחודש.
צד לקוח – כלול את הווידג'ט:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/suggestions-jquery/dist/css/suggestions.min.css"> <script src="https://cdn.jsdelivr.net/npm/suggestions-jquery/dist/js/jquery.suggestions.min.js"></script> <script> $("#delivery-address").suggestions({ token: "<?= COption::GetOptionString('site', 'dadata_api_key') ?>", type: "ADDRESS", /* ограничиваем географию: */ constraints: { locations: [{ country: "Россия" }] }, onSelect: function(suggestion) { // Раскладываем адрес по полям формы const d = suggestion.data; $("#field-city").val(d.city || d.settlement); $("#field-street").val(d.street_with_type); $("#field-house").val(d.house); $("#field-flat").val(d.flat); $("#field-zip").val(d.postal_code); $("#field-fias-id").val(d.fias_id); // храним FIAS ID $("#field-region").val(d.region_with_type); $("#field-lat").val(d.geo_lat); $("#field-lon").val(d.geo_lon); } }); </script> חשוב לשמור את <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/suggestions-jquery/dist/css/suggestions.min.css"> <script src="https://cdn.jsdelivr.net/npm/suggestions-jquery/dist/js/jquery.suggestions.min.js"></script> <script> $("#delivery-address").suggestions({ token: "<?= COption::GetOptionString('site', 'dadata_api_key') ?>", type: "ADDRESS", /* ограничиваем географию: */ constraints: { locations: [{ country: "Россия" }] }, onSelect: function(suggestion) { // Раскладываем адрес по полям формы const d = suggestion.data; $("#field-city").val(d.city || d.settlement); $("#field-street").val(d.street_with_type); $("#field-house").val(d.house); $("#field-flat").val(d.flat); $("#field-zip").val(d.postal_code); $("#field-fias-id").val(d.fias_id); // храним FIAS ID $("#field-region").val(d.region_with_type); $("#field-lat").val(d.geo_lat); $("#field-lon").val(d.geo_lon); } }); </script> —הוא משמש לאינטגרציה עם חברות שילוח (CDEK, Boxberry) ומזהה את הכתובת באופן ייחודי. זה המפתח ל-FIAS.
איך אינטגרציית DaData מפחיתה משלוחים שגויים
תקינה אוטומטית דרך DaData מהירה פי 10 מבדיקה ידנית של כל הזמנה. שימוש ב-FIAS ID מבטיח שחברת השילוח מזהה את הכתובת ללא הבהרות נוספות. שגיאות משלוח יורדות מ-15% ל-1%.
| שיטת הזנת כתובת | שיעור שגיאות | זמן קלט (שניות) | מורכבות אינטגרציה |
|---|---|---|---|
| הזנה ידנית | 30% | 30 | אין |
| הצעות Suggestions API | 5% | 10 | בינונית |
| תקינה בצד השרת | 2% | 0 (אוטומטי) | גבוהה |
תקינת כתובות בצד השרת
כאשר הווידג'ט אינו זמין (ייבוא CSV, הזמנות API), הכתובת מנורמלת בשרת:
דוגמת קוד PHP לתקינה דרך Cleaner API
function standardizeAddress(string $rawAddress): array { $apiKey = COption::GetOptionString('site', 'dadata_api_key'); $secretKey = COption::GetOptionString('site', 'dadata_secret_key'); $http = new \Bitrix\Main\Web\HttpClient(); $http->setHeader('Authorization', 'Token ' . $apiKey); $http->setHeader('X-Secret', $secretKey); $http->setHeader('Content-Type', 'application/json'); $response = $http->post( 'https://cleaner.dadata.ru/api/v1/clean/address', json_encode([$rawAddress]) ); $result = json_decode($response, true)[0] ?? []; return [ 'city' => $result['city'] ?? '', 'street' => $result['street_with_type'] ?? '', 'house' => $result['house'] ?? '', 'flat' => $result['flat'] ?? '', 'fias_id' => $result['fias_id'] ?? '', 'postal' => $result['postal_code'] ?? '', 'qc' => $result['qc'] ?? 3, // качество: 0-хорошо, 3-не распознан ]; } השדה fias_id (קוד איכות) הוא קריטי: 0 — הכתובת זוהתה באופן ייחודי, 1 — עם הנחות, 2 — חלק מהנתונים לא מוגדרים (לדוגמה, דירה או בניין), 3 — לא זוהתה. עבור qc=3, סמן את ההזמנה לבדיקה ידנית על ידי מנהל. עבור qc=2, מלא רק שדות מאומתים והוסף הערה למפעיל — זה מפחית בדיקות ידניות ב-15%.
הצעות INN עבור B2B
טופס הרשמה B2B: המשתמש מזין INN — שם החברה, KPP, כתובת חוקית, שם מלא של המנהל מתמלאים אוטומטית. חוסך 2–3 דקות לכל הרשמה.
$("#inn").suggestions({ token: dadataToken, type: "PARTY", onSelect: function(suggestion) { const d = suggestion.data; $("#company-name").val(d.name.short_with_opf); $("#kpp").val(d.kpp); $("#ogrn").val(d.ogrn); $("#legal-address").val(d.address.value); $("#director").val(d.management ? d.management.name : ''); } }); הנתונים מ-DaData נשמרים במאפייני משתמש Bitrix (function standardizeAddress(string $rawAddress): array { $apiKey = COption::GetOptionString('site', 'dadata_api_key'); $secretKey = COption::GetOptionString('site', 'dadata_secret_key'); $http = new \Bitrix\Main\Web\HttpClient(); $http->setHeader('Authorization', 'Token ' . $apiKey); $http->setHeader('X-Secret', $secretKey); $http->setHeader('Content-Type', 'application/json'); $response = $http->post( 'https://cleaner.dadata.ru/api/v1/clean/address', json_encode([$rawAddress]) ); $result = json_decode($response, true)[0] ?? []; return [ 'city' => $result['city'] ?? '', 'street' => $result['street_with_type'] ?? '', 'house' => $result['house'] ?? '', 'flat' => $result['flat'] ?? '', 'fias_id' => $result['fias_id'] ?? '', 'postal' => $result['postal_code'] ?? '', 'qc' => $result['qc'] ?? 3, // качество: 0-хорошо, 3-не распознан ]; } ) ובטבלת החברות אם מיושם אזור B2B.
למה לשמור הצעות במטמון?
כל תו בשדה הכתובת מפעיל בקשה ל-DaData API. עם משתמשים פעילים, המכסה נצרכת במהירות. אופטימיזציה: debounce של 300 אלפיות השנייה ב-JS, פרוקסי בצד השרת עם שמירת בקשות תכופות במטמון ב-qc או Redis למשך שעה. מקרה: חנות אינסטלציה עם 800 הזמנות ביום. ללא אופטימיזציה — 15,000 בקשות ל-DaData ביום (חריגה בתוכנית החינמית). לאחר debounce ומטמון פרוקסי — 3,000 בקשות ביום, חיסכון של עד 80% בעלויות תוכנית DaData.
איך להגדיר אינטגרציית DaData: מדריך שלב אחר שלב
- קבל מפתח API ומפתח סודי ב-dadata.ru.
- הטמע ווידג'ט Suggestions API בטופס הכתובת עם הגבלות גיאוגרפיות.
- הגדר תקינת כתובות בצד השרת עם שמירת FIAS ID.
- יישם הצעות INN עבור טופס B2B.
- הגדר מטמון פרוקסי (Redis/Memcached) להפחתת העומס על DaData.
מה כלול בעבודה?
- ביקורת על טופס הכתובת הנוכחי ועגלת הקניות.
- אינטגרציה של DaData Suggestions API עם הגדרת הגבלות גיאוגרפיות.
- תקינת כתובות בצד השרת עם שמירת FIAS ID.
- הצעות INN עבור אזור B2B.
- מטמון פרוקסי להפחתת בקשות DaData (Redis/Memcached).
- תיעוד שימוש ורשימת גישה.
לוח זמנים משוער: 3 עד 10 ימי עסקים בהתאם למורכבות. העלות מחושבת באופן אישי לאחר ניתוח הפרויקט שלך. צור קשר כדי לדון בפרטים — נעזור להימנע מטעויות נפוצות ולחסוך בתקציב שלך. הזמן אינטגרציית DaData ושכח משגיאות כתובות.
| משימה | מאמץ |
|---|---|
| הגדרת ווידג'ט | 3–4 שעות |
| תקינה בצד השרת + טיפול ב-qc | 4–6 שעות |
| הצעות INN עבור B2B | 3–4 שעות |
| מטמון פרוקסי | 4–6 שעות |
הניסיון שלנו: 10+ שנים בפיתוח 1C-Bitrix, מעל 200 פרויקטים מוצלחים, כולל אינטגרציות עם API של שילוח ופיסקליזציה. אנו מבטיחים איכות ועמידה בלוחות זמנים.







