При настройке обмена данными между 1С и внешними системами (например, интернет-магазином на базе Bitrix или другими CMS) специалисты часто сталкиваются с проблемой: в файле выгрузки xml (стандарт CommerceML) цена товара не соответствует той, которую пользователь видит в карточке или прайс-листе. Особенно странно это выглядит, когда в поле Представление указана одна цена, а в поле ЦенаЗаЕдиницу — совершенно другая.
Рассмотрим подробнее, почему так происходит в конфигурации 1С:Управление торговлей 10.3, и проанализируем механизмы, которые влияют на формирование этих значений.
Основная причина расхождений кроется в логике работы с единицами измерения. В 1С:УТ 10.3 у каждой номенклатурной позиции может быть несколько единиц измерения, связанных между собой через коэффициенты. Давайте разберем, как это работает на практике. Система оперирует следующими понятиями:
Когда система формирует XML-файл, она зачастую пытается привести все цены к базовой единице измерения. Если цена в системе была установлена не за базовую единицу, а за упаковку с коэффициентом, отличным от единицы, 1С выполнит автоматический пересчет.
Проанализируем ситуацию, описанную в теме. В 1С цена отображается как 20,3 BYN, но в XML-файле мы видим значение 30.53 BYN. Выясним причину, применив математический расчет. Автор указал, что обнаружил в карточке товара коэффициент 0,665.
Формула, по которой работает выгрузка, выглядит следующим образом:
Цена в системе / Коэффициент единицы измерения = Цена за базовую единицу
Подставим значения: 20,3 / 0,665 ≈ 30,5263.... При округлении до двух знаков после запятой мы получаем именно те самые 30.53, которые попали в XML. Таким образом, система «думает», что 20,3 — это цена за дробную часть товара, и вычисляет стоимость целой единицы.
В структуре XML-обмена (CommerceML) эти два поля имеют разное назначение, что и приводит к путанице:
1. ЦенаЗаЕдиницу — это строго числовое поле. Оно предназначено для автоматических расчетов на стороне принимающего сайта. Алгоритм выгрузки 1С жестко пересчитывает это значение к базовой единице измерения товара.
2. Представление — это текстовая строка, предназначенная для чтения человеком. В некоторых версиях правил обмена в это поле попадает «сырое» значение из документа или регистра цен без учета пересчета коэффициентов. В итоге мы получаем ситуацию, когда текстовое описание говорит об одной цене, а расчетный блок XML-файла — о другой.
Если вы обнаружили подобное расхождение, выполним следующие шаги по проверке справочников:
Номенклатура.Посмотрим на пример правильной настройки. Если товар продается штуками, и в XML должна уходить цена 22,8 BYN, то в карточке это выглядит так:
Единица: шт.
Коэффициент: 1
Цена за единицу: 22,8
Результат в XML: 22.8 BYN
Также стоит проверить настройки самого узла обмена. Перейдем в меню Сервис — Обмен данными с сайтом — Настроить узлы обмена. В настройках выгрузки товаров обратите внимание на параметры формирования цен. Иногда там может быть установлен принудительный отбор или указание конкретной единицы измерения для выгрузки. Если 1С находит несоответствие между единицей в типе цен и единицей для выгрузки, она инициирует пересчет через Коэффициент.
Для корректной работы обмена и избежания математических погрешностей при округлении, рекомендуем придерживаться следующих правил:
— Всегда устанавливайте базовую единицу с коэффициентом 1. Это «фундамент» всех расчетов в системе.
— Старайтесь не использовать дробные коэффициенты меньше единицы, если в этом нет острой производственной необходимости. Обычно упаковки кратны базовым единицам (например, коробка = 10 шт, коэффициент 10).
— Если вы изменили коэффициент в уже существующей карточке товара, обязательно перепроведите документ Установка цен номенклатуры для этой позиции. Цены хранятся в Регистре сведений в привязке к единице измерения, и простого изменения в справочнике может быть недостаточно для обновления записей в базе данных.
Проанализировав ситуацию, мы видим, что 1С работает логично: она пытается привести данные к единому знаменателю (базовой единице) для корректной передачи на сайт. Внимательность при заполнении коэффициентов в справочнике ЕдиницыИзмерения — залог правильных цен в вашем интернет-магазине.