При обміні товарами між 1С та 1С-Бітрікс ціни — найчутливіша частина. Невідповідність типів цін, дублювання, помилки в GUID — на знайомій нам практиці до 30% звернень клієнтів пов'язані з некоректним перенесенням вартості. Ми вже допомагаємо компаніям налаштувати безшовну синхронізацію, уникаючи цих проблем. У цій статті розберемо ключові моменти налаштування вивантаження цін: від типів цін до акційних пропозицій та валют. Опишемо покроковий процес, щоб ви могли самостійно усунути типові неполадки або передати задачу спеціалісту.
Як налаштувати типи цін в 1С та Бітрікс?
Ціни передаються з 1С в Бітрікс у складі файлу offers.xml стандартного обміну CommerceML. Кожна торгова пропозиція містить блок <Цены> з одним або кількома типами цін. У Бітрікс кожен тип ціни з 1С відповідає типу ціни в b_catalog_price_type та запису в b_catalog_price. Щоб зіставлення пройшло коректно, важливо правильно налаштувати ідентифікатори. В 1С тип ціни має унікальний GUID, який має бути переданий в Бітрікс. Якщо GUID не збігається, ціна не прив'яжеться до товару.
Приклад відповідності типів цін:
| Тип ціни в 1С | Символьний код у Бітрікс |
|---|---|
| Роздрібна | ROZN |
| Оптова | OPT |
| Дилерська | DIALER |
| Закупівельна | PURCHASE |
Відповідність налаштовується в Каталог → Налаштування обміну з 1С → Типи цін. Ми рекомендуємо використовувати символьні коди — так точніше мапінг.
Чому ціни не оновлюються після синхронізації?
Часта причина — незбіг зовнішнього коду (XML_ID) товару або торговельної пропозиції в 1С та Бітрікс. Якщо GUID змінився в 1С, але не оновився в Бітрікс, ціна не запишеться. Ще одна причина — застарілі курси валют, коли мультивалютні ціни конвертуються невірно. У нашій практиці був випадок, коли через помилку в обробнику 1С замість акційної ціни підставлялася базова, і на сайті показувалася завищена вартість. Рішення — перевіряти лог обміну та налаштування мапінгу.
Окрема синхронізація цін (полегшений XML)
Повний обмін каталогом — важка операція. При частих змінах цін (акції, динамічне ціноутворення) потрібен більш легкий механізм. Ми використовуємо полегшений XML-файл prices.xml, який містить лише ціни. Це в 5 разів скорочує час обміну.
<КоммерческаяИнформация> <ПакетПредложений> <Предложения> <Предложение> <Ид>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']); Порівняємо повний та полегшений обмін:
| Характеристика | Повний обмін (CommerceML) | Полегшений XML (тільки ціни) |
|---|---|---|
| Обсяг даних | Весь каталог | Тільки ціни |
| Час синхронізації | Від кількох хвилин до годин | Секунди |
| Необхідна частота | Раз на добу | Кожні 5-10 хвилин |
| Ризик помилок | Високий (через великий обсяг) | Низький |
Як налаштувати полегшене вивантаження цін покроково
- В 1С налаштуйте вивантаження лише торговельних пропозицій з цінами в окремий XML-файл (наприклад,
prices.xml). - Розмістіть файл на веб-сервері, доступному для Бітрікс.
- У Бітрікс створіть обробник-компонент, який приймає цей XML і оновлює ціни через
CCatalogProduct::SetPrice. - Налаштуйте агент (наприклад, на кожні 5 хвилин) для перевірки та завантаження нового файлу.
- Перевірте логи на випадок помилок — додайте запис у
b_event_log.
Цей метод працює в 5 разів швидше за повний обмін.
Стара ціна та акційна ціна
У Бітрікс є поле 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С передає кілька типів цін одночасно, Бітрікс показує покупцеві ту, яка відповідає його групі.
Що входить у налаштування вивантаження цін?
У рамках проекту з налаштування синхронізації ми:
- Проводимо аудит поточного обміну та типів цін
- Налаштовуємо відповідність типів цін в 1С та Бітрікс
- Розробляємо обробник полегшеного обміну цінами (якщо потрібно)
- Налаштовуємо акційні та старі ціни
- Забезпечуємо коректне відображення мультивалютних цін
- Тестуємо синхронізацію та виправляємо помилки
- Надаємо документацію та навчаємо вашого адміністратора
Наш досвід — багаторічні інтеграції з 1С, понад 30 проектів із синхронізації. Ми гарантуємо точність перенесення цін та стабільну роботу обміну.
Якщо вам потрібне налаштування вивантаження цін з 1С в Бітрікс — пишіть нам, оцінимо проект під ключ. Зв'яжіться для консультації.







