Как изменить наименование номенклатуры при выгрузке из 1С:УНФ в интернет-магазин Битрикс

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

При интеграции 1С:Управление нашей фирмой (УНФ) с интернет-магазинами на базе CMS Битрикс часто возникает задача подмены стандартного Наименования номенклатуры на другие данные. Например, на сайте требуется отображать Полное наименование, которое содержит маркетинговое описание, или собирать заголовок товара из нескольких реквизитов (наименование + артикул + цвет). Рассмотрим подробно, как это реализовать различными способами: от программной модификации до использования стандартных инструментов.

Способ 1: Модификация макета СКД в справочнике настроек интеграции

Проанализируем архитектуру обмена в типовых решениях УНФ. Основная логика формирования данных для выгрузки в формате XML (CommerceML) часто заложена в систему компоновки данных (СКД). Выясним, где именно хранятся эти настройки.

В конфигурации существует справочник НастройкиИнтеграцииСИнтернетМагазином. Именно в нем содержатся макеты, определяющие, какие поля номенклатуры попадут в файл обмена. Разберем по шагам процесс изменения запроса:

  1. Откроем справочник НастройкиИнтеграцииСИнтернетМагазином через «Все функции» (или «Функции для технического специалиста»).
  2. Найдем используемую настройку обмена и перейдем к ее макетам. Внутри вы обнаружите схему компоновки данных, которая отвечает за выборку товаров.
  3. В макете СКД найдем запрос, выбирающий поле Наименование.
  4. Изменим текст запроса так, чтобы вместо стандартного поля выбиралось НаименованиеПолное или значение из Дополнительных реквизитов.

Например, в запросе СКД можно найти фрагмент:


ВЫБРАТЬ
    Номенклатура.Наименование КАК Наименование,
    Номенклатура.Артикул КАК Артикул
ИЗ
    Справочник.Номенклатура КАК Номенклатура

Для подмены наименования на полное, мы можем изменить его следующим образом:


ВЫБРАТЬ
    ВЫБОР
        КОГДА Номенклатура.НаименованиеПолное <> ""
            ТОГДА Номенклатура.НаименованиеПолное
        ИНАЧЕ Номенклатура.Наименование
    КОНЕЦ КАК Наименование,
    Номенклатура.Артикул КАК Артикул
ИЗ
    Справочник.Номенклатура КАК Номенклатура

Важный момент: Прямое изменение макета в основной конфигурации приведет к сложностям при обновлении. Поэтому рассмотрим следующий критически важный шаг.

Способ 2: Использование расширений для сохранения изменений

Чтобы ваши правки не были затерты при очередном обновлении 1С:УНФ, крайне рекомендуется использовать механизм Расширений конфигурации. Проанализируем, как правильно перенести изменения в расширение:

  1. Создадим новое расширение или откроем существующее.
  2. Добавим в расширение справочник НастройкиИнтеграцииСИнтернетМагазином.
  3. Скопируем макет СКД из основной конфигурации в расширение.
  4. Произведем правку запроса или настроек полей в макете внутри расширения.

Таким образом, система будет приоритетно использовать макет из расширения, а основная конфигурация останется на поддержке поставщика. Это позволит пользователю в любой момент отключить модификацию, просто деактивировав расширение.

Способ 3: Использование внешнего модуля обмена от «Битрикс»

Если стандартный механизм УНФ кажется слишком жестким, рассмотрим альтернативу — официальный модуль обмена, который выпускает компания «Битрикс». Посмотрим на его преимущества:

Способ 4: Настройка на стороне CMS (1С-Битрикс)

Иногда проще изменить логику обработки данных не в 1С, а на стороне сайта. Проанализируем ситуацию: если в XML-файл (import.xml) попадают оба поля (и короткое наименование, и полное как описание или свойство), мы можем перехватить их на стороне Битрикса.

Разберем два пути решения на стороне сайта:

  1. Настройка компонента импорта: В административной панели сайта в настройках интеграции с 1С можно указать, какое поле из входящего файла сопоставлять с заголовком товара.
  2. Использование обработчиков событий: В файле bitrix/php_interface/init.php можно написать скрипт на языке PHP, который будет срабатывать в момент импорта товара.

Пример логики для init.php (схематично):

Скрипт перехватывает событие OnBeforeIBlockElementUpdate. Если в данных от 1С присутствует заполненный доп. реквизит «Полное наименование», скрипт заменяет стандартное поле NAME на значение этого реквизита перед сохранением в базу данных сайта.

Способ 5: Механизм соответствия полей в УНФ 3.0+

В актуальных редакциях 1С:Управление нашей фирмой (версии 3.0 и выше) разработчики добавили более современные инструменты управления обменом. Посмотрим на раздел «Выгрузка данных» в узле настройки интеграции.

В некоторых версиях конфигурации доступна таблица соответствия. Рассмотрим алгоритм проверки:

  1. Зайдем в настройки интеграции с сайтом.
  2. Перейдем на вкладку настроек выгрузки номенклатуры.
  3. Проверим наличие кнопки или гиперссылки «Настройка соответствия полей».
  4. Если данный функционал доступен, мы можем прямо в интерфейсе указать, что поле «Наименование» для сайта должно заполняться из реквизита НаименованиеДляПечати.

Способ 6: Использование дополнительных реквизитов

Выясним еще один «хитрый» способ без программирования. Если ваш обмен настроен так, что он выгружает все Дополнительные реквизиты номенклатуры, мы можем:

  1. Создать в 1С дополнительный реквизит «Наименование для сайта».
  2. Заполнить его нужными значениями (можно массово обработкой).
  3. На стороне Битрикса, в настройках инфоблока, сделать это свойство обязательным и использовать его как основной заголовок в шаблонах отображения сайта.

Этот подход удобен тем, что менеджеры в 1С могут управлять названием товара для сайта отдельно от учетного названия, которое используется во внутренних складских документах.

Выводы и рекомендации

Мы рассмотрели несколько методов подмены наименования. Подведем итоги проанализированных ситуаций:

Помните, что любое изменение в структуре обмена требует тщательного тестирования на копии базы, чтобы убедиться в корректности выгрузки характеристик, цен и остатков, так как изменение запроса в СКД может косвенно повлиять на связанные поля.

← На главную