Задача: Автоматическое разбиение свойств товара на отдельные характеристики
В интернет-магазине, работающем на 1С-Битрикс, в инфоблоке «1С товары» используется свойство типа «Список» (назовем его Свойство 1 (Свойство 2)). Значения этого свойства хранятся в фиксированном формате:
Название: Значение
Например: Длина: 21мм или Цвет: Красный.
Что требуется реализовать
1. Обработка товаров
- Пройти по всем товарам инфоблока «1С товары».
- Прочитать значение указанного свойства.
2. Разделение строки по первому двоеточию
- Левая часть (до символа
:) - будущее название отдельного свойства. (Пример: Длина, Ширина, Цвет …) - Правая часть (после символа
:) - значение для этого нового свойства. (Пример: 21мм, 10cм, Красный …) - Убрать все лишние пробелы с обеих сторон каждого сегмента. Иными словами, названия и значения не должны содержать начальных и конечных пробелов.
3. Работа со справочником свойств инфоблока
- Проверить, существует ли в том же инфоблоке свойство с названием, полученным из левой части (после очистки от пробелов).
- Если такого свойства нет - автоматически создать новое пользовательское свойство с
- тип: строка (т.е. обычное текстовое поле в карточке товара);
- название: название из левой части (например «Длина»);
- символьный код: придумать логично (прозрачно по названию).
- Если такое свойство уже есть (возможно, раньше было создано вручную) - использовать его, никаких действий по созданию не требуется.
4. Запись
- В созданное (или существующее) свойство записать значение из правой части. То есть теперь у товара появится новое отдельное свойство-характеристика (например, «Длина» → «21мм»).
- Порядок обработки товаров не принципиален, но каждое новое свойство должно появиться автоматически, когда оно встречается впервые.
5. Исключения (файл лога)
- Если в поле свойства исходно вовсе отсутствует символ двоеточия («:») - считать, что строка записана в неправильном формате.
- Такой товар пропустить (не пытаться создавать или записывать что-либо).
- Зафиксировать
- ID товара (или артикул) -; чтобы можно было определять неприведенные товары;
- исходную строку из свойства - для ручного исправления администратором.
- Лог вести в удобном формате (текстовый CSV, Битриксовое сообщение письмом, специальная таблица - по усмотрению разработчика или указыванию заказчика). Работоспособность и ясность фиксации важны.
Ожидаемый результат
- Автоматическая миграция товаров: каждая пара (название ⇒ значение) превращается в своё отдельное свойство.
- Администратор магазина после выполнения такой обработки получит много новых отдельно стоящих пользовательских полей для каждого товара без единого страдания по ручной разборке вручную.