Разработка сайта страховой компании на 1С-Битрикс
Страховая компания продаёт обещание. Клиент платит сейчас за защиту, которая может понадобиться через год — или никогда. Убедить его сделать это через сайт можно только одним способом: дать возможность самостоятельно рассчитать стоимость и купить полис за 5 минут, без звонков и визитов в офис.
Центральный элемент сайта — онлайн-калькулятор страховки. Это многошаговая форма с тарифной логикой, которая пересчитывает премию в реальном времени. Разберём её архитектуру на 1С-Битрикс.
Каталог страховых продуктов
Страховые продукты — инфоблок с разделами по направлениям:
- Автострахование — ОСАГО, КАСКО
- Медицинское страхование — ДМС для физлиц, ДМС для компаний
- Имущество — квартира, дом, коммерческая недвижимость
- Путешествия — выезд за рубеж, внутренний туризм
- Жизнь и здоровье — НСП, накопительное
Свойства элемента инфоблока:
| Свойство | Тип | Назначение |
|---|---|---|
| COVERAGE_LIST | HTML | Перечень покрываемых рисков |
| EXCLUSIONS | HTML | Исключения из покрытия |
| SUM_INSURED_MIN | number | Минимальная страховая сумма |
| SUM_INSURED_MAX | number | Максимальная страховая сумма |
| CALCULATOR_LINK | string | Ссылка на калькулятор для этого продукта |
| DOCUMENTS | file (множественное) | Правила страхования, образец полиса (PDF) |
| TARGET_AUDIENCE | enumeration | Физлица / Юрлица / Оба |
Каждый продукт имеет детальную страницу с описанием условий, покрытия, порядка получения выплаты. Это не рекламный текст — клиент страховой внимательно читает условия перед покупкой.
Онлайн-калькулятор страховки с тарифной логикой
Калькулятор — самый сложный компонент сайта. Для каждого страхового продукта — своя форма с уникальным набором полей и своя формула расчёта.
Разберём на примере КАСКО — самом нагруженном по количеству параметров.
Шаг 1: данные об автомобиле. Клиент заполняет: марка, модель, год выпуска, мощность двигателя, VIN (опционально), стоимость автомобиля, наличие противоугонной системы.
Шаг 2: данные о водителях. Возраст, стаж, количество допущенных водителей (или «мультидрайв»). Для каждого водителя рассчитывается свой коэффициент КВС (коэффициент возраст-стаж).
Шаг 3: параметры страховки. Страховая сумма, франшиза (безусловная, от 0 до 1000 USD), включение дополнительных рисков (GAP, несчастный случай, подменный автомобиль), срок страхования.
Шаг 4: расчёт премии.
Формула базовой премии для КАСКО:
Премия = Страховая_сумма × Базовый_тариф × КВС × КМ × КС × КФ × КПС × КТ
Где:
- Базовый_тариф — зависит от марки/модели (угоняемость) и года выпуска
- КВС — коэффициент возраст-стаж (минимальный из всех водителей)
- КМ — коэффициент мощности двигателя
- КС — коэффициент срока страхования (полгода ≠ половина годового)
- КФ — коэффициент франшизы (чем выше франшиза — тем ниже коэффициент)
- КПС — коэффициент противоугонной системы
- КТ — территориальный коэффициент
Тарифный справочник в Highload-блоках:
InsuranceBaseTariff — базовые тарифы:
| Поле | Тип | Пример |
|---|---|---|
| UF_PRODUCT_TYPE | enumeration | КАСКО |
| UF_CAR_BRAND | string | Toyota |
| UF_CAR_MODEL | string | Camry |
| UF_YEAR_FROM | integer | 2020 |
| UF_YEAR_TO | integer | 2025 |
| UF_BASE_RATE | float | 0.035 (3.5%) |
| UF_RISK_GROUP | enumeration | Низкий / Средний / Высокий (угоняемость) |
InsuranceCoefficient — коэффициенты:
| Поле | Тип | Назначение |
|---|---|---|
| UF_COEFF_TYPE | enumeration | КВС / КМ / КС / КФ / КПС / КТ |
| UF_PARAM_FROM | float | Нижняя граница параметра |
| UF_PARAM_TO | float | Верхняя граница параметра |
| UF_VALUE | float | Значение коэффициента |
| UF_PRODUCT_TYPE | enumeration | Для какого продукта |
Пример записей для КВС:
| UF_COEFF_TYPE | UF_PARAM_FROM (возраст) | UF_PARAM_TO | Стаж от | Стаж до | UF_VALUE |
|---|---|---|---|---|---|
| КВС | 18 | 21 | 0 | 2 | 1.87 |
| КВС | 22 | 25 | 3 | 5 | 1.04 |
| КВС | 30 | 65 | 10 | 99 | 0.93 |
Для КВС нужны два параметра (возраст и стаж), поэтому в Highload-блок добавляются дополнительные поля UF_PARAM2_FROM и UF_PARAM2_TO — или создаётся отдельный Highload-блок InsuranceCoefficientKVS с явными полями.
Расчёт на стороне сервера. Калькулятор работает через AJAX-запрос к кастомному контроллеру Битрикса. Клиентская сторона собирает параметры формы и отправляет POST-запрос. Сервер:
- Находит базовый тариф по марке/модели/году
- Для каждого коэффициента делает выборку из
InsuranceCoefficientпо типу и диапазону параметра - Перемножает все коэффициенты
- Возвращает JSON с итогом и расшифровкой
$baseTariff = InsuranceBaseTariffTable::getRow([
'filter' => [
'UF_PRODUCT_TYPE' => 'kasko',
'UF_CAR_BRAND' => $brand,
'UF_CAR_MODEL' => $model,
'<=UF_YEAR_FROM' => $year,
'>=UF_YEAR_TO' => $year,
],
]);
$coefficients = [];
// КВС — берём минимальный возраст-стаж из списка водителей
$kvs = InsuranceCoefficientTable::getRow([
'filter' => [
'UF_COEFF_TYPE' => 'kvs',
'<=UF_PARAM_FROM' => $driverAge,
'>=UF_PARAM_TO' => $driverAge,
'<=UF_PARAM2_FROM' => $driverExperience,
'>=UF_PARAM2_TO' => $driverExperience,
],
]);
$coefficients['kvs'] = $kvs['UF_VALUE'];
// Аналогично для КМ, КС, КФ, КПС, КТ
// ...
$premium = $insuredSum * $baseTariff['UF_BASE_RATE'];
foreach ($coefficients as $coeff) {
$premium *= $coeff;
}
Расшифровка для клиента. Калькулятор не просто выдаёт число — он показывает таблицу: «базовый тариф 3.5%, КВС 1.04, франшиза снижает на 15%...». Прозрачность расчёта повышает доверие.
Вариативность. Клиент может менять параметры (увеличить франшизу, убрать водителя, изменить сумму) и видеть, как меняется цена. Пересчёт — через AJAX без перезагрузки страницы.
Онлайн-покупка полиса
После расчёта клиент нажимает «Оформить полис». Создаётся заказ через модуль sale. Особенности:
- Товар — страховой продукт из каталога с динамической ценой (рассчитанной калькулятором)
- Свойства заказа — все параметры полиса: данные автомобиля, водителей, условия страхования
-
Оплата — через платёжные шлюзы (ЕРИП, банковские карты). Интеграция через
sale.paysystem -
После оплаты — обработчик
OnSaleOrderPaidгенерирует полис (PDF) и отправляет клиенту на email
Генерация PDF-полиса — через библиотеку TCPDF или mPDF. Шаблон полиса с подстановкой данных из свойств заказа.
Личный кабинет страхователя
Функционал личного кабинета:
- Мои полисы — список действующих и истекших полисов с файлами PDF
- Сроки — уведомление за 30 дней до окончания полиса (агент Битрикса + email/SMS)
- Пролонгация — кнопка «Продлить» предзаполняет калькулятор данными из текущего полиса
-
Заявление на выплату — форма с загрузкой документов (фото ДТП, справка, акт осмотра). Файлы сохраняются через
CFile::SaveFile(), заявление — элемент инфоблока «Страховые случаи» - Статус заявления — клиент видит этапы рассмотрения: принято → на рассмотрении → запрос документов → решение → выплата
Интеграция с 1С:Страхование и АИС
Страховые компании работают в специализированных учётных системах. Основные варианты:
1С:Страхование. Обмен через HTTP-сервисы 1С. С сайта в 1С передаются: новые полисы (после оплаты), заявления на выплату. Из 1С на сайт: статусы заявлений, справочники тарифов (если тарифы ведутся в 1С).
АИС страховщика (ведомственная система). Интеграция через SOAP или REST. Для ОСАГО часто обязательна связь с государственной базой (РСА в России, аналоги в других странах). Проверка КБМ (коэффициент бонус-малус) — запрос к внешнему API перед расчётом.
Формат обмена зависит от конкретной АИС. Типичный паттерн: Битрикс отправляет XML/JSON с данными полиса на эндпоинт АИС, получает в ответ номер полиса и статус.
Агентский портал (B2B)
Страховые агенты — отдельная категория пользователей. Их портал:
- Авторизация — по агентскому номеру, привязка к группе «Агенты» в Битриксе
- Калькулятор с агентской комиссией — тот же калькулятор, но с отображением комиссии агента (процент от премии)
- Воронка клиентов — CRM-подобный интерфейс: лиды, расчёты, оформленные полисы. Реализуется через кастомный инфоблок «Агентские заявки» со статусами
-
Отчётность — выгрузка по продажам за период, начисленная комиссия. Формируется через
PhpSpreadsheetв XLSX
Доступ к агентскому порталу ограничивается через $APPLICATION->GetUserGroupArray() и проверку принадлежности к группе.
Сроки реализации
| Масштаб | Состав | Срок |
|---|---|---|
| Один продукт (ОСАГО или travel) | Калькулятор, онлайн-покупка, базовый ЛК | 8-10 недель |
| 3-5 продуктов (авто + имущество + ДМС) | + несколько калькуляторов, интеграция с 1С, заявления на выплату | 14-20 недель |
| Полнофункциональный сайт | + агентский портал, интеграция с АИС, пролонгация, мобильная версия ЛК | 22-30 недель |
Что определяет сложность
Каждый страховой продукт — это отдельный калькулятор с уникальной формулой. КАСКО и ОСАГО используют разные наборы коэффициентов, ДМС рассчитывается по количеству застрахованных и набору клиник, страхование имущества — по типу объекта и рискам. Унифицировать формулы не получится: можно унифицировать механизм хранения коэффициентов в Highload-блоках и AJAX-обвязку, но бизнес-логику каждого калькулятора придётся писать отдельно.
Второй фактор — актуарные данные. Тарифный справочник должен регулярно обновляться при изменении ставок. Если тарифы ведутся в 1С — настраивается автоматическая синхронизация. Если на сайте — нужен удобный интерфейс для актуария, чтобы он мог обновлять коэффициенты через админку Битрикса без привлечения разработчика.







