Редактирование продукта

Максим

Максим

Обновлено Oct 6, 2026

Изменяет продукт и его состав. Меняются только переданные поля, остальные остаются прежними. Подробнее о частичном редактировании в статье Общие правила.

v1/products/edit.php

Параметры

Поле Тип Обязательное Описание
product_id int Да ID продукта
name string Нет Название
sku string Нет Артикул
unit string Нет Единица измерения
price float Нет Цена продажи за единицу
batch_size float Нет Размер партии, больше 0
notes string Нет Заметки
minimum float Нет Минимальный остаток на складе storage_id
storage_id int С minimum Склад, на котором меняется минимальный остаток
categories array Нет ID категорий. Заменяют текущие целиком
suppliers array Нет ID поставщиков. Заменяют текущих целиком
alternative_sku array Нет Альтернативные артикулы: объекты с полями sku и label. Заменяют текущие целиком
materials array Нет Материалы в составе
products array Нет Заготовки в составе
resources array Нет Ресурсы в составе. Заменяют текущие целиком

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

Как работает

  • Состав. Формат строк описан в разделе «Состав продукта» статьи Продукты. Если передан хотя бы один из массивов materials и products, материалы и заготовки заменяются целиком, а непереданный массив считается пустым. Например, если передать только materials, заготовки из состава удалятся. Ресурсы меняются, только если передан resources.
  • Размер партии. Количества в составе хранятся на партию. Если изменить batch_size без состава, они останутся прежними, а расход на единицу продукта пересчитается: 0.5 куб. м на партию из 10 штук дает 0.05 на штуку, а на партию из 20 штук уже 0.025. Чтобы сохранить расход на единицу, передайте вместе с batch_size и состав с новыми количествами.
  • Себестоимость. После изменения состава, ресурсов, размера партии или цены продажи Controlata пересчитывает себестоимость продукта и продуктов, в состав которых он входит. Производства этого продукта получают отметку bom_changed: состав изменился после их создания. Если производств и поставок продукта еще не было, по новой себестоимости переоцениваются начальный остаток и корректировки остатка.
  • Единица измерения. Если новая единица из той же группы (например, «г» вместо «кг»), Controlata пересчитывает остатки, историю движений и минимальный остаток. Если цена не передана, она тоже пересчитывается: 500 за кг станет 0.5 за г. Сменить группу (например, «шт» на «кг») нельзя, если продукт входит в состав других продуктов.
  • Минимальный остаток задается на конкретном складе, поэтому вместе с ним нужен storage_id. Продукт должен числиться на этом складе (см. Продукты).
  • Категории определяют, на каких складах числится продукт. После их изменения продукт появится на складах с новыми категориями и пропадет со складов прежних категорий, если остаток там нулевой и нет запланированных операций.

Пример запроса

Новая цена продажи и состав материалов. Заготовки не переданы, поэтому удалятся из состава, ресурсы останутся прежними.

{
    "product_id": 3120,
    "price": 47000,
    "materials": [
        {
            "id": 2051,
            "amount_per_batch": 0.6,
            "unit": "куб. м",
            "loss_percent": 5
        },
        {
            "id": 2060,
            "amount_per_batch": 400,
            "unit": "шт"
        }
    ]
}

Изменить только минимальный остаток:

{
    "product_id": 3120,
    "minimum": 3,
    "storage_id": 3999
}

Пример ответа

{
    "success": true
}

Ошибки

Ошибка Причина
No product_id in input Не передан product_id
Product not found or access denied Продукт не найден или удален
Name must not be empty Передано пустое название
Name must be a string Название передано не строкой, например массивом
Unit not set Передана пустая единица измерения
Unit not found Неизвестная единица измерения
Unit cannot be changed to another unit group: the product is used in components of other products Смена группы единицы у продукта, который входит в состав других продуктов
Batch size must be greater than 0 Размер партии 0 или меньше
No storage_id in input Передан minimum без storage_id
Storage ID not found Склад не найден или удален
Product is not stored in storage location 3999, so its minimum cannot be set there Продукт не числится на складе
Invalid price value. Must be a number Значение не число (так же для batch_size и minimum)
Category 12 not found Категория не найдена
Supplier not found or access denied Поставщик не найден или удален
SKU must be from 1 to 50 characters for alternative_sku 0 Альтернативный артикул пустой или длиннее 50 символов
Label must not exceed 100 characters for alternative_sku 0 Подпись альтернативного артикула длиннее 100 символов

Ошибки в строках materials, products и resources перечислены в разделе «Состав продукта» статьи Продукты.