Оборудование покупают по характеристикам. "Подойдёт ли подъёмник к моему боксу" - это расстояние между колоннами, ширина проезда и высота подъёма; "потянет ли сеть" - напряжение питания и энергопотребление. Пока покупатель не увидел эти числа, он не покупает, а звонит менеджеру.
Сложность в том, что у каждого вида техники свой язык описания. Автоподъёмник описывается грузоподъёмностью и синхронизацией, балансировочный станок - диаметром диска и наличием лазерного указателя, набор головок - размером посадочного квадрата. В каталоге компании 116 видов техники, и одним общим набором полей их не описать.
При этом характеристики живут не на сайте. Их ведут в учётной системе: инженеры, товароведы, продуктовые менеджеры. Там появляется новая модель, там у неё уточняют параметры, там же решают, что в этой линейке главное для покупателя, а что - подробность для сравнения.
Почему типовой магазин требует разработчика
Типовой интернет-магазин устроен наоборот: он хранит собственное представление о характеристиках. Свойство заводится в административной панели, порядок вывода настраивается вручную, шаблон карточки перечисляет поля. Значит, каждая новая характеристика - это задача разработчику, а любое расхождение с учётной системой обнаруживается уже на витрине. При 116 видах техники и живом ассортименте такой поток задач не заканчивается никогда.
Нужна была витрина, которая следует за учётной системой сама.
Решение
Карточку собирает справочник, а не вёрстка
Возьмём реальный товар - двухстоечный автоподъёмник, самый подробно описанный в каталоге. Ни состав характеристик, ни их порядок не записаны в вёрстке его карточки. Карточка спрашивает справочник: "что показать для этого товара и в какой последовательности" - и выводит ответ. Справочник наполняется выгрузкой из 1С вместе с самими товарами.
Поэтому первый экран показывает именно то, что инженер счёл главным для двухстоечных подъёмников: грузоподъёмность, напряжение питания, тип синхронизации, способ разблокировки стопоров. Не первые четыре по алфавиту и не первые четыре из базы данных - а четыре главные.
У этого товара заполнена 51 характеристика - больше, чем у любого другого в каталоге. В карточку выходят 23 из них, на первый экран - четыре. Отбор и порядок на каждом шаге - данные из 1С, а не логика в коде.
Каждый вид техники говорит на своём языке
Автоподъёмники двухстоечные и автомобильные сканеры описаны восемнадцатью характеристиками каждый - это сложная техника, которую выбирают долго и придирчиво. Крепёж и расходные материалы обходятся одной-двумя. Общего набора полей, который подошёл бы всем 116 видам, не существует - и придумывать его не стали.
Вместо этого каталог принимает столько характеристик, сколько ведёт учётная система: сейчас их 492, и все они вместе с 10 253 вариантами значений созданы выгрузками из 1С. Ни одна не заводилась вручную в административной панели.
Новая характеристика доходит до витрины сама
Отдельной выгрузки "структура каталога" не существует: описание характеристик приходит вместе с товарами, обычной выгрузкой. Очередь выгрузок проверяется каждые ~10 секунд, поэтому изменение, сделанное инженером в 1С, доходит до витрины в течение минут.
Если характеристики на сайте ещё нет, она создаётся сама - вместе со всеми вариантами значений. Если есть - обновляется. В обоих случаях в справочник показа записывается, техническая ли это характеристика и какое место она занимает в карточке и в фильтре.
Разработчик не участвует ни на одном шаге. Новая характеристика, переименование, смена порядка, снятие с витрины - это правки в учётной системе, а не выпуск новой версии сайта.
Что показать и в каком порядке - решает 1С
Одна запись справочника - это характеристика и несколько чисел при ней. Технический признак отделяет параметры техники от служебных полей. Два номера задают очерёдность: первая очередь - главное, вторая - подробности. И отдельно те же два номера для мобильной версии: на телефоне порядок можно выстроить иначе, чем на компьютере.
Из этих чисел собирается всё. Первый экран карточки берёт четыре характеристики первой очереди с наименьшими номерами. Таблица "Тех. характеристики" выводит сначала всю первую очередь по возрастанию, затем всю вторую. Умный фильтр раздела строится тем же порядком. Таблица сравнения товаров - тоже.
Ноль в обоих номерах означает "не показывать". Чтобы убрать характеристику с витрины, контент-менеджер ставит ноль в 1С - код сайта при этом не меняется. Сейчас так скрыты 30 характеристик: они есть в данных, но витрине не нужны.
Фильтр и карточка не расходятся
Умный фильтр раздела читает тот же справочник, что и карточка, поэтому характеристики стоят в фильтре ровно в том же порядке, в каком покупатель только что видел их в карточке. Это не совпадение и не договорённость двух разработчиков - это одно и то же число из 1С.
Открытыми показываются первые параметры подбора, остальные - под ссылкой "Показать все фильтры": в разделе двухстоечных подъёмников их двадцать пять, и показать все сразу означало бы перегрузить покупателя подробностями. Что важно вынести наверх, снова решает учётная система. Всего в фильтрах каталога сейчас работают 365 характеристик.
Отдельно стоит сказать про цену: её границы в фильтре персональные - у розничного клиента и дилера они разные. Как это устроено - в материале про каталог, который фильтрует и сортирует по цене конкретного покупателя.
Сорок две галочки - одна характеристика
Учётной системе удобно вести каждый признак отдельным полем: "наличие траверсы", "подсветка диска", "наличие педали". Такова её логика, и она оправдана. Но покупателю не нужны сорок два фильтра подряд, каждый со своей галочкой "да/нет".
Поэтому при приёме выгрузки такие поля склеиваются: 98 полей учётной системы объединяются в 9 характеристик витрины. Сорок два признака "да/нет" становятся одной характеристикой "Дополнительные характеристики" с сорока двумя вариантами значения - одна строка в карточке и один блок в фильтре. Правило склейки - тоже справочник, а не код: новая группа заводится контент-менеджером.
Как это устроено внутри
Общая картина: между 1С и витриной стоят четыре справочника - показа, исключений, склейки и соответствий. Все они наполняются данными, а не правками кода.
| Решение | Как сделано |
|---|---|
| Источник структуры | Описание характеристик приходит вместе с выгрузкой товаров, отдельного обмена "структурой" нет. Приёмник разбирает описание потоково и досоздаёт недостающее: характеристику, варианты значений, запись справочника показа |
| Справочник показа | 538 записей: технический признак и четыре номера очерёдности (две очереди × компьютер и телефон). Единственный источник ответа на вопрос "что показать и в каком порядке" - для карточки, фильтра и сравнения |
| Правило порядка | Три корзины: сначала первая очередь по возрастанию номера, затем вторая, затем всё остальное. Одно правило применяется и в карточке, и в фильтре - поэтому они не расходятся |
| Видимость | Сумма номеров меньше единицы - характеристика не выводится. Видимость оказывается свойством данных, а не настройкой сайта |
| Список исключений | 93 служебных поля учётной системы (от "Ставка НДС" до "Алкогольная продукция") не выходят на витрину. Список - редактируемый справочник: раньше был бы константой в коде |
| Правила склейки | 9 групп объединяют 98 полей 1С в 9 характеристик витрины, в том числе 42 признака "да/нет" в одну множественную характеристику |
| Словарь соответствий | 454 записи вида "эта же характеристика известна учётной системе ещё под таким именем". Позволяет узнать существующую характеристику, когда 1С называет её по-новому |
| Имя для покупателя | Служебное уточнение в скобках ("Грузоподъёмность, кг (Автоподъёмники двухстоечные)") срезается при выводе - в карточке, фильтре и сравнении. Учётной системе нужна однозначность, покупателю - читаемость |
| Нагрузка | Справочник показа читается один раз на страницу и кешируется: карточка с двадцатью тремя характеристиками не превращается в двадцать три обращения к базе данных |
Зачем словарь соответствий, если можно просто переименовать. Учётная система однажды сменила формат идентификаторов характеристик: вместо человекочитаемого имени - техническое, с уникальным кодом. Для витрины это грозило серьёзными последствиями: 385 характеристик пришли бы под новыми именами, сайт не узнал бы их и завёл заново. Каталог вырос бы почти вдвое, а карточки товаров опустели бы: значения остались бы на прежних характеристиках, а карточка смотрела бы на новые.
Вместо переименования появился словарь: 454 записи, каждая связывает имена, под которыми одна и та же характеристика известна учётной системе. Когда приходит новый идентификатор, приёмник узнаёт по словарю уже существующую характеристику и обновляет её. Прямо сейчас так работают 385 связок - смена формата в 1С прошла для витрины незаметно. Тот же словарь делает безопасными будущие переименования: они не рождают двойников.
Что это дало бизнесу
| Раньше | Стало |
|---|---|
| Новая характеристика - задача разработчику | Характеристика приходит с выгрузкой товаров и появляется на витрине сама |
| Порядок характеристик правится в коде | Порядок - число в 1С: 538 записей справочника показа |
| Карточка и фильтр расходятся между собой | Карточка, фильтр и сравнение читают один справочник - расходиться нечему |
| Служебные поля 1С просачиваются на витрину | 93 служебных поля отсекает редактируемый список исключений |
| 42 признака "да/нет" - 42 фильтра подряд | 98 полей 1С склеены в 9 характеристик витрины |
| Переименование в 1С рождает характеристику-двойника | Словарь соответствий узнаёт характеристику под новым именем |
В цифрах
| Показатель | Значение |
|---|---|
| Характеристик в каталоге | 492 - все созданы выгрузками из 1С |
| Вариантов значений характеристик | 10 253 |
| Видов техники | 116 - у каждого свой набор характеристик |
| Записей справочника показа | 538 |
| Характеристик в фильтрах каталога | 365 |
| Служебных полей в списке исключений | 93 |
| Склейка признаков "да/нет" | 98 полей 1С объединены в 9 характеристик витрины |
| Связок словаря соответствий | 454 записи, 385 работают прямо сейчас |
| Скрыто с витрины данными, а не кодом | 30 характеристик |
| У самого подробного товара | заполнена 51 характеристика, в карточке - 23, на первом экране - 4 |
| Подхват выгрузок сайтом | очередь проверяется каждые ~10 секунд |
| Правок кода на новую характеристику | 0 |
Эта витрина - часть большой B2B-платформы: каталог, дилерский кабинет и двусторонний обмен с 1С. Что вошло в проект целиком - в кейсе B2B e-commerce платформы.



