Разработка таблицы размеров обуви на 1С-Битрикс
Таблица размеров обуви сложнее, чем одежды: обувные размеры имеют три несовместимые системы (российская/европейская, американская мужская/женская, британская), плюс длина стопы в сантиметрах как универсальная мерка. Разные производители используют разные колодки, и формальная конвертация «RU 40 = EU 40» не всегда верна для конкретного бренда. Это нужно учитывать в архитектуре.
Отличия обувной таблицы от одежды
У обуви один ключевой параметр — длина стопы в сантиметрах. Всё остальное (RU, EU, US M/W, UK) — системы обозначений, которые конвертируются из длины стопы по стандартным формулам, но с поправкой на бренд.
Дополнительные сложности:
- Половые различия: US 8 мужской ≠ US 8 женский (разница ~1.5 EU-размера)
- Детская обувь — отдельная шкала (17–35 EU)
- Некоторые бренды (Converse, Vans) имеют свои нюансы конвертации
- Полнота обуви (B, D, EE) — редко, но встречается в профессиональных магазинах
Структура БД для обувной таблицы
CREATE TABLE b_shoe_size_charts (
ID SERIAL PRIMARY KEY,
NAME VARCHAR(255) NOT NULL, -- "Nike мужская", "Adidas детская"
BRAND_ID INT,
GENDER VARCHAR(10), -- 'male', 'female', 'kids', 'unisex'
AGE_GROUP VARCHAR(20), -- 'adult', 'kids', 'baby'
ACTIVE BOOLEAN DEFAULT TRUE
);
CREATE TABLE b_shoe_size_rows (
ID SERIAL PRIMARY KEY,
CHART_ID INT NOT NULL REFERENCES b_shoe_size_charts(ID),
FOOT_LENGTH_MM INT NOT NULL, -- длина стопы в мм (основная мерка)
SIZE_RU NUMERIC(4,1), -- российский размер
SIZE_EU NUMERIC(4,1), -- европейский размер
SIZE_US_M NUMERIC(4,1), -- US мужской
SIZE_US_W NUMERIC(4,1), -- US женский
SIZE_UK NUMERIC(4,1), -- британский
SIZE_CM NUMERIC(4,1), -- японский/корейский (в см)
SORT INT DEFAULT 100
);
Длина стопы в миллиметрах — не сантиметрах — как базовая мерка, потому что обувные стандарты работают с точностью до 5 мм.
Компонент таблицы размеров обуви
Компонент аналогичен одежному, но с особенностями вывода.
Выбор пола — если таблица «unisex», нужна переключалка для показа US M или US W:
<div class="size-gender-tabs">
<button class="active" data-gender="male">Мужские (US M)</button>
<button data-gender="female">Женские (US W)</button>
</div>
document.querySelectorAll('.size-gender-tabs button').forEach(btn => {
btn.addEventListener('click', function() {
const gender = this.dataset.gender;
document.querySelectorAll('.col-us-m').forEach(el => el.hidden = gender !== 'male');
document.querySelectorAll('.col-us-w').forEach(el => el.hidden = gender !== 'female');
});
});
Колонки таблицы для мужской взрослой обуви:
| Длина стопы (мм) | RU | EU | US | UK |
|---|---|---|---|---|
| 245 | 39 | 39 | 6.5 | 6 |
| 250 | 39.5 | 39.5 | 7 | 6.5 |
| 255 | 40 | 40 | 7.5 | 7 |
Полушага (39.5, 40.5) должны быть в таблице — многие производители их используют.
Интерактивный подбор по длине стопы
Главное отличие обуви: покупатель знает длину своей стопы (или может её измерить), но не всегда знает размер в разных системах. Интерактивная форма:
<div class="shoe-size-finder">
<label>Введите длину стопы (мм или см):</label>
<input type="number" id="foot-length" placeholder="255" min="150" max="340">
<select id="length-unit">
<option value="mm">мм</option>
<option value="cm">см</option>
</select>
<button onclick="findShoeSize()">Найти мой размер</button>
</div>
function findShoeSize() {
let length = parseInt(document.getElementById('foot-length').value);
const unit = document.getElementById('length-unit').value;
if (unit === 'cm') length = Math.round(length * 10);
// Ищем ближайший размер (стопа помещается в размер + до 5 мм запаса)
const sizes = window.shoeSizeData;
const match = sizes.find(s => length <= s.foot_length_mm + 5 && length > s.foot_length_mm - 5);
if (match) {
highlightRow(match.id);
showResult(`Ваш размер: RU ${match.size_ru} / EU ${match.size_eu}`);
} else {
showResult('Размер не найден в таблице. Уточните у консультанта.');
}
}
Инструкция по измерению стопы
Текстовая инструкция + SVG-иллюстрация в модальном окне. Стандартная инструкция: поставить ногу на бумагу, обвести, измерить от пятки до самого длинного пальца. Это снижает количество ошибок при самостоятельном измерении.
Иллюстрацию делаем SVG — не PNG, потому что SVG масштабируется без потери качества и весит 3–5 KB против 30–50 KB для PNG аналогичного вида.
Интеграция с выбором торговых предложений
В обуви торговые предложения — это размеры. У каждого ТП есть свойство SHOE_SIZE со значением типа «40», «40.5», «41». Это значение сопоставляется со строками таблицы по SIZE_RU или SIZE_EU.
При открытии страницы:
- Если ТП не выбрано — таблица показана полностью
- При выборе размера (ТП) — соответствующая строка подсвечивается
- При клике на строку таблицы — автоматически выбирается соответствующее ТП
// Клик по строке таблицы
document.querySelectorAll('.size-chart tr[data-size-ru]').forEach(row => {
row.addEventListener('click', function() {
const sizeRu = this.dataset.sizeRu;
// Найти и активировать кнопку ТП с этим размером
const offerBtn = document.querySelector(`[data-size="${sizeRu}"]`);
if (offerBtn && !offerBtn.disabled) offerBtn.click();
});
});
Размерная сетка детской обуви
Детская обувь требует отдельной таблицы. EU-размеры для детей начинаются с 16–17 (новорождённые) и идут до 35–36 (переходные размеры). Длина стопы — ключевой параметр, потому что детская нога растёт быстро и нужен правильный запас.
Дополнительный параметр для детской таблицы: рекомендуемый возраст (ориентировочно, не как жёсткое правило):
| Длина стопы (мм) | EU | RU | Возраст (прибл.) |
|---|---|---|---|
| 115 | 19 | 18 | 12–18 мес. |
| 125 | 20 | 19.5 | 18–24 мес. |
| 135 | 21 | 20.5 | 2 года |
Сроки
| Объём | Что входит | Срок |
|---|---|---|
| Базовая таблица для 1 пола | БД, компонент, интеграция с ТП | 3–5 дней |
| Мульти-таблицы (бренды, возраст, пол) | + управление в админке | 1–2 недели |
| + Подбор по длине стопы | + калькулятор, инструкция | +2–3 дня |
Обувная размерная таблица — инвестиция в снижение возвратов. В fashion-сегменте возврат одной пары обуви стоит дороже создания таблицы: курьерские расходы, переупаковка, потеря товарного вида. Проект окупается за 1–2 месяца работы магазина.







