ETERN8
Обсудить проектОбсудить
ruenar
Интеграция магазина с МойСкладом: что проверить до запуска
Назад к блогу
Технологии

Интеграция магазина с МойСкладом: что проверить до запуска

4 ноября 2026
7 мин чтения
Автор: Яков Радченко
  1. Блог
  2. /
  3. Технологии
  4. /
  5. Интеграция магазина с МойСкладом: что проверить до запуска
#МойСклад#Интеграции#Обмен данными#Интернет-магазин

Подключить интернет-магазин к МойСкладу обычно просят одной строкой: остатки на сайте, заказы в учёте. Обмен запускается быстро, а проблемы всплывают потом, на живых заказах: позиция легла не на тот размер, в учёте может появиться второй документ, карточка показывает «в наличии» товар, которого на вашем складе нет. Ниже восемь проверок, которые стоит пройти до запуска. Они собраны из нашего проекта: магазин переехал с InSales на собственный движок и работает с МойСкладом.

Короткий ответ

Короткий ответ. Передача остатков и заказов заработает сразу. Обмен с МойСкладом ломается на крайних случаях: учёт не ответил, складов несколько, у товара есть размеры, к заказу применена скидка. Каждый из них проверяется на настоящих данных до запуска.

  • Сначала вопрос о поведении при отказе: что делает сайт, когда учёт не ответил.
  • Тестовой копии учёта в нашем проекте не было, поэтому записью в учёт управляют два условия сразу.
  • Два самых неприятных дефекта нашли сотрудники заказчика в своих документах, а не автоматические тесты. Приёмку на живых заказах стоит закладывать в срок.

Что обычно передают между магазином и учётом

Схема обычная. Остатки и цены идут из учёта на сайт. Заказы идут с сайта в учёт документами «заказ покупателя». Статусы ведёт менеджер в учёте, а сайт их забирает. В нашем проекте остатки обновляются каждые 15 минут, цены раз в час, оплаченные заказы уходят в учёт сами. Если МойСклад недоступен, заказ ждёт в очереди и уходит, когда сервис вернётся.

Статусы мы забираем опросом, а не вебхуком. Вебхук нужно настраивать в вашей учётной записи и открывать для него публичный адрес, то есть обмен начинает зависеть от чужих настроек. Опросу хватает токена, который у нас уже есть.

1. Запись в учёт включается отдельным решением

Любая запись через API попадает в ваш настоящий учёт. В нашем проекте отдельной песочницы с копией данных не было. Поэтому выгрузка заказа у нас по умолчанию ничего не отправляет: она собирает документ, проверяет его и останавливается. Запись включается двумя условиями сразу, настройкой окружения и явным подтверждением в вызове. Тогда случайный запуск с компьютера разработчика не может создать документ в вашем учёте.

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

2. Отказ учёта не равен пустому ответу

Сотрудница заказчика открыла в учёте свежий заказ примерно на три десятка позиций. Одна позиция стояла на карточке товара, а не на размере, который выбрал покупатель. В нашей базе строка заказа была верной. Причина нашлась в журнале службы: в минуту оформления учёт ответил ошибкой 429, то есть превышен лимит запросов. Выгрузка делала по запросу на каждую карточку, около тридцати подряд, и упёрлась в лимит. Повтора у неё не было, а поиск считал любой ответ, кроме успешного, словами «ничего не нашлось». Позиция молча легла на карточку, и менеджеру никто об этом не сказал.

Правила, к которым мы пришли:

  • На ответ 429 запрос повторяем, паузу берём из самого ответа учёта. Это относится и к записи: 429 значит «запрос не принят», документ не создан.
  • Запись при сбое на стороне учёта не повторяем никогда. Учёт мог создать документ и упасть уже после, и повтор завёл бы второй. Отказ менеджер видит в истории заказа и выгружает кнопкой, а дубль кто-то должен найти и удалить руками.
  • Документ создаём, только когда его отсутствие подтверждено ответом учёта. Любой другой ответ откладывает выгрузку, её можно повторить кнопкой.
  • Позиция, для которой не нашёлся размер, остаётся в предупреждениях выгрузки с названием и причиной: «не найдено в учёте» или «учёт не ответил».

Третье правило появилось не сразу. Первая версия исправления повторяла запись на 429 и сама открыла дыру: проверка «документ уже есть?» получала 429, запись со второй попытки проходила, и если документ в учёте уже был, рядом появлялся второй. Нашла это независимая проверка до выкатки. Поэтому документ создаём только при подтверждённом отсутствии, а не когда проверка «ничего не нашла».

Для приёмки попросите показать поведение при отказе: заглушку вместо учёта, которая отвечает ошибкой на каждый запрос. Заказ при этом должен оформляться, а выгрузка откладываться.

3. Остаток: с какого склада

В одной учётной записи может быть несколько складов и несколько юрлиц. Запрос ассортимента без фильтра отдаёт остаток суммой по всем складам. У нас в неё попадали склад брака, склад с отрицательным остатком и склад второго юрлица, зарегистрированного в другой стране. Карточка на российском сайте показывала «в наличии» товар, который физически лежал только за границей. Это тоже нашла сотрудница заказчика на живом товаре.

Лечится фильтром по складу, с которого сайт реально продаёт. Тот же склад указываем в документе заказа, иначе сайт и учёт считали бы остаток по разным складам. Спросите: с какого склада сайт берёт остаток и в какой склад уходит резерв.

4. Размер и резерв: позиция ссылается на модификацию

Покупатель выбрал размер или цвет, и позиция в документе обязана ссылаться на этот размер, а не на родительскую карточку. У нас сначала уходила ссылка на родителя. В учёте это выглядело так: у карточки остаток ноль и «доступно минус один», а у размера лежат десять штук без всякого резерва. Товар в минусе при полном складе.

Второе: без поля резерва в позиции МойСклад товар не держит. Документ создан, заказ в учёте есть, а остаток остаётся свободным, и тот же товар продают второй раз. Когда остаток неизвестен, мы просим зарезервировать всё заказанное: молча уронить резерв в ноль хуже, чем занять лишнее.

5. Статусы: по идентификаторам, а не по названиям

  • Номера на истории. При переезде исторические заказы получили префикс, а в учёте у тех же заказов остались голые номера. Новые заказы совпадали, по истории совпадений не было: статусы заказов, ещё находившихся в работе, не доезжали. Теперь номер ищется и с префиксом, и без.
  • Похожие названия. В учёте заказчика есть и «Ждём оплату», и «Ждем оплату», и это два разных состояния. Сравнение без учёта регистра или с заменой «ё» на «е» связало бы заказ не с тем состоянием. Состояние выбираем по идентификатору, а имя, которое встречается дважды, не угадываем.
  • Соответствие статусов. Какое состояние учёта соответствует «доставлен» или «отменён», решает заказчик, а не разработчик. Проверьте, что это записано, а не лежит в голове исполнителя.

6. Суммы: одна цифра в учёте, на сайте, в чеке и в корзине шлюза

Сумма заказа должна совпадать везде, где она есть. Что у нас расходилось:

  • Наценка за опции хранилась на единицу товара, а при выгрузке читалась как наценка на всю позицию. У заказа с двумя одинаковыми позициями с опцией документ в учёте выходил меньше заказа на стоимость опции.
  • Ручная скидка менеджера не доезжала в учёт. Сотрудники видели «в системе одна сумма, в МойСкладе другая».

Тест проверял заказ на одну штуку, а при количестве один числа совпадают. Проверяйте на заказе с количеством больше одного, со скидкой и с опциями.

7. Два идентификатора у каждой позиции

У позиции в МойСкладе два идентификатора. Внешний код удобно хранить на сайте, а во внутренний упираются ссылки документов. Подставить один вместо другого легко, и на пробных данных это часто проходит. Мы споткнулись дважды: при выгрузке заказа запрос по внешнему коду дал 404 на трёх товарах из трёх, а при чтении резерва по заказу позиции не сошлись ни на одной строке из одиннадцати. Тест при этом был зелёным, потому что проверял нашу же неверную посылку. Ошибка нашлась только запросом к настоящим документам.

8. Экраны менеджера при недоступном учёте

Недоступный МойСклад не должен ломать карточку заказа, которую менеджер открывает десятки раз в день. Там, где данные берутся из учёта вживую, при отказе остаётся прочерк, а карточка открывается. Такой экран не ждёт пятнадцать секунд: у него один запрос с коротким временем ожидания.

Как проверять без записи в учёт

После исправления мы прошли запросами только на чтение все заказы за месяц и сравнили, куда ссылается каждая позиция в учёте, с тем, куда она должна ссылаться. Расхождение нашлось одно, тот самый заказ. Такая сверка не создаёт документов и не меняет учёт, поэтому её можно повторять сколько нужно, а закончить стоит открытием нескольких документов глазами сотрудника, который с ними работает.

Что спросить у подрядчика до старта

Если выбирать одну проверку из восьми, берите вторую: потерянную позицию и второй документ в учёте труднее всего заметить, пока кто-то не откроет заказ.

  1. Что запрещает случайную запись в мой учёт и как проверяется выгрузка без тестовой копии.
  2. Что происходит, когда учёт не ответил или ответил ошибкой: оформление заказа, повтор, предупреждение менеджеру.
  3. Как исключён дубль документа при повторе.
  4. С какого склада сайт берёт остаток и в какой склад идёт резерв.
  5. На что ссылается позиция заказа с размером и держится ли резерв.
  6. По чему сопоставляются статусы и кто решает соответствие.
  7. Совпадают ли суммы на заказе с количеством больше одного, со скидкой и с опциями.
  8. Как выглядят экраны менеджера, когда учёт недоступен.

Когда эта проверка не нужна

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

Как устроен обмен с учётной системой в целом, кто источник правды и что делать, когда учёт недоступен, мы разобрали в статье про интеграцию магазина с 1С. Если вы заодно уходите с платформы, смотрите переезд магазина на свой движок. Чтобы мы назвали состав работ и срок по вашему учёту, опишите в форме ниже, сколько у вас складов и юрлиц, есть ли размеры у товаров и какие статусы вы ведёте.

Похожий проект

Вседоматут.рф - маркетплейс за 3 недели

Живой пример платформы недвижимости с ролями пользователей, кабинетами, CRM-интеграцией и миграцией без простоя.

FAQ

Частые вопросы

Ответы на популярные вопросы

В нашем проекте тестовой копии учёта не было, поэтому выгрузка заказа по умолчанию только собирает и проверяет документ, а запись включается двумя условиями сразу: настройкой окружения и явным подтверждением в вызове. Окончательно правильность видна на настоящих заказах, когда документ открывает сотрудник, который с ним работает.
Принимать заказ и откладывать выгрузку. На ответ о превышении лимита запросов запрос повторяют, а запись при сбое на стороне учёта не повторяют, чтобы не создать второй документ. Документ создают только тогда, когда его отсутствие подтверждено ответом учёта, а выгрузку можно повторить кнопкой.
С того склада, с которого сайт реально продаёт. Запрос без фильтра отдаёт остаток суммой по всем складам, и в него попадают склад брака и склады других юрлиц. Тот же склад указывают в документе заказа, чтобы сайт и учёт считали остаток одинаково.
Мы забираем их опросом: вебхук требует настройки в вашей учётной записи и публичного адреса, а опросу хватает токена. Состояния сопоставляют по идентификаторам, а не по названиям, потому что похожие названия вроде «Ждём оплату» и «Ждем оплату» могут быть двумя разными состояниями.

Разобрать вашу ситуацию

Опишите, что у вас сейчас. Отвечу в течение рабочего дня: что имеет смысл делать, сколько это стоит и сколько занимает.

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

Или просто напишите
hello@etern8.tech
Бесплатно, без регистрации

Проверьте свой магазин за 20 секунд

Определим платформу и найдём то, что мешает поиску и покупателю: HTTPS, скорость ответа, robots.txt, карта сайта, разметка товаров.

Бесплатно

Бесплатный 3-минутный видео-разбор вашего сайта

Пришлите ссылку - запишем персональный разбор: где теряете в скорости, конверсии и SEO и что даст переезд на собственный движок. Без созвона, в течение 48 часов.

Получить видео-разбор

Что ещё посмотреть по теме

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

Интеграция магазина с 1С: как устроен обмен и почему ломается модуль-прослойка
Технологии

Интеграция магазина с 1С: как устроен обмен и почему ломается модуль-прослойка

Обмен с 1С ломается не из-за 1С, а из-за модуля-прослойки, за который не отвечает ни одна сторона. Разбираем рабочую схему и пять типовых поломок.

1 сентября 2026
11 мин
1СИнтеграции
Читать статью
Как проверить подрядчика до оплаты: попросите демо-админку
Технологии

Как проверить подрядчика до оплаты: попросите демо-админку

Скриншот показывает админку в лучший день. Как проверить до оплаты, как она работает на самом деле: что попросить, что открыть за пятнадцать минут и что демо-вход обязан скрывать.

15 октября 2026
6 мин
ПодрядчикАдминка
Читать статью
Когда уходить с 1С-Битрикс на Next.js: чек-лист для бизнеса
Технологии

Когда уходить с 1С-Битрикс на Next.js: чек-лист для бизнеса

1С-Битрикс всё ещё полезен многим компаниям. Но если скорость, стоимость владения и SEO упёрлись в потолок, пора считать миграцию на Next.js.

17 мая 2026
13 мин
1С-БитриксNext.js
Читать статью

ETERN8

Интернет-магазины, личные кабинеты и ИИ для бизнеса. Цена и срок известны до старта, работаете напрямую с тем, кто делает проект.

Услуги

  • Все услуги
  • Переезд магазина на свой движок
  • Интернет-магазин
  • Готовый магазин ETERN8
  • Платформа с кабинетами
  • Платформа для недвижимости
  • ИИ-ассистент для клиентов
  • ИИ-автоматизация рутины
  • Разбор и внедрение ИИ
  • Доводка сайта после ИИ
  • Доработка кода

Бесплатно

  • Проверка магазина
  • Видео-разбор

Компания

  • Проекты
  • Цены
  • О нас
  • Презентация
  • Блог
  • Партнёрам

Контакты

  • Телефон+7 (495) 320-62-98
  • Emailhello@etern8.tech
  • График работы

    пн - сб 11:00-20:00 MSK

Профили

  • LinkedIn · Iakov Radchenko
  • LinkedIn · ETERN8
  • Telegram · @yakov_etern8
  • GitHub · yashafake
  • Instagram · iakov.radchenko
  • Instagram · ETERN8
  • X · yasha_radchenko
  • YouTube · @etern8_tech
  • Habr · yakov_etern8
  • VC.ru · Яков Радченко
  • T-Ж · Яков Радченко
  • Яндекс.Справочник · ETERN8

© 2026 ETERN8.

Контакты и реквизитыПолитика обработки персональных данныхПубличная оферта