Разработка сайта аптеки на 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка сайта аптеки на 1С-Битрикс
Сложная
от 1 недели до 3 месяцев
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Разработка сайта аптеки на 1С-Битрикс

Аптечный сайт — один из самых зарегулированных проектов в e-commerce. Дистанционная продажа рецептурных препаратов запрещена законодательством, безрецептурные можно продавать только при наличии лицензии на фармацевтическую деятельность и соблюдении требований постановлений правительства. Техническая реализация должна учитывать эти ограничения на уровне архитектуры, а не просто текстовых предупреждений.

Каталог лекарственных препаратов

Структура каталога строится на инфоблоке с расширенным набором свойств, адаптированных под фармацевтическую номенклатуру:

Свойство Тип Назначение
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 Привязка к элементам (множ.) Аналоги по МНН

Для рецептурных препаратов кнопка «Купить» заменяется на «Забронировать» с пояснением: отпуск только при предъявлении рецепта в аптеке. Это обрабатывается на уровне шаблона компонента catalog.element — проверяется свойство PRESCRIPTION, и в зависимости от значения рендерится нужный блок действий.

Категоризация каталога — двойная. Основная навигация по фармакотерапевтическим группам (АТХ-классификация), дополнительная — по формам выпуска и по назначению (от головной боли, от простуды, витамины). Реализация через разделы инфоблока (АТХ) и теги (назначение).

Поиск по симптомам и справочник МКБ-10

Справочник МКБ-10 (Международная классификация болезней, 10-й пересмотр) загружается в Highload-блок hl_mkb10. Структура:

  • UF_CODE — код диагноза (J06.9, K21.0)
  • UF_NAME — название диагноза
  • UF_PARENT_CODE — код родительской группы (для иерархии)
  • UF_SYNONYMS — бытовые названия (насморк, изжога, мигрень)

Поисковая строка с автоподсказкой: пользователь вводит «болит горло» — система ищет по полю UF_SYNONYMS, находит J02 (острый фарингит) и J03 (острый тонзиллит), подставляет связанные препараты. Связь «диагноз → препарат» хранится в промежуточном Highload-блоке hl_mkb_drugs (поля: UF_MKB_CODE, UF_PRODUCT_ID).

Поиск работает через AJAX-контроллер, результаты кешируются на стороне клиента (sessionStorage) для повторных запросов. На бэкенде — составной индекс по UF_SYNONYMS + UF_NAME для быстрой фильтрации.

Проверка наличия по аптекам и поиск аналогов

Это самая востребованная функция аптечного сайта и основная точка технической сложности. Пользователь хочет знать: есть ли нужный препарат в аптеке рядом с домом, и если нет — какие аналоги доступны.

Архитектура проверки наличия:

Остатки хранятся не в Битриксе — они приходят из учётной системы аптечной сети. Типичные варианты:

  1. 1С:Управление аптечной сетью — выгрузка остатков через REST-сервис по HTTP
  2. Фарматика / М-Аптека плюс — обмен через файлы CSV/XML на FTP
  3. Кастомная система учёта — 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–30 минут. Полная выгрузка — ночью, в течение дня — инкрементальная (только изменения). При 50 аптеках и 15 000 SKU таблица содержит до 750 000 записей — Highload-блок справляется, но нужен индекс по (UF_PRODUCT_ID, UF_PHARMACY_ID).

Вывод на фронте:

На детальной странице препарата — блок «Наличие в аптеках». AJAX-запрос с передачей ID товара возвращает список аптек с остатками. Аптеки сортируются по удалённости от пользователя (геолокация через Geolocation API браузера + расчёт расстояния по формуле Haversine). Каждая строка: название аптеки, адрес, остаток (точное количество или «В наличии» / «Мало» / «Нет»), кнопка «Забронировать».

Точное количество остатков показывать не рекомендуется — оно устаревает за минуты. Лучше три градации: зелёный (>5), жёлтый (1–5), серый (0). Порог настраивается в опциях модуля.

Поиск аналогов:

Когда препарата нет ни в одной аптеке — пользователю предлагаются аналоги. Алгоритм:

  1. Берётся МНН текущего препарата (ACTIVE_SUBSTANCE).
  2. Выбираются все товары с тем же МНН и той же дозировкой — это полные аналоги (дженерики).
  3. Если совпадений мало — расширяется до той же АТХ-группы 4-го уровня (фармакологические аналоги).
  4. Результат фильтруется по наличию в аптеках — показываются только те, которые реально можно забрать.

Свойство ANALOGS (привязка к элементам) заполняется автоматически cron-скриптом на основе совпадения МНН. Ручное редактирование — для случаев, когда фармацевт хочет добавить или исключить конкретный аналог.

Онлайн-бронирование

Бронирование — не продажа. Оплата не взимается на сайте. Процесс:

  1. Пользователь выбирает препарат и аптеку, нажимает «Забронировать».
  2. Создаётся заявка в CRM Битрикса (лид или сделка) с данными: препарат, аптека, контактный телефон.
  3. Параллельно — запрос в учётную систему аптеки на резервирование.
  4. Пользователь получает SMS/push с номером брони и временем, до которого нужно забрать (обычно 24–48 часов).
  5. При истечении срока — автоматическая отмена бронирования, возврат в свободный остаток.

Для рецептурных препаратов бронирование доступно, но при получении обязательно предъявление рецепта — это фиксируется в условиях бронирования.

Интеграция с МДЛП

Маркировка лекарств через систему «Честный ЗНАК» (МДЛП — мониторинг движения лекарственных препаратов) обязательна. На сайте это отражается так:

  • Каждый препарат содержит GTIN (MDLP_GTIN) — по нему можно проверить подлинность на сайте «Честного ЗНАКа».
  • На детальной странице — ссылка «Проверить подлинность» с формированием URL на checkmark.crpt.ru.
  • При бронировании фиксируется серийный номер упаковки (если аптека передаёт эту информацию через API).

Schema.org для фармацевтики

Микроразметка schema.org/Drug на детальных страницах:

  • nonProprietaryName — МНН
  • activeIngredient — действующее вещество
  • dosageForm — форма выпуска
  • drugClass — фармакологическая группа
  • manufacturer — производитель
  • availableStrength — дозировка
  • prescriptionStatusOTC или PrescriptionOnly
  • isAvailableGenerically — наличие дженериков (true/false)

Эта разметка помогает поисковым системам правильно индексировать каталог и формировать расширенные сниппеты.

Этапы проекта

Этап Работы Срок
Аналитика и проектирование Маппинг номенклатуры, интеграционные контракты, UX-прототипы 2–3 недели
Каталог и поиск Инфоблоки, HL-блоки, поиск по МКБ-10, фильтры 3–4 недели
Наличие и бронирование Интеграция с учётной системой, геолокация, бронирование 4–5 недель
Аналоги и Schema.org Алгоритм подбора аналогов, микроразметка, SEO 2 недели
Тестирование Проверка обмена данными, нагрузка на HL-блок остатков 1–2 недели
Запуск Наполнение каталога, обучение фармацевтов-редакторов 1 неделя