Настройка выгрузки цен из 1С в 1С-Битрикс
Цены передаются из 1С в Битрикс в составе файла offers.xml стандартного обмена CommerceML. Каждое торговое предложение содержит блок <Цены> с одним или несколькими типами цен. В Битрикс каждый тип цены из 1С соответствует типу цены в b_catalog_price_type и записи в b_catalog_price.
Типы цен в Битрикс
В Битрикс можно настроить несколько типов цен: розничная, оптовая, дилерская, закупочная. Таблица b_catalog_price_type хранит типы, b_catalog_price — конкретные цены для каждого торгового предложения по каждому типу.
При обмене с 1С важно, чтобы названия типов цен в 1С совпадали с символьными кодами или именами типов цен в Битрикс — иначе цены не сопоставятся. Соответствие настраивается в Каталог → Настройки обмена с 1С → Типы цен.
Отдельная синхронизация цен
Полный обмен каталогом — тяжёлая операция. При частых изменениях цен (акции, динамическое ценообразование) нужен более лёгкий механизм.
Через облегчённый XML. 1С формирует prices.xml только с ценами (без товарных данных):
<КоммерческаяИнформация>
<ПакетПредложений>
<Предложения>
<Предложение>
<Ид>GUID-торгового-предложения</Ид>
<Цены>
<Цена>
<ИдТипаЦены>Розничная</ИдТипаЦены>
<ЦенаЗаЕдиницу>1250.00</ЦенаЗаЕдиницу>
<Валюта>RUB</Валюта>
</Цена>
</Цены>
</Предложение>
</Предложения>
</ПакетПредложений>
</КоммерческаяИнформация>
Обработчик на стороне Битрикс парсит XML и обновляет b_catalog_price по XML_ID торгового предложения.
Обновление цены в Битрикс:
$priceData = CCatalogProduct::GetByID($productId);
CCatalogProduct::SetPrice($productId, $priceTypeId, $price, $currency);
// или напрямую:
CCatalogPrice::Update($priceId, ['PRICE' => $price, 'CURRENCY' => 'RUB']);
Старая цена и акционная цена
В Битрикс есть поле CATALOG_PRICE_OLD (старая цена для отображения зачёркнутой). Если в 1С два типа цен — «базовая» и «акционная» — маппируем:
- Акционная → основной тип цены в Битрикс (
BASE) - Базовая → поле старой цены (
b_iblock_element_propс кодомOLD_PRICEили через тип цены)
Другой вариант — создать специальный тип цены «Старая цена» в Битрикс и отображать его в шаблоне компонента catalog.element как зачёркнутую.
Валюты
Битрикс поддерживает мультивалютные цены. В b_catalog_price поле CURRENCY хранит код валюты. При обмене с 1С цены передаются в валюте, указанной в 1С. Конвертация в другие валюты — через курсы в b_currency_rate, настраивается в Магазин → Валюты.
Если 1С передаёт цены в USD, а на сайте показываем в RUB — убеждаемся, что курс актуален. Курс можно обновлять автоматически через ЦБ РФ: модуль currency имеет встроенный агент обновления.
Групповые цены и скидки
Если на сайте действуют групповые цены (для B2B-клиентов другая цена), в Битрикс они реализуются через тип цены + группу пользователей: в b_catalog_group настраивается, какой тип цены доступен для какой группы. 1С передаёт несколько типов цен одновременно, Битрикс показывает покупателю ту, которая соответствует его группе.







