---
title: Конфигуратор продуктов
description: Продавайте настраиваемые продукты — клиент собирает товар из опций (размер, цвет, материал, дополнения), а TSync считает цену и добавляет строку в предложение или счёт.
product: TSync Intelligence 11.3.6
language: ru
canonical: https://docs.tsync.pro/ru/modules/tsync-product-configurator/
source: https://docs.tsync.pro/llms.txt
---

# Конфигуратор продуктов

**Конфигуратор продуктов** (`/admin/tsync_product_configurator`) позволяет продавать **настраиваемые
продукты** — товары, которые клиент собирает из вариантов (размер, цвет, материал, опции) вместо одного
фиксированного SKU. Вы один раз задаёте варианты выбора, устанавливаете правила, какие комбинации допустимы и
как меняется цена, а TSync превращает выбор в конкретный вариант продукта.

## Продать настроенный продукт — шаг за шагом

Это то, что вы делаете каждый день. Остальная часть страницы — подготовка за кулисами; здесь само применение.

Работает одинаково, что бы вы ни настраивали — окно, дверь, мебель, оборудование, пакет услуг или что угодно
ещё, что вы описали как настраиваемую модель. Шаги одни и те же; отличаются только параметры, которые вы
видите.

**а) Откройте конфигуратор из документа**

Зайдите в **Продажи → Сметы → Создать смету** (так же работает на счетах, предложениях и кредит-нотах, если вы
отметили их в Настройках). Выберите клиента, затем нажмите кнопку **«Настроить продукт»** над списком позиций.
Откроется окно **«Конфигуратор продукта»**.

> Кнопка появляется только на типах документов, включённых в **Конфигуратор → Настройки**, и только если у вас
> есть право настраивать. Если вы видите её на смете, но не на счёте — это поведение по умолчанию: настройка
> относится к стадии предложения, а строка попадает в счёт при преобразовании сметы.

**б) Выберите модель и параметры**

Сначала выберите **модель** из списка с поиском — наберите несколько букв вместо прокрутки сотен позиций. После
выбора появляются её параметры, ровно те, что заданы для этой модели. Какие именно — зависит от того, что вы
продаёте:

| Если вы продаёте… | параметрами могут быть… |
|---|---|
| столярные изделия | размер, тип стекла, фурнитура, цвет профиля |
| мебель | размер, стиль, основной материал, дополнительный материал |
| оборудование | мощность, напряжение, аксессуары, расширенная гарантия |
| услуги | тариф, число пользователей, срок, SLA |

По мере выбора **цена считается сама** из модели + параметров + правил ценообразования. Её **никогда не вводят
руками.** Правила могут также скрывать или запрещать несовместимые варианты, поэтому невозможную комбинацию
нельзя выбрать по ошибке.

Если кнопка добавления остаётся серой, наведите на неё курсор: она **скажет, чего ещё не хватает**, а не
оставит вас гадать.

**в) Добавьте строку в документ**

Нажмите **«Добавить в документ»** — и строка попадёт в смету с описанием конфигурации, **рассчитанной ценой** и
**уникальным кодом (SKU)**. Окно закроется само; можно настроить ещё один продукт для того же документа.

Каждая настроенная строка — самостоятельный продукт: две единицы из разных материалов — это две строки, с двумя
SKU и двумя ценами.

## Открыть

**Конфигуратор** в боковом меню или `/admin/tsync_product_configurator` (открывает панель).

## Составные части

- **Шаблоны** — настраиваемый продукт (например *Окно*, *Футболка*, *Стол*). Всё остальное привязано к
  шаблону.
- **Атрибуты** — выбор, который делает клиент (например *Размер*, *Цвет*, *Тип стекла*).
- **Значения** — варианты внутри атрибута (например *Малый / Средний / Большой*). Значения можно
  импортировать массово.
- **Варианты** — итоговые конкретные комбинации, у каждой свой код и цена.
- **Правила** — логика: *если* сделан выбор, *то* разрешить/запретить другой, добавить наценку, задать
  значение по умолчанию, показать/скрыть опцию… Движок правил безопасен и предсказуем (без произвольного
  кода), поэтому один и тот же выбор всегда даёт один и тот же результат.

## Создать настраиваемый продукт, кратко

1. **Шаблоны** → создайте шаблон продукта.
2. **Атрибуты** → добавьте варианты выбора (Размер, Цвет…).
3. **Значения** → добавьте опции для каждого атрибута (при необходимости импортируйте длинный список).
4. **Правила** → задайте, что разрешено и как корректируется цена.
5. **Варианты** → просмотрите комбинации, которые дают выбор + правила.

## Загрузить много моделей сразу (импорт CSV)

Когда моделей десятки — или когда список ещё несколько раз будет уточняться — не вводите их по одной. На странице
**Модели** есть кнопка **Импорт CSV**.

Файлу нужна **одна обязательная колонка: `code`**. Остальные берут разумные значения по умолчанию, поэтому файл из
двух колонок (`code`, `name`) уже даёт рабочие настраиваемые модели. Страница импорта показывает все колонки и их
значения по умолчанию.

**Сначала нажмите «Симулировать».** Ничего не записывается: построчно показывается, что было бы создано, что
обновлено и что пропущено, с примечаниями. И только когда отчёт выглядит как ожидается, вы нажимаете **Импорт**.

**Тот же файл можно загружать повторно.** Модели сопоставляются по `code`, поэтому исправленный файл **обновляет**
существующие модели, а не создаёт второй набор рядом. Именно поэтому имеет смысл начать с приблизительных данных и
уточнять их.

Что важно знать:

- **Списки пишутся через `;`** — например `invoice;estimate` или `2250;2050;1900`.
- **Код, использованный двумя строками, отклоняется**, а не угадывается. Если в файле две разные модели с одним
  кодом, импорт назовёт их и не запишет ни одну: иначе вторая молча заменила бы первую.
- **`valid_sizes`** ограничивает допустимые размеры модели. Пусто — допустимы все. При каждом импорте список
  **заменяется**, поэтому размер, убранный из файла, действительно исчезает.

## Проверьте правило, прежде чем на него полагаться

Правила быстро усложняются — *«этот тип стекла доступен только свыше 1200 мм и добавляет 12 %»*. Вместо того
чтобы сохранить правило и надеяться, используйте **Симуляцию**: выберите сочетание значений, и TSync покажет,
что решает движок — какие варианты остаются доступными, какие становятся обязательными или запрещёнными и каким
будет итоговая цена.

Движок детерминирован (правило не содержит произвольного кода), поэтому показанное в симуляции — ровно то, что
получит клиент.

## Что происходит после того, как настроенная строка попала в документ

Настроенная строка — не обычная товарная строка. Она несёт выбор клиента, поэтому кто-то должен решить, **как
она будет фактически исполнена**, — и до этого момента строка находится в **очереди на рассмотрение**.

Откройте **Конфигуратор → Рассмотрение** из документа или
`/admin/tsync_product_configurator/review/invoice/123` (работает для счетов, смет, предложений и
кредит-нот). Для рассмотрения нужно право *decide*: умение создавать шаблоны — не то же самое, что право
обязать компанию что-то произвести.

Для каждой строки выбирается одно из четырёх:

| Решение | Что делает TSync |
|---|---|
| **Запустить производство** | Разворачивает спецификацию материалов шаблона под выбранные опции, масштабирует её по количеству строки и создаёт **производственный заказ**. Если модуль «Производство» не установлен, строка помечается как *в производстве* с примечанием, что исполнение ручное, — она никогда не теряется молча. |
| **Заказать материалы** | Сначала проверяет **наличие** каждого материала на складе шаблона по умолчанию, затем заказывает недостающее. Дефицит виден до того, как вы примете обязательство. |
| **Продать со склада** | Помечает строку **исполненной** из имеющегося запаса — без производства и без закупки. |
| **Отклонить** | Возвращает строку. **Причина обязательна** — отклонение без причины не принимается, потому что тому, кто настраивал, нужно знать, что менять. |

Каждое решение записывается по строке, поэтому документ всегда отвечает на вопрос *«кто решил и что именно»*.

### Весь путь, от заказа до счёта

Чтобы увидеть, где конфигуратор смыкается с остальной системой, вот сквозной цикл продукта, изготавливаемого
под заказ, — те же этапы, производите ли вы столярные изделия, мебель или оборудование:

**Смета с настроенной строкой** → **Запустить в производство** (из очереди рассмотрения) → **производственный
заказ** со спецификацией, разрешённой под выбранные параметры → **изготовление**, материалы списываются со
склада по мере расхода → **завершение**, готовый продукт поступает на склад со своей партией → **отгрузка** →
**счёт**.

Каждый шаг оставляет след, поэтому всегда известно, где какой заказ. О производственной части — рецептуры,
производственные заказы, рабочие центры, контроль качества и партии — см. руководство
[Производство](tsync-production.md).


### Если вы производите ПОД ЗАКАЗ

По умолчанию **«Запустить в производство» заблокирована, пока не хватает материала**. Это правильное правило,
если материал лежит на складе: запуск, который нельзя завершить, начинать нельзя.

Но если вы **производите под заказ** — конфигурируете и изготавливаете под каждый заказ, — полного набора
материалов *до* заказа у вас не бывает никогда, и блокировка останавливает ваш обычный поток. Включите
**Конфигуратор → Настройки → Производство → «Производство под заказ»**.

Тогда при нехватке показывается предупреждение с недостающими позициями, кнопка остаётся активной, а запуск
создаёт производственный заказ **с записанной на нём нехваткой**. Материалы заказывайте параллельно —
кнопкой рядом; производство списывает их предварительно, пока они не поступят.

Если настройка выключена, попытка запуска при нехватке **отклоняется с указанием недостающего материала** —
а не просто серой кнопкой.

## Спецификации материалов

Шаблон может нести **спецификацию материалов**, количества в которой зависят от выбранных опций — именно это
делает возможными *Запустить производство* и *Заказать материалы*. Спецификация разворачивается для конкретной
конфигурации, а не для шаблона, поэтому окно 2400 мм и окно 900 мм расходуют разные количества из одного и того
же описания.
### Материал, который выбирает клиент — строка-слот

Большинство строк спецификации называют конкретный материал: две штуки такого, три метра сякого. Строка-**слот**
вместо этого называет **опцию**. Количество задано моделью — на диван, к примеру, идёт 11 погонных метров ткани, а на дверь — один лист
шпона, — а *какой*
именно ткань, решает клиент, и стоимость следует за позицией, стоящей за этим выбором.

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

В импортируемом файле строка-слот несёт **`attribute_code`** (например, `material_principal`) вместо колонки
`material_code`, а `component_type` равен `slot`. Она не создаёт позицию: позицией станет то, что выберут.
Строка-слот без кода атрибута или с несуществующей в этой установке опцией **называется по имени** в отчёте об
импорте и пропускается — но никогда не импортируется как строка, которая молча стоила бы ноль.

### Проверка цифр

Спецификация теперь показывает по каждой строке **использованную цену за единицу** и **стоимость строки** рядом
с количеством — и при проверке наличия, и в предпросмотре. Строка без записанной цены показывает прочерк, а не
ноль: «цена не задана» и «бесплатно» — разные факты, а ноль отправил бы кого-то пересматривать цену, которую
никогда не вводили.

## Откуда берётся стоимость работы

Цена модели состоит из двух половин: **материалы**, которые берутся из её спецификации, и **работа**, которая
берётся из **производственного маршрута**.

В форме модели поле **Производственный маршрут (работа)** перечисляет маршруты, заданные в модуле
«Производство», каждый **со своей стоимостью**, — чтобы выбрать нужный класс работ, не открывая их по одному.
Оставьте пустым — стоимость работы равна 0, как сейчас у всех моделей.

Число считается так, как ваша установка считает труд. Если операции оплачиваются по времени, это наладка плюс
цикл по часовой ставке рабочего центра с учётом его эффективности. Если вы включили фиксированные цены за
операцию, используется фиксированная цена — это два альтернативных ответа, они никогда не складываются.

> До этого выпуска стоимость работы была **всегда 0,00** для каждой модели, потому что её ничто не
> предоставляло. Показанная рядом маржа была неверна на всю стоимость работы. Если вы опирались на эти маржи,
> они изменятся, как только вы привяжете маршруты: прежние были не осторожными, а неполными.

**Чтобы сопоставить много моделей сразу:** импорт CSV принимает колонку `routing_id` или `routing_code`. Если
колонку оставить пустой, маршрут каждой модели **останется прежним** — в отличие от остальных колонок, пустая
ячейка здесь не стирает то, что вы выбрали в форме.

## Как читать код настроенной строки (SKU)

Каждая настроенная строка получает **уникальный код**. Это не случайное число: он строится по **шаблону,
который задаёте вы**, чтобы любой на производстве или складе понимал по одному коду, что именно нужно сделать —
не переспрашивая.

Шаблон пишется в **Конфигуратор → Настройки → Шаблон SKU**, а у модели может быть свой (поле **Шаблон SKU** в
форме модели), когда ей нужна другая форма. Он записывается как набор подстановок:

| Подстановка | Что подставляет в код |
|---|---|
| `{TEMPLATE}` | настраиваемая модель (продукт) |
| `{MODEL}` | код выбранной модели |
| `{SIZE}` | выбранный размер |
| `{STYLE}` | выбранный стиль |
| `{MP_CODE}` / `{MP_NAME}` | основной материал — код или название |
| `{MS_CODE}` / `{MS_NAME}` | дополнительный материал — код или название |
| `{ATTR_CODE}` / `{ATTR_VALUE}` | любой другой атрибут и его значение |
| `{DATE}` · `{SEQ}` · `{HASH}` | дата, порядковый номер, короткий отпечаток конфигурации |

Подстановка, для которой в конфигурации нет значения, **просто исчезает** — она не остаётся странным словом
посреди кода. Именно поэтому один шаблон подходит и модели с четырьмя параметрами, и модели с двумя.

**Два примера по одному шаблону** `PCFG-{MODEL}-{SIZE}-{STYLE}-{MP_NAME}`:

```
PCFG-F2-1200-DUB-TERMOPAN     окно: модель F2, 1200 мм, открывание DUB, стеклопакет TERMOPAN
PCFG-D1-1900-S1-CATANIA       мебель: модель D1, 1900 мм, стиль S1, материал CATANIA
```

Читается так: `PCFG` — продукт из конфигуратора, дальше каждая часть — один выбор, сделанный в окне
конфигуратора, в порядке, заданном шаблоном. Любой на производстве понимает по коду, что нужно изготовить.

В Настройках же задаётся вид кода: **разделитель** (по умолчанию `-`), **максимальная длина**, писать ли
**заглавными**, и **транслитерировать** ли диакритику и кириллицу в латиницу (рекомендуется — код с буквами с
диакритикой или кириллицей создаёт проблемы на этикетках, при экспорте и в поиске). TSync также следит за
**уникальностью**: две разные конфигурации не могут получить один и тот же код.

## В документах и клиентском портале

Когда вы добавляете настраиваемый товар, открывается **окно конфигуратора**, чтобы сделать выбор (вы или
клиент, если **конфигуратор клиентского портала** включён в **Настройках**), и итоговый вариант + цена
попадают в документ. Включайте/выключайте портальный конфигуратор в **Настройках** модуля.

## Что заказывают чаще всего и сколько это стоило тогда

**Конфигуратор → Variante folosite** в боковом меню открывает страницу **Спрос по конфигурациям**
(`/admin/tsync_product_configurator/variants`) — место, где всё, что сконфигурировала команда, превращается в
решение по складу, принимаемое *до* сезона, а не после.

Она отвечает сразу на два вопроса:

- **что заказывают больше всего** и
- **как двигалась себестоимость**, пока это заказывали.

### Считается количество, а не появления

Мера — **заказанное количество**. Строка на одну единицу и строка на сорок — это не одинаковый спрос, хотя
каждая из них является одной конфигурацией в одном документе. Если вы где-то читали цифру «использований» и
планировали склад по ней, здесь рейтинг окажется другим — и более полезным.

### Выберите группировку строк

Три группировки, переключаются вверху страницы:

| Группировка | Одна строка — это |
|---|---|
| **Конфигурация** | точное сочетание выборов — по умолчанию |
| **Модель** | всё, что построено из одной модели, при любых опциях |
| **Вариант** | конкретный сохранённый вариант со своим кодом |

Фильтры: поиск (SKU, название, код модели), модель, тип документа и диапазон дат. **Исключить отклонённые**
включено по умолчанию: строка, от которой клиент отказался, — это отозванный интерес, а не спрос, и её подсчёт
как раз и есть та ошибка, которая заполняет склад.

### Как читать таблицу

Каждая строка показывает **что сконфигурировано**, **количество**, сколько **раз** это конфигурировали,
**среднюю себестоимость**, **диапазон себестоимости**, **стоимость** и **последний заказ**. Любой заголовок
столбца, на который можно нажать, сортирует весь набор, а итоги над таблицей считаются по **всему, что
попадает под фильтры**, а не только по видимой странице.

Разверните строку — и она раскроется в каждое отдельное использование: документ, дата, количество, статус и
**себестоимость, которую это использование несло тогда**.

### Две вещи о себестоимости, которые стоит знать до решения

**Среднее взвешено по количеству.** Одна штука по 900 и сорок по 1000 дают **997,56**, а не 950. Простое
среднее выглядит защитимым и ошибается ровно в ту сторону, которая потом делает закупочное решение
«обоснованным».

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

### Те же данные в виде отчётов

Три отчёта зарегистрированы в консоли отчётов (**Отчёты** в боковом меню) — их можно фильтровать, строить по
ним графики, выгружать в CSV/XLSX, сохранять как представление или отправлять по расписанию на почту:

| Отчёт | Что даёт |
|---|---|
| **Top configurations by quantity** (топ конфигураций по количеству) | какие именно конфигурации заказывали больше всего, по количеству |
| **Demand by model, per month** (спрос по модели, помесячно) | количество по модели за месяц — форма, из которой принимают предсезонное решение по складу |
| **Configuration cost over time** (себестоимость конфигурации во времени) | средневзвешенная по количеству себестоимость по конфигурации и месяцу, со столбцом **cost basis**, который сообщает, реальный это снимок по использованию или подставленная текущая себестоимость |

Чтобы отчёты появились, у вашей роли должно быть право просматривать отчёты конфигуратора.

### Настройки

В **Настройках** модуля есть три значения по умолчанию для этой страницы: **период по умолчанию** в днях (90,
если не менять), **группировка по умолчанию** и **исключать ли отклонённые строки** из спроса. Они задают то,
с чем страница открывается; каждое из них по-прежнему можно изменить прямо на странице для одного просмотра.
