Как добавить и автоматизировать заполнение поля «Наименование для сайта» в 1С

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

При работе с интернет-магазинами часто возникает ситуация, когда стандартных полей Рабочее наименование и Наименование для печати недостаточно. Для SEO-оптимизации и корректного отображения в каталоге сайта требуется более лаконичное или, наоборот, специфически структурированное название. Разберем подробно, как реализовать механизм «Наименования для сайта» в современных конфигурациях 1С (УТ 11, ERP, КА), сохранив при этом возможность автоматического заполнения.

Анализ задачи и выбор метода реализации

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

  1. Добавление реквизита в расширение. Это наиболее правильный путь с точки зрения поддержки конфигурации. Мы добавляем новый реквизит и прописываем программную логику его формирования.
  2. Использование регистра сведений. Подходит, если предполагается хранить множество вариантов имен (для разных маркетплейсов, языков или регионов).
  3. Использование дополнительных реквизитов. Штатный механизм, который, однако, требует доработки в части автоматизации заполнения, чтобы не вводить данные вручную.

Способ 1: Добавление реквизита через расширение конфигурации

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

  1. В расширение заимствуем справочник Номенклатура.
  2. Добавляем новый реквизит НаименованиеДляСайта с типом Строка (длина 150-250 символов).
  3. Выносим реквизит на форму элемента номенклатуры.

Теперь проанализируем, как автоматизировать заполнение. Нам нужно, чтобы при изменении характеристик или записи карточки поле заполнялось по определенному правилу. Разберем пример кода в модуле менеджера или объекта справочника через перехват события ПередЗаписью:


&Перед("ПередЗаписью")
Процедура Расш_ПередЗаписью(Отказ, Замещение)
    // Алгоритм формирования короткого имени
    // Например, берем вид номенклатуры и основные параметры, исключая ГОСТ и производителя
    Если ЭтоНовая() Или Модифицированность() Тогда
        Попытка
            СтруктураИмени = Новый Структура("ТипНоменклатуры, Марка, Размер");
            // Предположим, мы получаем данные из дополнительных реквизитов
            // Здесь должна быть логика аналогичная штатным шаблонам 1С
            НовоеИмяСайта = СокрЛП(ЭтотОбъект.ВидНоменклатуры) + " " + ЭтотОбъект.Артикул;
            ЭтотОбъект.НаименованиеДляСайта = НовоеИмяСайта;
        Исключение
            // Обработка ошибок, чтобы не блокировать запись
        КонецПопытки;
    КонецЕсли;
КонецПроцедуры

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

Если проект масштабный, лучше использовать регистр сведений. Это позволит не загромождать объект Номенклатура лишними данными. Создадим регистр ДополнительныеПредставленияНоменклатуры с измерениями Номенклатура и ВидПредставления (перечисление или справочник), и ресурсом Наименование.

Преимущество этого метода в гибкости. Мы можем программно обрабатывать получение представления в зависимости от контекста (например, при выгрузке на сайт или печати прайс-листа). Выясним причину популярности этого метода: он позволяет хранить историю или разные версии названий для разных площадок (Ozon, Wildberries, собственный сайт).

Автоматизация заполнения существующих данных

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


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	Номенклатура.Ссылка КАК Ссылка,
    |	Номенклатура.Наименование КАК РабочееНаименование
    |ИЗ
    |	Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |	НЕ Номенклатура.ЭтоГруппа";

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл
    НомОбъект = Выборка.Ссылка.ПолучитьОбъект();
    
    // Пример логики: отрезаем всё после определенного символа или слова
    // Допустим, в рабочем наименовании есть символ "=", после которого идет техническая информация
    ПозицияРазделителя = СтрНайти(Выборка.РабочееНаименование, "L=");
    Если ПозицияРазделителя > 0 Тогда
        НомОбъект.НаименованиеДляСайта = СокрЛП(Лев(Выборка.РабочееНаименование, ПозицияРазделителя - 1));
    Иначе
        НомОбъект.НаименованиеДляСайта = Выборка.РабочееНаименование;
    КонецЕсли;
    
    НомОбъект.ОбменДанными.Загрузка = Истина; // Чтобы не срабатывали лишние проверки
    НомОбъект.Записать();
КонецЦикла;

Интеграция с модулем выгрузки на сайт

После того как поле создано и заполнено, его необходимо передать в интернет-магазин. Большинство стандартных модулей обмена (например, с Битрикс) позволяют выбирать, какие реквизиты выгружать в качестве наименования. Рассмотрим шаги настройки:

  1. Откроем настройки узла обмена с сайтом.
  2. Перейдем в раздел соответствия полей номенклатуры.
  3. Укажем, что для поля Наименование (или NAME в XML) нужно брать данные из нашего нового реквизита НаименованиеДляСайта.

Важный момент: проанализируем ситуацию, если поле у какой-то позиции окажется пустым. В коде выгрузки желательно предусмотреть «откат» (fallback) к Наименованию для печати или Рабочему наименованию, чтобы товар не попал на сайт без названия.

Использование группового изменения реквизитов

Если вы не являетесь программистом, для разового заполнения можно воспользоваться встроенным инструментом Групповое изменение реквизитов. В нем есть возможность использовать встроенный язык 1С для вычисления значений. Это позволяет собрать новое имя из существующих доп. реквизитов (Цвет, Размер, Бренд) по формуле прямо «на лету» без написания полноценной обработки.

Таким образом, мы разобрали, что добавление третьего наименования — это комплексная задача, требующая не только создания поля в базе данных, но и настройки механизмов его автоматического поддержания в актуальном состоянии. Использование расширений и грамотная обработка событий записи позволяют сделать этот процесс незаметным для пользователя и удобным для SEO-продвижения вашего сайта.

← На главную