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







