Как исправить выгрузку цен из 1С:Управление торговлей на сайт, если выгружается один идентификатор типа цены для разных цен?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет IT и автоматизация бизнеса
← На главную

При настройке обмена между конфигурацией 1С:Управление торговлей (редакция 11) и веб-сайтом разработчики и администраторы периодически сталкиваются с ситуацией, когда в выгружаемом XML-файле обмена (обычно offers.xml) присутствуют два разных числовых значения цен, однако тег <ИдТипаЦены> содержит один и тот же уникальный идентификатор. Из-за этого CMS на стороне сайта не может корректно разделить прайс-листы и перезаписывает ценники одной позицией.

Рассмотрим подробнее причины возникновения этой проблемы и проанализируем доступные способы ее решения.

Выясним причину дублирования идентификаторов цен

Проанализируем ситуацию, почему платформа 1С может подставлять одинаковый GUID для разных типов цен при формировании файла CommerceML:

  1. Привязка нескольких соглашений к одному виду цены: Если выгрузка настроена по типовым соглашениям с клиентами, но в настройках обоих соглашений на вкладке условий продаж выбран один и тот же основной ВидЦены, 1С подставляет GUID этого общего вида цены для обеих выгружаемых колонок.
  2. Динамические и рассчитываемые цены: В некоторых релизах выгрузки рассчитываемые виды цен транслируют идентификатор базового вида цены вместо собственного GUID.
  3. Копирование элементов справочника: Если новый вид цены создавался простым копированием существующего элемента в справочнике ВидыЦен, у объектов базы может сохраниться дублирующийся идентификатор или некорректная ссылка в служебных регистрах.

Способ 1. Разделение выгрузки на два отдельных узла обмена

Разберем по шагам наиболее быстрое и практическое решение, если штатный модуль обмена объединяет типы цен в рамках одного процесса выгрузки:

  1. Перейдем в раздел настройки интеграции с сайтом в 1С:УТ 11 (раздел Администрирование — Синхронизация данных — Узлы обмена с сайтом).
  2. Создадим первый узел выгрузки и в отборе по видам цен или соглашениям явно укажем только один вид цены (например, «Розничная»).
  3. Создадим второй узел выгрузки, где в отборах укажем исключительно второй вид цены (например, «Оптовая»).
  4. Запустим выгрузку последовательно. При таком подходе система формирует независимые потоки данных с корректным разделением информации по ценам.

Способ 2. Корректировка справочников и соглашений в 1С

Посмотрим на алгоритм проверки и настройки соглашений, если выгрузка осуществляется по правилам продаж:

  1. Перейдем в справочник ВидыЦен (раздел CRM и маркетинг) и убедимся, что в системе созданы два абсолютно независимых элемента с уникальными наименованиями.
  2. Если вид цены создавался копированием, создадим новый элемент через кнопку Создать с нуля и пересчитаем цены документом УстановкаЦенНоменклатуры.
  3. Откроем справочник ТиповыеСоглашенияСКлиентами.
  4. В первом соглашении укажем первый вид цены, а во втором — второй вид цены.
  5. Проверим наличие флага Доступно внешним пользователям / для обмена с сайтом на вкладке прочих условий соглашений.

Способ 3. Настройка идентификаторов для внешних CMS

Если для интеграции с сайтом (например, Magento или Bitrix) требуется передавать не стандартный уникальный идентификатор 1С (GUID), а конкретное наименование или символьный код типа цены:

В настройках узла обмена или в свойствах самого вида цены определим специальный идентификатор для сайта. В этом случае модуль выгрузки заменяет системный УИД на заданный строковый код, что позволяет внешнему скрипту на стороне CMS правильно сопоставить прайс-листы по их наименованию или внутреннему коду сайта.

← На главную