МойСклад JSON API
Общие Сведения
Аутентификация
Для того чтобы успешно взаимодействовать с JSON API онлайн-сервиса МойСклад, необходимо аутентифицироваться в системе. МойСклад поддерживает аутентификацию по протоколу Basic Auth и с использованием токена доступа.
- При аутентификации по протоколу Basic Auth вместе с запросом
передается заголовок
Authorization
со значением парылогин:пароль
, закодированным в варианте RFC2045-MIME стандарта Base64. - При аутентификации с использованием токена доступа вместе с запросом передается заголовок
Authorization
со значениемBearer
.
Аутентификация по протоколу Basic Auth с автоматической генерацией соответствующего заголовка и возможность указать заголовок для аутентификации по токену поддерживается во многих HTTP-клиентах, таких как Postman, curl и т.п.
Получение нового токена
Запрос на получение нового токена. Как и в других запросах, в заголовке Authorization
пара логин:пароль
указывается закодированной в варианте RFC2045-MIME стандарта Base64.
При генерации нового токена доступа сгенерированные до этого токены пользователя будут отозваны.
- access_token - токен для доступа
Замечания по разработке клиентских приложений
При разработке клиентского приложения необходимо учитывать следующие моменты:
- Структура ответов и типы полей поддерживаются нами неизменными
- Может быть добавлено новое поле без нарушения структуры ответа
- Может быть добавлен новый ресурс
Сжатие содержимого ответов
Сервер апи использует сжатие содержимого ответов, поэтому при обращении к эндпоинтам апи через HTTP-заголовок запроса Accept-Encoding следует указать кодировку сжатия содержимого ответов. В редких случаях сервер может не применять сжатие ответа. При использовании сжатия, сервер апи укажет это в заголовке Content-Encoding с используемой кодировкой. Сервер апи поддерживает только кодировку gzip. Запросы без этого заголовка, а также запросы с заголовком, но иной кодировкой сжатия не будут обработаны. Сервер ответит с кодом 415 без тела ответа.
Типы данных
Название | Описание |
---|---|
Array(Type) | Массив объектов/значений. Type - тип элементов массива. |
Boolean | Представляет значение true или false . |
DateTime | Представляет строку в формате "гггг-мм-дд чч-мм-сс". Пример значения: "2016-08-23 15:21:09" . Подробнее тут |
Enum | Представляет строку, принимающую константное множество значений. |
Float | Представляет дробное числовое значение. Пример значения: 200.8 . |
Int | Представляет целое числовое значение в диапазоне -2^31 – 2^31. Пример значения: 200 . |
Long | Представляет целое числовое значение в диапазоне -2^63 – 2^63. Пример значения: 1613766951558 . |
Meta | Представляет объект в формате Метаданных. |
MetaArray | Объект с полями meta и rows, где rows - массив объектов. Элементы массива rows можно запросить, используя параметр запроса expand соответствующего поля. |
Object | Представляет сущность с вложенными полями. |
String(MaxLength) | Представляет текстовые данные в виде последовательности символов UTF-8. MaxLength - максимальная длина строки для конкретного поля. Пример значения: "Москва" . |
URL | Соответствующая стандартам FRC 3986 и RFC 3987 строка URI. Пример значения: "https://api.moysklad.ru/api/remap/1.2/entity/counterparty" . |
UUID | Предствляет строку в формате UUID. Пример значения: "12a8b923-692c-11e6-8a84-bae500000053" . |
Метаданные
В JSON есть несколько видов Метаданных. Один из них - поле meta, которое фигурирует в большинстве JSON представлений объектов, и содержит информацию об объекте или о выдаче, а также может использоваться в качестве ссылки на другой объект. Поле meta представляет собой объект со следующими атрибутами:
Название | Тип | Описание |
---|---|---|
href | URL | Ссылка на объект |
metadataHref | URL | Ссылка на метаданные сущности (Другой вид метаданных. Присутствует не во всех сущностях) |
type | String(255) | Тип объекта |
mediaType | String(255) | Тип данных, которые приходят в ответ от сервиса, либо отправляются в теле запроса. В рамках данного API всегда равен application/json |
uuidHref | URL | Ссылка на объект на UI. Присутствует не во всех сущностях. Может быть использована для получения uuid |
downloadHref | URL | Ссылка на скачивание Изображения и миниатюр изображений. Данный параметр указывается только в meta для Изображения у Товара или Комплекта, а также в поле miniature везде, где используются изображения. Если миниатюра не была создана, то значение данного поля равно null . Для создания миниатюры нужно перейти по ссылке, указанной в href в миниатюре. |
Атрибуты расширенного объекта meta
Следующие атрибуты объекта meta появляются, как правило, в методах выдачи списка сущностей/строк отчета. В них содержится информация о выдаче, пришедшей в ответ. В объектах meta, содержащих данные лишь об одном объекте (например поле meta в объекте context) нижеперечисленные атрибуты не фигурируют.
Название | Тип | Описание |
---|---|---|
size | Int | Размер выданного списка |
limit | Int | Максимальное количество элементов в выданном списке. Максимальное количество элементов в списке равно 1000. |
offset | Int | Отступ в выданном списке |
Метаданные сущности
Другой вид Метаданных. Представляет собой отдельный ресурс, содержащий информацию обо всех объектах сущностей данного типа. Есть не у каждой сущности. Присутствует лишь у тех сущностей, у которых в данной документации описан ресурс "Метаданные <наименование_сущности>". Как правило содержит информацию о вложенных сущностях, коллекциях и дополнительных полях.
JSON API позволяет получить метаданные всех сущностей с помощью метода /entity/metadata
. Также можно ограничить
выборку, указав в фильтре type только необходимые сущности.
Мета коллекций
meta коллекций содержит все те же атрибуты, что и meta сущностей, однако, если в списке появляется больше позиций, чем умещается на одной странице (size > limit) в объект meta добавляются след. поля:
Название | Тип | Описание |
---|---|---|
nextHref | URL | Ссылка на следующую страницу сущностей. |
previousHref | URL | Ссылка на предыдущую страницу сущностей. |
meta с такими полями можно встретить при выполнении запросов на получение всех объектов определенного типа на учетной записи (например запрос всех отгрузок), а также при запросе всех позиций отдельного документа.
Обработка ошибок
СТРУКТУРА ОШИБОК
Ошибка в данном API представляет собой массив errors, содержащий объекты error, каждый из которых описывает отдельную ошибку.
СТРУКТУРА ОБЪЕКТА error
Название | Тип | Описание |
---|---|---|
error | String(255) | Заголовок ошибкиОбязательное при ответе |
parameter | String(255) | Параметр, на котором произошла ошибка |
code | Int | Код ошибки (Если поле ничего не содержит, смотрите HTTP status code) |
error_message | String(255) | Сообщение, прилагаемое к ошибке |
moreInfo | link | Ссылка на документацию с описанием полученной ошибки |
line | Int | Строка JSON, на которой произошла ошибка |
column | Int | Координата элемента в строке line , на котором произошла ошибка |
dependencies | Array(Meta) | Список метаданных зависимых сущностей или документов. Выводится при невозможности удаления сущности, документа, если имеются зависимости от удаляемой сущности, документа |
meta | Meta | Метаданные сущности, документа на котором произошла ошибка |
Возвращаемые HTTP статусы ошибок и их значения:
HTTP status code | Значение |
---|---|
301 | Запрашиваемый ресурс находится по другому URL. |
303 | Запрашиваемый ресурс может быть найден по другому URI и должен быть найден с использоваием GET запроса |
400 | Ошибка в структуре JSON передаваемого запроса |
401 | Имя и/или пароль пользователя указаны неверно или заблокированы пользователь или аккаунт |
403 | У вас нет прав на просмотр данного объекта |
404 | Запрошенный ресурс не существует |
405 | http-метод указан неверно для запрошенного ресурса |
409 | Указанный объект используется и не может быть удален |
410 | Версия API больше не поддерживается |
412 | Не указан обязательный параметр строки запроса или поле структуры JSON |
413 | Размер запроса или количество элементов запроса превышает лимит (например, количество позиций, передаваемых в массиве positions, превышает 1000) |
415 | Формат содержимого запроса headers или body не поддерживается. |
429 | Превышен лимит количества запросов |
500 | При обработке запроса возникла непредвиденная ошибка |
502 | Сервис временно недоступен |
503 | Сервис временно отключен |
504 | Превышен таймаут обращения к сервису, повторите попытку позднее |
Также, вместе с телом ответа ошибки, вам могут прийти следующие заголовки (Headers):
- X-Lognex-Auth - расширенный код ошибки аутентификации
- X-Lognex-Auth-Message - сообщение об ошибке.
- X-Lognex-API-Version-Deprecated - дата отключения запрошенной версии API.
- Location - URL по которому доступен запрашиваемый ресурс (в случае ответа с кодом 301 или кодом 303)
Вы можете узнать лимит оставшихся запросов с помощью следующих заголовков
- X-RateLimit-Limit - количество запросов, которые равномерно можно сделать в течение интервала до появления 429 ошибки
- X-Lognex-Retry-TimeInterval - интервал в миллисекундах, в течение которого можно сделать эти запросы
- X-RateLimit-Remaining - Число запросов, которые можно отправить до получения 429 ошибки
- X-Lognex-Reset - время до сброса ограничения в миллисекундах. Равно нулю, если ограничение не установлено
- X-Lognex-Retry-After - время до сброса ограничения в миллисекундах.
Работа с дополнительными полями
Дополнительные поля позволяют расширить набор свойств некоторых сущностей путем добавления собственных типизированных полей. JSON API позволяет создавать, обновлять и удалять дополнительные поля и их значения.
Список сущностей, у которых есть доп. поля:
- Договор
- Контрагент
- Юрлицо
- Проект
- Пользовательский справочник (у каждого справочника свои)
- Склад
- Сотрудник
- Товар
- Услуга (располагаются в метаданных Товаров)
- Комплект (располагаются в метаданных Товаров)
- Серия
- Все документы:
- Возврат покупателя
- Возврат поставщику
- Входящий платеж
- Заказ покупателя
- Заказ поставщику
- Исходящий платеж
- Оприходование
- Отгрузка
- Перемещение
- Приемка
- Приходный ордер
- Расходный ордер
- Розничная продажа
- Розничная смена
- Розничный возврат
- Списание
- Инвентаризация
- Счет покупателю
- Счет поставщика
- Счет-фактура выданный
- Счет-фактура полученный
- Прайс-лист
- Внутренний заказ
- Заказ на производство
- Техоперация
- Производственное задание
- Выполнение этапа
- Полученный отчет комиссионера
- Выданный отчет комиссионера
Посмотреть все созданные доп. поля можно с помощью запроса на получение метаданных сущности. Ответ будет содержать описание доп. полей в виде коллекции attributes, если указанная сущность поддерживает работу с доп. полями.
Атрибуты описания доп. поля
Название | Тип | Описание |
---|---|---|
description | String(4096) | Описание доп. поля |
id | UUID | ID доп. поляОбязательное при ответе Только для чтения |
meta | Meta | Ссылка на метаданные доп. поляОбязательное при ответе |
name | String(255) | Наименование доп. поляОбязательное при ответе Необходимо при создании |
required | Boolean | Является ли доп. поле обязательнымОбязательное при ответе |
show | Boolean | Показывать ли доп. поле на UI. Не может быть скрытым и обязательным одновременно. Только для операцийОбязательное при ответе |
type | Enum | Тип доп. поляОбязательное при ответе Необходимо при создании После заполнения недоступно для изменения |
Дополнительные поля конкретной сущности - внутренняя коллекция attributes, которая представлена в виде массива объектов доп. полей со значениями.
Атрибуты доп. поля со значением
Название | Тип | Описание |
---|---|---|
id | UUID | ID соответствующего доп. поля |
meta | Meta | Ссылка на метаданные доп. поля |
file | Object | Описание файла и контент (поле доступно только для доп.поля типа Файл) |
name | String(255) | Наименование доп. поля |
type | Enum | Тип доп. поля |
value | Зависит от типа, см. ниже | Значение, указанное в доп. поле |
Возможные значения типа доп. поля (поле type) и соответствующие им значения типа в JSON, а также типы атрибута value в JSON объекта доп поля при соответствующем type:
Тип атрибута | Значение поля type в JSON | Тип поля value в JSON |
---|---|---|
Дата | time | string |
Справочник | {entityType} | object |
Ссылка | link | string |
Строка | string | string |
Текст | text | string |
Файл | file | string |
Флажок | boolean | boolean |
Число дробное | double | number |
Число целое | long | number |
Дополнительные поля типов Файл и Флажок не могут быть обязательными (поле required не может быть true
).
Сброс значения в доп. поле
При передаче значения null
в поле value значение соответствующего доп. поля сбрасывается,
кроме доп. поля типа Файл. Для сброса значения доп. поля типа Файл нужно передать
поле file со значением null
.
Дополнительные поля типа справочник
Отдельного упоминания заслуживает тип доп. поля "справочник". Значение type в представлении объекта доп. поля будет разным в зависимости от того, справочник каких сущностей был выбран при создании доп. поля. Ниже представлена таблица, в которой при выбранном типе доп. поля "справочник" показаны значения поля type в зависимости от выбранного типа сущностей в справочнике.
Примеры значения type у доп. поля типа справочник
Тип сущностей справочника | Значение поля type в JSON (entityType) |
---|---|
[Договор] | contract |
[Контрагент] | counterparty |
[Проект] | project |
[Склад] | store |
[Сотрудник] | employee |
[Товар] | product |
Имя_пользовательского справочника | customentity |
Если в качестве типа доп. поля выбран Пользовательский справочник, то в составе объекта данного доп. поля появится новый атрибут customEntityMeta являющийся ссылкой на метаданные этого справочника. Полный набор атрибутов доп. поля будет выглядеть следующим образом:
Название | Тип | Описание |
---|---|---|
customEntityMeta | Meta | Ссылка на метаданные пользовательского справочника |
description | String(4096) | Описание доп. поля |
id | UUID | ID доп. поля |
meta | Meta | Ссылка на метаданные доп. поля |
name | String(255) | Наименование доп. поля |
required | Boolean | Является ли доп. поле обязательным |
show | Boolean | Показывать ли доп. поле на UI. Не может быть скрытым и обязательным одновременно. Только для операций |
type | Enum | Тип доп. поля |
При выбранном типе доп. поля "справочник" атрибут value будет объектом со следующими свойствами:
Название | Тип | Описание |
---|---|---|
meta | Meta | Метаданные сущности соответствующего справочника |
name | String(255) | Наименование соответствующей сущности |
Обнуление доп. поля типа "справочник" происходит так же, как и при работе с другими доп. полями.
В запросе на обновление в коллекции attributes следует указать объект с id данного поля, а в качестве value передать null
.
С коллекцией доп. полей можно работать только в контексте отдельной сущности. Доп. поля и их значения можно передать в коллекции attributes в теле запроса как на создание, так и на обновление сущности. В качестве указания доп. поля нужно использовать поле meta. В переданном массиве объектов можно указать не все доп. поля - проинициализируются/обновятся только указанные.
Дополнительные поля типа файл
Для загрузки значения для доп. поля типа файл нужно в JSON при создании или обновлении для значения поля указать объект следующей структуры:
Название | Тип | Описание |
---|---|---|
filename | String(255) | Имя файлаОбязательное при ответе Необходимо при создании |
content | String | Байты файла, закодированные в base64Обязательное при ответе Необходимо при создании |
Для сброса значения доп. поля типа Файл нужно передать поле file со значением null
.
Дополнительные поля сущностей
Запрос на получение дополнительных полей сущности. Список доступных типов сущностей перечислен тут.
Структура объекта доп. поля подробно описана в секции Работа с дополнительными полями.
Параметры
Параметр | Описание |
---|---|
limit | number (optional) Default: 1000 Example: 1000 Максимальное количество сущностей для извлечения.Допустимые значения 1 - 1000 . |
offset | number (optional) Default: 0 Example: 40 Отступ в выдаваемом списке сущностей. |
entityType | string Example: demand тип сущностей, для которых осуществляется управление доп. полями. |
Получить все дополнительные поля для указанного типа
Запрос всех доп. полей для переданного типа сущностей. Результат: Объект JSON, включающий в себя поля:
Название | Тип | Описание |
---|---|---|
meta | Meta | Метаданные о выдаче |
rows | Array(Object) | Массив JSON объектов, представляющих собой доп. поля. |
Создать дополнительные поля
Действие доступно только для пользователя с правами администратора.
Запрос на создание нового доп. поля для указанного типа сущностей.
Удалить дополнительные поля
Действие доступно только для пользователя с правами администратора.
Запрос на удаление нескольких доп. полей отгрузок.
Response 200 (application/json) Успешное удаление доп. полей.
Дополнительное поле
Параметры
Параметр | Описание |
---|---|
id | string (required) Example: 7bc578d8-6501-11e8-9464-e4de00000004 id доп. поля. |
Получить дополнительное поле
Запрос на получение отдельного доп. поля отгрузок с указанным id.
Изменить дополнительное поле
Действие доступно только для пользователя с правами администратора.
Запрос на обновление отдельного доп. поля для переданного типа сущностей.
Удалить дополнительное поле
Действие доступно только для пользователя с правами администратора.
Запрос на удаление доп. поля отгрузок с указанным id.
Response 200 (application/json) Успешное удаление доп. поля.
Обновление значений дополнительных полей
Запрос на обновление коллекции доп. полей конкретной сущности.
Работа с позициями документов
API сервиса МойСклад позволяет оперировать с такими документами как Отгрузка, Заказ покупателя, Счет покупателю, Розничная продажа, Полученный отчет комиссионера, Выданный отчет комиссионера, Оприходование, Внутренний заказ, Инвентаризация, Списание, Перемещение, Прайс-лист, Заказ на производство, Возврат поставщику, Заказ поставщику, Розничный возврат, Возврат покупателя, Приемка, Счет поставщика. Перечисленные документы содержат позиции, работать с которыми можно как в составе отдельного документа, так и с помощью специальных ресурсов для управления позициями документа.
Работа с позициями в рамках отдельного документа
При работе с позициями в рамках отдельного документа, их можно передавать как поле positions, представляющее собой массив позиций документа, в составе объекта, использующегося в запросе на изменение или создание документа. В таком случае, массив позиций воспринимается как множество всех позиций документа и полностью заменяет (в случае запроса на обновление) все уже существующие позиции в документе. В случае запроса на обновление, все позиции, которые существовали ранее в документе, но не были переданы в теле запроса на обновление, будут удалены, все существующие позиции, id которых совпал с id передаваемых позиций в теле запроса, будут обновлены, а новые позиции, которых ранее не было среди существующих позиций документа, будут добавлены в список позиций.
Работа с позициями документов с помощью специальных ресурсов
В JSON API предусмотрены специальные ресурсы для управления позициями документов. Эти ресурсы как правило доступны по следующему URI и с помощью них вы сможете удалять позиции из документа, сделав запрос с методом DELETE по URL соответствующего ресурса с указание id позиции:
/{код сущности документа, в составе JSON API}/{id отдельного документа}/positions/{id отдельной позиции}
При работе со специальными ресурсами можно запрашивать список всех позиций документа, создавать новые позиции, а также обновлять существующие. При создании новых позиций с помощью данных ресурсов, можно обходить ограничение в 1000 позиций на документ. Также, используя данный ресурс, можно управлять массовым обновлением позиций. Для изменения сведений по отдельным позициям необходимо использовать ресурсы управления отдельными позициями документа, которые доступны по URI:
/{код сущности документа, в составе JSON API}/{id отдельного документа}/positions/{id отдельной позиции}
Оба способа работы с позициями также описаны в документации по каждому из документов.
Также возможно массовое удаление позиций документа, используя метод POST по URL соответствующего ресурса. В теле запроса необходимо указать массив удаляемых позиций, указав поле meta у каждой из позиций.
Остатки и себестоимость в позициях документов
При запросе и обновлении документов есть возможность получать остатки и себестоимость позиций этих документов.
Для получения остатков и себестоимости в позициях документа в запросе нужно передать дополнительный параметр fields=stock
.
Например,
/customerorder/{id документа}?fields=stock&expand=positions
Остатки и себестоимость можно получить по следующим документам: [Отгрузка, Заказ Покупателя, Розничная продажа, Счет покупателя, Заказ поставщика, Счет поставщика, Приемка, Возврат поставщику, Возврат покупателя, Розничный возврат]
Остатки и себестоимость для документов Отгрузка, Розничная продажа, Приемка, Возврат поставщику, Возврат покупателя, Розничный возврат расчитываются на момент поля moment в данных документах. Для Заказа покупателя, Счета покупателя, Заказа поставщика, Счета поставщика рассчитываются на текущий момент времени.
Получить остатки с себестоимостью можно для следующих запросов:
- Получения списка операций
- Получение отдельной операции
- Получение позиций операции
- Получение отдельной позиции операции
- Обновление операции
- Обновление позиции
При составлении запроса на получение списка операций нужно дополнительно передать параметр limit
со значением, не превышающем 100.
Например,
/customerorder?fields=stock&expand=positions&limit=100
Для возврата покупателя без основания и розничного возврата без основания поле cost
будет отсутствовать в составе stock
.
Назначение поля syncId
Сущностям, у которых среди атрибутов присутствует поле syncId, оно необходимо для того, чтобы в случае сбоя
при повторной отправке запроса на создание новой сущности не происходило дублирование объектов. Если в теле запроса
на создание сущности указать сгенерированный на клиенте syncId, то при повторной отправке этого же запроса (с тем же syncId) вместо создания
сущности с идентичными полями в ответ придет ранее созданная сущность.
Сущности, поддерживающие поле syncId, можно удалить, используя url типа /entity/{type}/syncid/{id}
.
Создание и обновление объекта
При создании объекта достаточно заполнить только поля, помеченные Необходимое
. Данные поля используются только при создании, при обновлении они не требуются.
Поля, помеченные Только для чтения
, игнорируются при создании/обновлении объекта.
Создание и обновление нескольких объектов
При использовании метода POST вы можете указать в теле запроса вместо одной -
массив сущностей. Для этого, вам нужно передать массив (начать тело запроса с [
и закончить ]
), который будет содержать JSON представления
объектов, которые вы хотите создать или обновить. Обновляемые сущности должны содержать идентификатор в виде метаданных.
Если при обновлении сущность не найдена, она будет создана.
Также возможно произвести массовое удаление сущностей, если при использовании метода POST указать url вида /entity/{type}/delete
.
Лимит на создание, обновление и удаление объектов списком - 1000
Поддержка null
В рамках JSON API можно удалить значение из поля типа объект (если это поле не является обязательным, или же если данное поле в
основном интерфейсе может содержать пустое значение). Например: поле Договор(contract) в любом из документов. Сделать это можно передав в
запросе на обновление сущности в данное поле null. Например: { "contract": null }
.
Удаление валюты из документов ({rate: null}
) равносильно изменению валюты документа на валюту по умолчанию. В результате все
цены и суммы будут пересчитаны. Накладные расходы также будут пересчитаны, если они не были указаны явно.
Исключения:
- Структурированный адрес у
Контрагента,
Юрлица,
Точки продаж,
Склада,
Заказа покупателя,
Отгрузки не поддерживает удаления передачей
null
. Для удаления адреса необходимо в строковое поле передать пустую строку""
. Конкретные строковые поля приведены в соответствующих разделах, переход в которые осуществляется по ссылкам выше.
Пустые поля
Если какое-то из полей сущности не было заполнено и, при этом оно не является обязательным, оно не будет выдано в JSON представлении этой сущности.
Формат даты и времени
В JSON API поля типа дата-время (момент времени) - это строка в формате:
- Без миллисекунд:
ГГГГ-ММ-ДД ЧЧ:мм:сс
- С миллисекундами:
ГГГГ-ММ-ДД ЧЧ:мм:сс.ммм
В этом формате возвращаются поля типа дата-время в ответах на запросы. - Без секунд:
ГГГГ-ММ-ДД ЧЧ:мм
Только для параметров фильтрации. При фильтрации минимальное значение:1970-01-01 03:00:00
, а максимальное значение даты ограничено.
Следующие поля устанавливаются и выводятся в JSON API с точностью до минут, а именно со значением секунд и миллисекунд равным 00
:
- incomingDate
- commisionPeriodStart
- commisionPeriodEnd
- certificateDate
- moment
- deliveryPlannedMoment
- paymentPlannedMoment
- firstDemandDate
- lastDemandDate
- дополнительное поле с типом Дата
Сортировка объектов
Для сортировки списка объектов можно использовать url параметр order
.
Значение этого параметра - urlencoded строка с условиями сортировки, перечисленными через ;
. (Все примеры ниже указаны без urlencoded для лучшей читаемости)
Каждое условие сортировки- это сочетание названия поля, запятой (опционально, если указывается направление сортировки), направления сортировки (опционально; может принимать значения asc
и desc
. Значение по умолчанию - asc
).
Сортировка поддерживается для следующих типов полей: числовой, строковый, дата-время, логический и uuid. Подробное описание доступно в соответствующем разделе.
Примеры запросов с сортировкой:
- https://api.moysklad.ru/api/remap/1.2/entity/supply?order=name
- https://api.moysklad.ru/api/remap/1.2/entity/product?order=code,desc
- https://api.moysklad.ru/api/remap/1.2/entity/product?order=name;code,desc
- https://api.moysklad.ru/api/remap/1.2/entity/product?order=name,desc;code,asc
Фильтрация выборки с помощью параметра filter
Для фильтрации выборки по нескольким полям можно использовать url параметр filter
.
Значение этого параметра - urlencoded строка с поисковыми условиями, перечисленными через ;
. Для использования самого символа ;
в текстовых фильтрах необходимо указывать два символа \;
.
(Все примеры ниже указаны без urlencoded для лучшей читаемости)
Каждое поисковое условие - это сочетание названия поля, оператора и константы.
Фильтровать можно по всем полям, значения которых являются примитивными типами. Т.е. нельзя фильтровать поля-объекты и поля-массивы,
все остальные поля могут быть использованы в параметре filter
.
- Допустимые операторы:
['=', '>', '<', '>=', '<=', '!=', '~', '~=', '=~']
Если в поисковом запросе несколько раз встречается условие типа "равенство" =
примененное к одному и тому же полю,
то такое условие интерпретируется как совокупность условий, разделенных логическим оператором ИЛИ
.
- Например условие
filter=sum=100;sum=150
будет интерпретировано какsum=100 ИЛИ sum=150
или жеsum in (100, 150)
Если же встречается несколько условий вида "не равно" !=
, наложенных на одну и ту же переменную, то они интерпретируются как совокупность
условий разделенных логическим оператором И
.
- Например условие
filter=name!=0001;name!=0002
будет эквивалентно следующим (взаимно эквивалентным) условиям :name != 0001 И name != 0002
илиname not in (0001, 0002)
Если на одно из полей наложено ограничение типа "равенство", а затем на него накладывается ограничение типа неравенство - в таком случае произойдет ошибка.
- Например условие
filter=sum=100;sum>99
вызовет ошибку.
Допускается использование одновременно нескольких одинаковых операторов сравнения ['>', '<', '>=', '<=']
для одного поля. При этом будет использовано лишь первое значение.
- Например условие
filter=sum>99;sum>100
будет аналогично условиюfilter=sum>99
. В будущих версиях такое условие будет вызывать ошибку.
Фильтры, примененные к разным полям объединяются через логическое И
, т.е. в запросе вида:
filter=sum=100;moment>2016-10-11 12:00:00
выборка будет отфильтрована и по сумме и по дате.
Проверка на пустое значение
Если в строке фильтрации указать конструкцию вида: <имя_поля>=;
то в выборку попадут только объекты, где
данное поле равно null (т.е. отсутствует значение), а если тип поля - строковое, то будет также выполнена проверка на пустую строку, т.е. поле=''.
Конструкция <имя_поля>!=;
выполнит проверку на присутствие значения. С помощью данной конструкции можно проверить наличие значения в ссылочном поле.
Фильтрация документов
Для фильтрации выборки документов можно использовать параметр isDeleted. Принимает значения true
и false
.
- При указании значения
true
вернутся все документы данного типа, находящиеся в корзине. - При указании значения
false
вернутся только неудаленные документы. - Можно вывести все документы: и удаленные, и нет, указав в запросе оба значения данного параметра:
filter=isDeleted=true;isDeleted=false
.
Для фильтрации выборки напечатанных документов используется параметр printed. Принимает значения true
и false
.
Для фильтрации выборки отправленных документов используется параметр published. Принимает значения true
и false
.
Фильтрация сущностей
Для фильтрации выборки сущностей следует использовать параметр archived. Данный параметр принимает значения true
и false
.
- При указании значения
true
вернутся все сущности данного типа, находящиеся в архиве. - При указании значения
false
вернутся только не архивные сущности. - Можно вывести все сущности: и архивные, и нет, указав в запросе оба значения данного параметра:
filter=archived=true;archived=false
. Фильтровать по параметру archived можно только те сущности, у которых данный параметр присутствует в списке полей.
Фильтрация ссылочных полей
С помощью filter можно фильтровать ссылочные поля. Если в сущности присутствует ссылочное поле в виде метаданных, можно использовать следующую конструкцию для того чтобы отфильтровать по этому полю выборку:
filter=<имя_поля>=<ссылка>
Пример ссылки:
https://api.moysklad.ru/api/remap/1.2/entity/
/<id>
Вот несколько примеров:
filter=agent=https://api.moysklad.ru/api/remap/1.2/entity/counterparty/<id>
filter=ownAgent=https://api.moysklad.ru/api/remap/1.2/entity/organization/<id>
Ссылочные поля, доступные для фильтрации:
- agent
- ownAgent
- owner
- group
- parent
- contract
- project
- organization
- store
- agentStore
- supplier
Для розничных операций ("Розничная смена", "Розничная продажа", "Розничный возврат", "Внесение денег", "Выплата денег") также доступна фильтрация по:
- retailstore
Примеры запросов для фильтрации :
https://api.moysklad.ru/api/remap/1.2/entity/demand?filter=moment>2016-10-11 12:00:00;moment<2016-10-11 13:00:00;sum=100;name=0010;name=0011
https://api.moysklad.ru/api/remap/1.2/entity/counterparty?filter=name=Иван;phone=89269269222;email=vanyan@mail.krut
Фильтрация по полям типа ID
С помощью filter можно фильтровать поля типа ID.
filter=<имя_поля>=<ID>
Пример ID:
94975104-3cad-11e8-1e44-bd4d00000084
Например:
filter=productid=94975104-3cad-11e8-1e44-bd4d00000084
Фильтрация по дополнительным полям
С помощью параметра filter можно фильтровать по дополнительным полям, добавив ссылку на доп. поле и значение фильтрации. Значение фильтрации может быть строкой, числом, датой или url, в зависимости от типа доп. поля.
Пример: filter=<ссылка на доп.поле>=<значение>
Доступные операторы для фильтрации доп. полей
Название | Тип поля value в JSON | Значение поля type в JSON | Описание |
---|---|---|---|
Дата | string | time | =val , = , !=val , != , =val;=val2 , !=val;!=val2 , =val;= , !=val;!= , <val , >val , >=val , <=val , >=val;<=val2 |
Справочник | object | {entityType} | =val , = , !=val , != , =val;=val2 , !=val;!=val2 , =val;= , !=val;!= |
Ссылка | string | link | =val , = , !=val , != , =val;=val2 , !=val;!=val2 , =val;= , !=val;!= , ~val , !~val , ~=val , =~val |
Строка | string | string | =val , = , !=val , != , =val;=val2 , !=val;!=val2 , =val;= , !=val;!= , ~val , !~val , ~=val , =~val |
Текст | string | text | =val , = , !=val , != , =val;=val2 , !=val;!=val2 , =val;= , !=val;!= , ~val , !~val , ~=val , =~val |
Файл | string | file | Фильтрация не поддерживается |
Флажок | boolean | boolean | =true , =false |
Число дробное | number | duble | =val , = , !=val , != , =val;=val2 , !=val;!=val2 , =val;= , !=val;!= , <val , >val , >=val , <=val , >=val;<=val2 |
Число целое | number | long | =val , = , !=val , != , =val;=val2 , !=val;!=val2 , =val;= , !=val;!= , <val , >val , >=val , <=val , >=val;<=val2 |
=val
- фильтрация по значению
=
- фильтрация по пустому значению
~
- частичное совпадение
!~
- частичное совпадение не выводится
~=
- полное совпадение в начале значения
=~
- полное совпадение в конце значения
>
- больше
<
- меньше
>=
- больше или равно
<=
- меньше или равно
Примеры фильтрации:
filter=https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/b83c12e7-42bf-11ec-0a80-08bb00000161=color
filter=https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/83386e05-51c0-11ec-0a83-0640000001bb>=2021-11-30 12:39:00
filter=https://api.moysklad.ru/api/remap/1.2/entity/product/metadata/attributes/c06ac4a0-e27a-11ec-0a80-0ad600000393=https://api.moysklad.ru/api/remap/1.2/entity/employee/13268984-e24d-11ec-0a80-0ad600000367
Дополнительные фильтры
С помощью filter=state.name=<ИмяСтатуса> можно фильтровать документы по имени статуса. state.name Параметр строкового типа. В отфильтрованную выборку попадут все документы данного типа, на которые выставлен статус с указанным именем.
Пример запроса с использованием фильтра state.name:
https://api.moysklad.ru/api/remap/1.2/entity/customerOrder?filter=state.name=Новый;state.name=Принят
Фильтр filter=assortment=
Пример запроса с использованием фильтра assortment:
https://api.moysklad.ru/api/remap/1.2/entity/demand?filter=assortment=https://api.moysklad.ru/api/remap/1.2/entity/product/166909e6-4a99-11e6-8a84-bae500000089
С помощью filter=accounts.accountnumber=<НомерСчета> можно фильтровать контрагентов по номеру счета. accounts.accountnumber Параметр строкового типа. В отфильтрованную выборку попадут все контрагенты, у которых есть счет с указанным номером.
Пример запроса с использованием фильтра accounts.accountnumber:
https://api.moysklad.ru/api/remap/1.2/entity/counterparty?filter=accounts.accountnumber=123456;accounts.accountnumber=654321
Фильтрация по сущностям, на которые нет права просмотра
При фильтрации по сущности, на которую у текущего пользователя нет прав на просмотр в ответе придет пустой список. Например, при фильтрации задач (task) по автору (author), который является сотрудником, которого не может просматривать текущий пользователь, в ответ вернется пустой список задач.
Контекстный поиск
В JSON API можно осуществлять контекстный поиск среди списка сущностей определенного типа по их строковым полям. Для этого используется URI параметр фильтрации search
search Параметр фильтрации, с помощью которого можно осуществить поиск в списке сущностей. Поиск происходит по основным строковым полям сущностей данного типа. Результатом поиска будет отсортированный по релевантности список сущностей данного типа, прошедших фильтрацию по переданной поисковой строке. В отличии от фильтрации выборки с помощью параметра filter, при которой значения проверяются на точное совпадение указанным, при контекстном поиске проверка на совпадение не строгая. Таким образом, если осуществлять фильтрацию вида
../entity/
в отфильтрованную выборку попадут только те сущности, поле name у которых имеет значение?filter=name=120 120
и никакие другие. При контекстном поиске вида../entity/
будут выведены как сущности с name равным?search=120 120
, так и сущности, в имени (или в другом строковом поле) которых120
является началом какого-то слова, например12003
,пазл детский 1200 штук
и т.п. Причем, если ввести несколько слов../entity/
и поиск идет по полям name и description, то будут выведены как сущности с name равным?search=120 возврат 1200
и с description равнымвозврат из-за деффекта
, так и сущности с именем777
с описаниемрозничный возврат на улице 120 летия
.- Примеры запросов контекстного поиска (значения должны быть urlencoded):
https://api.moysklad.ru/api/remap/1.2/entity/project?search=реструктуризация
https://api.moysklad.ru/api/remap/1.2/entity/move?search=ул.Вавилова
https://api.moysklad.ru/api/remap/1.2/entity/counterparty?search=петров
Удаление в корзину
Корзина позволяет избежать риска случайного удаления важных документов. Удаление в корзину доступно только при наличии у сотрудника соответствующих прав, а также настроек компании на использовании корзины.
Response 200 (application/json) Успешный запрос удаления Приёмки в корзину
Оператор фильтрации "подобие"
В JSON API для строковых полей есть специальный оператор фильтрации "подобие".
~
обычное подобие. Ищет любое вхождение подстроки, следующей после оператора, в значении поля. Например,?filter=code~ms
найдет все сущности, у которых в коде встречается подстрока "ms".~=
левое подобие. Ищет соответствие по префиксу значения. Например?filter=code~=ms
найдет все сущности, у которых код начинается на "ms".=~
правое подобие. Ищет соответствие по постфиксу. Например?filter=code=~ms
найдет все сущности, у которых код оканчивается на "ms".
Операторы подобия работают исключительно с полями строкового типа и не учитывают регистр. К полям типа uuid и дата-время они неприменимы.
Применение сохраненного фильтра
В JSON API есть возможность применения сохраненных фильтров. Подробное описание доступно в соответствующем разделе.
Ссылки на файлы
В JSON API для скачивания файла формируется редирект на временный URL файла. Для корректной работы необходимо поддерживать обработку редиректов. Запрос на временный URL не требует авторизации. По умолчанию время жизни временного URL равно одной минуте.
С помощью заголовка X-Lognex-Download-Expiration-Seconds
можно изменить время жизни URL в секундах.
Текущее максимально возможное значение - 86400 секунд (24 часа).
Долгоживущие ссылки предназначены для экспорта. Использование этих ссылок на публично доступных web-страницах запрещено.
Замена ссылок объектами с помощью expand
В JSON API, в составе сущностей можно встретить ссылки на связанные объекты. Ссылки выводятся в формате Метаданных. Для того, чтобы вместо ссылок получить связанные объекты, не обязательно делать отдельные запросы для каждого из них. Вместо этого, вместе с запросом на получение сущности, нужно передать параметр expand. В качестве значения данного параметра нужно перечислить через запятую все необходимые поля-ссылки, на месте которых вы бы хотели видеть связанные объекты. В результате запроса с таким параметром, в ответе вы получите объект с развернутыми вложенными объектами вместо ссылок. К примеру, в документах, имеющих в составе поле agent, вместо ссылки на контрагента будет выведен объект со всеми полями сущности "Контрагент", описанными тут.
На expand действуют следующие правила:
- Expand разрешен только на размере выборки не более 100, пример:
https://api.moysklad.ru/api/remap/1.2/entity/customerorder?expand=positions&limit=100
. Если указан больший лимит и указан expand, то параметр expand будет игнорироваться. - Максимальный уровень вложенности expand : 3
- Также expand можно применять для результатов операций создания и обновления
Ниже показаны примеры использования expand на Возврате покупателя. В примерах представлены только поля meta и demand.
Возврат без expand
Возврат с expand отгрузки
Передаем параметр expand=demand.
Возвраты с expand отгрузки
Передаем параметр expand=demand и limit=100.
Expand с глубиной 2
Теперь развернем поле agent у вложенной в возврат отгрузки (demand). В ответ придет возврат покупателя с развернутой отгрузкой (demand), внутри которой будет развернутый объект контрагента (agent).
В данном запросе продемонстрирован уровень вложенности параметра expand равный двум.
Создание отгрузки с expand
Редактирование отгрузки с expand
Контекст запроса сотрудника
Возвращает данные о сотруднике, от лица которого происходит запрос. Доступ к сущности осуществляется по эндпоинту /context/employee
Атрибуты сущности
Название | Тип | Описание |
---|---|---|
accountId | UUID | ID учетной записиОбязательное при ответе Только для чтения |
archived | Boolean | Добавлен ли Сотрудник в архивОбязательное при ответе Только для чтения |
attributes | Array(Object) | Дополнительные поля СотрудникаТолько для чтения |
cashiers | MetaArray | Массив кассиров. Подробнее тутТолько для чтения Expand |
code | String(255) | Код СотрудникаТолько для чтения |
created | DateTime | Момент создания СотрудникаОбязательное при ответе Только для чтения |
description | String(4096) | Комментарий к СотрудникуТолько для чтения |
String(255) | Электронная почта сотрудникаТолько для чтения |
|
externalCode | String(255) | Внешний код СотрудникаОбязательное при ответе Только для чтения |
firstName | String(255) | ИмяТолько для чтения |
fullName | String(255) | Имя Отчество ФамилияТолько для чтения |
group | Meta | Отдел сотрудникаОбязательное при ответе Только для чтения |
id | UUID | ID СотрудникаОбязательное при ответе Только для чтения |
image | Object | Фотография сотрудника. Подробнее тутТолько для чтения |
inn | String(255) | ИНН сотрудника (в формате ИНН физического лица)Только для чтения |
lastName | String(255) | ФамилияОбязательное при ответе Только для чтения |
meta | Meta | Метаданные СотрудникаОбязательное при ответе Только для чтения |
middleName | String(255) | ОтчествоТолько для чтения |
name | String(255) | Наименование СотрудникаОбязательное при ответе Только для чтения |
owner | Meta | Владелец (Сотрудник)Обязательное при ответе Только для чтения |
permissions | Object | Перечисление пермиссий сотрудника. Подробнее тутОбязательное при ответе Только для чтения |
phone | String(255) | Телефон сотрудникаТолько для чтения |
position | String(255) | Должность сотрудникаТолько для чтения |
shared | Boolean | Общий доступОбязательное при ответе Только для чтения |
shortFio | String(255) | Краткое ФИОТолько для чтения |
uid | String(255) | Логин СотрудникаТолько для чтения |
updated | DateTime | Момент последнего обновления СотрудникаОбязательное при ответе Только для чтения |
Атрибуты вложенных сущностей
Многие атрибуты, представленные в этом запросе, за исключением поля permissions
, повторяют атрибуты запроса Сотрудника, подробное описание которых можно посмотреть в соответствующем разделе.
Пермиссии сотрудника
Объект пермиссий сотрудника включает в себя пермиссии сущностей, часть тарифных и пользовательских пермиссий. Поля объекта представляют собой отдельную пермиссию, где имя указывает на тип пермиссии, а значение представляет собой объект со значениями пермиссий в формате <тип пермиссии>: <значение>.
Пользовательские и тарифные пермиссии
Название | Описание |
---|---|
admin | Является ли сотрудник админом |
audit_dashboard | Просматривать аудит |
company_crm | Просматривать показатели |
customAttributes | Работа с доп. полями |
dashboard | Просматривать показатели |
dashboardMoney | Видеть остатки денег |
viewCashFlow | Видеть движение денежных средств |
viewProductCostAndProfit | Видеть себестоимость |
pnl | Просматривать прибыльность |
stock | Просматривать остатки по товарам |
tariff_crm | Присутствует ли опция CRM на аккаунте |
При наличии соответствующей пермиссии объект содержит поле VIEW со значением ALL
Список пермиссий сущностей
Имеется три возможных типа значений пермиссий сущности: OPERATION
, DICTIONARY
, BASE
.
Данные типы имеют следующие поля:
типы значений пермиссий сущности | view | create | update | delete | approve | |
---|---|---|---|---|---|---|
OPERATION | + | + | + | + | + | + |
DICTIONARY | + | + | + | + | + | - |
BASE | + | + | + | + | - | - |
Описание пермиссий сущностей
Название | Описание |
---|---|
view | Смотреть |
create | Создавать |
update | Редактировать |
delete | Удалять |
Печатать | |
approve | Проводить |
Возможные значения полей view
, create
, update
, delete
, approve
, print
Название | На кого распространяется |
---|---|
OWN | Только свои |
OWN_SHARED | Свои и общие |
OWN_GROUP | Свои и отдела |
OWN_GROUP_SHARED | Свои, отдела и общие |
ALL | Все |
Отсутствует | Ни на кого |
Пермиссии сущностей и документов, которые присутствуют в запросе
Название | Возможные значения | Описание |
---|---|---|
accountAdjustment | DICTIONARY | Корректировка остатков на счете |
bonusTransaction | OPERATION | Бонусные баллы |
cashIn | OPERATION | Приходной ордер |
cashOut | OPERATION | Расходной ордер |
cashboxAdjustment | DICTIONARY | Корректировка остатков в кассе |
commissionReportIn | OPERATION | Полученный отчет комиссионера |
commissionReportOut | OPERATION | Выданный отчет комиссионер |
company | DICTIONARY | Контрагенты |
contract | DICTIONARY | Договоры |
counterpartyAdjustment | DICTIONARY | Корректировка взаиморасчетов |
country | BASE | Страны |
currency | BASE | Валюты |
customEntity | BASE | Элементы пользовательских справочников |
customerOrder | OPERATION | Заказ покупателям |
demand | OPERATION | Отгрузка |
employee | BASE | Сотрудники |
enter | OPERATION | Оприходование |
factureIn | OPERATION | Счета-фактуры полученные |
factureOut | OPERATION | Счета-фактуры выданные |
good | DICTIONARY | Товары и Услуги |
internalOrder | OPERATION | Внутренние заказы |
inventory | DICTIONARY | Инвентаризация |
invoiceIn | OPERATION | Счет поставщику |
invoiceOut | OPERATION | Счет покупателям |
loss | OPERATION | Списание |
move | OPERATION | Перемещение |
myCompany | BASE | Юр. Лица |
paymentIn | OPERATION | Входящий платеж |
paymentOut | OPERATION | Исходящий платеж |
prepayment | OPERATION | Предоплаты |
prepaymentReturn | OPERATION | Возврат предоплаты |
priceList | OPERATION | Прайс-лист |
processing | BASE | Техоперации |
processingOrder | OPERATION | Заказ на производство |
processingPlan | BASE | Техкарты |
processingStage | BASE | Этапы производства |
processingProcess | BASE | Техпроцессы |
project | BASE | Проекты |
purchaseOrder | OPERATION | Заказ поставщикам |
purchaseReturn | OPERATION | Возврат поставщику |
retailDemand | OPERATION | Продажи |
retailDrawerCashIn | OPERATION | Внесения |
retailDrawerCashOut | OPERATION | Выплаты |
retailSalesReturn | OPERATION | Возвраты |
retailShift | DICTIONARY | Смены |
retailStore | BASE | Точка продаж |
salesReturn | OPERATION | Возврат покупателя |
supply | OPERATION | Приемки |
task | Особый | Задачи |
uom | BASE | Единицы измерения |
warehouse | BASE | Склады |
webhook | DICTIONARY | Вебхуки |
Пермиссии для задач
Пермиссии script
для задач имеют следующие поля:
Название | Описание | Возможные значения |
---|---|---|
view | Смотреть | Отсутствует, AUTHOR_OR_ASSIGNEE, ALL |
create | Создавать | Отсутствует, ALL |
update | Редактировать | Отсутствует, AUTHOR, AUTHOR_OR_ASSIGNEE, ALL |
delete | Удалять | Отсутствует, AUTHOR, AUTHOR_OR_ASSIGNEE, ALL |
done | Выполнять | Отсутствует, ASSIGNEE, AUTHOR_OR_ASSIGNEE, ALL |
Возможные значения полей view
, create
, update
, delete
, done
для задач
Название | На какие задачи распространяется |
---|---|
AUTHOR_OR_ASSIGNEE | Созданные пользователем и назначенные ему |
ASSIGNEE | Назначенные |
AUTHOR | Созданные пользователем |
ALL | Возможность совершать действие над любыми задачами |
Отсутствует | Нет прав ни на какие задачи |
Получить контекст сотрудника
Запрос на получение контекста запроса Cотрудника.
Серверные решения
Для доступа к API может быть использован токен выданный Вендору при установке Серверного решения пользователем МоегоСклада.
Получение контекста решения
Возвращает параметры решения, в рамках которого присходит запрос (по аналогии с контекстом Сотрудника).
Получение сущности установленного решения
Возвращает параметры установленного решения по id установленного на аккаунте решения.
Параметры
Параметр | Описание |
---|---|
id | string (required) Example: b58a6312-f958-11e9-ac12-000a00000020 id установленного на аккаунте решения |
Фильтрация выборки с помощью параметра filter=updatedBy
Для фильтрации выборок сущностей по решению укажите uid изменившего их решения.
Uid решения должен быть указан в виде:
Пример запроса на получение списка входящих платежей:
https://api.moysklad.ru/api/remap/1.2/entity/paymentin?filter=updatedBy=test.moysklad@reqwy1
Фильтрация записей аудита с помощью параметра filter=uid
Для фильтрации аудита по решению укажите uid решения, которое изменяло сущности.
Uid решения должен быть указан в виде:
Пример запроса на получение списка записей:
https://api.moysklad.ru/api/remap/1.2/audit?filter=uid=test.moysklad@reqwy1
Фильтрация записей аудита с помощью параметра filter=application
Для фильтрации аудита по решению укажите href решения, которое изменяло сущности.
Href решения должен быть указан в виде:
https://api.moysklad.ru/api/remap/1.2/entity/application/{id}
,
где id - UUID установленного на аккаунте решения
Пример запроса на получение списка записей:
https://api.moysklad.ru/api/remap/1.2/audit?filter=application=https://api.moysklad.ru/api/remap/1.2/entity/application/46ea8005-2965-11e9-9ff4-34e80009ac49
Ограничения
Для JSON API установлены следующие ограничения:
- Не более 45 запросов за 3 секундный период от аккаунта
- Не более 5 параллельных запросов от одного пользователя
- Не более 20 параллельных запросов от аккаунта
- Не более 8Кб в заголовке запроса (url, User-Agent, Authorization и т.д.)
- Не более 20 Мб данных в одном запросе, отправляемом на сервер
- Не более 4 асинхронных задач в очереди на аккаунт
- Обязательное использование сжатия содержимого ответов
Также накладывается ограничение на максимальное число объектов (позиций, материалов, продуктов), передаваемых в одном массиве в запросе - не более 1000 элементов. В случае, если количество элементов коллекции превышает максимально допустимое, произойдет ошибка со статусом 413. Если количество позиций превышает максимально допустимое, то для дальнейшего пополнения позиций нужно будет работать со специальным ресурсом, описание которого приведено в конкретной сущности.
МойСклад автоматически отключает:
- доступ к API пользователю, если пользователь совершил более 200 идентичных запросов за минуту, которые завершились ошибкой, в течение последнего часа
- вебхуки, если более семи дней из последних десяти дней сервис, принимающий вебхуки, отвечал только кодами ошибок (либо был недоступен), и сервис ни разу не обработал успешно вебхук за последние десять дней.
Если вы столкнулись с отключением API или вебхуков:
- устраните проблему
- для восстановления доступа к API сообщите в поддержку МоегоСклада
- включите вебхуки самостоятельно (обращение в поддержку не требуется)
В JSON API действуют тарифные ограничения. Пользователю доступна функциональность в соответствии с его действующим тарифным планом.
Ознакомиться с актуальными тарифами и существующими дополнительными опциями можно в статье Тарифы для вашего бизнеса. Более подробно об ограничениях Бесплатного тарифа в статье
Примечание: Работа с вебхуками доступна только на платных тарифах (и в пробный период).
Данные правила могут быть дополнены и изменены без предварительного уведомления. За их актуальностью необходимо следить в данной документации.
Асинхронный обмен
В JSON API можно выполнить некоторые запросы асинхронно. Это позволяет проводить выгрузку больших коллекций, не прибегая к листанию, если работа в реальном времени не критична.
Асинхронный обмен поддерживается не для всех запросов. Список запросов, которые могут быть выполнены асинхронно:
- Отчет Остатки
- Отчет Прибыльность
- Отчет Деньги
- Отчет Показатели продаж и заказов
- Отчет Показатели контрагентов (кроме выборочных показателей)
- Отчет Показатели
- Получение списка Контрагентов
- Получение Ассортимента
После выполнения запроса в асинхронном режиме результат доступен в течение 1 часа.
На количество задач в очереди и число одновременно выполняющихся асинхронных задач установлены ограничения.
На данный момент в процессе асинхронного выполнения запроса могут возникать дубли позиций коллекции, если параллельно с подготовкой результата добавляются новые элементы. Кроме того, элементы могут отсутствовать, если параллельно с обработкой Асинхронной задачи удаляются связанные с задачей сущности (например, удаление товара в процессе подготовки Отчета Остатки).
Выполнение запроса в асинхронном режиме
Чтобы выполнить запрос в асинхронном режиме, нужно в параметрах строки запроса указать async=true
.
Указание параметров строки запроса offset и limit, свойственных для синхронных запросов, является ошибкой.
Параметры
Параметр | Описание |
---|---|
async | boolean true - будет создана Асинхронная задача.false (по умолчанию) - запрос будет выполнен в синхронном режиме |
Результатом выполнения запроса будет создание Асинхронной задачи, которая будет помещена в очередь. В ответе будут содержаться заголовки, содержащие URL статуса и результата задачи.
Параметр | Описание |
---|---|
Location | URL результата выполнения Асинхронной задачи. |
Content-Location | URL статуса Асинхронной задачи. |
Асинхронная задача
Асинхронная задача содержит в себе информацию о создателе задачи, ее текущем статусе, наличии ответа и другую информацию.
Атрибуты сущности
Название | Тип | Описание |
---|---|---|
accountId | UUID | ID учетной записиОбязательное при ответе Только для чтения |
deletionDate | DateTime | Дата, после которой результат выполнения задачи станет недоступен. Содержится в ответе, если поле state имеет значение DONE Только для чтения |
errors | Object | json ошибки апи, если поле state имеет значение API_ERROR Только для чтения |
id | UUID | ID Асинхронной задачиОбязательное при ответе Только для чтения |
meta | Meta | Метаданные Асинхронной задачиОбязательное при ответе |
owner | Meta | Пользователь или решение, которые создали Асинхронную задачуОбязательное при ответе Только для чтения |
request | String | URL запроса, по которому создана Асинхронная задачаОбязательное при ответе Только для чтения |
resultUrl | String | Ссылка на результат выполнения задачи. Содержится в ответе, если поле state имеет значение DONE Только для чтения |
state | Enum | Статус выполнения Асинхронной задачи. Подробнее тутОбязательное при ответе Только для чтения |
Статус выполнения Асинхронной задачи
Значение | Описание |
---|---|
PENDING | Задача находится в очереди |
PROCESSING | Задача находится в обработке, результат еще не готов |
DONE | Задача выполнена успешно |
ERROR | Задача не была выполнена в результате внутренней ошибки. В этом случае нужно попробовать запустить задачу заново |
CANCEL | Задача была отменена |
API_ERROR | Задача была завершена с ошибкой апи |
Статусы Асинхронных задач
Запрос на получение списка статусов выполнения Асинхронной задачи. Результат содержит статусы Асинхронных задач за последнюю неделю.
Доступна фильтрация по полям state, request, deletionDate.
Получение статуса Асинхронной задачи
Запрос на получение статуса выполнения Асинхронной задачи.
Параметры
Параметр | Описание |
---|---|
id | string (required) Example: 498b8673-0308-11e6-9464-e4de00000089 id Асинхронной задачи. |
Получение результата выполнения Асинхронной задачи
Response 200 Успешный запрос. Результат - файл с результатом выполнения Асинхронной задачи в формате json.
Пример полученного отчета
{
"context": {
"employee": {
"href": "https://api.moysklad.ru/api/remap/1.2/context/employee",
"type": "employee",
"mediaType": "application/json"
}
},
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/report/stock/bystore?async=true",
"type": "stockbystore",
"mediaType": "application/json",
"size": 2
},
"rows": [
{
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/product/c02e3a5c-007e-11e6-9464-e4de00000006?expand=supplier",
"metadataHref": "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata",
"type": "product",
"mediaType": "application/json"
},
"stockByStore": [
{
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/store/86c857d6-0302-11e6-9464-e4de00000072",
"metadataHref": "https://api.moysklad.ru/api/remap/1.2/entity/store/metadata",
"type": "store",
"mediaType": "application/json"
},
"name": "Не основной склад",
"stock": -30,
"reserve": 0,
"inTransit": 0
},
{
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/store/850ee995-f504-11e5-8a84-bae500000160",
"metadataHref": "https://api.moysklad.ru/api/remap/1.2/entity/store/metadata",
"type": "store",
"mediaType": "application/json"
},
"name": "Основной склад",
"stock": 0,
"reserve": 0,
"inTransit": 0
}
]
},
{
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/product/cc99c055-fa34-11e5-9464-e4de00000069?expand=supplier",
"metadataHref": "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata",
"type": "product",
"mediaType": "application/json"
},
"stockByStore": [
{
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/store/86c857d6-0302-11e6-9464-e4de00000072",
"metadataHref": "https://api.moysklad.ru/api/remap/1.2/entity/store/metadata",
"type": "store",
"mediaType": "application/json"
},
"name": "Не основной склад",
"stock": 0,
"reserve": 0,
"inTransit": 0
},
{
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/store/850ee995-f504-11e5-8a84-bae500000160",
"metadataHref": "https://api.moysklad.ru/api/remap/1.2/entity/store/metadata",
"type": "store",
"mediaType": "application/json"
},
"name": "Основной склад",
"stock": 4,
"reserve": 0,
"inTransit": 0
}
]
}
]
}
Запрос на получение результата выполнения Асинхронной задачи.
Параметры
Параметр | Описание |
---|---|
id | string (required) Example: 498b8673-0308-11e6-9464-e4de00000089 id Асинхронной задачи. |
Если статус задачи имеет значение DONE
и время жизни результата не истекло, ответом на запрос будет перенаправление на ссылку загрузки результата выполнения Асинхронной задачи.
С момента получения ссылка действительна 5 минут.
Большинство HTTP-клиентов осуществляют перенаправление автоматически, но если ваш клиент этого не делает,
то результат выполнения запроса будет иметь статус 302 FOUND
с заголовком Location, в котором и содержится ссылка на результат.
После наступления даты, указанной в поле deletionDate, результат становится недоступен.
Если статус задачи имеет значение API_ERROR
, то в json ответе на запрос получения результата задачи будет указана ошибка,
аналогичная той, которую вернул синхронный вызов ресурса.
Вебхуки Асинхронной задачи
Настроить вебхуки для асинхронной задачи можно аналогично остальным сущностям, но есть ряд исключений:
- для асинхронных задач нельзя настроить вебхук на событие удаления, так как удаление асинхронных задач происходит автоматически
- для асинхронных задач в вебхуках появляется новое событие
PROCESSED
. Оно означает, что задача завершилась и можно узнать ее статус - вебхук на обновление приходит, когда меняется статус асинхронной задачи
При формировании запроса на создание вебхука в поле entityType
нужно указать тип async
- асинхронная задача.
На указанный в поле url
адрес при срабатывании вебхука будет приходить сообщение, у которого в meta
в поле href
указан url
на получение статуса асинхронной задачи.
Отмена Асинхронной задачи
Response 204 Успешная отмена задачи
Запрос на отмену находящейся в очереди PENDING
или в процессе обработки PROCESSING
Асинхронной задачи.
Параметры
Параметр | Описание |
---|---|
id | string (required) Example: 498b8673-0308-11e6-9464-e4de00000089 id Асинхронной задачи. |
Ошибки
В данном разделе приведены коды ошибок JSON API и их описание
Код ошибки | Сообщение | Описание |
---|---|---|
1000 | Элемент URI не является идентификатором | Вероятнее всего вы пытаетесь обратиться к несуществующему ресурсу. Проверьте указанный вами URI, проверьте правильно ли вы указали ключевое слово сущности и полностью ли вы скопировали ID. |
1001 | Не указан идентификатор метаданных | При обращении к пользовательскому справочнику в URI должен быть указан корректный {id} метаданных данного справочника. Его можно уточнить, сделав запрос к метаданным настроек компании companysettings/metadata в массиве customEntities. |
1002 | Неопознанный путь: {путь} | Не удалось определить ресурс, по которому был сделан запрос. Проверьте URI по которому совершается запрос. |
1003 | Отсутствуют метаданные для типа {тип} | Для данного ресурса нельзя получить метаданные. Еще раз проверьте документацию по сущности данного типа и убедитесь в наличии ресурса "Метаданные <наименование_сущности>" |
1004 | Ошибка при формировании результата: {текст ошибки} | При разборе переданного объекта произошла ошибка. Проверьте корректность переданных данных. |
1005 | Неизвестный тип: {тип} | Тип сущности, указанный в URI, не может быть найден. Проверьте корректность ключевого слова. |
1006 | Создание объектов с указанным идентификатором запрещено | При создании сущности не нужно указывать в URI запроса id сущности. Запрос на создание должен происходить по тому же URI, по которому происходит запрос на получение списка сущностей данного типа. |
1007 | Неизвестное поле: {имя поля} | При обновлении сущности указанное поле не было найдено. Проверьте правильность написания имени поля, а также убедитесь что данное поле присутствует среди атрибутов сущностей этого типа. |
1008 | Ошибка при загрузке объекта с типом '{тип}' и идентификатором '{id}' | Не удалось загрузить сущность с данным id. Проверьте корректность id. Убедитесь что сущность с данным id присутствует среди списка сущностей данного типа (возможно сущность с данным id была удалена). |
1009 | Редактирование объектов типа '{тип}' не поддерживается | Сущность которую вы пытаетесь обновить - только для чтения. Изменение ее атрибутов не предусмотрено. |
1010 | Удаление объектов типа '{тип}' не поддерживается | Нельзя удалить сущность данного типа. Проверьте, есть ли среди операций данного типа сущностей операция удаления. |
1011 | Создание объектов типа '{тип}' не поддерживается | Нельзя создать сущность данного типа. Проверьте, есть ли среди операций данного типа сущностей операция создания. |
1012 | Не указан идентификатор объекта | Для операций обновления и удаления необходимо указывать id сущности, над которой производится операция. |
1013 | Удаление вложенных объектов не поддерживается | Невозможно удалить вложенные сущности, такие как счета контрагентов. Если вы хотите обнулить значение поля: попробуйте передать null в качестве значения данного поля в запроса не обновление. В случае с позициями документов - вы можете передать пустой массив. Это будет эквивалентно удалению сразу всех позиций из документа. |
1014 | Неверное значение '{значение}' параметра фильтрации '{имя параметра}' | Вы указали значение неподдерживаемого типа для данного параметра (например передали int вместо boolean). Возможно ошибка в неправильном формате даты и времени. |
1015 | Указана неверная версия в url: {url} | Проверьте необходимую версию API в url по которому вы делаете запрос. api.moysklad.ru/api/1.x/... Версии API различаются между собой по количеству доступных ресурсов, а также по способу обработки данных и именно поэтому являются важным элементом идентификации того или иного ресурса. |
1016 | Доступ запрещен: у вас нет прав на просмотр данного объекта | Администратор учетной записи ограничил ваши права на просмотр сущностей данного типа. Свяжитесь с ним для выяснения подробностей. |
1017 | Доступ запрещен: у вас нет прав на редактирование данного объекта | Администратор учетной записи ограничил ваши права на редактирование сущностей данного типа. Свяжитесь с ним для выяснения подробностей. |
1018 | Доступ запрещен: у вас нет прав на удаление данного объекта | Администратор учетной записи ограничил ваши права на удаление сущностей данного типа. Свяжитесь с ним для выяснения подробностей. |
1019 | Чтение поля '{имя поля}' не поддерживается | Невозможно чтение поля данного типа. |
1020 | Родительский объект с типом '{тип}' и идентификатором '{id}' не существует | Неверный id родительской сущности. |
1021 | Объект с типом '{тип}' и идентификатором '{id}' не найден | Не удалось загрузить сущность данного типа с данным id. Проверьте корректность id. Убедитесь что сущность с данным id присутствует среди списка сущностей данного типа (возможно сущность с данным id была удалена) |
1022 | Ошибка при создании объекта | Ошибка в процессе создания сущности данного типа. |
1023 | Ошибка сохранения объекта: дочерний объект с типом '{тип}' и идентификатором '{id}' уже используется и не может быть удален | Невозможно удалить объект во вложенной коллекции т.к. он уже где-то используется. Например, может возникнуть при удалении позиции из документа, по которому есть возврат, в котором присутствует данная позиция. |
1024 | Ошибка сохранения объекта: изменять стандартные объекты запрещено | Вы пытаетесь изменить сущность, которая создается по умолчанию в сервисе МойСклад сразу после регистрации учетной записи. Это делать запрещено. (Например изменение стандартных стран и единиц измерения) |
1025 | Ошибка удаления объекта: удалять стандартные объекты запрещено | Удаление стандартных объектов, таких как стандартные единицы измерения, валюты, страны и т.п. не поддерживается. |
1026 | Обновление объектов типа '{тип}' не поддерживается | Обновление объектов указанного типа не поддерживается в JSON API. |
1027 | Запрос не содержит объектов | Тело запросов на создание/обновление должно представляться в виде объекта либо массива JSON. |
1028 | Объект уже используется и не может быть удален | Сущность используется в сущностях и документах, перечисленных в ошибке, поэтому ее нельзя удалить. Например нельзя удалить товар, который используется в качестве позиции в каком-либо документе. |
1029 | Шаблоны для типа '{тип}' не поддерживаются | Невозможно создать предзаполненную сущность данного типа. |
1030 | Поле для фильтрации '{имя поля}' может быть указано только один раз | Убедитесь, что каждое поле используется в параметрах фильтрации лишь единожды. |
1031 | Ошибка генерации шаблона: невозможно создать шаблон объекта на основе указанных полей | Невозможно создать предзаполненную сущность данного типа на основе другой. |
1032 | Ошибка фильтрации: характеристика '{имя/id характеристики}' не существует | У данной модификации нет характеристики с указанным id. Проверьте правильность введенного id и список характеристик для данной модификации. |
1034 | Ошибка фильтрации: {текст ошибки} | Ошибка в процессе обработки фильтров. Проверьте переданные фильтры на валидность. Подробнее о параметрах фильтрации вы можете прочесть в соответствующем разделе документации или в документации по сущности, к которой вы пытаетесь применять фильтры. |
1035 | Ошибка фильтрации: неверный формат даты параметра фильтрации | Проверьте значение даты и времени. Оно должно соответствовать формату yyyy-MM-dd HH:mm:ss |
1036 | Ошибка при формировании метаданных | Описание Внутренняя ошибка сервиса. Попробуйте повторить запрос. |
1037 | Неверно указан Content-Type запроса | Описание Возможно ресурс, к которому вы обращаетесь, требует form-data вместо JSON (или наоборот). |
1038 | Ошибка в адресе запроса | Описание Проверьте, указываете ли вы валидный адрес запроса. |
1039 | Операция {HTTP метод} не поддерживается для данного ресурса | Описание Проверьте метод, с которым вы обращаетесь к ресурсу. Убедитесь, что в документации ресурса этот метод описан и его можно применить. |
1040 | Неверно заданы параметры запроса | Описание Один или несколько параметров запроса заданы некорректно. Проверьте формат параметров согласно документации. |
1041 | Неверное значение '{значение}' параметра фильтрации '{имя параметра}', допустимые значения: '{список допустимых значений}' | Значение параметра должно входить в список допустимых значений. |
1042 | Неверное значение '{значение}' параметра сортировки '{имя параметра}', допустимые значения: '{список допустимых значений}' | Значение параметра должно входить в список допустимых значений. |
1043 | Ваш тарифный план не позволяет работать с CRM | Ваш тариф не подходит для работы с CRM. |
1044 | Превышен максимальный размер запроса | Максимальный размер запроса 10 МБ. |
1045 | Доступ запрещен: у вас нет прав на создание данного объекта | Администратор учетной записи ограничил ваши права на создание сущностей данного типа. Свяжитесь с ним для выяснения подробностей. |
1046 | Дочерняя сущность не может изменять свою родительскую сущность | Возможно вы попробовали подставить позицию(и) из одного документа в другой (Попробуйте удалить meta, id, accountId из документа и позиции(й)). |
1047 | Вы не можете обновить поле syncId в запросе на обновление сущности | Поле syncId может быть указано только при создании сущности. Его нельзя изменить в запросе на обновление. |
1048 | Превышено ограничение на количество попыток проверки имени и пароля | Превышено количество попыток аутентификации с некорректными данными. Попробуйте повторить запрос позднее с корректными логином и паролем или токеном. |
1052 | Неверный формат UUID | Проверьте сгенерированные вами UUID на корректность. |
1056 | Ошибка аутентификации: {текст ошибки аутентификации} | Проверьте указанные для аутентификации данные. Возможно для данного ресурса требуется другой вид аутентификации. |
1058 | Не удалось декодировать параметры запроса из URL | Проверьте запрос. Вероятно, в строке присутствуют параметры, которые не были urlencoded. |
1059 | Некорректный сервер в идентификаторе объекта: '{идентификатор}' | Идентификатор объекта содержит сервер, отличный от api.moysklad.ru. |
1060 | Некорректный тип данных в meta сущности, поле type | Тип данных указанный в поле type метаданных сущности не совпадает с ожидаемым типом. |
1061 | Отсутствует доступ к API для данного пользователя | Отсутствует доступ к API для данного пользователя - обратитесь к администратору аккаунта. |
1062 | Неверное значение заголовка 'Accept'. Поддерживается только значение 'application/json;charset=utf-8' | Значение заголовка 'Accept' может быть только application/json;charset=utf-8. |
1063 | Ошибка сортировки: неизвестное поле '{название поля}' или сортировка для данного поля не поддерживается | Сортировка для данного поля не поддерживается. Возможно, поле не входит в список поддерживаемых полей. |
1064 | Доступ запрещен: у вас нет прав на печать данных объектов | Администратор учетной записи ограничил ваши права на печать сущностей данного типа. Свяжитесь с ним для выяснения подробностей. |
1065 | Ошибка сохранения объекта: объект уже изменен/удален в параллельном запросе | Ошибка возникает при попытке изменить объект из нескольких параллельных запросов к API. |
1066 | Ошибка удаления объекта: объект нельзя переместить в корзину | Удаление в корзину возможно только для документов. Проверьте, является ли удаляемый объект документом. |
1067 | Ошибка удаления объекта: использование корзины отключено | Отключена опция для удаления документов в корзину - обратитесь к администратору аккаунта. |
1068 | Точка продаж отключена. Обратитесь к администратору аккаунта | Убедитесь, что Ваш тарифный план поддерживает работу с точками продаж. |
1069 | Ошибка запроса: несовместимые параметры запроса: '{несовместимые параметры}' | Не все параметры запроса могут быть применены одновременно, они перечисленны в тексте ошибки: '{несовместимые параметры}'. Следует исключить параметры из запроса, учитывая совместимость. |
1070 | Ошибка: ваш тарифный план не позволяет вам работать с данным ресурсом | На вашем тарифном плане работа с указанным ресурсом недоступна. |
1071 | Превышено ограничение на количество попыток регистрации | Вы попытались зарегистрироваться слишком много раз. |
1072 | Превышено ограничение на количество регистраций с указанного адреса | Вы попытались зарегистрироваться слишком много раз. |
1073 | Превышено ограничение на одновременное количество запросов | От вас поступает слишком много параллельных запросов в единицу времени. |
1074 | Сервис временно недоступен, ведутся технические работы | На сервере проводятся технические работы. |
1075 | Доступ запрещен: у вас нет прав на редактирование поля {имя поля} | Вы попытались изменить поле, для которого требуется более высокий уровень доступа. |
1076 | Ошибка при работе с файлами: у файла отсутствует имя | Поле filename у Файла должно быть заполнено. |
1077 | Ошибка при работе с файлами: у файла отсутствует контент | Поле content у Файла должно быть заполнено. |
1078 | Ошибка при работе с файлами: невозможно преобразовать поле content в изображение | Ошибка при преобразовании файла с расширением jpg или png в формате base64 в изображение. |
1079 | Ошибка при работе с файлами: размер файла превышает максимально допустимый(10 мб) | Максимальный размер файла не может превышать 10 мб. |
1080 | Ошибка при работе с файлами: число файлов не может быть больше 100 | Максимальное количество файлов, загруженных для одного объекта, не может превышать 100 штук. |
1081 | Ошибка при работе с файлами: недостаточно места в хранилище | Место в хранилище, выделенное для вашего аккаунта, закончилось. |
1082 | Ошибка при работе с файлами: нельзя загрузить больше 10 файлов за раз | Максимальное количество файлов загружаемых одним запросом не может превышать 10 штук. |
1083 | Ошибка при формировании результата: {текст ошибки} | При формировании ответа произошла ошибка на стороне сервера. Попробуйте повторить запрос заново. |
1084 | Неверное значение '{значение}' параметра запроса '{параметр}', допустимые значения: '{список допустимых значений}' | Вы указали неверное значение для данного параметра. Проверьте соответствие переданного значения допустимым. |
1085 | Используемый тип авторизации не содержит информацию о пользователе | Необходим иной способ авторизации, содержащий в себе информацию о пользователе. Например, basic или токен |
1088 | Превышено максимальное время ответа на запрос | Время выполнения запроса на массовое создание/изменение/удаление превышает максимально допустимое. |
1089 | Expand поля {путь и название поля} не поддерживается | Expand запрошенного поля запрещен в использованном эндпоинте |
1090 | Дополнительный справочник {название справочника} используется в: {названия документов} и не может быть удален | Дополнительный справочник используется как дополнительное поле в документах, перечисленных в ошибке. |
1091 | Недопустимые значения {значения из запроса} параметра запроса {название параметра} | Для параметра допустимы значения из ограниченного списка. Переданные значения не входят в этот список. |
1092 | Доступ запрещен: у вас нет прав на проведение объекта {тип объекта} | Для параметра допустимы значения из ограниченного списка. Переданные значения не входят в этот список. |
1093 | Отсутствует обязательный заголовок {название заголовка} | Не указан обязательный заголовок запроса. |
1998 | Домен online.moysklad.ru в JSON API 1.2 больше не поддерживается | Домен online.moysklad.ru не поддерживается с 1 декабря 2023 года. Вместо него нужно использовать новый домен api.moysklad.ru |
1999 | Неизвестная ошибка | Произошла непредвиденная ошибка. Пожалуйста, обратитесь в поддержку сервиса МойСклад подробно изложив условия при которых эта ошибка произошла. |
Ошибки формата
Код ошибки | Сообщение | Описание |
---|---|---|
2000 | Ошибка формата: отсутствует начало объекта | В данном месте ожидалось начало объекта. Проверьте тело запроса. |
2001 | Ошибка формата: входящий запрос не соответствует формату JSON | Данные должны быть отправлены в формате JSON. Если это так, а ошибка все-таки возникает - попробуйте добавить Header Content-Type со значением application/json . |
2002 | Ошибка формата: неименованное внутреннее поле типа массив | Проверьте указали ли вы наименование поля типа массив. Возможно присутствуют лишние открывающиеся/закрывающиеся скобки в теле запроса. |
2003 | Ошибка формата: неименованное внутреннее поле типа объект | Проверьте указали ли вы наименование поля типа "объект". Возможно присутствуют лишние открывающиеся/закрывающиеся скобки в теле запроса. |
2004 | Ошибка формата: вложенные массивы недопустимы | В рамках JSON API не обрабатываются массивы массивов. Проверьте тело запроса на корректность. |
2005 | Ошибка формата: входящий JSON должен начинаться либо с объекта, либо с массива | Отсутствует открывающаяся фигурная/квадратная скобка в начале тела запроса. |
2006 | Ошибка формата: слишком большая вложенность объектов | Максимальная глубина вложенности в JSON API - 10. Скорректируйте тело запроса и убедитесь, что это ограничение не нарушается. |
2007 | Ошибка формата: слишком большое число вложенных объектов | В JSON API в массиве может содержаться не более 1000 объектов. |
2008 | Ошибка формата: запрос на шаблон не должен содержать массив | С помощью запроса по ресурсу {entity_name}/new можно создать только 1 шаблон. Передача массива значений не поддерживается. |
2009 | Ошибка формата: запрос на создание/обновление одной сущности не должен содержать массив | При обновлении отдельной сущности подразумевается, что в теле запроса будет передано ее новое представление (одно). В теле запроса должен быть один корневой объект. |
2010 | Ошибка формата: отсутствует href для meta поля '{доп. сообщение}' | В переданном объекте метаданных отсутствует поле href. Проверьте тело запроса. |
2011 | Ошибка формата: отсутствует type для meta поля '{доп. сообщение}' | В переданном объекте метаданных отсутствует поле type. Проверьте тело запроса. |
2012 | Ошибка формата: неизвестный type для meta поля '{доп. сообщение}' | В переданном объекте метаданных указан неизвестный тип. Проверьте тело запроса. Возможно вы указываете неверное ключевое слово для сущности. Проверьте документацию по данной сущности и убедитесь в правильности передаваемого type. |
2013 | Ошибка формата: неправильное значение href для meta поля '{доп. сообщение}' | Переданный href указывает на несуществующий объект. Убедитесь в корректности ссылки. Ошибка может быть в версии API, типе ресурса (entity/pos/report), ключевом слове сущности/(отчета), id сущности. |
2014 | Ошибка формата: отсутствует meta для поля '{имя поля}' | Для полей типа метаданных (ссылок на другие связанные объекты) необходимо значение в виде объекта, содержащего meta. |
2015 | Ошибка формата: отсутствует id для поля '{имя поля}' | При передаче вложенных сущностей в виде полей необходимо указывать id этих сущностей. |
2016 | Ошибка формата: значение поля '{имя поля}' не соответствует типу {тип поля} | Для указанного поле передано значение неверного типа. Исправьте тело запроса. |
2017 | Ошибка формата: неизвестная ошибка | Не удалось однозначно классифицировать ошибку. Убедитесь что формат передаваемых вами данных соответствует требуемому. Посмотрите примеры запросов в документации по используемой вами сущности. |
2018 | Ошибка формата: отсутствует поле для meta
|
Вы не указали обязательное поле объекта meta. |
2021 | Ошибка формата: в объектах типа '<тип>' полю '<наименование поля>' не может быть присвоен объект типа <тип объекта> | Для сущностей данного типа у указанного поля не может быть выставлено указанное значение. Например, нельзя полю agent отгрузки выставить значение типа employee, тогда как тому же полю входящего платежа можно выставить значение типа employee. |
2022 | Ошибка формата: слишком большое число элементов вложенной коллекции | Вложенная коллекция может иметь в составе не более 1000 элементов. |
2024 | Ошибка формата: href указывает на сущность неправильного типа '<тип>', требуется '<тип>' | Переданная ссылка href указывает на сущность неправильного типа. |
2026 | Ошибка формата: запрос не должен содержать массив | Переданный объект является массивом. Для данного запроса массивы не поддерживаются. |
2027 | Ошибка формата: href указывает на сущность неправильного типа '<тип>', допустимые значения: '<допустимые типы>' | Переданная ссылка href указывает на сущность неправильного типа. |
2028 | Ошибка формата: Доп поле '{имя доп. поля}' сущности с id '{id}' содержит не числовое значение | В получаемом объекте содержится доп поле с некорректным значением |
2029 | Ошибка формата: неверное значение '{значение}' поля '{имя поля}'. Допустимые значения: {множество значений} | В получаемом объекте содержится поле, которое не попадает во множество допустимых значений. |
Общие ошибки валидации
Код ошибки | Сообщение | Описание |
---|---|---|
3000 | Ошибка сохранения объекта: поле '{имя поля}' не может быть пустым или отсутствовать | Необходимое поле не может содержать пустого значения или отсутствовать. Все необходимые поля можно посмотреть в документации по сущности, с которой вы работаете, под заголовком "Атрибуты сущности". Такие поля помечены как Необходимое . |
3001 | Ошибка сохранения объекта: поле '{имя поля}' не может быть изменено | Вы пытаетесь изменить поле являющееся полем только для чтения. Все read-only поля можно посмотреть в документации по сущности, с которой вы работаете, под заголовком "Атрибуты сущности". Такие поля помечены как Только для чтения . |
3002 | Ошибка сохранения объекта: поле '{имя поля}' не может иметь отрицательное значение | Данное поле принимает только числовые значения больше либо равные нулю. |
3003 | Ошибка сохранения объекта: поле '{имя поля}' должно быть больше нуля | Данное поле принимает только числовые значения больше нуля. Эта ошибка также возвращается при указании значений, которые при округлении до 4-го знака после запятой будут равны нулю (т.е. для значений < 0.00005). |
3004 | Ошибка сохранения объекта: поле '{имя поля}' не соответствует полю связанного объекта | Поле возврата не соответствует полю документа-основания. Невозможно изменить значения полей agent, currency, vatIncluded в возвратах на несоответствующие значениям этих же полей в документе-основании. |
3005 | Ошибка сохранения объекта: неверное значение '{значение}' поля '{имя поля}'. Допустимые значения: {список значений} | Вы пытаетесь присвоить несуществующее значение полю типа "перечисление"(enum). Проверить все возможные значения этого поля вы можете в документации по данной сущности в разделе "Атрибуты сущности". |
3006 | Ошибка сохранения объекта: нарушено ограничение уникальности параметра '{имя параметра}' | У указанного поля/параметра должно быть уникальное значение в системе. Например, если включена проверка на уникальность номеров операций, name у разных документов не может быть одинаковым. |
3007 | Ошибка валидации сохраняемого объекта: '{объект}' | Ошибка при обмене. Проверьте, соблюдает ли все условия передаваемый вами объект. |
3008 | Ошибка сохранения объекта: значение поля '{имя поля}' превышает максимально допустимое значение | Значение числового поля превышает максимально допустимое значение: 9 999 999 999. |
3009 | Ошибка валидации: поле '{имя поля}' не может быть пустым или отсутствовать | Необходимое поле не может содержать пустого значения или отсутствовать. |
3010 | Ошибка валидации: нельзя привязать документ из корзины к платежу | Документ из корзины не может быть привязан к платежу. |
3011 | Ошибка валидации штрихкода: невозможно добавить к сущности штрихкод длиной более 255 символов | Исправьте длину штрихкода и попробуйте повторить запрос. |
3012 | Ошибка валидации: для поля '{имя поля}' массив элементов не должен содержать атомарный тип или null | Нельзя передавать атомарный тип или null в составе массива. |
3013 | Ошибка валидации: для поля '{имя поля}' массив элементов не должен содержать сущности с одинаковыми идентификаторами | Нельзя передавать сущности с одинаковыми идентификаторами в составе массива. |
3014 | Ошибка валидации штрихкода: неверный формат GTIN: <текст ошибки> | Ошибка валидации штрихкода типа GTIN. Тексты ошибок:
|
3015 | Ошибка валидации: Ошибка валидации: некорректный адрес E-mail: '{адрес e-mail}' | Ошибка валидации email поля. На вход должен подаваться валидный email |
3016 | Ошибка валидации: Поле '{имя поля}' должно соответствовать формату '{ожидаемый формат поля}' | Ошибка валидации поля. Входящее поле должно соответствовать ожидаемому формату |
3017 | Ошибка валидации: Сумма накоплений должна быть больше предыдущей | Ошибка валидации поля levels. В накопительных скидках сумма каждого накопления должна быть больше предыдущих |
3018 | Ошибка валидации: Скидка должна быть больше предыдущей | Ошибка валидации поля levels. В накопительных скидках значение скидки должно быть больше предыдущих |
3019 | Ошибка валидации: Суммы должны различаться | Ошибка валидации поля levels. В накопительных скидках значение скидки должно отличаться от предыдущих |
3020 | Ошибка валидации: Другая бонусная программа уже активна' | Ошибка при активации бонусной программы. Невозможно активировать бонусную программу, если другая уже активна |
3021 | Ошибка валидации: Если в скидке указано использовать специальную цену, то необходимо заполнить поле specialPrice. Иначе необходимо заполнить поле discount. | Ошибка валидации специальных цен. Данная скидка должна содержать поля specialPrice или discount, если указан соответствующий флаг |
3022 | Ошибка валидации: Превышен лимит по количеству скидок | Ошибка при активации скидки. В системе не может быть больше 10 активных скидок одновременно |
3023 | Ошибка валидации: Ошибка валидации: не заполнено обязательное поле '{имя поля}' у объекта '{имя объекта}' | У объекта в json'е не указано обязательное поле |
3024 | Ошибка валидации: Ошибка валидации: неверное значение '{значение поля}' поля '{имя поля}' для {название объекта}. Допустимые значения: {список_значений} | У поля указано не валидное значение |
3025 | Ошибка валидации: Скидка '{тип скидки}' с именем '{имя скидки}' не применима для групп данного контрагента | Контрагент не входит в группы, которые указаны в данной скидке |
3026 | Ошибка валидации: Скидка '{тип скидки}' с именем '{имя скидки}' указана более одного раза | Скидка с одним и тем же типом передана в json'е более одного раза |
3027 | Ошибка валидации: Неверное значение заголовка {заголовок}. Было передано значение '{значение}'. Допустимые значения: '{значения}' | Было передано невалидное значение указанного в тексте ошибки заголовка |
3028 | Ошибка валидации: Значение поля '{первое поле}' конфликтует со значением поля '{второе поле}'. Требуется {описание конфликта} | Были переданы несовместимые значения указанных в тексте ошибки полей. В описании ошибки указано, что послужило причиной конфликта |
3030 | Ошибка валидации заголовка '{название заголовка}': {описание ошибки} | Было передано некорректное значение в заголовке |
3031 | Ошибка валидации: Нельзя привязать '{тип документа}' c id 'id документа', он привязан к другому 'тип документа' | Нельзя связывать документ, который уже связан и имеет ограничение на 1 связь |
3033 | Ошибка валидации: Удаляемая дочерняя сущность с id = '{id}' принадлежит другой родительской сущности | Нельзя удалять дочернюю сущность, не принадлежащую текущей родительской сущности |
3034 | Ошибка валидации: невозможно полю '{название поля}' присвоить значение '{переданное значение}', так как '{причина, приведшая к ошибке}' | Было передано значение, которое не удалось присвоить полю |
3035 | Ошибка сохранения: количество %s не может быть меньше %s | Было передано слишком маленькое значение |
3036 | Ошибка сохранения: количество %s не может быть больше %s | Было передано слишком большое значение |
3037 | Невозможно отправить запрос на удаление аккаунта. Нет адреса электронной почты владельца аккаунта или адрес некорректный. Обратитесь к владельцу аккаунта | У заданного аккаунта владелец аккаунт имеет пустой или некорректный электронный адрес. |
3038 | Ошибка сохранения: Невозможно удалить связь между документами '{тип документа}' и '{тип документа}' | Нельзя разорвать связь между указанными документами. |
3039 | Ошибка валидации: нельзя менять номенклатуру с учетом по серийным номерам на номенклатуру без учета по серийным номерам | Нельзя менять номенклатуру с учетом по серийным номерам в позиции на номенклатуру без учета по серийным номерам |
Коды ошибок для Точек продаж
Код ошибки | Сообщение | Описание |
---|---|---|
4000 | Указанная точка продаж не активна | Для выполнения операции необходимо активировать точку продаж. |
4001 | Ошибка сохранения объекта: превышен допустимый лимит активных точек продаж по вашему тарифу | Число активных точек продаж с учетом сохраняемых превышает лимит по тарифу. |
4002 | Ошибка сохранения точки продаж: для типа 'minionToMasterType' = CHOSEN в списке 'masterRetailStores' должна присутствовать хотя бы одна точка продаж | В случае, если связь (поле minionToMasterType ) между облачной кассой и кассой, которая фискализирует чеки, указывается CHOSEN , то в списке masterRetailStores должна присутствовать хотя бы одна точка продаж. |
4003 | Ошибка сохранения точки продаж: нельзя одновременно указать родительскую группу товаров и ee дочерние группы. | В группах товаров (поле productFolders ) не могут одновременно указываться родительская группа товаров и ee дочерние группы. |
Коды ошибок для Отчетов комиссионера
Код ошибки | Сообщение | Описание |
---|---|---|
5000 | Неверный тип договора для отчета комиссионера. Могут быть использованы только договоры типа 'Договор комиссии'(Comission). | При создании / обновлении отчета комиссионера обязательно указывать договор, который принадлежащит указанному контрагенту и имеет тип 'Договор комиссии'. |
5001 | Неверно указан период отчета комиссионера: конец периода не может быть раньше начала. | Проверьте указанные даты. Дата в поле commissionPeriodStart должна быть раньше даты в поле commissionPeriodEnd. |
5002 | Указанный договор заключен с контрагентом, отличным от указанного в поле agent | При создании / обновлении отчета комиссионера обязательно указывать договор, который принадлежащит указанному контрагенту и имеет тип 'Договор комиссии'. |
5003 | Указанный договор заключен с юрлицом, отличным от указанного в поле organization | Организация должна соответствовать организации, указанной в договоре. |
5004 | Заявленное к возврату количество ({Количество к возврату}) товара '{Наименование товара}' превышает реализованное количество ({Реализованное количество}) | Проверьте количество товара суммарно по всем позициям в реализовано комиссионером и суммарное количество этого же товара в позициях возврат на склад комиссионера. |
Коды ошибок для Характеристик модификаций
Код ошибки | Сообщение | Описание |
---|---|---|
10000 | Ошибка сохранения характеристики модификации: поля 'id' и 'name' не могут быть пустыми | При обновлении характеристик модификации необходимо указывать вышеуказанные поля. Исправьте тело запроса. |
10001 | Ошибка сохранения характеристики модификации: поле 'id' ссылается на несуществующую характеристику | По переданному id не удалось найти соответствующую характеристику. Убедитесь в правильности id и повторите запрос. |
10002 | Ошибка сохранения характеристик модификации: характеристики с указанными полями 'name' уже существуют | Указанные в запросе имена характеристик уже существуют. Проверьте правильность написания полей 'name' или запросите существующие характеристики. |
Коды ошибок для Статусов
Код ошибки | Сообщение | Описание |
---|---|---|
11000 | Ошибка инициализации статуса: отсутствует информация о родительской сущности | Не удалось найти документ, к которому должен быть привязан данный статус. Проверьте id документа, а также, в случае обновления, убедитесь, что документ с данным id не был удален. |
11001 | Ошибка инициализации статуса: статус с именем '{Наименование статуса}' не найден | Проверьте в метаданных сущностей данного типа, что статус с передаваемым именем существует, и исправьте запрос. |
11002 | Ошибка инициализации статуса: статус с id = '{id статуса}' не принадлежит данному типу документа | Передаваемый статус не принадлежит данному типу документа |
Коды ошибок для Розничных смен (POS)
Код ошибки | Сообщение | Описание |
---|---|---|
12000 | Ошибка открытия розничной смены: розничная смена находится в корзине | Данный syncId уже был использован для открытия другой смены. Данная смена уже была удалена. Для открытия новой смены сгенерируйте новый syncId. |
12001 | Ошибка открытия розничной смены: розничная смена закрыта | Данный syncId уже был использован для открытия другой смены. Данная смена уже была закрыта. Переоткрыть ее невозможно. Для открытия новой смены сгенерируйте новый syncId. |
12002 | Ошибка закрытия розничной смены: розничная смена удалена | По переданному id смены не было найдено соответствующего объекта. Смена с данным id либо не существовала, либо была удалена. Проверьте правильность переданного id смены. |
12003 | Ошибка закрытия розничной смены: розничная смена находится в корзине | Смена с указанным id находится в корзине. Проверьте правильность указанного вами id смены. |
12004 | Ошибка закрытия розничной смены: розничная смена закрыта | Смена с указанным id находится уже была закрыта. Повторное закрытие смены невозможно. Проверьте правильность указанного вами id смены. |
12005 | Ошибка открытия розничной смены: не найдена точка продаж | При открытии смены не была найдена точка продаж с указанным id. Проверьте id точки продаж, на которой должна быть открыта новая смена. |
12006 | Ошибка открытия розничной смены: параметр 'retailShift' отсутствует или имеет неверный формат | Убедитесь в наличии параметра 'retailShift'. |
12011 | Ошибка открытия розничной смены: Точка продаж не активна | При открытии смены не была найдена активная точка продаж с указанным id. Проверьте активность точки продаж по указанному id, на которой должна быть открыта новая смена. |
12026 | Значение '{наименование поля}' не должно превышать значение установленное в '{наименование поля}' | При запросе значение '{наименование поля}' превышало значение установленного в значении '{наименование поля}'. Проверьте значение '{наименование поля}'. |
Коды ошибок для Отчетов Остатков
Код ошибки | Сообщение | Описание |
---|---|---|
13000 | Пустой идентификатор операции | Вы запросили отчет Остатки по операции, не указав id операции. Убедитесь что id передается в качестве параметра. |
13001 | Операция с указанным идентификатором не найдена | Не удалось найти операцию с указанным operation.id. Проверьте передаваемый вами id, а также убедитесь что операция с данным id не была удалена. |
13002 | Операция не может быть выполнена для указанного типа '{тип документа}' документа | Отчет Остатки по операциям доступен только для операций типа Отгрузка, Розничная продажа, Заказ покупателя . |
13003 | Отсутствует доступ к отчету Остатки | У пользователя отсутствует доступ к отчету Остатки. |
13004 | Отчет Текущие остатки доступен только для администратора | Только администратор имеет доступ к отчету Текущие остатки. |
Коды ошибок для Доп. поля
Код ошибки | Сообщение | Описание |
---|---|---|
14000 | Ошибка сохранения дополнительного поля: поле '{наименование поля}' не относится к реестру '{тип сущности}' | В своем запросе пытаетесь использовать дополнительные поля другого типа сущности. Сделайте запрос метаданных по данному типу сущности и используйте дополнительные поля которые придут в ответ. |
14001 | Ошибка сохранения дополнительного поля: обновление дополнительных полей типа 'Файл' не поддерживается | Поле типа файл обновить нельзя. |
14002 | Ошибка сохранения дополнительного поля: родительская сущность не поддерживает дополнительные поля | Сущности данного типа не могут иметь дополнительных полей. Уточнить список типов сущностей, которые могут иметь дополнительные поля можно в разделе Работа с дополнительными полями |
14003 | Ошибка сохранения дополнительного поля: идентификатор метаданных указывает на несуществующий объект | Не удалось найти доп поле с указанным id. Проверьте список доп полей и их id с помощью ресурса метаданных сущности. |
14004 | Ошибка сохранения дополнительного поля: для объекта типа 'пользовательский справочник' необходимо указать поле meta или name | Хотя бы одно из вышеуказанных полей не должно быть пустым. |
14005 | Ошибка сохранения дополнительного поля типа 'Файл': размер файла превышает максимально допустимый (10 мб) | Невозможно загрузить в качестве значения дополнительного поля файл размером более 10 мб. |
14006 | Ошибка сохранения дополнительного поля типа 'Файл': отсутствует имя файла | Поле filename у значения дополнительного поля типа Файл должно быть заполнено. |
14007 | Ошибка сохранения дополнительного поля типа 'Файл': отсутствует поле content | Поле content у значения дополнительного поля типа Файл должно быть заполнено. |
14008 | Ошибка сохранения дополнительного поля типа 'Файл': недостаточно места в хранилище для сохранения файла | Место в хранилище, выделенное для вашего аккаунта, закончилось. |
14009 | Ошибка сохранения дополнительного поля типа '{наименование типа поля}': отсутствует поле value | Поле value у значения дополнительного поля типа '{наименование типа поля}' должно быть заполнено. |
14010 | Доступ запрещен: создавать, изменять и удалять дополнительные поля может только пользователь с правами администратора | Cоздавать, изменять и удалять дополнительные поля может только пользователь с правами администратора. |
14011 | Ошибка удаления дополнительного поля: неверный формат meta удаляемого дополнительного поля | По переданной meta не удалось идентифицировать дополнительное поле для удаления. |
14012 | Ошибка сохранения дополнительного поля: невозможно сделать обязательным поле, которое очищается в рамках сценария | Дополнительное поле в сценарии со значением Очистить поле не может стать обязательным. Если требуется присвоить обязательность - необходимо изменить действие в сценарии. |
14013 | Ошибка сохранения дополнительного поля: передавать значение true для поля required может только администратор | Только администратор может объявлять дополнительные поля обязятельными. |
Коды ошибок для Модификаций
Код ошибки | Сообщение | Описание |
---|---|---|
15000 | Ошибка сохранения модификации: модификация с данным набором характеристик уже существует для данного товара | Невозможно иметь 2 модификации товара, у которых наборы значений характеристик будут совпадать. Убедитесь что это условие не нарушается. Иначе: используйте уже существующую модификацию. |
15001 | Ошибка сохранения модификации: должны быть заданы характеристики | При создании/обновлении модификации переданный массив характеристик не может отсутствовать или быть пустым. |
15002 | Ошибка сохранения модификации: нельзя создать модификацию услуги | Поддерживаются только модификации товаров. Убедитесь в правильности URI по которому происходит запрос. |
15003 | Ошибка сохранения модификации: нельзя создать модификацию алкогольного товара | Поддерживаются только модификации обычных товаров. Убедитесь в правильности URI по которому происходит запрос. |
15004 | Ошибка сохранения модификации: названия характеристик не должны повторяться | Нельзя создать модификацию с одинаковыми характеристиками |
Коды ошибок для Товаров
Код ошибки | Сообщение | Описание |
---|---|---|
16000 | Ошибка сохранения товара: свойства алкогольной продукции не могут быть отрицательными | Алкогольные поля "код алкогольной продукции", "крепость" и "объем" должны принимать значение строго большее 0. |
16001 | Ошибка сохранения товара: весовой товар не может использовать учет по серийным номерам | Товар не может одновременно быть весовым и использовать учет по серийным номерам. Это - взаимоисключающие признаки. |
16002 | Ошибка сохранения товара: нельзя отключить серийный учет | Если серийный учет однажды включен, то его уже нельзя отключить. В ином случае вы можете создать новый товар. |
16008 | Ошибка сохранения товара: для использования упаковок нужно указать единицу измерения товара | Для использования упаковок должна быть задана единица измерения товара |
16009 | Ошибка сохранения товара: значение поля ppeType не найдено в справочнике | Указанный код товара СИЗ не найден в справочнике |
16010 | Ошибка сохранения товара: если указано, что товар облагается налогом, то необходимо заполнить поле vat. Иначе vatEnabled для товара должен иметь значение false | При передаче поля vatEnabled = true для товара нужно указывать также значение НДС. |
16011 | Ошибка сохранения товара: разливной товар не может учитываться по серийным номерам. | Товар не может быть одновременно на разлив и с учетом по серийным номерам. |
16012 | Ошибка сохранения товара: товар не может быть разливным и весовым одновременно. | Товар не может быть одновременно весовым и на разлив. |
16013 | Ошибка сохранения товара: весовой товар не может иметь признак средства индивидуальной защиты. | Товар не может быть одновременно на разлив и иметь признак средства индивидуальной защиты. |
16014 | Ошибка сохранения товара: разливной товар не может иметь признак средства индивидуальной защиты. | Разливной товар не может иметь признак средства индивидуальной защиты. |
16015 | Ошибка сохранения товара: неверно указан тип маркировки «{тип маркировки}» для разливного товара. | Разливной товар может сочетаться только с типами маркировки MILK, PERFUMERY. |
16102 | Ошибка сохранения товара: товар с типом маркировки «{тип маркировки}» не может иметь модификаций | У маркированного товара типа "{тип маркировки}" не может быть модификаций |
16103 | Ошибка сохранения товара: маркированный товар не может учитываться по серийным номерам. | Товар не может быть одновременно маркированным и учитываться по серийным номерам |
16105 | Ошибка сохранения товара: маркированный товар не может быть весовым . | Весовой товар может сочетаться только с типом маркировки MILK. |
16106 | Ошибка сохранения товара: неизвестный тип маркировки товара | Тип маркировки товара может быть только одним из следующих: NOT_TRACKED, TOBACCO, SHOES, LP_CLOTHES, LP_LINENS, PERFUMERY, ELECTRONICS, TIRES, MILK, WATER, OTP, BEER_ALCOHOL, FOOD_SUPPLEMENT, SANITIZER |
16107 | Ошибка сохранения товара: поле ТН ВЭД не может быть указано для: «Табачная продукция» | У табачной продукции не может быть кода ТН ВЭД |
16108 | Ошибка сохранения товара: значение поля ТН ВЭД не найдено в справочнике | Указанный код ТН ВЭД не существует в классификаторе ТН ВЭД ЕАЭС |
16109 | Ошибка сохранения товара: поле ТН ВЭД не может быть указано для немаркированной продукции | Поле ТН ВЭД может присутствовать только у маркированных товаров |
16110 | Ошибка сохранения товара: <Текст ошибки> | Произошла ошибка сохранения маркированного товара |
16111 | Ошибка сохранения товара: значение поля ТН ВЭД не соответствует типу маркированной продукции | Тип маркированной продукции определенный по ТН ВЭД не соответсвует выбранному пользователем |
16112 | Ошибка сохранения товара: тип маркировки «<Тип маркировки товара>» не поддерживает частичное выбытие. | Тип маркировки товара не поддерживает частичное выбытие |
16113 | Ошибка сохранения товара: маркированный товар не может быть средством индивидуальной защиты. | Маркированный товар не может быть средством индивидуальной защиты. |
Коды ошибок для Документов
Код ошибки | Сообщение | Описание |
---|---|---|
17000 | Ошибка сохранения документа: счет организации не принадлежит указанной организации | Убедитесь что вы указываете подходящий счет. Если вы обновляете поле organization вместе с ним также должно обновляться поле organizationAccount. |
17001 | Ошибка сохранения документа: счет контрагента не принадлежит указанному контрагенту | Убедитесь что вы указываете подходящий счет. Если вы обновляете поле agent вместе с ним также должно обновляться поле agentAccount. |
17002 | Ошибка сохранения позиции документа: серийный номер не может быть пустым | Серийный номер не может быть пустой строкой. |
17003 | Ошибка сохранения позиции документа: количество зарезервированных товаров не может превышать общее количество | Количество зарезервированного товара позиции документа не может превышать общее количество товара по документу. |
17004 | Ошибка сохранения позиции документа: количество товаров в ожидании не может превышать общее количество | Количество ожидаемого товара позиции документа не может превышать общее количество товара по документу. |
17005 | Ошибка сохранения связанного документа: отсутствует ссылка на документ-основание | При сохранении связанного документа необходима ссылка на документ-основание (например при сохранении возврата необходима ссылка на продажу). |
17006 | Ошибка сохранения связанного документа: несовместимые типы документов - '<тип1>' и '<тип2>' | В качестве связи вы указали документ несоответствующего типа. |
17007 | Ошибка сохранения позиции документа: НДС не может быть больше 100 | Процент НДС может принимать значения от 0 до 100. |
17008 | Ошибка сохранения позиции документа: скидка не может быть больше 100 | Процент скидки может принимать значения от 0 до 100. |
17009 | Ошибка сохранения документа: дата '{тип документа}' не попадает в открытый для редактирования период | Данный документ относится к закрытому периоду. Редактирование документа невозможно. |
17010 | Ошибка сохранения документа: вы не можете проводить документы со складом-приемником из другого отдела | В метаданных документа запрещено проводить документы со складом-приемником из другого отдела. |
17011 | Ошибка сохранения документа: вы не можете проводить документы со складом-источником из другого отдела | В метаданных документа запрещено проводить документы со складом-источником из другого отдела. |
17012 | Ошибка сохранения документа: вы не можете сохранять документы со складом-приемником из другого отдела | В метаданных документа запрещено сохранять документы со складом-приемником из другого отдела. |
17013 | Ошибка сохранения документа: вы не можете сохранять документы со складом-источником из другого отдела | В метаданных документа запрещено сохранять документы со складом-источником из другого отдела. |
17014 | Ошибка сохранения документа: вы не можете снять проведение у документа типа <тип>, по которому был проведен возврат | Нельзя снять проведение у данного документа, поскольку для него уже был проведен возврат. |
17016 | Ошибка сохранения документа: комплект не может быть в составе позиции документа типа {тип_документа} | Комплект не может быть позицией в следующих документах: заказ поставщику, счет поставщика, приемка, возврат поставщику, выданный отчет комиссионера, полученный отчет комиссионера, списание, оприходование, перемещение, инвентаризация, техкарта, техоперация, внутренний заказ. |
17018 | Ошибка сохранения документа: количество комплектов должно быть целым числом | Количество комплектов в позиции должно быть целым числом |
17020 | Ошибка сохранения позиции документа: товар упаковки и товар позиции отличаются | Для данной позиции документа товар из упаковки и указанный товар отличаются |
17021 | Ошибка сохранения позиции документа: если указано, что позиция облагается налогом, то необходимо заполнить поле vat. Иначе vatEnabled для позиции должен иметь значение false | При передаче поля vatEnabled = true в позиции нужно указывать также значение НДС |
17022 | Ошибка сохранения документа: {вид ассортимента} не может быть в составе позиции документа типа {тип_документа} | Добавляемый вид ассортимента не может быть позицией в этом типе документа |
17023 | Ошибка сохранения позиции документа: отсутствует пермиссия {тип пермиссии} на изменение поля {наименование поля} | Значение поля не может быть изменено из-за отсутствия соответствующей пермиссии |
17101 | Ошибка сохранения документа: для товара <наименование товара> не установлен признак маркированной продукции. Измените товар для сохранения кодов маркировки | Установите для товара признак маркированной продукции 'trackingType' соответствующей категории |
17102 | Ошибка сохранения документа: неверный формат кода маркировки <значение КМ / КМ ТУ / КМ ПУ> | Код маркировки для всех категорий маркированной продукции должен соответствовать формату:
|
17103 | Ошибка сохранения документа: в документе несколько одинаковых кодов <значение КМ / КМ ТУ / КМ ПУ> | Среди кодов маркировки есть дублирующиеся. Удалите дубликаты кодов маркировки для сохранения позиции |
17104 | Ошибка сохранения документа: код маркировки <КМ> не может содержать вложенные коды | Допустимо сохранять список кодов маркировки trackingcode, список потребительских упаковок consumerpack, список транспортных упаковок transportpack, список кодов маркировки trackingcode вложенных в транспортные упаковки transportpack или потребительские упаковки consumerpack, список потребительских упаковок consumerpack вложенных в транспортные упаковки transportpack. Сохранение других вложенных структур не поддерживается |
17105 | Ошибка сохранения документа: код маркировки транспортной упаковки <КМ ТУ> не может содержать вложенные коды транспортных упаковок | Допустимо сохранять список кодов маркировки trackingcode или список потребительских упаковок consumerpack вложенных в транспортные упаковки transportpack. Не поддерживается сохранение транспортных упаковок вложенных в транспортные упаковки |
17106 | Ошибка сохранения документа: код маркировки потребительской упаковки не может содержать вложенные коды | Допустимо сохранять список кодов маркировки trackingcode вложенных в транспортные упаковки transportpack. Не поддерживается сохранение кодов маркировки trackingcode вложенных в потребительские упаковки consumerpack |
17107 | Ошибка сохранения документа: код маркировки транспортной упаковки <КМ ТУ> не может одновременно содержать вложенные коды товаров и потребительских упаковок | Допустимо сохранять список кодов маркировки trackingcode или список потребительских упаковок consumerpack вложенных в транспортные упаковки transportpack. Не поддерживается их одновременное сохранение для одной транспортной упаковки |
17108 | Позиция документа типа <тип> не может содержать коды маркировки | Позиции документа указанного типа не могут иметь коды маркировки |
Коды ошибок для Продаж/Отгрузок
Код ошибки | Сообщение | Описание |
---|---|---|
18000 | Ошибка сохранения продажи: сумма 'cashSum', 'noCashSum', 'qrSum', 'prepaymentCashSum', 'prepaymentNoCashSum' и 'prepaymentQrSum' не соответствует сумме по документу | Сумма полей cashSum, noCashSum, qrSum, prepaymentCashSum и prepaymentNoCashSum, prepaymentQrSum должна быть равна значению поля sum или отличаться менее чем на 10 единиц. В случае создания документа и указании вышеупомянутых полей в теле запроса, ответственность за подсчет sum ложится на пользователя. sum считается как общая сумма по всем позициям документа. |
18002 | Ошибка сохранения документа: отгрузка по комиссионному договору не может содержать комплект в составе позиций | В отгрузку нельзя добавить комплект, если для нее указан договор типа "Комиссионный"". |
18005 | В случае заполненного поля 'qrSum' поля 'cashSum', 'noCashSum', 'prepaymentCashSum' и 'prepaymentNoCashSum' должны быть пустыми | Смешанная оплата по QR-коду и карте или по QR-коду и наличными запрещена. |
18006 | В случае заполненного поля 'prepaymentQrSum' поля 'cashSum', 'noCashSum', 'prepaymentCashSum' и 'prepaymentNoCashSum' должны быть пустыми | В случае предоплаты по QR-коду, оплата возможно только по QR-коду. |
Коды ошибок для Возвратов
Код ошибки | Сообщение | Описание |
---|---|---|
19000 | Ошибка сохранения возврата: розничная смена уже закрыта | Нельзя сохранить возврат в закрытую розничную смену. Убедитесь что используете идентификатор активной смены. |
19001 | Ошибка сохранения розничного возврата: поля 'cashSum' и 'noCashSum' являются обязательными для возврата без основания | Поля 'cashSum' и 'noCashSum' являются обязательными для возврата без основания. Убедитесь, что они заполнены. |
19002 | Ошибка сохранения розничного возврата: сумма 'cashSum', 'noCashSum' и 'qrSum' не соответствует сумме по документу | Сумма полей cashSum, noCashSum и qrSum должна быть равна значению поля sum или отличаться менее чем на 10 единиц. В случае создания документа и указании вышеупомянутых полей в теле запроса, ответственность за подсчет sum ложится на пользователя. sum считается как общая сумма по всем позициям документа. |
19003 | Ошибка сохранения розничного возврата: возврат возможен только по QR-коду | Возникает в случае, если продажа была осуществлена по QR-коду, а возврат осуществляется за наличные или по карте. При создании такого возврата поля 'cashSum' и 'noCashSum' должны отсутствовать. |
19004 | Ошибка сохранения розничного возврата: возврат по QR-коду поддержан только для операций, оплаченных по QR-коду | Возникает в случае, если продажа была осуществлена за наличные или по карте, а возврат осуществляется по QR-коду. При создании такого возврата поле 'qrSum' должно отсутствовать. |
Коды ошибок для Приемок
Код ошибки | Сообщение | Описание |
---|---|---|
20000 | Ошибка сохранения приемки: нельзя указать накладные расходы с договором комиссии | Если к приемке привязан договор типа "Договор комиссии", то нельзя указать какое-либо значение в поле overhead. |
Коды ошибок для Перемещений
Код ошибки | Сообщение | Описание |
---|---|---|
21000 | Ошибка сохранения перемещения: нельзя провести перемещение со склада на этот же склад | Убедитесь, что в полях sourceStore и targetStore указываете склады с разными идентификаторами. |
21001 | Ошибка сохранения перемещения: нельзя провести перемещение в одну и ту же ячейку | Убедитесь, что в документе перемещения с одного и того же склада в полях sourceSlot и targetSlot в позициях указываете ячейки с разными идентификаторами. |
Коды ошибок для Платежей
Код ошибки | Сообщение | Описание |
---|---|---|
22000 | Ошибка сохранения платежа: распределенная сумма превышает сумму платежа | Сумма, указанная в linkedSum больше чем sum платежа. |
22001 | Ошибка сохранения платежа: платеж содержит повторяющиеся привязанные документы | Вы пытаетесь привязать платеж к документу более одного раза. |
22002 | Ошибка сохранения платежа: некорректная статья расходов: '{категория расходов}' | Платежу нельзя присвоить данную статью расходов. |
22003 | Ошибка сохранения платежа: невозможно привязать платеж без закрывающих документов | В платеже установлен активный флаг “Без закрывающих документов”. |
Коды ошибок для Групп товаров
Код ошибки | Сообщение | Описание |
---|---|---|
23000 | Ошибка сохранения группы: нельзя указывать в качестве родительской группы саму группу | Группа не может в качестве родительской ссылаться на саму себя. |
23001 | Ошибка сохранения группы: нельзя указывать в качестве родительской группы вложенную группу | Группа не может в качестве родительской группы ссылаться на группу, которая является ее дочерней группой. |
Коды ошибок для Инвентаризаций
Код ошибки | Сообщение | Описание |
---|---|---|
24001 | Ошибка создания шаблона списания: инвентаризация не требует проведения списания | Инвентаризация не содержит недостачи, либо все необходимые списания уже созданы. |
24002 | Ошибка создания шаблона оприходования: инвентаризация не требует проведения оприходования | Инвентаризация не содержит избытка, либо все необходимые оприходования уже созданы. |
24003 | Ошибка сохранения инвентаризации: услуга не может быть позицией инвентаризации | Услуга не может быть позицией инвентаризации. |
24004 | Ошибка сохранения инвентаризации: инвентаризация не может содержать дублирующиеся позиции | Товар/Модификация/Серия может быть добавлен(а) в инвентаризацию только единожды. |
Коды ошибок для Технологических операций
Код ошибки | Сообщение | Описание |
---|---|---|
25003 | Ошибка сохранения: технологическая операция должна содержать продукцию или техкарту | При создании техоперации или удалении продукции техоперации должно быть не менее одной позиции продукции. |
Коды ошибок для Технологических процессов
Код ошибки | Сообщение | Описание |
---|---|---|
25030 | Ошибка сохранения: число этапов техпроцесса не может быть больше '100' | Максимальное количество этапов - 100 на один техпроцесс. |
25031 | Ошибка сохранения: техпроцесс не может содержать повторяющиеся этапы производства | Каждый этап производства может встречаться в техпроцессе только один раз. |
25032 | Ошибка удаления объекта: нельзя удалять основной техпроцесс | Удаление возможно только для пользовательских техпроцессов. |
25033 | Ошибка сохранения: последний добавляемый этап не может содержать следующих позиций | У последней позиции не должно быть следующих этапов |
25034 | Ошибка сохранения: нарушена структура техпроцесса | У техпроцесса больше одного финального этапа или техпроцесс зациклен |
25035 | Ошибка сохранения: нельзя одновременно передать заполненный список сотрудников и признак allperformers=true | Проверьте, что не передаете одновременно список конкретных сотрудников и признак доступности назначения на этап любого сотрудника |
Коды ошибок для Технологических карт
Код ошибки | Сообщение | Описание |
---|---|---|
25060 | Ошибка сохранения: элемент массива '{тип}' может содержать позицию только от техпроцесса, указанного в поле processingProcess техкарты | Проверьте принадлежность техпроцессу техкарты указанных позиций техпроцесса. |
25061 | Ошибка сохранения: нельзя одновременно указать стоимость производства в техкарте и в этапах техкарты | Проверьте, что не передаете одновременно стоимость производства (поле cost) в техкарте и в позициях этапа. |
25062 | Ошибка сохранения: при указании техкарты материала необходимо наличие в ней данного материала в качестве продукции | Проверьте, что в результате операции не появится некорректных техкарт. |
Коды ошибок для Заказов на производство
Код ошибки | Сообщение | Описание |
---|---|---|
26001 | Ошибка сохранения заказа на производство: материалы заказа не соответствуют материалам техкарты | Проверьте соответствие материалов заказа на производство и техкарты. |
26002 | Ошибка сохранения заказа на производство: новые товары не могут быть добавлены в заказ | Проверьте заказ на наличие новых товаров. |
Коды ошибок для Производственного задания
Код ошибки | Сообщение | Описание |
---|---|---|
26101 | Ошибка сохранения производственного задания: количество позиций не может превышать {максимальное количество} | Производственное задание может содержать до 200 позиций |
26102 | Ошибка сохранения производственного задания: нельзя начать выполнять не проведенное производственное задание | |
26103 | Ошибка сохранения производственного задания: нельзя убирать дату начала производства у начатого производственного задания | До отмены начала производства необходимо отменить все выполнения этапов |
26104 | Ошибка обновления позиции производственного задания: Замена техкарты не поддерживается | Нельзя изменять техкарту у позиции производственного задания |
26105 | Ошибка обновления позиции производственного задания: нельзя изменять позицию, у которой есть выполненные или частично выполненные этапы | Изменять позицию производственного задания можно только до начала его выполнения |
26106 | Ошибка сохранения позиции производственного задания: нельзя изменить или удалить продукцию, когда начато выполнение заключительного этапа позиции | Изменять продукцию производственного этапа можно до окончания его выполнения |
26107 | Ошибка сохранения: позиция производственного задания {идентификатор} не принадлежит производственному заданию {идентификатор} | В запросе указана позиция от другого производственного задания |
26108 | Ошибка удаления позиции производственного задания: нельзя удалить позицию, у которой есть выполненные этапы | Удалять позицию производственного задания можно до начала её выполнения |
26109 | Ошибка обновления производственного этапа: нельзя изменять начатый производственный этап | Изменять производственный этап можно до начала его выполнения |
26110 | Ошибка удаления: нельзя удалить последний материал при активном флаге 'reserve' | При резервировании материалов необходим хотя бы один материал |
26111 | Ошибка удаления: нельзя удалить последнюю продукцию при активном флаге 'awaiting' | При выставленном ожидании, необходим хотя бы один продукт |
26112 | Ошибка обновления производственного задания: нельзя присвоить полю {поле даты} значение после {дата} | Для поля есть ограничения и зависимости. Необходимо передать дату до указанной |
26113 | Ошибка обновления: количество товара с учетом по серийным номерам не может быть дробным | При использовании материала или продукта с учетом по серийным номерам необходимо указывать для него количество в целочисленном виде |
Коды ошибок для Выполнений этапов производства
Код ошибки | Сообщение | Описание |
---|---|---|
26200 | Ошибка сохранения Выполнения этапа: производство не начато, необходимо начать производство | До начала выполнения этапов производства, необходимо начать производство |
26201 | Ошибка сохранения Выполнения этапа: допустимо изменять только серию товара в поле assortment | Допустимо изменять серию, но не продукт / модификацию |
26202 | Ошибка сохранения Выполнения этапа: запрещено указывать исполнителем неактивного пользователя | Только активные пользователи МоегоСклада могут выполнять Производственные задания |
26203 | Ошибка сохранения Выполнения этапа: для создания выполненного этапа требуется выполнение предыдущих этапов | До начала выполнения последнего этапа необходимо начать выполнение предыдущих |
26204 | Ошибка сохранения Выполнения этапа: объем производства в рамках выполнения этапа не может превышать объем производства, согласно данным позиции производственного задания ({максимально допустимое количество}) | Максимальный объем производства ограничен позицией производственного задания |
26205 | Ошибка сохранения Выполнения этапа: суммарный объем производства этапа не может превышать объем производства предыдущих этапов | До начала выполнения последнего этапа необходимо в достаточном объемы выполнить предыдущие |
26206 | Ошибка удаления Выполнения этапа: невозможно удалить выполненный этап, так как общий объем производства на промежуточном этапе не может быть меньше объема производства на финальном этапе | Нельзя уменьшить объем производства этапа, если при этом получится перепроизводство на последнем этапе |
26207 | Ошибка сохранения Выполнения этапа: для товаров с серийным учётом должны быть указаны серийные номера | Для всех материалов и продуктов с учётом по серийным номерам должны быть указаны серийные номера |
26208 | Ошибка сохранения Выполнения этапа: значение {поле с количеством} должно соответствовать количеству серийных номеров в поле things | Необходимо обновлять серийные номера при изменении consumedQuantity или producedQuantity |
Коды ошибок для Прайс-листов
Код ошибки | Сообщение | Описание |
---|---|---|
27000 | Ошибка сохранения описания таблицы, '{описание ошибки}' | На создание таблицы Прайс-листа налагаются следующие ограничения: для описанного столбца не может отсутствовать или быть пустым название, в пределах одного Прайс-листа столбцы должны быть уникальные по названию. |
27001 | Ошибка сохранения позиции, для указанного имени столбца не найден столбец в описании таблицы | Значение ячеек в позициях Прайс-листа соотносятся со столбцами по названию. Нельзя указывать для ячейки название несуществующих в определении Прайс-листа столбцов. |
27002 | Ошибка сохранения позиции, нельзя в прайс-листе указывать повторяющиеся позиции | Нельзя в прайс-листе указывать повторящиеся позиции, например, товар или его модификацию дважды. |
27003 | Ошибка сохранения позиции, нельзя в прайс-листе указывать серии | Нельзя в прайс-листе указывать серии, только товары, услуги и модификации. |
Коды ошибок для Контрагентов
Код ошибки | Сообщение | Описание |
---|---|---|
28000 | Ошибка сохранения контрагента: неизвестный тип цены: '<Тип цены>' | Неизвестный тип цены. Список допустимых можно запросить в метаданных товаров. |
Коды ошибок для Комплектов
Код ошибки | Сообщение | Описание |
---|---|---|
29000 | Ошибка сохранения комплекта: некорректное число компонентов | Поддерживается от одного до пятидесяти компонентов в одном комплекте. |
29001 | Ошибка сохранения комплекта: дополнительные расходы и состав компонентов не могут быть изменены, так как комплект уже используется | Уберите зависимые комплекты из документов. |
29002 | Ошибка сохранения комплекта: комплект содержит повторяющиеся компоненты | Проверьте состав компонентов комплекта и попробуйте снова. |
29003 | Ошибка сохранения комплекта: компонент комплекта не может быть комплектом, серией, алкогольным товаром или товаром на серийном учете | Проверьте состав компонентов комплекта и попробуйте снова. |
29009 | Ошибка сохранения: компонент комплекта не может быть прослеживаемым товаром | Проверьте состав компонентов комплекта и попробуйте снова. |
Коды ошибок для Веб-хуков
Код ошибки | Сообщение | Описание |
---|---|---|
30000 | Ошибка сохранения webhook: неподдерживаемый тип сущности '{тип}' | В веб-хуках можно использовать любые типы сущностей, доступные через Remap API, кроме вложенных. Например, product или demand. |
30001 | Ошибка сохранения webhook: неизвестный HTTP-метод '{метод}'. Допустимый: POST | В веб-хуках можно указывать только поддерживаемые HTTP методы. Допустимым сейчас является POST. |
30002 | Ошибка сохранения webhook: неизвестное действие '{действие}'. Допустимые: CREATE, UPDATE, DELETE | В веб-хуках можно указывать только доступные действия: CREATE, UPDATE, DELETE. |
30003 | Ошибка сохранения webhook: webhook с данным набором параметров уже существует | В веб-хуках на тройку (сущность, действие, адрес) может быть установлен только один веб-хук. |
30004 | Необходимы права администратора для работы с webhook | Управление веб-хуками доступно только пользователям с правами администратора. |
30005 | Ошибка сохранения webhook: значение поля url не является корректным адресом запроса | Значение поля url не является корректным адресом запроса. Проверьте адрес запроса на соответствие формату http, https адреса запроса. |
30006 | Ваш тарифный план не позволяет создавать или обновлять веб-хуки | Создание и обновление веб-хуков доступно на всех тарифах кроме бесплатного. |
30007 | Нельзя создать больше '5' веб-хуков одинакового типа на одну сущность | Нельзя создать новых веб-хуков на данный тип сущности и действия сверх данного ограничения. Удалите старые веб-хуки или перенастройте на новые url. |
30008 | Ошибка сохранения webhook: тип сущности '{тип}' не поддерживает действие '{действие}'. Допустимые: {действия} | Для данного типа сущности определен не стандартный набор действий, поэтому некоторые действия данный тип не поддерживает |
30009 | "Ошибка сохранения webhook: указание значения поля 'diffType' не поддерживается для действия '{действие}'. Допустимые: {действия} | Указание типа вывода списка изменений 'diffType' доступно для определенных типов действий. Если действие не поддерживается, то поле 'diffType' указывать не нужно |
30010 | Ошибка сохранения webhook: длина url адреса больше 255 символов | Количество символов в url адресе должно быть меньше 256. |
Коды ошибок для Валют
Код ошибки | Сообщение | Описание |
---|---|---|
31000 | Валюту учета нельзя удалить | Валюту учета нельзя удалить. |
Коды ошибок для Договоров
Код ошибки | Сообщение | Описание |
---|---|---|
32001 | Ошибка сохранения договора: невозможно изменить тип договора на комиссионный. По данному договору существует отгрузка, в составе позиций которой присутствует комплект | Проверьте, чтобы по данному договору не было отгрузок комплектов и попробуйте снова. |
32002 | Ошибка сохранения договора: невозможно изменить тип договора на комиссионный. Договор, используемый в документах с компонентами комплектов, не может быть комиссионным | Проверьте, чтобы по данному договору не было документов с компонентами комплектов и попробуйте снова. |
Коды ошибок для Печатных форм
Код ошибки | Сообщение | Описание |
---|---|---|
33000 | Ошибка формирования печатной формы: не найден шаблон печатной формы | Шаблон, указанный при формировании печатной формы не существует. Проверьте корректность указанного шаблона для печати. |
33001 | Ошибка формирования печатной формы: неизвестный формат | Проверьте, что указанный формат входит в список перечисленных: xls, pdf, html, ods. |
33002 | Ошибка формирования печатной формы: '<текст ошибки>' | Текст ошибки указывает на проблемы, возникшие при печати документа. |
33003 | Ошибка формирования печатной формы: отсутствует ссылка на шаблон для печати | Для того, чтобы сгенерировать печатную форму, необходимо отправить шаблон. |
33004 | Ошибка формирования печатной формы: отсутствует поле count для шаблона печатной формы | При печати комплектов необходимо указывать поле count - число копий печатной формы в комплекте. |
33005 | Ошибка формирования печатной формы: указаны оба поля для ссылок на шаблон: template и templates. | Возможно указать только одно из полей запроса template или templates. |
33006 | Ошибка формирования печатной формы: поле count для шаблона печатной формы может принимать только целые значения в диапазоне от 1 до 10 | Поле count должно быть в интервале [1, 10]. |
33007 | Ошибка формирования печатной формы: отсутствует ссылка на юрлицо | Для того, чтобы сгенерировать печатную форму для товара, необходимо отправить ссылку на юрлицо. |
33008 | Ошибка формирования печатной формы: отсутствует количество ценников/термоэтикеток | Для того, чтобы сгенерировать печатную форму для товара, необходимо отправить количество. |
33009 | Ошибка формирования печатной формы: отсутствует тип цены | Для того, чтобы сгенерировать печатную форму для товара, необходимо отправить тип цены. |
33010 | Ошибка формирования печатной формы комплекта документов: для указанной сущности не было передано подходящих шаблонов печатной формы. | Чтобы напечатать комплект документов, нужно передать хотя бы 1 подходящий для данной сущности шаблон печатной формы. |
33011 | Ошибка формирования печатной формы комплекта документов: сущность для печати комплекта должна быть документом | Невозможно напечатать комплект документов для сущности, не являющейся документом. |
33012 | Печать для типа '{тип}' не поддерживается | Печать не поддерживается для данного типа. |
Коды ошибок для Публикаций
Код ошибки | Сообщение | Описание |
---|---|---|
34000 | Публикации для типа '{тип}' не поддерживаются | Публикации доступны только для следующих типов: Заказ покупателя, Счет покупателю, Отгрузка, Заказ поставщику, Счет поставщика, Приемка, Входящий платеж, Приходный ордер, Исходящий платеж, Расходный ордер, Внутренний заказ, Перемещение, Оприходование, Списание, Счет-фактура выданный, Счет-фактура полученный, Возврат поставщику, Возврат покупателя, Выплата денег, Внесение денег, Розничный возврат, Розничная продажа, Договор, Розничная смена, Заказ на производство, Полученный отчет комиссионера, Выданный отчет комиссионера, Инвентаризация, Техоперация. |
34001 | Не удалось создать публикацию. Проверьте корректность шаблона. | Во время генерации документа возникла ошибка. Проверьте корректность передаваемого шаблона. |
34002 | Ошибка создания публикации документов: ваш тариф не позволяет создавать публикацию документов на основе пользовательского шаблона печатной формы | Ваш тарифный план не позволяет использовать при публикации документов пользовательские шабоны. |
34003 | Ошибка: нельзя работать с публикацией сущности так как к ней отсутствует доступ на '<чтение, запись>'. | Работа пользователя с публикациями документов возможна, если есть право на чтение и право печати сущности данного типа. |
Коды ошибок для Счет-фактур
Код ошибки | Сообщение | Описание |
---|---|---|
35000 | Ошибка формирования счета-фактуры: передано более 1 документа-основания в коллекции | Счет-фактура может быть создан только на основании одного документа. Проверьте, что был передан один массив связанных документов с одним документом-основанием. |
35001 | Ошибка формирования счета-фактуры: документ уже внесен в счет-фактуру | Счет-фактура уже создан на основании переданного документа. |
Коды ошибок для Шаблонов
Код ошибки | Сообщение | Описание |
---|---|---|
36000 | Ошибка формирования шаблона: передано более 1 документа-основания для формирования шаблона | Не удалось сформировать предзаполненную сущность из-за того что передано более 1 документа-основания. |
36001 | Ошибка формирования шаблона: 'описание ошибки' | Не удалось сформировать предзаполненную сущность из-за невалидных данных. |
Коды ошибок для Задач
Код ошибки | Сообщение | Описание |
---|---|---|
37000 | Ошибка: вы не можете работать с задачами, т.к. в вашем тарифном плане отсутствует опция CRM | Вы не можете создавать, редактировать и удалять задачи без тарифной опции CRM. |
37001 | Ошибка: вы не можете редактировать или удалить задачу, созданную другим сотрудником | Пользователь, не являющийся администратором, может изменять или удалять только задачи, которые создал он сам, либо менять статус готовности у задачи, на которую он назначен ответственным. |
38000 | Необходимы права администратора для работы с аудитом | Просмотр изменений доступен только пользователям с правами администратора. |
Коды ошибок Показателей
Код ошибки | Сообщение | Описание |
---|---|---|
39000 | Ошибка: не указан обязательный параметр для запроса показателей: {параметр} | Параметры momentFrom,momentTo, interval - обязательные. |
39001 | Ошибка: показатели, разбитые по {interval}, для промежутка большего, чем {limit}, не поддерживаются. | Значения параметров 'interval' и соответствующие им limit: hour - 30 дней, day - 10 лет, month - 100 лет. |
39002 | Некорректное значение параметра фильтрации 'interval'. Допустимые значения: 'hour', 'day', 'month'. | Значение параметра 'interval' должно входить в список допустимых значений. |
Коды ошибок для Пользовательских справочников
Код ошибки | Сообщение | Описание |
---|---|---|
41000 | Ошибка: пользовательский справочник с идентификатором '{идентификатор}' не найден | Пользовательский справочник с указанным идентификатором не найден |
41001 | Ошибка: ваш тариф не позволяет работать с пользовательскими справочниками | Для тарифов "Бесплатный", "Бесплатный 2014" и "Индивидуальный" не поддерживается работа с пользовательскими справочниками. |
Коды ошибок для Типов цен
Код ошибки | Сообщение | Описание |
---|---|---|
42000 | Ошибка валидации: превышено максимальное количество типов цен | Превышено максимальное количество типов цен (100). |
42001 | Ошибка сохранения: нельзя удалить все типы цен | При редактировании списка типа цен необходимо указать хотя бы один. |
Коды ошибок для Сотрудников
Код ошибки | Сообщение | Описание |
---|---|---|
43001 | Ошибка сохранения сотрудника: у изображения отсутствует контент | При передаче изображения в запросе на изменение сотрудника необходимо указывать поле content |
43002 | Ошибка сохранения сотрудника: невозможно преобразовать поле content в изображение | Содержимым поля content должно быть изображение закодированное в формате base64 с расширением jpg или png. |
43003 | Ошибка сохранения сотрудника: Недостаточно места в хранилище. | Место в хранилище, выделенное для вашей учетной записи закончилось. |
43004 | Ошибка сохранения сотрудника: размер изображения превышает максимально допустимый(3 мб) | Попробуйте уменьшить размер изображения. |
43005 | Ошибка сохранения сотрудника: у изображения отсутствует имя файла | При загрузке изображения необходимо указать непустое имя файла в поле filename. |
43006 | Ошибка сохранения сотрудника: неверный формат ИНН | Проверьте, чтобы формат ИНН соответствовал формату ИНН физического лица. |
43007 | Ошибка обновления прав сотрудника: нельзя изменить права у сотрудника, у которого нет доступа к сервису | Нельзя изменить права у сотрудника, у которого нет доступа к сервису. |
43008 | Ошибка обновления прав сотрудника: нельзя изменить логин сотрудника | При изменении прав нельзя изменять логин доступа сотрудника к сервису МойСклад |
43009 | Ошибка обновления прав сотрудника: логин пользователя должен оканчиваться на '{формат логина}' | Не верный формат логина доступа сотрудника к сервису МойСклад |
43010 | Ошибка обновления прав сотрудника: нельзя указывать пользовательские права для данной роли | Задавать права можно только для пользовательской роли. |
43011 | Ошибка обновления прав сотрудника: для пермиссии {тип пермиссии} задано дочернее значение пермиссии {название пермиссии}, но не указано родительское значение пермиссии {название пермиссии} | Нельзя задавать значение пермиссии, не указывая значения для родительской пермиссии. |
43012 | Ошибка обновления прав сотрудника: для пермиссии {тип пермиссии} для {название пермиссии} задано значение {значение пермиссии}, которое шире, чем значение {значение пермиссии} для {название пермиссии} | Указаны несовместимые типы для дочерней и родительской пермиссии. |
43013 | Ошибка обновления прав сотрудника: нельзя изменить роль, на аккаунте должен быть хотя бы один администратор | Необходимо, чтобы на аккаунте всегда был хотя бы один сотрудник с ролью 'Администратор аккаунта' |
43014 | Ошибка обновления прав сотрудника: ваш тарифный план не позволяет настраивать права доступа сотрудникам | Настраивать права для индивидуальных ролей или создавать кастомные роли можно только на определенных тарифах |
43015 | Ошибка обновления прав сотрудника: не найдена роль с идентификатором {идентификатор роли} | Не была найдена кастомная роль с указанным идентификатором. |
43016 | Ошибка сброса пароля сотрудника: у пользователя не указан или указан некорректный email | У сотрудника, для которого был запрошен сброс пароля, не указан корректный email. |
43017 | Ошибка сброса пароля сотрудника: у сотрудника нет прав на вход в сервис | Нельзя сбросить пароль у неактивного пользователя. |
43018 | Ошибка сброса пароля сотрудника: {название причины} | Если не получилось отправить пароль по почте, то выводится сообщение о причине |
43019 | Ошибка деактивации доступа сотрудника: у данного сотрудника нет доступа к сервису | Нельзя деактивировать сотрудника, который никогда не был активным. |
43020 | Ошибка деактивации доступа сотрудника: нельзя деактивировать свою учетную запись | Нельзя деактивировать свою учетную запись. |
43021 | Ошибка активации доступа сотрудника: у пользователя не указан или указан некорректный email | У сотрудника нет или указан некорректный email. |
43022 | Ошибка активации доступа сотрудника: логин '{логин пользователя}' уже используется | При активации сотрудника указан логин, который уже используется у другого сотрудника. |
43023 | Ошибка активации доступа сотрудника: у сотрудника не задан логин для входа | Для активации пользователя, который ранее не был активным, не задан логин. |
43024 | Ошибка активации доступа сотрудника: на аккаунте достигнуто максимальное число активных сотрудников | По тарифу уже максимальное число активных сотрудников. |
43025 | Ошибка активации доступа сотрудника: у данного сотрудника уже есть доступ к сервису | Нельзя активировать активного сотрудника. |
43026 | Ошибка изменения доступа сотрудника: активировать, деактивировать доступ сотрудника к сервису или сбрасывать пароль может только администратор | Изменять активность может только администратор. |
43027 | Ошибка валидации прав сотрудника: пермиссия {тип пермиссии} должна иметь значение {значение пермиссии} для {название пермиссии} | Для указанных типов пермиссий должны быть заданы пермиссии с определенными типами. |
43028 | Ошибка обновления прав сотрудника: для пермиссии {тип пермиссии} для {название пермиссии} значение должно совпадать со значением для {название родительской пермиссии} ({значение родительской пермиссии}) или иметь значение NO | Указаны несовместимые типы для дочерней и родительской пермиссии. |
43029 | Ошибка обновления прав сотрудника: для пермиссии {тип пермиссии} для {название пермиссии} ({значение пермиссии}) задано несовместимое с {название родительской пермиссии} ({значение родительской пермиссии}) значение | Указаны несовместимые типы для дочерней и родительской пермиссии. Например, значения OWN_SHARED и OWN_GROUP не могут быть указаны одновременно в рамках одной сущности. |
43030 | Ошибка сохранения сотрудника: для использования системной роли 'Сотрудник производства' необходима активная опция 'Управление производством' | Нельзя сохранить сотрудника с ролью 'Сотрудник производства', если на аккаунте не подключена опция 'Управление производством' |
Коды ошибок для Скачивания изображений
Код ошибки | Сообщение | Описание |
---|---|---|
44000 | Метод POST не поддерживается для URL
|
HTTP метод POST не поддерживается для запроса на скачивание изображения. |
44001 | Метод PUT не поддерживается для URL
|
HTTP метод PUT не поддерживается для запроса на скачивание изображения. |
44002 | Метод DELETE не поддерживается для URL
|
HTTP метод DELETE не поддерживается для запроса на скачивание изображения. |
Коды ошибок для Тарифных ограничений
Код ошибки | Сообщение | Описание |
---|---|---|
47000 | Тарифное ограничение: {описание ограничения} | Сработало тарифное ограничение для текущего тарифа. |
Коды ошибок для Изображений
Код ошибки | Сообщение | Описание |
---|---|---|
51001 | Ошибка при работе с изображением: у изображения отсутствует контент | При передаче изображение в составе товара в запросе на создание товара необходимо указывать поле content |
51002 | Ошибка при работе с изображением: невозможно преобразовать поле content в изображение | Содержимым поля "content" должно быть изображение закодированное в формате base64 с расширением jpg или png. |
51003 | Ошибка при работе с изображением: Недостаточно места в хранилище. | Место в хранилище, выделенное для вашей учетной записи закончилось. |
51004 | Ошибка при работе с изображением: размер изображения превышает максимально допустимый(3 мб) | Попробуйте уменьшить размер изображения. |
51005 | Ошибка при работе с изображением: у изображения отсутствует имя файла | При загрузки изображения необходимо указать непустое имя файла в поле filename. |
51006 | Ошибка при работе с изображением: число изображений у товара не может быть больше 10 | У товара не может быть больше 10 изображений. |
51007 | Ошибка при работе с изображением: файловое хранилище недоступно. | Внутренняя ошибка на сервере. Попробуйте повторить запрос позже. |
Коды ошибок для Серверных решений
Код ошибки | Сообщение | Описание |
---|---|---|
55000 | Просмотр уведомлений решениями не поддерживается | Работа с уведомлениями возможно только при авторизации от лица пользователя |
55001 | Редактирование уведомлений решениями не поддерживается | Работа с уведомлениями возможно только при авторизации от лица пользователя |
55002 | Удаление уведомлений решениями не поддерживается | Работа с уведомлениями возможно только при авторизации от лица пользователя |
55003 | Просмотр подписок на уведомления решениями не поддерживается | Работа с уведомлениями возможно только при авторизации от лица пользователя |
55004 | Создание и редактирование подписок на уведомления решениями не поддерживается | Работа с уведомлениями возможно только при авторизации от лица пользователя |
55005 | Доступ к контексту решения невозможен для данной авторизационной сущности | Вы запрашиваете endpoint /context/application от лица пользователя |
55006 | Доступ к контексту пользователя невозможен для данной авторизационной сущности | Вы запрашиваете endpoint /context/employee от лица решения |
Коды ошибок для автозаполнения
Код ошибки | Сообщение | Описание |
---|---|---|
56000 | Ошибка заполнения шаблона: При указании параметра запроса '{параметр}' со значением '{переданное значение}' требуется указать значение поля '{имя поля}' | Проверьте заполнение указанного поля. Для автозаполнения требуется указать начения неоторых полей: при значении fill = discount, price требуется заполнение поля agent, при значении fill = vat - organization. |
Коды ошибок для отделов
Код ошибки | Сообщение | Описание |
---|---|---|
60000 | Доступ запрещён: создавать, изменять и удалять отделы может только пользователь с правами администратора | |
60001 | Ошибка сохранения отдела: отдел с таким названием уже существует | каждый отдел должен иметь уникальное название |
60002 | Ошибка сохранения отдела: индекс за пределами диапазона | индекс не должен быть больше количества отделов или меньше 0 |
60003 | Ошибка удаления отдела: нельзя удалить все отделы | после удаления должен остаться хотя бы один отдел |
Коды ошибок для асинхронного обмена
Код ошибки | Сообщение | Описание |
---|---|---|
61000 | Ошибка при создании асинхронной задачи: эндпоинт не поддерживает асинхронный обмен | Запрос не поддерживает асинхронное выполнение. Список доступных запросов можно уточнить в разделе Асинхронный обмен |
61001 | Ошибка при создании асинхронной задачи: нельзя указывать параметры 'offset' и 'limit' для асинхронного запроса | Если вы хотите выполнить асинхронный запрос, не указывайте параметры 'offset' и 'limit' |
61002 | Ошибка при создании асинхронной задачи: превышено ограничение на количество одновременно выполняемых асинхронных операций | Дождитесь выполнения одной из поставленных в очередь задач |
61003 | Ошибка при запросе результата асинхронной задачи: результат задачи был удален | После наступления даты, указанной в поле deletionDate, результат становится недоступен. Нужно создать новую задачу |
61004 | Ошибка при запросе результата асинхронной задачи: задача завершилась ошибкой | Задача не была передана в обработку в результате внутренней ошибки и имеет статус ERROR . Попробуйте создать задачу заново. Если ошибка повторяется, обратитесь в поддержку |
61005 | Ошибка при запросе результата асинхронной задачи: задача была отменена | Задача была отменена и имеет статус CANCEL . Нужно создать новую задачу |
61006 | Ошибка при запросе результата асинхронной задачи: результат еще не готов | Задача находится в обработке и имеет статус PROCESSING . Дождитесь выполнения асинхронной задачи |
61007 | Ошибка при отмене асинхронной задачи: задача уже завершена | Можно отменять только задачи со статусами PENDING и PROCESSING |
Коды ошибок для Расширенной бонусной программы
Код ошибки | Сообщение | Описание |
---|---|---|
62000 | Ошибка: вы не можете создавать бонусные операции с отложенным начислением, т.к. в вашем тарифном плане отсутствует опция расширенной бонусной программы | Для создания отложенных бонусных операций необходима подключённая опция "Расширенная бонусная программа" |
62001 | Ошибка: вы не можете редактировать дату начисления бонусной операции, т.к. в вашем тарифном плане отсутствует опция расширенной бонусной программы | Для изменения даты начисления бонусной операции необходима подключённая опция "Расширенная бонусная программа" |
62002 | Ошибка валидации: поле '{параметр}' не может быть указано для бонусной операции списания | Переданный параметр доступен для редактирования только для бонусных операций начисления |
62003 | Ошибка валидации: поле '{параметр}' может быть изменено только для отложенной бонусной операции | Переданный параметр доступен для редактирования только для отложенных бонусных операций |
Коды ошибок для Сохраненного фильтра
Код ошибки | Сообщение | Описание |
---|---|---|
63000 | Ошибка применения сохраненного фильтра: сохраненный фильтр несовместим с параметрами запроса filter, search и order | Был передан параметр filter, search и order или применено несколько сохраненных фильтров |
63001 | Ошибка применения сохраненного фильтра: указанный сохраненный фильтр несовместим с текущим эндпоинтом | Был применен сохраненный фильтр, который нельзя получить на текущем энжпоинте по пути /entity/[entityType]/namedfilter |
63002 | Ошибка применения сохраненного фильтра: неверный формат ссылки на сохраненный фильтр | Корректный формат ссылки должен иметь тип URL |
63003 | Ошибка применения сохраненного фильтра: указанная ссылка на сохраненный фильтр содержит несовместимые фильтр и эндпоинт | Переданная ссылка содержит id фильтра, который нельзя получить на переданном в ссылке эндпоинте |
63004 | Ошибка получения сохраненных фильтров: неверное значение '{значение}' параметра запроса 'owner' | Значение параметра запроса 'owner' не удовлетворяет формату href |
63005 | Ошибка получения сохраненных фильтров: решения могут получать сохраненные фильтры только с указанным параметром запроса 'owner' | Решения могут получать сохраненные фильтры других пользователей, поэтому нужно указывать параметр 'owner' |
Коды ошибок для Каналов продаж
Код ошибки | Сообщение | Описание |
---|---|---|
64000 | Ошибка обновления Канала продаж: вы не можете изменить тип для Канала продаж, созданного автоматически | Канал продаж созданный автоматически имеет неизменяемый тип, доступный только для чтения |
Коды ошибок для Ячеек и Зон склада
Код ошибки | Сообщение | Описание |
---|---|---|
67000 | Ячейка с идентификатором '{параметр}' не относится к указанному складу '{параметр}'" | Нельзя указывать ячейку от другого склада |
67001 | Нельзя указывать ячейку для '{параметр}' | Нельзя задавать ячейку для позиций документа типа Комплект или Услуга |
67002 | Указанная зона '{параметр}' не является зоной склада '{параметр}' ячейки | Нельзя задавать ячейке зону другого склада |
67003 | Превышено максимальное число зон у склада | Нарушено ограничение на количество зон на аккаунте |
67004 | Зона '{параметр}' не является зоной склада '{параметр}' | Для заданного склада нельзя менять зону другого склада |
67005 | Ячейка '{параметр}' не является ячейкой склада '{параметр}' | Для заданного склада нельзя менять ячейку другого склада |
67006 | Штрихкод уже указан у другой ячейки | Нельзя дублировать штрихкод ячейки в рамках склада |
Коды ошибок для Ленты Событий
Код ошибки | Сообщение | Описание |
---|---|---|
70000 | Вы не можете создавать более {лимит} событий в рамках одного документа | Для заданного документа достигнут лимит Событий |
Коды ошибок для Серий
Код ошибки | Сообщение | Описание |
---|---|---|
71000 | Ошибка сохранения серии: ассортимент не может быть серией | Проверьте состав ассортимента серии и попробуйте снова. |