Максим

Максим

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

Создает продукт вместе с составом. Продукт появляется на складе storage_id и на складах, которые хранят все продукты или его категории.

v1/products/add.php

Параметры

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

Формат строк materials, products и resources описан в разделе «Состав продукта» статьи Продукты. Количества в составе указываются на партию из batch_size единиц.

Controlata рассчитывает себестоимость продукта по составу, и по ней же оценивается начальный остаток. Если состава нет, начальный остаток оценивается по нулевой себестоимости.

Категории через API не создаются, можно назначить только существующие. В categories и suppliers можно передать числа или объекты с полем id, как их возвращает v2/products/get_entry.

Уникальность основного и альтернативных артикулов не проверяется.

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

Стол: в партии 10 штук, на партию уходит 0.5 куб. м доски с потерями 5%, 400 саморезов, 40 ножек (заготовка) и 30 часов работы столяра. Накладные расходы считаются процентом, который задан в самом ресурсе, поэтому для него достаточно id.

{
    "name": "Стол обеденный",
    "sku": "P100",
    "unit": "шт",
    "price": 45000,
    "batch_size": 10,
    "storage_id": 3999,
    "stock": 5,
    "minimum": 2,
    "categories": [21],
    "suppliers": [46],
    "alternative_sku": [
        {
            "label": "Ozon",
            "sku": "OZ-P100"
        }
    ],
    "materials": [
        {
            "id": 2051,
            "amount_per_batch": 0.5,
            "unit": "куб. м",
            "loss_percent": 5
        },
        {
            "id": 2060,
            "amount_per_batch": 400,
            "unit": "шт"
        }
    ],
    "products": [
        {
            "id": 312,
            "amount_per_batch": 40,
            "unit": "шт"
        }
    ],
    "resources": [
        {
            "id": 57,
            "amount_per_batch": 30,
            "unit": "ч"
        },
        {
            "id": 58
        }
    ]
}

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

{
    "success": true,
    "product_id": 3120
}

Ошибки

Ошибка Причина
No name in input Не передано обязательное поле (вместо name будет имя поля)
Name must not be empty Пустое название
Name must be a string Название передано не строкой, например массивом
Unit not set Передана пустая единица измерения
Unit not found Неизвестная единица измерения или единица только для ресурсов
Storage ID is not set storage_id равен 0 или пустой
Storage ID not found Склад не найден или удален
Batch size must be greater than 0 Размер партии 0 или меньше
Invalid price value. Must be a number Значение не число, например "12,5" (так же для batch_size, stock и minimum)
Category 12 not found Категория не найдена
Supplier not found or access denied Поставщик не найден или удален
Alternative_sku is not an array alternative_sku передан не массивом
SKU must be from 1 to 50 characters for alternative_sku 0 Альтернативный артикул пустой или длиннее 50 символов (в конце номер строки с 0)
Label must not exceed 100 characters for alternative_sku 0 Подпись альтернативного артикула длиннее 100 символов

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