Редактирование товара#
Kоманда Характеристики -> атрибуты#
Эта команда находится на странице редактирования товара , в верхних действиях формы.
Назначение команды: взять данные из поля Характеристики (specs) и перенести их в фильтры/атрибуты товара, которые используются как структурированные фильтры и значения.
Что именно делает команда#
Команда:
- Берет текущий список характеристик товара из формы редактирования.
- Ищет подходящие атрибуты товара по имени характеристики.
- Преобразует текстовые значения характеристик в нужный тип атрибута.
- Записывает результат в:
- Свободные значения для обычных значений,
- Заданные варианты для атрибутов с вариантами выбора.
После выполнения показывается уведомление со счетчиками:
PAV— сколько свободных значений было создано или обновлено.PAO— сколько атрибутов с заданными вариантами было обновлено.skipped— сколько значений пропущено.unchanged— сколько значений уже совпадало и не потребовало записи.
Что команда не делает#
Команда:
- не создает новые глобальные фильтры;
- не создает новые заданные варианты фильтров;
- не привязывает атрибут к категории;
- не заменяет мастер Масового изменения товаров
Характеристики → фильтры; - не переписывает логику отображения вкладки
Характеристикина сайте; - не сохраняет всю карточку товара целиком.
Это важно: команда синхронизирует значения атрибутов, но не решает задачи первичной настройки фильтров для конкретного каталога схемы.
Если глобальный фильтр с именем параметра существует, но не привязан к основной категории товара, команда его проигнорирует.
Откуда берутся данные#
Команда читает характеристики из текущего состояния формы редактирования.
Это значит:
- если вы только что изменили характеристики в форме и еще не нажали
Сохранить, команда все равно возьмет эти текущие значения; - при этом сама команда не сохраняет остальные изменения формы автоматически;
- если после синхронизации закрыть страницу без сохранения, атрибуты уже могут быть записаны в базу, а сами изменения в в таблице характеритик нет.
Практический вывод: если вы меняли блок Характеристики, после синхронизации лучше сохранить карточку товара, чтобы и характеристики и фильтры не разошлись.
Какие фильтры участвуют в синхронизации#
Команда работает не со всеми атрибутами в системе, а только с кандидатами:
- фильтры, которые уже заполнены у этого товара;
- фильтры основной категории товара.
Если у товара не задана основная категория, команда сможет обновлять только те фильтры, которые уже были привязаны к товару раньше.
Если фильтр существует в системе, но:
- не привязан к основной категории товара;
- или еще не заполнен у товара,
то команда его не подхватит, даже если имя характеристики совпадает.
Иными словами, для изменения или создания фильтра будет достаточно одного из двух условий: - фильтр уже “привязан к основной категории товара”; - фильтр “уже есть у товара”;
Команда не сработает только если фильтр и не в основоной категории, и отсутствует у товара.
Как происходит сопоставление по имени#
Сравнение идет не по “сырому” тексту, а по нормализованному имени.
Нормализация делает следующее:
- убирает лишние пробелы, переносы строк и неразрывные пробелы;
- приводит строку к нижнему регистру;
- приводит разные тире и кавычки к одному виду;
- может убрать единицу измерения в конце имени, если она известна системе.
Пример:
Параметр в характеристиках: Диапазон затемнения, DIN
Фильтр в системе: Диапазон затемненияТакое сопоставление считается валидным, если DIN известна как единица измерения.
Что происходит с дублями#
Если в характеристиках несколько раз встречается одна и та же характеристика с одинаковым нормализованным именем, используется последнее встретившееся значение.
Пример:
Мощность = 1 кВт
Мощность = 2 кВтВ синхронизацию пойдет 2 кВт.
Рекомендуемый порядок работы#
- Убедитесь, что у товара указана правильная основная категория.
- Убедитесь, что нужные фильтры уже существуют и привязаны к этой категории.
- Заполните или поправьте таблицу
Характеристикина конкретном товаре. - Запустите команду
Характеристики -> атрибуты. - Проверьте счетчики в уведомлении.
- Посмотрите
Свободные значенияиЗаданные вариантыи убедитесь, что значения легли правильно. - Если вы меняли Характеристики в таблице до запуска команды, сохраните карточку товара.
Когда использовать другую механику#
Если задача состоит не в переносе значений из таблицы в филтры, а в подготовке структуры каталога, эта команда не подойдет.
Нужна другая логика, если требуется:
- создать новый фильтр;
- привязать фильтр к категории;
- создать отсутствующие варианты опций;
- массово сопоставить характеристики нескольких товаров с фильтрами категории.
В таких случаях ориентируйтесь на мастер массового изменения товаров Характеристики → фильтры, а не на эту точечную кнопку в карточке товара.
Коротко#
Характеристики -> атрибуты — это быстрый синк уже существующих характеристик товара в уже существующую схему фильтров.
Команда хорошо работает, когда:
- филтры уже созданы;
- основная категория товара настроена;
- опции и единицы измерения заведены корректно;
- Таблица фильтров этого товара заполнена аккуратно и однозначно.
Команда плохо подходит для первичной настройки каталога, создания новых атрибутов и исправления плохо нормализованных справочников.
Более подробный разбор работы команды#
Поддерживаемые типы атрибутов#
Команда умеет синхронизировать два больших класса данных:
- свободные значения:
textnumberbooleanrange
- значения через опции:
selectmultiselect
Ниже описано поведение по каждому типу.
Тип text#
Для текстового атрибута команда:
- берет строку как есть;
- обрезает пробелы по краям;
- записывает значение в
value_text.
Пустая строка не записывается и считается пропуском.
Тип boolean#
Для булевых атрибутов команда понимает ограниченный набор значений.
Положительные значения:
1trueyesдаестьon
Отрицательные значения:
0falsenoнетoff
Если значение не распознано, атрибут попадет в skipped.
Пример:
Пылеудаление = даБудет записано как true.
Тип number#
Для числовых атрибутов команда:
- извлекает из строки число;
- пытается определить единицу измерения;
- при необходимости переводит значение в базовую единицу атрибута;
- записывает результат в числовые поля значения.
Примеры:
Мощность = 2 кВтЕсли базовая единица атрибута Вт, в атрибут будет записано 2000.
Напряжение = 220Если единица в значении не указана, считается, что число уже задано в базовой единице атрибута.
Важно:
- если в строке найдено несколько чисел, для типа
numberберется первое; - если единица указана, но не может быть однозначно сопоставлена с единицей атрибута, значение будет пропущено;
- если у атрибута не настроена базовая единица, конвертация невозможна и значение будет пропущено.
Тип range#
Для диапазона команда:
- извлекает одно или два числа;
- при необходимости переводит их в единицу атрибута;
- записывает минимум и максимум в диапазонные поля.
Примеры:
Диапазон затемнения = 5-13
Диапазон затемнения = 5 — 13 DINОба варианта корректно распознаются как диапазон.
Если найдено только одно число, оно будет использовано и как минимум, и как максимум.
Если числа указаны в обратном порядке, команда поменяет их местами автоматически.
Типы select и multiselect#
Для атрибутов с вариантами выбора команда:
- разбивает строку на кандидаты;
- ищет каждый вариант среди уже существующих
attribute_options; - записывает найденные
option_id.
Разделителями считаются:
- запятая;
- точка с запятой;
- вертикальная черта
|; - перенос строки;
- в отдельном случае
/с пробелами по краям.
Примеры:
Цвет = Красный, Синий
Комплектация = База | ТумбаОсобенности:
- для
selectдолжен получиться ровно один вариант, иначе будетskipped; - для
multiselectможно передать несколько вариантов; - если хотя бы один вариант не найден в справочнике опций этого атрибута, весь атрибут будет пропущен;
- команда не создает отсутствующие опции автоматически.
Как сопоставляются единицы измерения#
Единица определяется по текстовому токену из значения и сравнивается с единицами, доступными атрибуту.
Для сопоставления используются:
symbol;name;base_symbol.
Сравнение тоже нормализуется:
- без учета регистра;
- без пробелов;
- без точек;
- с приведением верхних и нижних индексов цифр к обычным цифрам.
Если одна и та же подпись может подойти к нескольким единицам атрибута, значение считается неоднозначным и будет пропущено.
Когда значение считается неизменным#
Команда не переписывает данные без необходимости.
Значение считается неизменным, если:
- у
booleanуже записан тот жеtrue/false; - у
numberтекущее и новое число совпадают с учетом допуска0.000001; - у
rangeсовпадают и минимум, и максимум; - у
textсовпадает текст послеtrim; - у
selectиmultiselectсовпадает набор выбранных опций.
Такие случаи попадают в unchanged.
Почему появляются skipped#
Типовые причины:
- имя характеристики совпало, но значение нельзя разобрать под тип атрибута;
- булево значение не входит в допустимый словарь;
- для
selectпришло несколько вариантов вместо одного; - один или несколько вариантов опции отсутствуют в справочнике атрибута;
- указана неизвестная или неоднозначная единица измерения;
- у числового атрибута не настроена базовая единица;
- атрибут не попал в список кандидатов, потому что не связан с первичной категорией и еще не заполнен у товара.
Где смотреть результат в админке#
После синхронизации проверьте группу связей Фильтры у товара:
Свободные значения— сюда попадутtext,number,boolean,range;Заданные варианты— сюда попадутselectиmultiselect.
Если вы ожидали изменения на витрине во вкладке Характеристики, важно помнить:
- вкладка
Характеристикина странице товара строится изspecs; - блоки и механики, использующие структурированные атрибуты, читают уже синхронизированные атрибуты;
- сама синхронизация не заменяет и не очищает исходный список
specs.