--- metadata: - name: generator content: Diplodoc Platform v5.63.4 style: - _style/main.css vcsPath: directories/orderinstancetypes-formulas.md alternate: - href: https://help.curs24.online/directories/orderinstancetypes-formulas.md type: text/markdown title: Markdown version - href: https://help.curs24.online/llms.txt rel: describedby --- # Товары и услуги с формулами У типа изделия есть два списка: **«Обязательные товары»** — что уходит в изделие из материалов, и **«Обязательные услуги»** — какие работы выполняются. Как только менеджер выберет тип изделия в заказе и заполнит его параметры, обе таблицы подставятся в изделие с уже посчитанным количеством. Считает это **формула** — короткое правило вида «длина ленты равна ширине тюля плюс 25 сантиметров». Формулу пишут один раз при настройке типа, и дальше она работает на каждом заказе одинаково. ## Что подготовить - **Заведённый тип изделия** — [«Типы изделий»](orderinstancetypes.md). - **Поля ввода у этого типа** — формула считает от них, и пока их нет, писать не от чего. Как их завести — [«Поля ввода типа изделия»](orderinstancetypes-fields.md). - **Товар в каталоге** и **услуга в прайс-листе** — привязать можно только то, что уже заведено: [«Каталог товаров»](products.md), [«Прайс-лист услуг»](provideservices.md). ## Как устроена формула Формула — это одна строка, которая должна закончиться присваиванием в `result`: ``` result = param.shirina + 0.25; ``` Читается так: «результат равен значению поля `shirina` плюс 0,25». - **`param.<имя переменной>`** — значение поля ввода, которое менеджер заполнил в заказе. Имя берётся из колонки **«ИМЯ ПЕРЕМЕННОЙ»** блока **«Вводимые поля»**. - **`result`** — то, что получится: количество товара или объём услуги. Без присваивания в `result` система формулу не примет. - Знаки обычные: `+` сложить, `-` вычесть, `*` умножить, `/` разделить. Скобки работают как в арифметике. {% note tip %} **Имена переменных наизусть помнить не нужно.** Добавляя новый товар или услугу, вы увидите в поле формулы готовый список полей этого типа изделия и заготовку ответа: ``` /* Параметры: param.kol_razrezov - Количество разрезов param.shirina - Ширина тюля param.vysota - Высота тюля */ result = 0; ``` Строки между `/*` и `*/` — подсказка для вас, в расчёте они не участвуют и в таблицу формул не попадают. Замените `0` на своё выражение, подсказку можно оставить как есть. Список подставляется только при добавлении новой строки. Если вы открыли на редактирование уже существующую формулу, в ней будет та подсказка, что сохранилась когда-то, — завели новое поле ввода после этого, в старом списке его не окажется. {% endnote %} Несколько примеров с настоящего типа изделия: | Что считаем | Формула | Смысл | |---|---|---| | Длина шторной ленты | `result = param.shirina + 0.25;` | Ширина тюля плюс запас 25 см | | Крой полотна | `result = param.shirina;` | Кроят по ширине | | Обработка края «американка» | `result = param.vysota * 2 * (param.kol_razrezov + 1);` | Два боковых края на каждом полотне, а полотен на одно больше, чем разрезов | Единицы измерения формула не знает: она возвращает число, а метры это или штуки — определяет единица измерения самого товара или услуги. Поэтому держите в голове одну систему: если ширина вводится в метрах, то и запас пишите в метрах (`0.25`), а не в сантиметрах (`25`). ## Как добавить обязательный товар 1. Откройте пункт **«Типы изделий»** в левом меню и выберите нужный тип в дереве слева. 2. В блоке **«Обязательные товары для типа изделия»** нажмите кнопку **«Добавить товар»**. 3. В окне **«Добавление товара для расчета количества»** заполните поля: - **«Категория товара»** — сначала папка каталога, чтобы сузить список. - **«Наименование товара»** — конкретная позиция из [каталога](products.md). - **«Модификация товара»** — если у товара есть цвета или размеры, выберите нужный вариант. Подробно про варианты — [«Модификации товара»](products-modifications.md). - **«Поставщик»** — у кого закупается материал именно для этого изделия. - **«Формула расчета товара»** — сколько этого товара уйдёт. 4. Нажмите кнопку **«Сохранить»**. Товар появится в таблице с артикулом, названием и формулой. ![окно настройки обязательного товара](../_assets/images/directories/orderinstancetypes/product_formula.png) ## Как добавить обязательную услугу 1. В блоке **«Обязательные услуги для типа изделия»** нажмите кнопку **«Добавить услугу»**. 2. В окне **«Добавление услуги для расчета работ»** заполните поля: - **«Категория услуг»** — папка [прайс-листа услуг](provideservices.md). - **«Рассчитываемая услуга»** — конкретная работа: крой полотна, пришивание тесьмы, декатировка. - **«Формула расчета услуги»** — в каком объёме эта работа выполняется. 3. Нажмите кнопку **«Сохранить»**. {% note tip %} **Заводите услугу отдельной строкой на каждую операцию, а не одной «Пошив».** Тогда наряд для цеха читается по операциям, а в отчётах видно, сколько стоит именно обработка края. Одна строка «Пошив» на всё изделие такой картины не даст, а поменять цену одной операции без пересчёта остальных станет невозможно. {% endnote %} ## Как проверить расчёт, не создавая заказ Формулу легко написать с ошибкой: перепутать метры с сантиметрами, забыть скобку, сослаться на переменную, которой у типа нет. Проверять это на живом заказе дорого — ошибка уедет клиенту в коммерческом предложении. Для этого есть **«Тестирование расчета»**. 1. Выберите **тип изделия** в дереве слева. Пока выбрана категория, кнопка серая. 2. Нажмите кнопку **«Тестирование расчета»** в правом верхнем углу. 3. Заполните параметры так, будто это настоящий заказ. В окне те же поля, что увидит менеджер, с теми же заголовками и подсказками. 4. Посмотрите таблицы **«Товары»** и **«Услуги»**: по каждой строке система показывает посчитанное количество с единицей измерения, а дальше — цену и стоимость по каждому типу цены, который заведён у вас в [«Типах цен»](pricetypes.md). Внизу каждой таблицы — строка **«ИТОГО»**. ![окно тестирования расчёта](../_assets/images/directories/orderinstancetypes/test_calculation.png) Ничего не сохраняется: это черновой расчёт, заказ не создаётся и на отчёты он не влияет. Прогоняйте его после каждой правки формул. Что смотреть в результате: количества правдоподобны (на окно 3 метра не должно уйти 300 метров ленты), ни в одной строке вместо количества не стоит пустота или «не число» — это признак опечатки в имени переменной, и итог по изделию похож на цену, которую вы назвали бы клиенту вручную. ## Как изменить или удалить Справа в строке товара или услуги стоят кнопки с карандашом и с крестиком: первая открывает окно редактирования, вторая удаляет строку после подтверждения. Правка действует на изделия, которые менеджер добавит в заказ после неё. Пока оформленное изделие не трогают, его состав и суммы остаются прежними — сами по себе прошлые заказы не пересчитываются. Но если такое изделие сохранят заново, часть значений в нём пересчитается по текущим настройкам типа. Поэтому меняйте формулы, когда поменялась технология, а не ради поправки в одном заказе: там быстрее и безопаснее изменить строку прямо в изделии. ## Если не получилось **Система пишет «Формула должна содержать присваивание результата в переменную result».** В формуле нет `result =`. Даже если считать нечего, пишите явно: `result = 1;`. **Система пишет «Необходимо указать формулу для расчета количества товара» или «...стоимости услуги».** Поле формулы обязательное, пустым его оставить нельзя. **Система пишет «Необходимо указать поставщика товара».** У обязательного товара поставщик обязателен: по нему потом собирается заявка на закупку. **Система пишет «Выберите модификацию».** У выбранного товара есть варианты, и нужно указать, какой именно уходит в изделие. **В тестировании вместо количества пусто или «не число».** В формуле указано имя переменной, которого нет среди полей ввода этого типа. Сверьте написание с колонкой **«ИМЯ ПЕРЕМЕННОЙ»** — регистр букв важен: `Shirina` и `shirina` для системы разные. **Кнопка «Тестирование расчета» серая.** В дереве выбрана категория, а не тип изделия.