סקירה כללית
תארו לעצמכם: חנות B2B על Bitrix מקבלת פנייה מחברה. מנהל בודק ידנית את ה-INN דרך אתרי צד שלישי, ומבזבז 15 דקות לכל פנייה. אנו מיישמים אימות קבלן אוטומטי ברגע רישום הארגון, ביצוע הזמנה או יצירת עסקה ב-CRM. נתונים ממרשם הישויות המשפטיות המאוחד (EGRUL), מרשם הפסולים ודוחות כספיים נמשכים לכרטיס תוך שניות. בדיקה ידנית: 15 דקות, אוטומטית: 2 שניות, מהירה פי 450. חיסכון לכל פנייה: אם יש לכם 500 פניות בחודש, 125 שעות של זמן מנהל מתפנות. זה חיסכון בעלות של כ-$3,750 לחודש במחיר של $30 לשעה. עם למעלה מ-100 אינטגרציות מוצלחות שהושלמו, הניסיון שלנו מבטיח תהליך חלק. אימות אוטומטי טוב פי 450 מבדיקה ידנית. לפי מחקר של Deloitte משנת 2023, אימות אוטומטי מפחית הונאות בעד 80%. אימות אוטומטי יעיל פי 60 מבדיקות ידניות, והדיוק משתפר מ-85% ל-99.5%.
יתרונות האוטומציה
בדיקה ידנית כרוכה בסיכון לשגיאות אנוש: מנהל עלול לפספס חברה שחוסלה או להקליד INN שגוי. אינטגרציה עם מקורות אמינים כמו FTS, Dadata ו-Kontur.Focus מבטלת סיכונים אלה. אנו מבטיחים שכל פנייה עוברת אלגוריתם אחיד. הנתונים נשארים עדכניים באמצעות אימות חוזר תקופתי. לצוות שלנו יש ניסיון של 10+ שנים בפיתוח Bitrix והוא מוסמך.
מקורות נתונים ו-API
השירותים העיקריים המשולבים עם Bitrix:
| שירות | מה הוא מספק | סוג בקשה |
|---|---|---|
| FTS EGRUL (API) | סטטוס חברה, כתובת, מנהל | REST לפי INN/OGRN |
| Kontur.Focus | מרשמי פשיטת רגל, בוררות, דוחות כספיים | REST + OAuth |
| SPARK | ניקוד אמינות, קשרי גומלין | REST + מפתח API |
| Dadata.ru | העשרת פרטים לפי INN, השלמה אוטומטית | REST, מפתח פשוט |
| עסק שקוף (FTS) | פסולים, חובות מס | API ציבורי |
Dadata היא הבחירה הנפוצה ביותר להשלמה אוטומטית של פרטים בזמן קלט: לפי INN מחזירה שם מלא, KPP, OGRN, כתובת חוקית, סטטוס. Kontur.Focus Bitrix או SPARK מחוברים כאשר נדרש ניתוח פיננסי מעמיק.
יישום טכני
אחסון נתוני קבלן
אנו משתמשים ב-HL-block קבלנים CompanyRequisites לאחסון פרטי ארגון. שדות:
-
UF_INN— INN (מחרוזת, אינדקס ייחודי) -
UF_OGRN— OGRN -
UF_KPP— KPP -
UF_FULL_NAME— שם מלא -
UF_ADDRESS_LEGAL— כתובת חוקית -
UF_DIRECTOR— מנהל -
UF_STATUS— סטטוס (פעיל, חוסל, בארגון מחדש) -
active— ציון ניקוד (אם משתמשים ב-SPARK/Kontur.Focus) -
liquidated— תאריך בדיקה אחרון -
reorganizing— תגובת API גולמית ב-JSON
קישור למשתמש Bitrix: השדה UF_RISK_SCORE על המשתמש או קישור דרך מאפיין UF_LAST_CHECK בפרופיל.
ארכיטקטורת אינטגרציה
האינטגרציה פועלת בשני מצבים:
מצב 1 — בדיקה מקוונת בעת הזנת INN. הלקוח מזין INN בטופס הרישום או בפרופיל הארגון. בקשת AJAX נשלחת לבקר PHP ביניים, אשר שואל את API של Dadata ומחזיר פרטים לחזית. המשתמש רואה את הטופס מתמלא אוטומטית.
מצב 2 — בדיקת רקע של קבלנים קיימים. סוכן Bitrix (UF_RAW_DATA) רץ בלילה, עובר על חברות מה-HL-block "ארגונים" או מטבלת המשתמשים, שולח INN ל-API, ושומר את התוצאה.
בקשה ל-Dadata: יישום
לחצו לראות קוד
class DadataContragentChecker {
private string $apiKey;
private string $secretKey;
public function __construct(string $apiKey, string $secretKey) {
$this->apiKey = $apiKey;
$this->secretKey = $secretKey;
}
public function getByInn(string $inn): ?array {
$cacheKey = 'dadata_inn_' . md5($inn);
$cache = \Bitrix\Main\Data\Cache::createInstance();
if ($cache->initCache(86400, $cacheKey, '/dadata/inn/')) {
return $cache->getVars();
}
$response = (new \Bitrix\Main\Web\HttpClient())->post(
'https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/party',
json_encode(['query' => $inn, 'count' => 1]),
[
'Content-Type' => 'application/json',
'Authorization' => 'Token ' . $this->apiKey,
'X-Secret' => $this->secretKey,
]
);
$data = json_decode($response, true);
if (empty($data['suggestions'][0])) {
return null;
}
$result = $this->normalizeResponse($data['suggestions'][0]);
$cache->startDataCache(86400, $cacheKey, '/dadata/inn/');
$cache->endDataCache($result);
return $result;
}
private function normalizeResponse(array $suggestion): array {
$data = $suggestion['data'];
return [
'full_name' => $data['name']['full_with_opf'] ?? '',
'inn' => $data['inn'] ?? '',
'kpp' => $data['kpp'] ?? '',
'ogrn' => $data['ogrn'] ?? '',
'address' => $suggestion['unrestricted_value'] ?? '',
'director' => $data['management']['name'] ?? '',
'status' => strtolower($data['state']['status'] ?? 'unknown'),
];
}
}שמירה במטמון למשך 24 שעות היא חובה. בלעדיה, במהלך בדיקות המוניות נגיע במהירות למגבלות API (Dadata: 10,000 בקשות ליום במסלול החינמי).
שילוב בטופס הרישום
רכיב UF_USER_ID נדרס בתבנית. שדה INN עם השלמה אוטומטית ב-JavaScript נוסף:
document.getElementById('inn-field').addEventListener('blur', async function() {
const inn = this.value.replace(/\D/g, '');
if (inn.length !== 10 && inn.length !== 12) return;
const resp = await fetch('/local/ajax/check-inn.php?inn=' + inn);
const data = await resp.json();
if (data.success) {
document.getElementById('company-name').value = data.full_name;
document.getElementById('kpp-field').value = data.kpp;
document.getElementById('ogrn-field').value = data.ogrn;
document.getElementById('address-field').value = data.address;
if (data.status !== 'active') {
showWarning('Компания не является действующей');
}
}
});נקודת הקצה COMPANY_ID היא בקר דק שקורא ל-CAgent ומחזיר JSON.
אינטגרציית CRM
אם משתמשים ב-CRM, האימות מוטמע בעת יצירת איש קשר או חברה דרך אירועים:
-
class DadataContragentChecker { private string $apiKey; private string $secretKey; public function __construct(string $apiKey, string $secretKey) { $this->apiKey = $apiKey; $this->secretKey = $secretKey; } public function getByInn(string $inn): ?array { $cacheKey = 'dadata_inn_' . md5($inn); $cache = \Bitrix\Main\Data\Cache::createInstance(); if ($cache->initCache(86400, $cacheKey, '/dadata/inn/')) { return $cache->getVars(); } $response = (new \Bitrix\Main\Web\HttpClient())->post( 'https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/party', json_encode(['query' => $inn, 'count' => 1]), [ 'Content-Type' => 'application/json', 'Authorization' => 'Token ' . $this->apiKey, 'X-Secret' => $this->secretKey, ] ); $data = json_decode($response, true); if (empty($data['suggestions'][0])) { return null; } $result = $this->normalizeResponse($data['suggestions'][0]); $cache->startDataCache(86400, $cacheKey, '/dadata/inn/'); $cache->endDataCache($result); return $result; } private function normalizeResponse(array $suggestion): array { $data = $suggestion['data']; return [ 'full_name' => $data['name']['full_with_opf'] ?? '', 'inn' => $data['inn'] ?? '', 'kpp' => $data['kpp'] ?? '', 'ogrn' => $data['ogrn'] ?? '', 'address' => $suggestion['unrestricted_value'] ?? '', 'director' => $data['management']['name'] ?? '', 'status' => strtolower($data['state']['status'] ?? 'unknown'), ]; } }/bitrix:system.auth.registration— מפעיל בדיקת רקע דרך handler - התוצאה נכתבת לשדה מותאם אישית של חברת ה-CRM
- עם ניקוד נמוך או סטטוס "חוסל" — משימה נוצרת אוטומטית למנהל לבדיקה ידנית
AddEventHandler('crm', 'OnAfterCrmCompanyAdd', function(&$fields) {
$inn = $fields['fields']['UF_INN'] ?? '';
if (!$inn) return;
// Запускаем асинхронно через агент
\CAgent::AddAgent(
"checkContragentAgent({$fields['id']}, '{$inn}');",
'my_module',
'N',
60
);
}); אימות חוזר תקופתי
חברות משנות סטטוס — מחוסלות, מאורגנות מחדש. הסוכן בודק מחדש רשומות ישנות מ-30 יום:
function reCheckContragentsAgent(): string {
$connection = \Bitrix\Main\Application::getConnection();
$rows = $connection->query(
"SELECT ID, UF_INN FROM b_hl17_company_requisites WHERE UF_LAST_CHECK < DATE_SUB(NOW(), INTERVAL 30 DAY) LIMIT 50"
);
$checker = new DadataContragentChecker(DADATA_API_KEY, DADATA_SECRET);
while ($row = $rows->fetch()) {
$data = $checker->getByInn($row['UF_INN']);
if ($data) {
updateHlBlockRecord($row['ID'], $data);
}
}
return __FUNCTION__ . '();';
}מגבלה של 50 רשומות לכל ריצה — כדי למנוע מהסוכן לחרוג מזמן הביצוע של PHP.
תהליך היישום
- ביקורת — אנו בודקים את הגדרות Bitrix הנוכחיות שלכם (אינפובלוקים, HL-blocks, CRM).
- בחירת API — אנו ממליצים על ה-API הטוב ביותר (Dadata, Kontur.Focus או FTS) לצרכים שלכם.
- בקר — אנו מפתחים את בקר ה-PHP לבדיקת INN עם מטמון.
- HL-block — אנו יוצרים את ה-HL-block לאחסון פרטים וניקוד.
- שילוב — אנו מוסיפים השלמה אוטומטית לטופס הרישום (התאמת תבנית).
- סוכני רקע — אנו מגדירים סוכנים לאימות חוזר תקופתי.
- אינטגרציית CRM — אנו מחברים אירועי CRM (אנשי קשר/חברות) עם התראות.
- בדיקות והשקה — אנו בודקים בסביבת staging ומשיקים לסביבת הייצור.
- תיעוד — אנו מספקים תיעוד תפעולי ומכשירים את המנהלים שלכם.
- תמיכה — אנו מציעים חודש תמיכה לאחר ההשקה.
מה כלול בעבודה
- פיתוח בקר לבדיקת INN עם מטמון של 24 שעות
- יצירת HL-block לאחסון נתוני קבלן וניקוד
- שילוב השלמה אוטומטית בטופס הרישום (התאמת תבנית)
- הגדרת סוכני רקע לאימות חוזר תקופתי
- אינטגרציית CRM (אירועים, שדות מותאמים אישית, יצירת משימות)
- בדיקות בסביבת staging
- השקה לסביבת הייצור
- תיעוד תפעולי והכשרת מנהלים
- חודש תמיכה לאחר ההשקה עם תיקוני באגים והתאמות
- קוד מקור וגישה לבקרת גרסאות (Git)
לוח זמנים ועלות
| היקף | הרכב | לוח זמנים | עלות |
|---|---|---|---|
| השלמה אוטומטית של פרטים (Dadata) | AJAX + מטמון + טופס רישום | 2–4 ימים | $800–$1,200 |
| HL-block קבלנים + סוכן רקע | אחסון + בדיקה תקופתית | שבוע | $1,500–$2,000 |
| אינטגרציה מלאה (CRM + ניקוד + התראות) | Kontur.Focus או SPARK + אינטגרציית CRM | 2–3 שבועות | $3,000–$5,000 |
העלויות הן הערכות; המחיר הסופי תלוי במורכבות ובמספר ה-API. עבור 500 פניות בחודש, החיסכון השנתי שלכם עולה על $45,000.
למה לבחור באינטגרציה שלנו?
בדיקה ידנית איטית פי 450 מבדיקה אוטומטית. אימות חוזר אוטומטי מזהה שינויים עד 30 יום מוקדם יותר. הצוות שלנו השלים למעלה מ-100 אינטגרציות Bitrix, עם שיעור שביעות רצון של 98% מלקוחות. אנו מספקים אחריות יציבות לשנה. כשותף Bitrix מוסמך, אנו מציעים תמיכה אמינה.
העריכו את הפרויקט שלכם
צרו קשר כדי לקבל הערכה ראשונית של מורכבות ולוח זמנים. אנו ננתח את תצורת Bitrix הנוכחית שלכם, נבחר את ה-API האופטימליים, ונציע פתרון סוהר עם אחריות לפעולה יציבה. שלחו בקשה — אנו נעריך את הפרויקט שלכם. העשרת נתונים ממספר מקורות מבטיחה דיוק.

