Создание фармацевтического сайта на 1С-Битрикс с интеграцией учёта и МДЛП
Крупная аптечная сеть с 15 000 SKU и 200 аптек обнаружила: на сайте отображались остатки трёхдневной давности. Пользователи оформляли бронь, а в аптеке товара не было. Интеграция с 1С через FTP-файлы ломалась раз в месяц, а поиск аналогов отсутствовал. Мы перепроектировали архитектуру — теперь остатки обновляются каждые 15 минут, а поиск по симптомам обрабатывает 10 000 запросов в день. Стоимость такого проекта — от 600 000 до 1 200 000 рублей в зависимости от числа аптек и сложности интеграций.
Почему разработка сайта аптеки на 1С-Битрикс требует особого подхода?
Аптечный e-commerce зарегулирован Федеральным законом №61-ФЗ «Об обращении лекарственных средств». Кроме лицензирования, нужна интеграция с МДЛП, учёт рецептурных ограничений, точные остатки и подбор аналогов. Битрикс с инфоблоками и Highload-блоками решает эти задачи, но требует правильной настройки. Мы закладываем архитектуру так, чтобы справляться с 47% трафика, приходящего через поиск по симптомам.
Каталог лекарственных препаратов
Структура каталога базируется на инфоблоке со свойствами под фармацевтику:
| Свойство |
Тип |
Назначение |
ACTIVE_SUBSTANCE |
Строка |
МНН (международное непатентованное наименование) |
TRADE_NAME |
Название элемента |
Торговое наименование |
DOSAGE_FORM |
Список |
Таблетки, капсулы, раствор, мазь, суппозитории... |
DOSAGE |
Строка |
500 мг, 10 мг/мл |
PACKAGE_QTY |
Число |
Количество в упаковке |
PRESCRIPTION |
Список |
Рецептурный / Безрецептурный |
ATC_CODE |
Строка |
Код АТХ-классификации (J01CA04 и т.д.) |
MANUFACTURER |
Привязка к HL |
Производитель |
COUNTRY |
Привязка к HL |
Страна производства |
REG_NUMBER |
Строка |
Номер регистрационного удостоверения |
STORAGE_TEMP |
Список |
До 25°C / 2–8°C / Без ограничений |
MDLP_GTIN |
Строка |
GTIN для маркировки МДЛП |
ANALOGS |
Привязка к элементам (множ.) |
Аналоги по МНН |
Для рецептурных препаратов кнопка «Купить» заменяется на «Забронировать» с пояснением: отпуск только при предъявлении рецепта. Это проверяет свойство PRESCRIPTION в шаблоне catalog.element. Категоризация двойная: по АТХ-группам и по тегам назначения (от головной боли, от простуды).
Как реализовать поиск по симптомам и интеграцию с МКБ-10?
Справочник МКБ-10 загружается в Highload-блок hl_mkb10:
-
UF_CODE — код диагноза (J06.9, K21.0)
-
UF_NAME — название диагноза
-
UF_PARENT_CODE — код родительской группы
-
UF_SYNONYMS — бытовые названия (насморк, изжога, мигрень)
Поисковая строка с автоподсказкой: пользователь вводит «болит горло» — система находит J02 (острый фарингит) и J03 (острый тонзиллит), подставляет связанные препараты. Связь «диагноз → препарат» хранится в промежуточном HL-блоке hl_mkb_drugs (поля: UF_MKB_CODE, UF_PRODUCT_ID). Поиск работает через AJAX-контроллер, результаты кешируются на стороне клиента (sessionStorage). На бэкенде — составной индекс по UF_SYNONYMS + UF_NAME для быстрой фильтрации.
Проверка наличия по аптекам и поиск аналогов
Это самая востребованная функция. Пользователь хочет: есть ли нужный препарат в аптеке рядом, и если нет — какие аналоги доступны.
Архитектура проверки наличия:
Остатки приходят из учётной системы аптечной сети. Варианты:
- 1С:Управление аптечной сетью — выгрузка через REST-сервис по HTTP
- Фарматика / М-Аптека плюс — обмен через CSV/XML на FTP
- Кастомная система — REST API или SOAP
Данные попадают в Highload-блок hl_pharmacy_stock:
| Поле |
Тип |
Назначение |
UF_PRODUCT_ID |
Число |
ID товара в каталоге Битрикса |
UF_PHARMACY_ID |
Число |
ID аптеки (из инфоблока «Аптеки») |
UF_QUANTITY |
Число |
Остаток (штуки/упаковки) |
UF_PRICE |
Число |
Цена в конкретной аптеке |
UF_UPDATED_AT |
Дата/время |
Время последнего обновления |
Синхронизация запускается cron-агентом CPharmacyStockAgent каждые 15 минут. Полная выгрузка — ночью, днём — инкрементальная. При 200 аптеках и 15 000 SKU таблица содержит 3 000 000 записей — нужен индекс по (UF_PRODUCT_ID, UF_PHARMACY_ID). Экономия на интеграции с 1С составляет до 300 000 рублей за счёт автоматизации обмена.
Вывод на фронте:
На детальной странице — блок «Наличие в аптеках». AJAX-запрос возвращает список аптек с остатками, отсортированных по удалённости от пользователя (Geolocation API + формула Haversine). Каждая строка: название, адрес, остаток (точное количество или «В наличии» / «Мало» / «Нет»), кнопка «Забронировать». Точное количество не показываем — устаревает за минуты. Три градации: зелёный (>5), жёлтый (1–5), серый (0). Порог настраивается.
Поиск аналогов:
Когда препарата нет — пользователю предлагаются аналоги?
Алгоритм:
- Берётся МНН текущего препарата (
ACTIVE_SUBSTANCE).
- Выбираются все товары с тем же МНН и той же дозировкой — полные аналоги (дженерики).
- Если мало совпадений — расширяется до той же АТХ-группы 4-го уровня (фармакологические аналоги).
- Результат фильтруется по наличию в аптеках — только те, что в наличии.
Свойство ANALOGS заполняется автоматически cron-скриптом на основе МНН. Ручное редактирование — для исключений.
Онлайн-бронирование
Бронирование — не продажа. Оплата на сайте не взимается. Процесс:
- Пользователь выбирает препарат и аптеку, нажимает «Забронировать».
- Создаётся заявка в CRM Битрикса (лид или сделка) с данными: препарат, аптека, телефон.
- Параллельно — запрос в учётную систему на резервирование.
- Пользователь получает SMS/push с номером брони и сроком (24–48 часов).
- При истечении — автоматическая отмена, возврат в свободный остаток.
Для рецептурных препаратов бронирование доступно, но при получении обязателен рецепт.
Интеграция с МДЛП
Маркировка через «Честный ЗНАК» обязательна. На сайте: каждый препарат содержит GTIN (MDLP_GTIN), на детальной странице — ссылка «Проверить подлинность» на checkmark.crpt.ru. При бронировании фиксируется серийный номер упаковки (если аптека передаёт через API).
Schema.org для фармацевтики
Микроразметка schema.org/Drug на детальных страницах:
-
nonProprietaryName — МНН
-
activeIngredient — действующее вещество
-
dosageForm — форма выпуска
-
drugClass — фармакологическая группа
-
manufacturer — производитель
-
availableStrength — дозировка
-
prescriptionStatus — OTC или PrescriptionOnly
-
isAvailableGenerically — наличие дженериков
Это улучшает индексацию и расширенные сниппеты.
Этапы проекта
| Этап |
Работы |
Срок |
| Аналитика и проектирование |
Маппинг номенклатуры, интеграционные контракты, UX-прототипы |
2–3 недели |
| Каталог и поиск |
Инфоблоки, HL-блоки, поиск по МКБ-10, фильтры |
3–4 недели |
| Наличие и бронирование |
Интеграция с учётной системой, геолокация, бронирование |
4–5 недель |
| Аналоги и Schema.org |
Алгоритм подбора аналогов, микроразметка, SEO |
2 недели |
| Тестирование |
Проверка обмена данными, нагрузка на HL-блок остатков |
1–2 недели |
| Запуск |
Наполнение каталога, обучение фармацевтов-редакторов |
1 неделя |
Что входит в результат
Вы получаете готовый к работе сайт с документацией по архитектуре, доступы к администрированию, обучение редакторов и техподдержку на старте. Мы передаём исходные коды и инструкции по интеграции. Получите консультацию по вашему проекту — свяжитесь с нами для предварительной оценки. Закажите разработку сайта аптеки уже сегодня!
Как правильно проектировать инфоблоки?
Мы видим десятки проектов, где неправильная структура инфоблоков превращает сайт в тормоз. Типичный сценарий: заказчик просит «каталог товаров». Разработчик создаёт один инфоблок 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 с версионированием.
Процесс работы:
-
Аналитика — изучаем конкурентов, собираем требования, рисуем прототипы в Figma. На выходе — ТЗ с user stories.
-
Дизайн — UI/UX с дизайн-системой. Компоненты переиспользуются.
-
Разработка — пишем компоненты с кастомными шаблонами в
local/templates/. Бизнес-логику выносим в модули local/modules/.
-
Тестирование — функциональное, кроссбраузерное, нагрузочное (до 1000 запросов). Критичные баги исправляем до запуска.
-
Запуск — деплой на прод, мониторинг через 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 — закажите аудит производительности и миграцию на Битрикс.