שילוב 1C-Bitrix עם KLADR
בעת פיתוח חנות מקוונת על 1C-Bitrix, במוקדם או במאוחר תיתקלו בצורך בהשלמה אוטומטית של כתובות. לקוחות מזינים עיר ורחוב ידנית — שגיאות, כפילויות, כשלי משלוח. אנו נתקלים באופן קבוע במצבים שבהם מערכת החשבונאות 1C:Enterprise משתמשת ב-KLADR, בעוד שהאתר מחובר ל-FIAS דרך DaData. הכתובות לא תואמות, הזמנות נתקעות. במאמר זה, נפרק כיצד לשלב כראוי את KLADR ב-Bitrix ולהבטיח החלפה חלקה עם 1C.
למה KLADR עדיין רלוונטי
KLADR — הוא מסווג הכתובות של הפדרציה הרוסית, המתוחזק על ידי שירות המס הפדרלי. הוא היה התקן העיקרי. כיום, רוב המערכות החדשות עברו ל-FIAS, אך תשתית מדור קודם ב-1C ודיווח לשירות המס הפדרלי עדיין דורשים את קוד KLADR. אם יש לכם חנות מקוונת על Bitrix המשולבת עם 1C, התעלמות מ-KLADR אינה אופציה.
מתי צריך שילוב KLADR במקום FIAS
- מערכת החשבונאות של הלקוח היא 1C:Enterprise גרסה 8.3.14 או נמוכה יותר, הפועלת עם קודי KLADR.
- החלפה עם שירות המס הפדרלי בפורמטים הדורשים את קוד KLADR.
- חברות הובלה (CDEK, דואר רוסי) שעדיין לא עברו ל-FIAS.
- ייבוא של מסד נתוני כתובות ישן שבו כל הרשומות בפורמט KLADR.
אם אין מגבלות כאלה, לכו קדימה והשתמשו ב-FIAS — הוא נתמך רשמית ומדויק יותר. אבל עבור תרחישים היברידיים, מיפוי בין KLADR ל-FIAS הוא חיוני.
| מאפיין | KLADR | FIAS |
|---|---|---|
| עומק | 5 רמות (אזור, מחוז, עיר, יישוב, רחוב) | 7+ רמות (מוסיף מבנים, דירות) |
| קוד | 11-13 ספרות | GUID (AOGUID) + קוד KLADR בשדה CODE |
| עדכונים | רבעוני | יומי |
| תמיכת שירות המס הפדרלי | כן, מדור קודם | כן, נוכחי |
מבנה KLADR
קוד KLADR הוא מספר בן 11 ספרות או 13 ספרות (כולל מחוון הרלוונטיות). מבנה:
ПП РРРРР ГГГ РРР УЛИЧУ 2 5 3 3 4 = 17 символов (с дополнениями) -
ПП РРРРР ГГГ РРР УЛИЧУ 2 5 3 3 4 = 17 символов (с дополнениями)— קוד נושא (אזור). -
ПП— קוד מחוז. -
РРРРР— קוד עיר. -
ГГГ— קוד יישוב. -
РРР— קוד רחוב.
קבצי מסד הנתונים של KLADR מורדים מאתר שירות המס הפדרלי (fias.nalog.ru — אותו מדור, KLADR). פורמט — קבצי DBF. מקור: fias.nalog.ru
ייבוא KLADR ל-MySQL/PostgreSQL
# Конвертация DBF → SQL через утилиту dbf2sql или Python python3 -c " import dbf, csv table = dbf.Table('KLADR.DBF') table.open() for record in table: print(','.join([str(f) for f in record])) table.close() " > kladr.csv לאחר הייבוא לטבלת УЛИЧУ, צרו אינדקסים על קוד וקוד אב לחיפוש מהיר.
חיפוש KLADR ב-Bitrix
function searchKladrCities(string $regionCode, string $cityName): array { $connection = \Bitrix\Main\Application::getConnection(); $name = $connection->getSqlHelper()->forSql(mb_strtolower($cityName)); $sql = " SELECT CODE, NAME, SOCR FROM kladr_objects WHERE CODE LIKE '{$regionCode}%' AND LENGTH(CODE) = 13 -- уровень города AND LOWER(NAME) LIKE '%{$name}%' AND STATUS = '1' -- актуальные записи LIMIT 20 "; // ... } שיטה זו מחזירה רשימת ערים שהקוד שלהן מתחיל בקוד האזור. היא משמשת ברכיב ההשלמה האוטומטית.
מיפוי KLADR ↔ FIAS
מכיוון שמערכות מודרניות משתמשות ב-FIAS ומערכות מדור קודם משתמשות ב-KLADR, לעיתים קרובות יש צורך בטבלת מיפוי. במסד הנתונים של FIAS יש שדה # Конвертация DBF → SQL через утилиту dbf2sql или Python python3 -c " import dbf, csv table = dbf.Table('KLADR.DBF') table.open() for record in table: print(','.join([str(f) for f in record])) table.close() " > kladr.csv — זהו קוד KLADR. טבלת kladr_objects מכילה את שני המזהים: function searchKladrCities(string $regionCode, string $cityName): array { $connection = \Bitrix\Main\Application::getConnection(); $name = $connection->getSqlHelper()->forSql(mb_strtolower($cityName)); $sql = " SELECT CODE, NAME, SOCR FROM kladr_objects WHERE CODE LIKE '{$regionCode}%' AND LENGTH(CODE) = 13 -- уровень города AND LOWER(NAME) LIKE '%{$name}%' AND STATUS = '1' -- актуальные записи LIMIT 20 "; // ... } (FIAS) ו-CODE (KLADR).
// Получить КЛАДР-код по ФИАС GUID $sql = "SELECT CODE FROM fias_ADDROBJ WHERE AOGUID = '" . $fiasGuid . "'"; טבלת המיפוי פותרת אי-התאמות כתובות במהלך החלפה עם 1C.
השלמה אוטומטית של כתובות דרך DaData עם קוד KLADR
DaData מחזירה גם ADDROBJ וגם AOGUID בתגובת ההצעה. אם אתם צריכים ספציפית KLADR:
$("#address").suggestions({ token: dadataToken, type: "ADDRESS", onSelect: function(suggestion) { const d = suggestion.data; $("#kladr-id").val(d.kladr_id); $("#fias-id").val(d.fias_id); // Сохраняем оба — для разных downstream-систем } }); שמירת שני המזהים היא שיטה מומלצת בעת מעבר מ-KLADR ל-FIAS.
העברה ל-1C:Enterprise
בעת סנכרון הזמנות עם 1C:Enterprise דרך CommerceML או החלפת REST ישירה, הכתובת מועברת בפורמט ש-1C מזהה. אם גרסת 1C ישנה (מתחת ל-8.3.14), היא מקבלת קודי KLADR. העבירו את CODE משדה ההזמנה יחד עם כתובת המחרוזת.
כיצד אנו מיישמים שילוב KLADR ב-Bitrix
הגישה שלנו מובנית ומנוסה:
- ניתוח סכימת הכתובות הנוכחית: אילו שדות מאוחסנים, אילו מזהים 1C משתמשת.
-
ייבוא מסד הנתונים של KLADR (הגרסה העדכנית ביותר משירות המס הפדרלי) לטבלת
// Получить КЛАДР-код по ФИАС GUID $sql = "SELECT CODE FROM fias_ADDROBJ WHERE AOGUID = '" . $fiasGuid . "'";נפרדת. - יצירת נקודות קצה REST לחיפוש היררכי: אזורים → ערים → רחובות.
- מיפוי כתובות קיימות (אם יש) לקודי KLADR דרך נתוני FIAS פתוחים.
- שילוב עם DaData או שירות השלמה אוטומטית אחר, תוך שמירת קוד KLADR בהזמנה.
-
הגדרת החלפה עם 1C: הוספת שדה
kladr_idב-CommerceML. - בדיקה על נתונים חיים — אימות שכל הכתובות מ-1C ממופות כראוי.
בפרויקט אחד, שילבנו עבור רשת קמעונאית עם 50,000 כתובות. מסד הנתונים של KLADR תפס כ-2 GB לאחר אינדוקס. חיפוש ערים לפי תווים ראשונים בוצע ב-0.02 שניות.
מה העבודה שלנו כוללת
- ייבוא והגדרה של מסד הנתונים של KLADR על השרת שלכם.
- REST API לחיפוש כתובות עם סינון קוד אב.
- טבלת מיפוי בין KLADR ל-FIAS לפעולה חלקה עם שירותים מודרניים.
- שילוב עם 1C: הגדרת החלפת פרטי כתובת.
- תיעוד על שימוש ב-API ותמיכה לאחר היישום.
לוח זמנים ומחירים
המאמץ תלוי בנפח הנתונים מדור קודם:
| משימה | הערכה (שעות) |
|---|---|
| ייבוא מסד נתונים של KLADR | 4–6 |
| יצירת נקודות קצה לחיפוש | 6–8 |
| מיפוי KLADR ↔ FIAS | 3–4 |
| שילוב עם 1C | 4–8 |
העלות מחושבת באופן אישי לאחר ביקורת על המערכת שלכם. אנו נעריך את הפרויקט שלכם תוך יום אחד — צרו קשר.
צרו קשר — כתבו לנו בטלגרם או השאירו בקשה באתר שלנו. נשיב תוך שעה.







