Разработка калькулятора площади и объёма на 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Разработка калькулятора площади и объёма на 1С-Битрикс
Средний
~1-2 недели
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1330
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    924
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    672
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    815
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    714
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1051

Расчёт площади и объёма на сайте строительной компании — задача, которая кажется тривиальной, пока не столкнёшься с необходимостью учитывать ниши, проёмы, Г-образные комнаты и скаты крыш. Ошибка в 5% может привести к перерасходу бюджета клиента на материалы или к нехватке в самый разгар ремонта. Мы — команда с 5-летним опытом разработки на 1С-Битрикс, реализовали 30+ калькуляторов для строительных компаний. Гарантируем точность расчётов: все формулы проходят многократное тестирование на реальных кейсах. Оценим ваш проект бесплатно за 1 день — пишите, рассчитаем сроки под ключ.

Почему точность расчёта площади критична?

Даже небольшая погрешность в расчёте площади стен или кровли оборачивается либо избытком материалов (потеря денег), либо их нехваткой в самый неподходящий момент. Калькулятор должен поддерживать вычет проёмов, нестандартные формы и автоматический учёт запаса. Хорошая практика — явно добавлять 5–10% запаса в результат, чтобы клиент не возвращался с претензией.

Используемые формулы расчёта

Мы реализовали полный набор строительных формул в виде PHP-класса GeometryCalculator. Код простой, легко расширяется новыми фигурами:

namespace MyProject\Services\Calculators;

class GeometryCalculator
{
    // Площади помещений
    public static function rectangleArea(float $width, float $length): float
    {
        return $width * $length;
    }

    public static function lShapeArea(float $w1, float $l1, float $w2, float $l2): float
    {
        // Г-образная комната: два прямоугольника
        return self::rectangleArea($w1, $l1) + self::rectangleArea($w2, $l2);
    }

    public static function circleArea(float $radius): float
    {
        return M_PI * $radius * $radius;
    }

    public static function triangleArea(float $base, float $height): float
    {
        return 0.5 * $base * $height;
    }

    // Площадь стен комнаты (с вычетом проёмов)
    public static function wallArea(
        float $perimeter,
        float $height,
        array $openings = [] // [{width, height}, ...]
    ): float {
        $totalWall   = $perimeter * $height;
        $openingsArea = array_sum(array_map(fn($o) => $o['width'] * $o['height'], $openings));
        return max(0, $totalWall - $openingsArea);
    }

    // Объёмы
    public static function boxVolume(float $width, float $length, float $height): float
    {
        return $width * $length * $height;
    }

    public static function cylinderVolume(float $radius, float $height): float
    {
        return M_PI * $radius * $radius * $height;
    }

    // Площадь кровли с учётом уклона
    public static function roofArea(float $horizontalArea, float $slopeDegrees): float
    {
        $slopeRad = deg2rad($slopeDegrees);
        return $horizontalArea / cos($slopeRad);
    }
}

Как организовать мультикомнатный ввод?

Для простоты пользователя мы создаём интерфейс, где можно добавлять, удалять и редактировать комнаты. Каждая комната содержит свой набор параметров. Итоговая смета обновляется динамически. Пример реализации на JavaScript:

class RoomCalculator {
    constructor() {
        this.rooms = [];
    }

    addRoom(params) {
        const room = {
            id:      Date.now(),
            name:    params.name || `Помещение ${this.rooms.length + 1}`,
            floor:   params.width * params.length,
            ceiling: params.width * params.length,
            walls:   this.calcWalls(params),
        };
        this.rooms.push(room);
        return room;
    }

    calcWalls(params) {
        const perimeter = 2 * (params.width + params.length);
        const totalWall = perimeter * params.height;

        const openingsArea = (params.doors || []).reduce((sum, d) => sum + d.width * d.height, 0)
            + (params.windows || []).reduce((sum, w) => sum + w.width * w.height, 0);

        return totalWall - openingsArea;
    }

    getTotal() {
        return {
            totalFloor:   this.rooms.reduce((s, r) => s + r.floor, 0),
            totalCeiling: this.rooms.reduce((s, r) => s + r.ceiling, 0),
            totalWalls:   this.rooms.reduce((s, r) => s + r.walls, 0),
            rooms:        this.rooms,
        };
    }

    removeRoom(id) {
        this.rooms = this.rooms.filter(r => r.id !== id);
    }
}

Как упростить ввод параметров для пользователя?

Пользователь не всегда знает точные размеры. Чтобы снизить барьер входа, мы предлагаем:

  • Стандартные размеры. Выбор из справочника: «стандартная панельная квартира», «студия 25м²», «однушка 38м²». Автозаполнение размеров с возможностью корректировки.
  • SVG-схема помещения. Интерактивный чертёж, где пользователь кликает на стену и вводит размер. Реализуется через SVG + JavaScript, никаких внешних зависимостей.
  • Загрузка планировки. Пользователь загружает фото или скан плана, менеджер обрабатывает вручную. Гибридный подход для сложных объектов.

Как связать калькулятор с каталогом Битрикс?

После расчёта площади — автоматический переход к подбору материалов. Система анализирует тип помещения и рекомендует соответствующие товары из каталога. Пример AJAX-обработчика:

// AJAX-обработчик: по площади подбираем нужное количество товаров
public function suggestMaterialsAction(float $area, string $materialType): array
{
    $norm = MaterialNormRepository::getByType($materialType);

    $rawQuantity = $area * $norm['consumption_rate'] * $norm['waste_factor'];
    $packages    = ceil($rawQuantity / $norm['package_size']);

    // Проверяем наличие на складе
    $product = \CCatalogProduct::GetByID($norm['product_id']);
    $inStock  = (int)($product['QUANTITY'] ?? 0);

    return [
        'product_id'   => $norm['product_id'],
        'product_name' => $norm['product_name'],
        'packages'     => $packages,
        'in_stock'     => $inStock,
        'enough_stock' => $inStock >= $packages,
        'can_order'    => true,
    ];
}

Как сохранить и распечатать результаты?

Для сложных объектов пользователи хотят сохранить расчёт. Реализации:

Ссылка с параметрами — расчёт кодируется в URL-параметры, ссылка сохраняется или передаётся:

const paramsStr = btoa(JSON.stringify(calcParams));
const shareUrl  = `${window.location.origin}/calculator/?calc=${paramsStr}`;

PDF-выгрузка — серверная генерация через библиотеку TCPDF или mPDF, установленную через Composer в /local/:

$pdf = new \TCPDF();
$pdf->AddPage();
$pdf->writeHTML($this->renderCalcHtml($calcResult));
$pdf->Output('calc_result.pdf', 'D'); // D = force download

Email с результатом — отправка через \Bitrix\Main\Mail\Event::sendImmediate().

Пример расчёта площади стен с проёмами

Допустим, комната 5×4 м, высота 2.7 м, одно окно 1.5×1.4 м и одна дверь 0.9×2.0 м.

  • Периметр: 2*(5+4) = 18 м
  • Площадь стен до вычета: 18 * 2.7 = 48.6 м²
  • Площадь проёмов: 1.51.4 (2.1 м²) + 0.92.0 (1.8 м²) = 3.9 м²
  • Чистая площадь стен: 48.6 — 3.9 = 44.7 м²

Если добавить запас 10%, результат = 44.7 * 1.1 = 49.17 м².

Тестирование точности калькулятора

Каждый алгоритм проходит проверку на 20+ тестовых сценариях: стандартные комнаты, сложные конфигурации, кровли с разными уклонами. Для каждого сценария мы вручную считаем эталонное значение и сравниваем с результатом калькулятора. Отклонение не должно превышать 0.01%. После успешного тестирования код попадает в продакшен.

Что входит в работу

Компонент Описание
Аналитика и проектирование Сбор требований, прототипирование интерфейса, утверждение формул
Разработка калькулятора Реализация на PHP + JavaScript, интеграция с инфоблоками и HL-блоками
Связь с каталогом Привязка к товарам, расчёт количества материалов
Сохранение и выгрузка PDF, email, ссылка на расчёт
Тестирование Проверка точности на 20+ сценариях, юнит-тесты
Документация и обучение Инструкция для администратора, запись вебинара для менеджеров
Гарантийная поддержка 30 дней бесплатного сопровождения после запуска

Сроки разработки

Задача Срок
Простой калькулятор площади (один тип помещения, линейный вывод) 2–4 дня
Мультикомнатный калькулятор с несколькими формами и итоговой сметой 1.5–2 недели
Калькулятор с визуальным вводом, связью с каталогом и PDF-выгрузкой 3–5 недель

Как мы разрабатываем калькулятор: 5 шагов

  1. Сбор требований и прототипирование — уточняем формулы, интерфейс, связь с каталогом.
  2. Разработка ядра калькулятора — реализуем классы GeometryCalculator и RoomCalculator на PHP.
  3. Интеграция с 1С-Битрикс — подключаем инфоблоки, HL-блоки, AJAX-обработчики.
  4. Тестирование на 20+ сценариях — проверяем точность и удобство.
  5. Внедрение и обучение — загружаем на сайт, готовим документацию, проводим вебинар.

Точность расчёта — главное. Ошибка на 10% в меньшую сторону означает, что клиент докупает материалы по другой (часто более высокой) цене и возвращается недовольным. Лучше добавить 5% запас явно, чем занизить и потерять доверие.

Свяжитесь с нами для оценки вашего проекта. Закажите разработку калькулятора и получите консультацию.

Подробнее о формулах площади можно прочитать на Wikipedia.