Настройка обмена 1С:Аптека и 1С-Битрикс
Онлайн-аптека на Битрикс — проект с жёсткими регуляторными требованиями: маркировка, сертификаты, рецептурные ограничения. При интеграции с 1С:Аптека всё это нужно учитывать на уровне обмена данными. Стандартный CommerceML-модуль существует, но отраслевая специфика требует доработок.
Структура данных в 1С:Аптека
Номенклатура аптечного ПО хранит значительно больше атрибутов, чем стандартный товарный каталог:
- МНН (международное непатентованное наименование)
- Форма выпуска (таблетки, капсулы, сироп...)
- Дозировка (500 мг, 1 г...)
- Производитель и страна производства
- Признак рецептурного отпуска
- Серия и срок годности (партионный учёт)
- Штрихкод (EAN-13, Datamatrix для маркировки)
На сайт нужно передавать большинство из этих атрибутов. Стандартный CommerceML передаёт наименование, артикул и цену. Всё остальное — через ДополнительныеРеквизиты или кастомную доработку выгрузки.
Маркировка и честный знак
Лекарственные препараты подлежат обязательной маркировке (система «Честный знак», ГИС МДЛП). При продаже через интернет-аптеку нужно:
- Передавать код Datamatrix с упаковки в заказ
- После отгрузки — фиксировать выбытие в МДЛП
Маркировочный код хранится в 1С:Аптека в регистре сведений по каждой единице товара. В Битрикс при оформлении заказа нужно передавать не просто артикул, а конкретную серию и маркировочный код — это нарушает типовую архитектуру корзины.
Практическое решение: магазин на Битрикс работает как «витрина» (показывает наличие и цены), а реальное резервирование с привязкой к маркировочным кодам происходит в 1С:Аптека при подтверждении заказа. Обмен: заказ из Битрикс → 1С:Аптека, в ответ — подтверждение с конкретными серийными номерами или отказ (если нужная серия уже продана).
Рецептурные препараты
Рецептурные препараты нельзя продавать онлайн без рецепта. На уровне интеграции это означает:
- При выгрузке номенклатуры из 1С:Аптека передаётся признак
ОтпускПоРецепту = Да/Нет - В Битрикс это свойство инфоблока, которое управляет отображением кнопки «Купить»
- Для рецептурных препаратов — только кнопка «Забронировать» или информационное отображение без добавления в корзину
Это реализуется через условие в шаблоне компонента каталога Битрикс:
if ($arItem['PROPERTIES']['IS_PRESCRIPTION']['VALUE'] === 'Да') {
// Показываем только кнопку "Узнать наличие"
} else {
// Стандартная кнопка "В корзину"
}
Остатки и сроки годности
Аптека продаёт товары с партионным учётом — одна позиция номенклатуры может иметь несколько партий с разными сроками годности. На сайт обычно достаточно передавать суммарный остаток. Но если срок годности критичен для покупателя (например, в карточке товара указывается ближайший срок годности партии) — нужно передавать остатки в разрезе партий.
CommerceML стандартно не поддерживает остатки по партиям. Это реализуется через ДополнительныеРеквизиты товара в XML: добавляем реквизит СрокГодности с минимальным сроком из имеющихся партий.
Настройка обмена: ключевые параметры
В узле обмена 1С:Аптека с сайтом:
- Фильтр номенклатуры: только «Товары для продажи» (исключить внутренние наборы, полуфабрикаты)
- Вид цены: розничная (для сайта) или оптовая (для B2B-аптечных сетей)
- Склады: только торговый зал / склад интернет-заказов
- Передача реквизитов: МНН, форма выпуска, дозировка, признак рецептурного отпуска
Кейс: аптечная сеть + агрегатор
Региональная аптечная сеть (40 точек) подключилась к агрегатору «Apteka.ru». Агрегатор требует определённый формат выгрузки (не CommerceML). Параллельно работает собственный сайт на Битрикс.
Решение: настроили два потока выгрузки из 1С:Аптека:
- CommerceML → собственный сайт на Битрикс (стандартный обмен + доработки по реквизитам)
- Кастомный XML (формат агрегатора) → генерируется отдельным регламентным заданием в 1С, выкладывается на FTP
Обе выгрузки обновляют остатки каждые 15 минут — критично для аптечного ассортимента, где популярные позиции расходятся быстро.







