Документация / Калькуляторы

Калькуляторы

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

Обзор

Калькулятор — это самостоятельный расчётный движок для одного продукта: набор параметров, видимых клиенту (ширина, цвет, направление открывания, …), список материалов из каталога вашего проекта и расчёты, которые превращают значения параметров в количества материалов и цену. Калькуляторы используются внутри заказов, могут быть переданы клиентам по публичной ссылке или встроены как виджет на ваш сайт, а также опубликованы в межпроектной витрине, чтобы другие пользователи Configo могли их скопировать.

Откройте раздел Калькуляторы в сайдбаре проекта, чтобы увидеть список. Нажмите Добавить, чтобы создать новый, или значок редактирования на существующей строке, чтобы его открыть. Редактор разделён на семь вкладок: Настройки, Материалы, Параметры, Расчёты, Детали, Шаблоны и Просмотр.

Пока вы редактируете, изменения хранятся черновиком в сессионном хранилище браузера и отправляются на сервер только когда вы нажимаете Сохранить в правом верхнем углу. Перезагрузка страницы сохраняет черновик; закрытие вкладки — нет.

Настройки

Общие

  • Название (обязательно) — внутреннее название, показываемое в списке калькуляторов. Клиентам не показывается.
  • Шаблон названия продукта — заголовок, генерируемый для каждой конфигурации, например Плиссе 16мм $width x $height $color. Ссылайтесь на любой параметр по его ID переменной ($width, $color, …); значение подставляется вживую по мере заполнения формы клиентом. Обычный текст вокруг переменных сохраняется как есть — оставляйте хотя бы один неалфавитный символ (пробел, ×, -) между двумя переменными, иначе они распознаются как один идентификатор ($widthx читается как одна переменная с именем widthx, а не $width, за которой следует x).
  • Единица продукта — единица измерения одного готового сконфигурированного продукта (штука, комплект и т. д.). Это отдельная величина от единиц измерения отдельных материалов, из которых он собирается.

Ценообразование

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

  • Стоимость работ и Амортизация — фиксированные суммы, добавляемые один раз на сконфигурированную единицу, сверх итогов по материалам. Оба поля — это статичные числа, а не формулы: они не масштабируются по ширине, высоте, количеству или любому значению параметра и не могут быть сделаны условными.
  • Множитель цены — умножает каждую цену материала (закупочную, продажи и дилерскую) на этот коэффициент. Используйте 1, чтобы оставить цены без изменений; применяйте его для конвертации валют, если ваш каталог материалов оценён в другой валюте, чем та, в которой вы продаёте.
  • Количество знаков после запятой — до скольких знаков после запятой округляются рассчитанные цены.

Три колонки цены (закупка / продажа / дилер) рассчитываются из разбивки по материалам следующим образом:

Включает материалы Включает стоимость работ + амортизацию Зависит от множителя цены
Закупка ✅ (только материалы)
Продажа ✅ (только материалы)
Дилер ✅ (только материалы)

Два следствия, о которых стоит знать до настройки реального продукта:

  • Закупочная цена никогда не включает стоимость работ или амортизацию. Она отражает только базовую себестоимость по материалам. Если вам нужно, чтобы труд или накладные расходы отражались в закупочной цене/себестоимости, стоимость работ/амортизация для этого не подойдут — вместо этого придётся добавить строку материала (см. ниже).
  • Стоимость работ и амортизация добавляются одинаково и к цене продажи, и к дилерской цене — нет способа задать разную стоимость труда для розничных и дилерских клиентов через эти поля, и множитель цены их не масштабирует (он масштабирует только цены материалов).

Моделирование труда и накладных расходов: два подхода, выбирайте осознанно

Есть два разных способа добавить в калькулятор оплату труда/сборки/монтажа, и ведут они себя по-разному — если их перепутать, можно случайно посчитать стоимость дважды или, наоборот, недосчитать:

  1. Поле Стоимость работ / Амортизация (Настройки → Ценообразование) — самый простой вариант. Используйте его, когда оплата труда — это фиксированная сумма на сконфигурированную единицу, одинаковая для розничной и дилерской цены, и не должна масштабироваться по размеру или зависеть от какого-либо параметра (например, плоская «плата за сборку»).

  2. Материал с формулой расчёта — используйте этот вариант, когда стоимость труда должна:

    • масштабироваться по параметру (например, $width + $height для времени резки), либо
    • быть условной (например, начисляться только при выборе определённой опции), либо
    • иметь отдельные закупочную/розничную/дилерскую цены, либо
    • появляться отдельной строкой в таблице детализации материалов, видимой клиенту.

    Чтобы смоделировать труд таким способом, добавьте материал (например, «Монтаж») с единицей вроде шт или час, затем создайте для него расчёт с формулой, которая возвращает количество труда (часто просто константа 1 или значение, зависящее от условия). Поскольку это материал, он также масштабируется множителем цены и (если задан) процентом отходов, что обычно не то, что нужно для труда, — установите процент отходов в 0 для трудовых материалов.

Какой бы подход вы ни выбрали, не используйте оба для одной и той же статьи затрат — это посчитает её дважды.

Видимость

  • Можно копировать — позволяет скопировать этот калькулятор в другие проекты через межпроектную витрину (см. Витрина и публикация ниже).
  • Публичный доступ — позволяет любому, у кого есть ссылка, открыть этот калькулятор без членства в проекте. Требуется для встраивания публичного виджета.
  • Показывать детализацию — показывать ли клиенту таблицу детализации материалов (количества и цены по строкам) или только итоговую сумму. Отключите, если не хотите, чтобы клиенты вычисляли себестоимость материалов по постатейному списку.

Материалы

Вкладка Материалы перечисляет все материалы, которые может использовать этот калькулятор. Нажмите Добавить, чтобы прикрепить один:

  • Найдите существующий материал из каталога материалов вашего проекта по названию и выберите его из результатов, либо
  • Введите новое название напрямую — новый материал будет создан в каталоге вашего проекта сразу после сохранения здесь.

В обоих случаях вы редактируете реальную запись материала проекта (название, группа, артикул, единица, закупочная/ розничная/дилерская цена, процент отходов и YAML-свойства) — изменения, сделанные здесь, отражаются и на странице Материалы проекта, и наоборот.

Только прикреплённые здесь материалы доступны для использования на вкладках Параметры, Расчёты и Детали этого калькулятора. Материал, на который не ссылается ни один Расчёт или Деталь, помечается небольшой пометкой «Не используется ни в одном расчёте или детали» под его названием — быстрый способ заметить забытые материалы, прежде чем о них окончательно забудут.

Параметры

Параметры — это поля ввода, которые заполняет клиент. У каждого параметра есть:

  • Название — отображаемый текст поля.

  • ID переменной — как параметр упоминается в формулах и шаблонах, например $width. Должен начинаться с $ и не может быть изменён после создания параметра.

  • Ширина — сколько из 12 колонок сетки занимает поле в макете формы.

  • Тип — один из:

    Тип Описание
    Текст Однострочное текстовое поле.
    Многострочный текст Многострочное текстовое поле.
    Число Числовое поле с необязательными мин/макс/шагом.
    Список выбора Выпадающий список. Варианты берутся из одного из нескольких источников (ниже).
    Список с изображением Как список выбора, но варианты отображаются кликабельными миниатюрами, взятыми из группы материалов (изображение и название каждого материала становятся вариантом).
    Список с зависимостью Выпадающий список, доступные варианты которого фильтруются по совпадению свойств материала с текущим значением одного или нескольких других параметров — полезно для каскадных списков (например, сначала выбрать серию, а затем видеть только доступные в этой серии цвета).
    Материалы Позволяет клиенту напрямую выбрать один или несколько материалов (с количествами) из группы материалов или набора групп, вместо того чтобы количество выводилось формулой.
  • Значение по умолчанию — предзаполненное значение, показываемое при загрузке или сбросе калькулятора.

Источники опций (тип «Список выбора»)

  • JSON / YAML — фиксированный, вручную заданный список строк-вариантов.
  • Группа материалов — один вариант на каждое отдельное название материала в выбранной группе.
  • Свойство группы — один вариант на каждое отдельное значение выбранного свойства среди всех материалов группы (читается из YAML-свойств каждого материала).
  • Свойство материала — один вариант на каждое значение, найденное в конкретном свойстве конкретного материала (полезно, когда свойство этого материала само является массивом вариантов, например список доступных цветов).

Используйте панель Просмотр внизу формы добавления/редактирования параметра, чтобы увидеть, как именно параметр будет отображаться, ещё до сохранения.

Расчёты

Расчёты превращают значения параметров в количества материалов. Каждый расчёт нацелен на один материал (либо, если оставить целью название группы вместо конкретного материала, динамически определяет материал этой группы, совпадающий с текущим выбором клиента) и содержит одну или несколько формул. Выбор материала/группы поддерживает поиск — вводите текст для фильтрации вместо прокрутки всего каталога.

  • Формулы вычисляются по ИЛИ — используется первая формула, чьи условия выполнены и чей код даёт количество больше 0; остальные пропускаются. Добавляйте несколько формул (до 15) чтобы выразить «разная формула для разного сценария» для одного и того же материала — например, одна формула длины при выборе пороговой опции, другая — когда она не выбрана.
  • Условия внутри формулы вычисляются по И (до 10 штук). Каждое условие сравнивает текущее значение параметра с заданным значением с помощью оператора: равно, не равно, больше, меньше, включает, не включает.
  • Код формулы — это JavaScript-подобное выражение, вычисляемое в изолированном воркере. Оно может ссылаться на любой параметр по его ID переменной ($width, $height, …) и использовать встроенные математические помощники, доступные по кнопке ƒ: abs, round, ceil, floor, trunc, max, min, sin/cos/tan/asin/acos/atan/atan2, pow, sqrt, exp, log, log10, random и константы PI, E, LN2, LN10, SQRT2, SQRT1_2. Результат трактуется как требуемое количество этого материала в его собственной единице измерения.

Формула без условий применяется всегда — так выражается «нужно всегда, независимо от выбора клиента» (например, фиксированный комплект фурнитуры). Новая формула по умолчанию создаётся без условий; нажмите И, чтобы добавить условие, только если формулу действительно нужно ограничить значением параметра.

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

Поле кода формулы проверяется по мере ввода: синтаксическая ошибка или ошибка ссылки показывается красным прямо под полем (например, «Unexpected token ')'»), так что не нужно переключаться на Просмотр, чтобы обнаружить опечатку.

Если у материала задан процент отходов (вкладка Материалы), рассчитанное количество автоматически увеличивается на этот процент перед оценкой стоимости.

Детали

Детали формируют производственный лист — список раскроя, по которому реально режет цех, отдельно от видимой клиенту детализации материалов (которая только суммирует, сколько материала расходуется, а не как он раскраивается). Каждая Деталь — это один отдельный отрез: материал, размер (одна формула на измерение — 1D, 2D или 3D) и Количество, показывающее, сколько одинаковых копий этого конкретного отреза нужно. Условия работают по той же модели ИЛИ-формул / И-условий, что и Расчёты, с той же живой проверкой синтаксиса под полем формулы.

Деталь — это один отрезок, а не один профиль. Если рамный профиль идёт по всему периметру продукта, он режется не одним куском, а четырьмя: два отрезка длиной по ширине, два — длиной по высоте. Смоделируйте это как две Детали, а не одну:

  • Деталь 1: материал = рамный профиль, размер = $width, Количество = 2
  • Деталь 2: материал = рамный профиль, размер = $height, Количество = 2

Одна Деталь с Количеством 1 и размером $width описывает только один отрезок длиной по ширине — она молча выбрасывает из листа раскроя оба отрезка по высоте. Всякий раз, когда материал расходуется несколькими по-разному размеченными (или по-разному считаемыми) кусками на единицу продукции, задавайте каждому отдельному куску свою Деталь.

  • Количество и Единица товара — сколько одинаковых копий этого конкретного куска режется и в какой единице.
  • Тип размера — 1D, 2D или 3D, определяет, сколько формул размера нужно заполнить (например, только ширину, или ширину × высоту).
  • Единица материала и Единица размера — единица, в которой выражается итоговое измерение.

Выбор материала поддерживает поиск, так же как в Расчётах. Чтобы проверить рассчитанные размеры и количества перед сохранением, переключитесь на вкладку Просмотр — там, прямо под детализацией материалов, вживую показывается производственный список по каждой Детали.

Шаблоны

Шаблоны — это именованные переиспользуемые снимки значений параметров (например, «Стандарт 800×2100 Белый»), которые клиент может выбрать из выпадающего списка, чтобы мгновенно заполнить всю форму вместо ручной настройки.

Чтобы создать шаблон: нажмите Добавить шаблон, заполните форму калькулятора справа значениями, которые хотите сохранить, нажмите Сохранить как шаблон (это фиксирует текущие значения), задайте название в поле сверху, затем подтвердите кнопкой Сохранить. Редактирование существующего шаблона повторно применяет его сохранённые значения в форму, чтобы вы могли их скорректировать и сохранить заново.

Просмотр

Живой, полностью рабочий экземпляр калькулятора именно таким, каким его увидит клиент, использующий всё, что сейчас в черновике (включая несохранённые изменения). Используйте его после каждого изменения в Параметрах, Материалах или Расчётах, чтобы убедиться, что количества, условные ветки и итоговая цена ведут себя как ожидается, — это самый быстрый способ поймать несовпадающую формулу или забытое условие до сохранения.

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

Витрина и публикация

  • Витрина (Калькуляторы → Витрина в сайдбаре) — это каталог калькуляторов из всех проектов Configo, отмеченных как Можно копировать. Оттуда можно просмотреть любой из представленных калькуляторов и Скопировать его в свой проект как отправную точку, вместе со всеми материалами.
  • Публичный виджет — когда у калькулятора включена настройка Публичный доступ, он становится доступен по публичному URL без входа в систему и может быть встроен как iframe-виджет на внешний сайт. Виджет отправляет родительской странице события calculated и addToCart через postMessage, так что внешний магазин может реагировать на изменения конфигурации и обрабатывать оформление заказа. Доступность встраивания виджета зависит от вашего тарифа.

Советы

  • Предпочитайте Стоимость работ трудовому материалу всякий раз, когда плата действительно фиксированная — это одно поле вместо материала + расчёта, и меньше того, что нужно держать синхронизированным.
  • Устанавливайте процент отходов в 0 для любого материала, который не является физическим расходуемым товаром (труд, фиксированные сборы, смоделированные как материалы, и т. д.).
  • Красная ошибка под полем формулы ловит только синтаксические ошибки и ошибки ссылок — она не подскажет, что логика формулы неверна (например, ошибка на единицу в условии). Используйте Просмотр, чтобы убедиться в реальных рассчитанных числах, а не только в том, что формула выполняется без ошибок.
  • Следите за пометкой «Не используется ни в одном расчёте или детали» на вкладке Материалы — она ловит материалы, которые вы прикрепили, но забыли подключить.