Создание фармацевтического сайта на 1С-Битрикс с интеграцией учёта и МДЛП
Крупная аптечная сеть с 15 000 SKU и 200 аптек обнаружила: на сайте отображались остатки трёхдневной давности. Пользователи оформляли бронь, а в аптеке товара не было. Интеграция с 1С через FTP-файлы ломалась раз в месяц, а поиск аналогов отсутствовал. Мы перепроектировали архитектуру — теперь остатки обновляются каждые 15 минут, а поиск по симптомам обрабатывает 10 000 запросов в день. Стоимость такого проекта — от $6k–12k в зависимости от числа аптек и сложности интеграций.
Почему разработка сайта аптеки на 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С составляет до $2.7k–3.9k за счёт автоматизации обмена.
Вывод на фронте:
На детальной странице — блок «Наличие в аптеках». 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 неделя |
Что входит в результат
Вы получаете готовый к работе сайт с документацией по архитектуре, доступы к администрированию, обучение редакторов и техподдержку на старте. Мы передаём исходные коды и инструкции по интеграции. Получите консультацию по вашему проекту — свяжитесь с нами для предварительной оценки. Закажите разработку сайта аптеки уже сегодня!







