Интеграция испортила карточки в МойСклад: как откатить
После сбоя обмена с сайтом, 1С или маркетплейсом карточки товаров в МоёмСкладе могут оказаться перезаписаны. Разбираю, что сделать в первый час, что есть в аудите и справке для отката, как устроен скрипт возврата значений и как не допустить повторения.
Выгрузка отработала, а карточки уже не те
Утром в каталоге у сотен товаров поменялись артикулы, у части пропали штрихкоды, у части появились чужие, в описаниях другой текст, а НДС стоит не тот. Накануне запускали обмен с сайтом, маркетплейсом или 1С.
Похожую просьбу я видел в июне 2026 года в публичном чате разработчиков МоегоСклада: владельцу срочно нужен был скрипт, который по истории изменений вернёт товарам, затронутым интеграцией, артикул, код, НДС, название, описание, группу и штрихкоды. Со штрихкодами отдельное условие: созданные удалить, удалённые вернуть. В ответ посоветовали сделать это через нейросеть, а он написал, что не программист и боится испортить ещё больше. Почему интеграции вообще ломают данные, разобрано в статье про то, кто виноват, когда интеграция сломалась.
Первый час
1. Остановите интеграцию: выключите расписание обмена или отзовите её доступ. Пока она работает, каждый запуск может перезаписать то, что вы уже исправили.
2. Не правьте карточки руками массово. Откат по истории сравнивает текущее значение с тем, что записала интеграция. Если поверх неё прошёлся человек, скрипту сложнее понять, что можно возвращать.
3. Снимите копию как есть. В разделе «Товары и услуги» есть кнопка «Экспорт», готовый файл лежит в настройках в разделе «Обмен данными». По справке выгружается всё, в том числе товары из архива.
4. Запишите окно: когда начался обмен, когда вы его остановили и под каким сотрудником он ходил. В разделе «Аудит» события фильтруются по пользователю и по типу действия.
Что в МоёмСкладе есть для отката
Я просмотрел справку и документацию JSON API 1.2 (проверено 2 октября 2026). Кнопки «вернуть каталог на вчера» в них я не нашёл. По отзывам пользователей на публичных площадках, жалобы на отсутствие резервного копирования встречаются, а часть отзывов, наоборот, упоминает возможность сделать копию, так что картина разная. Набор инструментов такой.
| Инструмент | Что умеет | Чего нет |
|---|---|---|
| Аудит и ссылка «Изменения» в карточке | Хранит события с момента появления аккаунта, удалять их нельзя. В API у события есть поле diff со старым и новым значением | Кнопки отката. Общий аудит по умолчанию видят только администраторы |
| Корзина | Удалённые документы лежат 7 дней, если опция включена | Про карточки товаров в справке я ничего не нашёл, в API корзина описана для документов |
| Архив | Прячет товар и возвращает обратно | История значений не ведётся |
| Экспорт в Excel | Ручная выгрузка списка товаров | Расписания в справке нет |
Как работает откат по истории
Общая схема, как делал бы я. Скрипт ходит в API аудита: список изменений принимает фильтры по времени, пользователю, источнику (для запросов по API это jsonapi) и типу сущности.
Шаг 1. Выбрать события обмена: товары, окно времени, учётка интеграции. По каждому изменённому товару прочитать события с полем diff.
Шаг 2. Для каждого поля взять самое раннее старое значение внутри окна. Это то, что было до интеграции.
Шаг 3. Прочитать текущую карточку. Если значение уже совпадает со старым, пропустить. Если после интеграции его менял другой человек, не трогать и записать в отчёт.
Шаг 4. Сухой прогон: таблица «было, стало, вернём» без записи. Проверить глазами 10-20 товаров.
Шаг 5. Запись пачками. Обновление массивом принимает до 1000 объектов, при ошибке 429 нужна пауза, остаток лимита API отдаёт в заголовках ответа.
Штрихкоды: список записывается целиком, лишние созданные уходят, прежние возвращаются. Скрипт ведёт журнал и сохраняет копию перед правкой, чтобы откат можно было отменить.
Что важно учесть
Стопроцентного отката не обещает никто. Как в diff записаны штрихкоды и длинные описания, в документации примеров нет, а на живых данных я это не проверял. Скрипт возвращает только то, что попало в аудит и что можно записать через API. Удалённый товар с прежним идентификатором не вернуть, а документы, где он стоял, останутся как есть. Остатки, цены и документы не откатываются, пока они не заложены в задачу.
Токену нужны право смотреть аудит (в документации оно по умолчанию выключено) и право править товары. Как глубоко назад хранится аудит, я не нашёл, в справке сказано лишь «с момента появления аккаунта».
Как не допустить повторения
Первое: тестовая группа из 10-20 товаров. Любая новая выгрузка или смена правил идёт сначала на ней. Второе: отдельный сотрудник под интеграцию с минимальными правами, чтобы по аудиту сразу было видно, кто писал. Какие права можно настроить на вашем тарифе, уточните в справке. Третье: лимит на массовые правки в самой интеграции, например остановка, если за запуск меняется больше заданной доли каталога. Такой лимит в МоёмСкладе я не нашёл, его ставят в коде обмена.
Четвёртое: ежедневная выгрузка карточек в файл вне МоегоСклада, хранение за 30 дней и сравнение с вчерашним днём. Это и есть подписка «ежедневный бэкап и откат», которую я могу собрать под задачу, и она сильно упрощает откат: прошлое не нужно собирать по событиям. Общий подход к копиям описан в статье про то, почему резервные копии важнее, чем кажется, а о связке МоегоСклада с сайтом есть отдельный разбор.
Перед массовой выгрузкой спросите исполнителя:
1. По чему он сопоставляет товары: по артикулу, коду, штрихкоду или идентификатору, и что делает, если не нашёл.
2. Какие поля обмен вправе менять, а какие нет, и что он делает со штрихкодами: заменяет список или дополняет.
3. Есть ли сухой прогон и тестовая группа.
4. Кто снимает копию карточек до запуска и где она лежит.
5. Под какой учёткой ходит обмен и как его быстро остановить.
Для разового скрипта пригодится статья про скрипты на заказ, а услуги описаны в разделе автоматизация бизнес-процессов.
Частые вопросы
Можно ли вернуть каталог на вчерашнюю дату одной кнопкой?
В справке и документации такой кнопки я не нашёл. Есть аудит, архив, корзина для документов и экспорт в Excel. Откат собирают скриптом по аудиту или из своей копии.
Удалённый товар можно достать из корзины?
Корзина описана для документов, в API её удаление тоже про документы. Для карточек товаров я нашёл только архив. При удалении товаров смотрите аудит и пишите в поддержку МоегоСклада.
Сколько стоит такой скрипт?
Зависит от числа полей, объёма каталога и от того, нужны ли отчёт и сухой прогон. Цену назову после просмотра выгрузки и аудита.
Коротко о главном
После сбоя обмена остановите интеграцию, снимите копию и не правьте карточки руками. История изменений в МоёмСкладе позволяет написать откат, но стопроцентно он не гарантирован. Чтобы не повторилось, нужны тестовая группа товаров, отдельная учётка, лимит на массовые правки и ежедневная выгрузка в файл.
Хотите, чтобы я посмотрел аудит вашего аккаунта, собрал скрипт отката и настроил ежедневный бэкап карточек? Напишите мне в Telegram слово «БЭКАП».
Что я делаю для бизнеса
- Боты в Telegram, MAX, VK
- Автоматизация процессов и CRM
- Аналитика и дашборды
- Сайты и лендинги под ключ
Бесплатно: чек-лист «Готов ли ваш бизнес к 152-ФЗ»
12 пунктов, которые проверяют готовность за час: данные, согласия, уведомление в РКН, локализация, защита. Отметьте, что уже сделано, и увидите дыры, за которые сейчас штрафуют.
Готовы обсудить вашу задачу?
Бесплатная консультация — разберём, как внедрить это в вашем бизнесе под ключ. Без форм, пишите напрямую.
Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.


