Максим

Максим

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

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

Все адреса указаны относительно базового https://api.controlata.ru/connect/v1/. Формат запросов и авторизация описаны в статье Обзор API.

Остатки в Controlata ведутся по складам, поэтому большинство методов принимает storage_id. Как узнать ID склада, описано в статье Обзор API.

Поля продукта

Поле Тип Описание
name string Название
sku string Артикул
unit string Единица измерения, код из статьи Единицы измерения
price float Цена продажи. По умолчанию 0
batch_size float Размер партии, больше 0. По умолчанию 1
minimum float Минимальный остаток на складе storage_id. По умолчанию 0
notes string Заметки

Создание продукта

POST products/add.php

Поле Тип Обязательное Описание
name string Да Название
unit string Да Единица измерения
storage_id int Да Склад, на котором создается остаток
sku string Нет Артикул
price float Нет Цена продажи
batch_size float Нет Размер партии
stock float Нет Начальный остаток на складе storage_id
minimum float Нет Минимальный остаток на складе storage_id
notes string Нет Заметки

Продукт появится на складе storage_id и на складах, в настройках которых для продуктов выбрано Все. Начальный остаток записывается только на склад storage_id и с себестоимостью 0.

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

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

{
    "name": "Стул обеденный дубовый",
    "sku": "F003",
    "unit": "шт",
    "price": 45000,
    "storage_id": 3998,
    "stock": 10,
    "minimum": 5
}

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

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

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

POST products/edit.php

Обязательные поля: product_id, name, unit и storage_id. Необязательные: sku, price, batch_size, minimum, notes.

Важно: метод перезаписывает продукт целиком. Если поле не передано, sku и notes станут пустыми, price и minimum станут равны 0, batch_size станет равен 1.

  • storage_id нужен только для minimum: минимальный остаток меняется на этом складе.
  • Поле stock здесь не учитывается. Чтобы изменить остаток, используйте products/update_stock.php.
  • Изменение цены сохраняется в истории цен продукта.
  • Как работает смена единицы измерения, описано в статье Единицы измерения.

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

{
    "success": true
}

Обновление остатка

POST products/update_stock.php

Поле Тип Обязательное Описание
product_id int Да ID продукта
storage_id int Да ID склада
stock float Да Новый остаток
notes string Нет Заметки к корректировке

Передавайте итоговый остаток, а не изменение. Controlata создаст корректировку на разницу между текущим и новым остатком.

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

{
    "product_id": 48390,
    "storage_id": 3998,
    "stock": 25,
    "notes": "Синхронизация с сайтом"
}

Удаление продукта

POST products/delete.php

Обязательное поле: product_id.

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

Получение списка продуктов

POST products/get_list.php

Обязательное поле: storage_id.

Метод возвращает продукты, у которых есть остаток на складе storage_id (в том числе нулевой), отсортированные по названию, без постраничной разбивки. Архивные продукты тоже попадают в список.

Поле ответа Описание
stock Остаток на складе
minimum Минимальный остаток на складе
planned Изменение остатка по запланированным операциям или null, если их нет
cost Себестоимость единицы
categories Категории продукта

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

{
    "success": true,
    "products": [
        {
            "id": "48390",
            "name": "Стул обеденный дубовый",
            "sku": "F003",
            "price": "45000.00",
            "cost": "24880.00",
            "batch_size": "1.000",
            "notes": "",
            "status": "1",
            "stock": "10.000",
            "minimum": "5.000",
            "planned": null,
            "unit": "шт",
            "categories": [
                {
                    "id": "12",
                    "name": "Стулья"
                }
            ]
        }
    ]
}

Получение данных продукта

POST products/get_entry.php

Обязательные поля: product_id и storage_id.

Кроме полей из списка, метод возвращает:

Поле ответа Описание
alternative_sku Альтернативные артикулы: label и sku
components Состав продукта: материалы (id с префиксом m-) и заготовки (id с префиксом p-)
resources Ресурсы для производства продукта
percent Доля себестоимости в цене продажи, %

У строк components и resources есть поля amount_per_unit и amount_per_batch (количество на единицу продукта и на партию), unit, cost_per_unit и cost_per_batch (стоимость на единицу и на партию) и position (порядок в составе).

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

{
    "success": true,
    "product": {
        "id": "48390",
        "name": "Стул обеденный дубовый",
        "sku": "F003",
        "price": "45000.00",
        "cost": "24880.00",
        "batch_size": "1.000",
        "notes": "",
        "status": "1",
        "stock": "10.000",
        "minimum": "5.000",
        "planned": null,
        "unit": "шт",
        "categories": [
            {
                "id": "12",
                "name": "Стулья"
            }
        ],
        "alternative_sku": [
            {
                "label": "Сайт",
                "sku": "CHAIR-OAK"
            }
        ],
        "components": [
            {
                "id": "m-2051",
                "name": "Доска дубовая",
                "sku": "M010",
                "amount_per_unit": "0.050",
                "amount_per_batch": "0.050",
                "unit": "куб. м",
                "status": "1",
                "cost_per_unit": "6500.00",
                "cost_per_batch": "6500.00",
                "key": "9911",
                "position": "0"
            }
        ],
        "resources": [
            {
                "id": "311",
                "name": "Работа столяра",
                "amount_per_unit": "6.000",
                "amount_per_batch": "6.000",
                "unit": "ч",
                "status": "1",
                "cost_per_unit": "9000.00",
                "cost_per_batch": "9000.00",
                "key": "5120",
                "position": "0"
            }
        ],
        "percent": 55.3
    }
}

Ошибки

Ошибка Причина
No name in input Не передано обязательное поле (вместо name будет имя поля)
Product not found or access denied Продукт не найден или у него нет остатка на складе storage_id
Storage ID not found Склад с таким ID не найден
Unit not found Неизвестная единица измерения
Batch size must be greater than 0 batch_size меньше или равен 0