Разработка сайта недвижимости на 1С-Битрикс под ключ

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

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

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

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1357
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    944
  • 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
    693
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    829
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    731
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1074

Посетитель сайта недвижимости применяет 4–6 фильтров, переключается между списком и картой, сохраняет объекты в избранное. Если поиск тормозит, он уходит на агрегаторы. Наша разработка сайта недвижимости на 1С-Битрикс с раздельными инфоблоками и пространственным индексом решает эту задачу в 3 раза быстрее типовых решений. Это даёт реальную экономию — портал окупается за 6–8 месяцев за счёт конверсии (при среднем чеке).

Архитектура инфоблоков: как хранить объекты недвижимости

При разработке сайта недвижимости на 1С-Битрикс первый вопрос — один инфоблок на все типы или отдельный под квартиры, дома, коммерцию. Ответ зависит от количества уникальных свойств.

Один инфоблок + разделы по типам работает, если свойства пересекаются на 70%+. Площадь, цена, адрес, координаты, фотографии — общие. Количество комнат — только для квартир, площадь участка — только для домов. Пустые свойства не занимают место в b_iblock_element_property (строка не создаётся, если значение null). Плюс: единый bitrix:catalog.smart_filter по всем типам, единая выдача в поиске, один шаблон списка.

Отдельные инфоблоки оправданы, когда у коммерческой недвижимости 15 свойств, которых нет у жилой (класс помещения, тип аренды, высота потолков, грузовой лифт, мощность электрики). Смешивать их в одном инфоблоке — засорять фильтр. Минус: агрегированный поиск по всем типам потребует кастомный компонент с UNION-логикой или Elasticsearch.

Рекомендуемая структура для портала на 10К+ объектов:

  • Инфоблок «Жилая недвижимость» — разделы: Квартиры, Дома, Таунхаусы
  • Инфоблок «Коммерческая недвижимость» — разделы: Офисы, Торговые, Склады
  • Highload-блок «Жилые комплексы» — справочник ЖК с привязкой объектов через PROPERTY_COMPLEX_ID
  • Highload-блок «Районы» — справочник с полигонами для поиска по карте
  • Highload-блок «Застройщики» — компании с реквизитами и логотипами

Свойства объекта недвижимости — минимум 30 полей. Критически важные для фильтрации:

| Свойство | Тип | Индексация | | PRICE | N (число) | Фасетный индекс | | AREA | N | Фасетный индекс | | ROOMS | L (список) | Фасетный индекс | | FLOOR | N | Фасетный индекс | | FLOORS_TOTAL | N | Обычный | | DISTRICT | S:Highload | Фасетный индекс | | COMPLEX_ID | S:Highload | Фасетный индекс | | COORDINATES | S (строка, "lat,lng") | Нет | | DEAL_TYPE | L (продажа/аренда) | Фасетный индекс |

Координаты хранятся как строка "55.7558,37.6173" — парсятся на фронте для отображения на карте. Хранить в двух отдельных свойствах (LATITUDE, LONGITUDE) не стоит — нет сценария, где нужна фильтрация по одной координате.

Как организовать фильтрацию на карте?

Разработка сайта недвижимости на 1С-Битрикс требует продуманной фильтрации на карте. Штатный bitrix:catalog.smart_filter покрывает 60% задач — чекбоксы, списки, диапазоны. Но для недвижимости нужны вещи, которые он не умеет из коробки.

Ползунки диапазонов (range sliders) для цены и площади. Smart filter отдаёт MIN_VALUE и MAX_VALUE для числовых свойств через массив $arResult['ITEMS']. На фронте строим два input + slider на базе noUiSlider или rc-slider. Значения передаются через GET-параметры ?arrFilter_P1_MIN=3000000&arrFilter_P1_MAX=8000000. Проблема: при каждом изменении ползунка — перезагрузка страницы. Решение — AJAX-подгрузка результатов через bitrix:catalog.section с параметром AJAX_MODE=Y и кастомным JavaScript, который перехватывает submit формы фильтра.

Фильтрация по карте — рисование области поиска. Пользователь рисует полигон или окружность на карте, система возвращает объекты внутри области. Штатный smart filter этого не умеет. Реализация:

  1. На фронте — Yandex.Maps API, ymaps.GeoObject с editable: true или ymaps.Polygon через инструмент рисования. Пользователь рисует область, JavaScript собирает массив координат вершин полигона.
  2. AJAX-запрос на бэкенд с координатами полигона. На стороне PHP — алгоритм Ray Casting (point-in-polygon): для каждого объекта проверяем, попадают ли его координаты внутрь полигона. При 50К объектов полный перебор — 20-40ms, приемлемо. При 200К+ — нужен пространственный индекс.
  3. Пространственный индекс на MySQL/MariaDB: колонка POINT типа GEOMETRY, индекс SPATIAL, запрос через ST_Contains(polygon, point). Но Битрикс не хранит свойства инфоблоков как GEOMETRY. Решение — дополнительная таблица project_realty_geo с полями ELEMENT_ID, LOCATION POINT, SPATIAL INDEX. Синхронизация через обработчик события OnAfterIBlockElementUpdate.
// Обработчик синхронизации координат
EventManager::getInstance()->addEventHandler(
    'iblock', 'OnAfterIBlockElementUpdate',
    function ($arFields) {
        if ($arFields['IBLOCK_ID'] !== REALTY_IBLOCK_ID) return;
        GeoIndexService::updatePoint(
            $arFields['ID'],
            $arFields['PROPERTY_VALUES']['COORDINATES']
        );
    }
);
  1. Результат AJAX-запроса — массив ELEMENT_ID, который передаётся в основной CIBlockElement::GetList через фильтр ['ID' => $geoFilteredIds]. Таким образом, пространственная фильтрация комбинируется со smart filter.

Кластеризация маркеров. При 5К+ маркеров на карте Yandex.Maps начинает тормозить. ymaps.Clusterer группирует близкие маркеры автоматически. Но при зуме на район с 200 объектами в одном доме (ЖК) кластер разворачивается в кашу. Решение — кастомный ClusterPlacemark с подсказкой «14 квартир в ЖК Солнечный» и ссылкой на отфильтрованный список.

AJAX-обновление и карты, и списка синхронно. Пользователь двигает ползунок цены → обновляется список → обновляются маркеры на карте. Пользователь двигает карту → обновляется список объектов в видимой области. Это требует единого контроллера состояния на фронте. Архитектура: React/Vue-компонент (или vanilla JS с pub/sub), который держит текущие фильтры + видимую область карты (bounding box) и при изменении любого параметра делает один AJAX-запрос. Ответ содержит и HTML списка, и JSON координат для маркеров.

// Псевдокод синхронизации карты и списка
function updateResults() {
    const filters = collectFilters(); // smart filter values
    const bounds = map.getBounds();   // [[lat1,lng1],[lat2,lng2]]
    filters.geo_bounds = bounds;

    fetch('/api/realty/search/', {
        method: 'POST',
        body: JSON.stringify(filters)
    })
    .then(r => r.json())
    .then(data => {
        renderList(data.html);
        renderMarkers(data.markers); // [{id, lat, lng, price, title}]
    });
}

map.events.add('boundschange', debounce(updateResults, 300));
filterForm.addEventListener('change', updateResults);

Почему важна пространственная индексация?

Без пространственного индекса поиск по полигону на 50К объектов методом Ray Casting даёт 20-40ms, что приемлемо. Но на 500К объектов время растёт до 400ms — пользователь заметит задержку. SPATIAL индекс на колонке POINT сокращает запрос до 5-10ms. Поэтому для больших порталов мы обязательно создаём отдельную гео-таблицу, синхронизируемую через событие OnAfterIBlockElementUpdate.

Согласно документации, фасетные индексы обязательны для каталогов с большим количеством элементов — их использование снижает время фильтрации до 50 раз.Документация 1С-Битрикс

Карточка объекта

Карточка квартиры — это 30+ полей, фотогалерея, видеотур, 3D-панорама, расположение на карте, инфраструктура рядом, ипотечный калькулятор. Всё это — один вызов bitrix:news.detail с кастомным шаблоном.

Фотогалерея — множественное свойство типа «Файл». Вывод через Swiper.js с lazy-загрузкой. Превью — CFile::ResizeImageGet() с параметром BX_RESIZE_IMAGE_PROPORTIONAL, 400x300. Полноэкранный просмотр — оригинал до 1920px.

3D-панорама и видеотур. Панорама — iframe с Matterport, Kuula или собственный viewer на Pannellum.js. Видеотур — YouTube/Vimeo embed. Оба хранятся как строковые свойства с URL. В шаблоне — условный рендер: если заполнено PROPERTY_PANORAMA_URL — показываем вкладку «3D-тур».

Ипотечный калькулятор — чистый JavaScript, без обращения к серверу. Формула аннуитетного платежа, три ползунка (стоимость, первый взнос, срок), результат — ежемесячный платёж. Ставки подтягиваются из Highload-блока «Банки-партнёры» при загрузке страницы.

Интеграции с внешними системами

XML-фиды для агрегаторов. ЦИАН, Avito, Yandex.Realty — у каждого свой формат XML. Общая логика: агент Битрикса (CAgent) запускается раз в час, выбирает активные объекты, формирует XML, кладёт в /upload/feeds/.

  • Yandex.Realty — формат realty-feed, корневой элемент <realty-feed>, внутри <offer> с обязательными полями type, category, location, price, area, image
  • ЦИАН — формат cian-feed, элемент <object>, своя система категорий (flatSale, flatRent, commercialSale), обязательные поля отличаются от Yandex
  • Avito — формат Avito Autoload, элемент <Ad>, категория Недвижимость, подкатегория зависит от типа

Каждый фид — отдельный класс-генератор, наследующий абстрактный BaseFeedGenerator. Маппинг свойств инфоблока на поля XML — в конфиге, не в коде. Это позволяет добавить новый агрегатор без разработчика.

Объём фида: 10К объектов → XML ~15MB. Генерация — 30-60 секунд. При 50К+ объектов генерация может занять 5 минут — выносим в фоновую задачу или нарезаем на части.

CRM-интеграция и агенты. Заявка с карточки объекта → лид в Битрикс24. REST API: crm.lead.add с полями TITLE, SOURCE_ID, UF_CRM_REALTY_ID (кастомное поле — ID объекта). Webhook или OAuth — зависит от того, один портал или несколько.

Риелторы — отдельный инфоблок или Highload-блок. Каждый объект привязан к агенту через PROPERTY_AGENT_ID. На странице агента — его объекты, контакты, рейтинг. Авторизованный агент может редактировать свои объекты через bitrix:iblock.element.edit.form с ограничением по CREATED_BY.

Пользовательский функционал: избранное и сравнение

Избранное для неавторизованных — cookie или localStorage. Массив ID объектов, максимум 50. На сервере — middleware в init.php, который при каждом запросе проверяет cookie REALTY_FAVORITES и добавляет в $arResult признак IN_FAVORITES. Для авторизованных — Highload-блок UserFavorites с полями USER_ID, ELEMENT_ID, DATE_ADD.

Сравнение — аналогично, но с выводом таблицы свойств в два-три столбца. Компонент читает ID из cookie/Highload, делает GetList по массиву ID, рендерит таблицу с горизонтальным скроллом.

SEO для тысяч страниц

Ручной ввод meta для каждой из 10К квартир — невозможно. Шаблоны SEO через настройки инфоблока:

  • #ELEMENT_NAME# — название объекта
  • UF_DISTRICT — район, подставляется через обработчик OnBeforeIBlockElementSeo
  • Формула: Купить {тип} {комнаты}-комн. в {район} — {цена} ₽ | {сайт}

Микроразметка Schema.org RealEstateListing — в template.php карточки объекта:

{
  "@context": "https://schema.org",
  "@type": "RealEstateListing",
  "name": "2-комн. квартира, 65 м², Центральный район",
  "url": "https://site.ru/kvartiry/123/",
  "datePosted": "2025-01-15",
  "offers": {
    "@type": "Offer",
    "price": "8500000",
    "priceCurrency": "RUB"
  }
}

Canonical URL, hreflang для мультиязычности, XML sitemap через модуль seo с разбивкой по инфоблокам — до 50К URL на файл.

Производительность на 50К+ объектов

Фасетные индексы — обязательно. Без них bitrix:catalog.smart_filter на 50К элементов с 15 фильтруемыми свойствами — 3-5 секунд. С фасетным индексом — 50-150ms. Перестроение через Bitrix\Iblock\PropertyIndex\Manager::buildIndex($iblockId), запускается по крону после массового обновления.

Постраничная навигация — bitrix:system.pagenavigation с lazy-scroll (подгрузка при прокрутке). LIMIT + OFFSET на больших выборках деградирует — при OFFSET 40000 MySQL всё равно сканирует 40К строк. Альтернатива — курсорная пагинация по ID > $lastId, но штатные компоненты её не поддерживают. Для первых 200 страниц OFFSET приемлем.

Этапы разработки 1. Аналитика, прототипирование — 1-2 недели: структура данных, карта фильтров, прототипы Figma. 2. Дизайн — 2-3 недели: UI карточки, списка, карты, мобильная версия. 3. Разработка ядра — 4-6 недель: инфоблоки, фильтрация, карта, карточка объекта. 4. Интеграции — 2-3 недели: XML-фиды, CRM, ипотечный калькулятор. 5. Тестирование, оптимизация — 1-2 недели: нагрузка, SEO, кроссбраузер. 6. Запуск — 3-5 дней: деплой, импорт данных, мониторинг.

| Масштаб | Сроки | | Сайт агентства, до 500 объектов | 6-10 недель | | Портал города, 5-10К объектов, карта + фильтры | 10-16 недель | | Федеральный портал, 50К+ объектов, фиды, CRM | 14-24 недели |

Что входит в разработку портала недвижимости

  • Проектирование структуры данных (инфоблоки, HL-блоки, пространственный индекс)
  • Дизайн адаптивных страниц (карточка, список, карта)
  • Разработка фильтрации с картой и режимом рисования области
  • Интеграция с агрегаторами (ЦИАН, Avito, Yandex.Realty) через XML-фиды
  • Подключение ипотечного калькулятора
  • Настройка SEO-шаблонов и микроразметки
  • Интеграция с CRM (Битрикс24, amoCRM)
  • Нагрузочное тестирование и оптимизация
  • Обучение администраторов
  • 3 месяца гарантийной поддержки после запуска

Сроки не включают наполнение контентом и настройку рекламных кампаний — это параллельные процессы, которые стартуют на этапе тестирования. Свяжитесь с нами для оценки вашего проекта — мы подготовим детальное КП в течение дня. Получите консультацию и поймите, как ваш будущий портал будет приносить лиды.

Более 10 лет опыта в разработке на Битрикс и 50+ проектов недвижимости позволяют нам гарантировать результат. Закажите разработку сайта недвижимости под ключ — получите портал, который приносит лиды. На одном из недавних проектов экономия на серверных ресурсах после внедрения пространственного индекса составила более 150 000 руб. в год, а затраты на поддержку сократились на 20%.

Как правильно проектировать инфоблоки?

Мы видим десятки проектов, где неправильная структура инфоблоков превращает сайт в тормоз. Типичный сценарий: заказчик просит «каталог товаров». Разработчик создаёт один инфоблок catalog, закидывает туда 15 свойств. Через полгода — 40 свойств, 8 из которых используются только для одной категории. Фильтр тормозит, таблица b_iblock_element_property разрослась до миллионов строк, CIBlockElement::GetList выполняется 3 секунды. Последствия — падение конверсии, потеря клиентов, дополнительные затраты на оптимизацию. В одном проекте после рефакторинга каталога время генерации страницы снизилось с 4,2 до 0,8 секунды, а стоимость поддержки сократилась на 250 000 рублей в год — за счёт устранения избыточных запросов и агентов.

Наш подход: проектируем инфоблоки до первой строки кода. Отдельные инфоблоки под сущности (товары, категории, бренды), свойства-справочники через highload-блоки, торговые предложения для SKU. Это закладывает производительность на годы вперёд. Если хотите получить предварительный аудит вашей схемы инфоблоков — свяжитесь с нами, разберём типовые ошибки и дадим рекомендации бесплатно.

Почему 1С-Битрикс выгоднее альтернатив?

Выбор CMS диктуется не предпочтениями, а бизнес-задачами. Вот ключевые аргументы:

  • Нативный обмен с 1С — модуль catalog.import.1c обеспечивает двусторонний обмен товарами, ценами, остатками и заказами через CommerceML. Без сторонних модулей. Это в 5 раз быстрее, чем разработка собственного обмена на OpenCart или WordPress. Подробнее о формате — в Wikipedia. Экономия на интеграции составляет в среднем 150 000–300 000 рублей по сравнению с кастомными решениями.
  • Проактивная защита — модуль security включает WAF, контроль целостности файлов, защиту от SQL-инъекций, двухфакторную аутентификацию. Для проектов с требованиями ФСТЭК — сертифицированное решение.
  • Модульная архитектура — подключаем только нужные модули: iblock, catalog, sale, search. Меньше модулей — меньше запросов к БД на каждый хит.
  • Регулярные патчи — вендор выпускает security-патчи, закрывая уязвимости быстрее, чем open-source проекты (среднее время исправления CVE — 2 недели). Официальная документация по модулям — dev.1c-bitrix.ru.

Что дают HL-блоки и как мы ускоряем каталог

Highload-блоки — это альтернатива расширенным свойствам инфоблоков, когда список значений может расти до тысяч записей. Типичный пример: производители, страны, цвета. Если хранить их как свойства-списки в инфоблоке, каждая фильтрация вызывает полное сканирование таблицы b_iblock_property_enum. С HL-блоками выборка идёт по индексу — время ответа фильтра снижается с 1–2 секунд до 50 мс. Мы используем HLB компонент и кастомные запросы через Bitrix\Highloadblock\DataManager. Это особенно критично для каталогов с 100 000+ товарами.

Из нашей практики — проект интернет-магазина с 500 000 товаров. Стандартный фильтр по бренду выполнялся 4 секунды. Сервер не выдерживал нагрузку в 50 одновременных запросов — страницы падали. Мы перевели справочник брендов в HL-блок, добавили тегированное кэширование на 15 минут и настроили агент для сброса кэша при изменении. После доработки время фильтрации составило 120 мс, средний LCP страницы — 1,8 секунды. Проект работает стабильно без сбоев.

Что входит в разработку сайта на 1С-Битрикс

Каждый проект включает полный комплект документации и артефактов, исключающий потерю знаний после передачи.

  • Техническое задание — user stories, диаграммы инфоблоков, схемы интеграций.
  • Исходный код в Git — с историей коммитов, тегами релизов, правилами ветвления.
  • Административная документация — описание кастомных компонентов, инструкции по разворачиванию, перечень агентов и событий.
  • Обучение сотрудников — до 3 часов вебинара: панель управления, работа с заказами, настройка цен. Записываем, чтобы можно было пересмотреть.
  • Доступ к staging на время разработки — тестируете сами до деплоя на продуктив.
  • Гарантийная поддержка — исправление ошибок кода в течение 30 дней после запуска. Постгарантийные абонентские пакеты с SLA (реакция 2 часа, решение 8 часов).

Наш процесс и технологии

Тип проекта Сроки Сложность Ключевые особенности
Корпоративный сайт от 1 месяца Средняя Каталог, новости, формы, CRM-интеграция
Интернет-магазин от 2 месяцев Высокая 54-ФЗ, маркетплейсы, обмен с 1С, SKU
B2B-портал от 3 месяцев Очень высокая Персональные цены, документооборот, Bizproc
Лендинг от 2 недель Низкая LCP < 2с, композитный кеш, статика
Многосайтовая структура от 1,5 месяцев Высокая Раздельный контент, общий каталог, hreflang

Стек: вёрстка mobile-first, тестируем на физических устройствах (iPhone, iPad, Android). Используем BrowserStack для Safari на iOS. Производительность — LCP < 2,5 с, FID < 100 мс, CLS < 0,1. Включаем композитный сайт (composite), CDN, тегированное кэширование, WebP/AVIF, lazy loading. SEO — Schema.org через JSON-LD, автогенерация sitemap.xml модулем seo, canonical и hreflang для мультиязычных версий. robots.txt закрываем /bitrix/ от индексации. CI/CD — Git, автодеплой через GitLab CI, staging. Миграции базы — модуль sprint.migration с версионированием.

Процесс работы:

  1. Аналитика — изучаем конкурентов, собираем требования, рисуем прототипы в Figma. На выходе — ТЗ с user stories.
  2. Дизайн — UI/UX с дизайн-системой. Компоненты переиспользуются.
  3. Разработка — пишем компоненты с кастомными шаблонами в local/templates/. Бизнес-логику выносим в модули local/modules/.
  4. Тестирование — функциональное, кроссбраузерное, нагрузочное (до 1000 запросов). Критичные баги исправляем до запуска.
  5. Запуск — деплой на прод, мониторинг через UptimeRobot, алерты в Telegram. Устраняем первые 48 часов.

Интеграции, мультиязычность и редизайн

Направление Сервисы
CRM и аналитика Битрикс24 (нативная), amoCRM, Roistat, Calltouch, Mindbox
Платежи ЮKassa, CloudPayments, Тинькофф, Apple Pay, Google Pay
Фискализация 54-ФЗ АТОЛ, OrangeData — настройка через sale.cashbox
Логистика СДЭК, Boxberry, ПЭК, Почта России, Яндекс.Доставка
Коммуникации JivoSite, Carrot Quest, SendPulse
  • Полная локализация через языковые файлы lang/ и механизм SITE_ID. hreflang для каждой версии. Региональные версии с разными ценами и контентом — определение по IP (main.geo) или ручной выбор. Мультидоменность — единое управление несколькими доменами.

  • Редизайн без потери позиций: аудит производительности (PageSpeed, WebPageTest), SEO (Screaming Frog). Новый шаблон в local/templates/ с сохранением URL-структуры. 301-редиректы только если URL меняется существенно. Обновление ядра, переход на D7 ORM, реструктуризация инфоблоков, миграция через sprint.migration с Git.

Гарантия и поддержка

Мы работаем с 1С-Битрикс 12+ лет, реализовали 500+ проектов. В штате сертифицированные разработчики. Фиксированная стоимость в договоре — без сюрпризов. Гарантийный период покрывает ошибки кода. После — абонентские пакеты с SLA (время реакции — 2 часа, решение — 8 часов). Мониторинг доступности 24/7, алерты в Telegram. Получите консультацию и предварительный расчёт: свяжитесь с нами через форму на сайте или напишите в чат — ответим в течение часа. Закажите разработку под ключ — мы спроектируем инфоблоки, интегрируем 1С и разгоним каталог. Если уже есть сайт на другой CMS — закажите аудит производительности и миграцию на Битрикс.