Отчёты (report) в JSON API 1.2 отдают агрегированные данные: остатки, обороты, деньги, прибыльность. Разберём ключевые ресурсы раздела /report/ и их параметры для интеграций.
Раздел отчётов
Отчёты живут в отдельном разделе /report/ и, в отличие от сущностей, только читаются — их нельзя создавать или менять. Они возвращают вычисленные показатели на момент запроса.
| Отчёт | Ресурс | Что показывает |
|---|---|---|
| Остатки | /report/stock/all | Текущие остатки по товарам |
| Обороты | /report/turnover/all | Приход и расход за период |
| Деньги | /report/money/plotseries | Движение денег |
| Прибыльность | /report/profit/byproduct | Прибыль по товарам |
Остатки: stock
Самый частый отчёт в интеграциях — остатки. Полная форма отдаёт остатки по всем позициям:
GET /report/stock/all
Для синхронизации с сайтом чаще нужна краткая форма — она легче и быстрее:
GET /report/stock/all/current
Краткая форма возвращает плоский список с полями assortmentId, storeId и stock, без развёрнутых данных товара — то, что нужно для обновления наличия. Кроме общего остатка stock, в полной форме доступны показатели reserve (зарезервировано под заказы), inTransit (ожидается по приёмкам) и quantity (доступно к продаже — остаток за вычетом резерва). Для витрины сайта обычно важен именно quantity, иначе можно продать уже зарезервированный товар.
filter, например по складу: ?filter=store=https://.../entity/store/{id}. Остатки по одной позиции можно получить точечно через /report/stock/bystore с фильтром по товару.Параметры отчётов
Отчёты управляются query-параметрами. Ключевые из них:
- filter — ограничение по складу, товару, группе, контрагенту;
- momentFrom / momentTo — границы периода для отчётов за интервал (обороты, деньги);
- limit / offset — пагинация для больших отчётов;
- groupBy — разрез группировки (например, по товару или по группе).
Период задаётся в формате даты-времени МойСклад:
GET /report/turnover/all?momentFrom=2026-01-01 00:00:00&momentTo=2026-01-31 23:59:59
YYYY-MM-DD HH:MM:SS. Пробел между датой и временем нужно URL-кодировать (%20).Обороты: turnover
Отчёт оборотов показывает приход и расход товаров за период. У него несколько разрезов:
| Ресурс | Разрез |
|---|---|
/report/turnover/all | По всем товарам |
/report/turnover/bystore | По складам |
/report/turnover/byoperation | По документам-операциям |
Каждая строка содержит начальный остаток (onPeriodStart), приход (income), расход (outcome) и конечный остаток (onPeriodEnd) — и в количестве, и в сумме.
Деньги и прибыльность
Финансовые отчёты помогают выгружать аналитику без ручной сборки. Основные:
/report/money/plotseries— динамика движения денег для графика (с параметрами периода и интервала);/report/money/byaccount— остатки по счетам и кассам;/report/profit/byproduct— прибыль в разрезе товаров;/report/profit/bycounterparty— прибыль по контрагентам.
Отчёт plotseries требует momentFrom, momentTo и interval (hour, day, month) — по ним МойСклад разбивает период на точки графика.
Практика: наличие для сайта
Типовая задача — регулярно обновлять наличие товаров на сайте. Правильный подход:
- Забирать краткие остатки
/report/stock/all/current— они компактны. - Сопоставлять
assortmentIdс товарами каталога сайта. - Обновлять только изменившиеся позиции, а не весь каталог.
- Ставить обновление по расписанию с учётом лимитов API.
/report/stock/all берут, когда нужны развёрнутые данные товара вместе с остатком.Итог
Раздел /report/ отдаёт готовую аналитику: остатки (stock), обороты (turnover), деньги (money) и прибыльность (profit). Отчёты только читаются, управляются параметрами filter, momentFrom/To и groupBy, а для синхронизации наличия удобнее всего краткая форма остатков.
Мы используем эти отчёты, когда связываем МойСклад с витриной на 1С-Битрикс: наличие и цены обновляются по расписанию, аналитика выгружается в отчётность, а нагрузка на API держится в рамках лимитов. Если каталог большой и обновляться должен часто, поможем выстроить устойчивый обмен.
Частые вопросы
Можно ли менять данные через отчёты?
Нет, раздел /report/ доступен только на чтение. Отчёты возвращают вычисленные показатели, но не позволяют создавать или изменять объекты.
Чем краткая форма остатков лучше полной?
Краткая форма /report/stock/all/current возвращает компактный список с assortmentId, storeId и stock. Она легче и быстрее, что важно для регулярной синхронизации наличия.
Как задать период в отчёте оборотов?
Параметрами momentFrom и momentTo в формате YYYY-MM-DD HH:MM:SS. Пробел между датой и временем нужно URL-кодировать.
Какие разрезы есть у отчёта оборотов?
По всем товарам (turnover/all), по складам (bystore) и по операциям-документам (byoperation). Каждая строка содержит начальный и конечный остаток, приход и расход.
Как отфильтровать остатки по складу?
Параметром filter со ссылкой на склад, например ?filter=store=https://.../entity/store/{id}. Так отчёт вернёт остатки только по нужному складу.
Что нужно для отчёта движения денег plotseries?
Параметры momentFrom, momentTo и interval (hour, day, month). По интервалу МойСклад разбивает период на точки для графика.
Как обновлять наличие на сайте без перегрузки API?
Забирать краткие остатки, сопоставлять по assortmentId и обновлять только изменившиеся позиции по расписанию с учётом лимитов запросов.
Есть ли отчёт по прибыли товаров?
Да, /report/profit/byproduct показывает прибыль в разрезе товаров, а /report/profit/bycounterparty — в разрезе контрагентов.
Поможем с настройкой и поддержкой Для разработчиков
Поможем с настройкой, доработкой и поддержкой Для разработчиков.