МойСклад + 1С — распространённая связка для компаний, которым нужен удобный облачный контур для торговли, склада и оперативной работы, но при этом 1С остаётся основной учётной системой.
На простом сценарии достаточно штатного обмена или готового решения. Но когда появляются несколько складов, несколько организаций, собственные правила сопоставления номенклатуры, маркетплейсы, ЭДО, маркировка или несколько баз 1С, интеграция быстро превращается из «обмена файлами» в полноценную интеграционную задачу.
Что такое интеграция МойСклад с 1С
Интеграция — это автоматический обмен данными между МоимСкладом и одной или несколькими информационными базами 1С. Вместо ручного экспорта и импорта документы и справочники передаются по заранее определённым правилам.
У МоегоСклада есть открытый JSON API. По документации разработчика через API можно работать практически с любыми сущностями, доступными в интерфейсе сервиса. API предназначен в том числе для интеграции с внешними системами и автоматизации бизнес-процессов. Доступ к JSON API предоставляется в рамках аккаунта МоегоСклада; для отдельных тарифов действуют ограничения.
Это позволяет строить не только готовый двусторонний обмен, но и собственный интеграционный сервис между МойСкладом, 1С и другими системами.
Какие данные обычно синхронизируют
Конкретный состав обмена зависит от бизнес-процесса. На практике чаще всего синхронизируются следующие объекты:
Номенклатура
Товары, услуги, группы, артикулы, коды и дополнительные реквизиты.
Цены
Виды цен, цены продажи и другие значения, используемые в торговом контуре.
Остатки
Остатки по складам и движения товаров в зависимости от выбранной модели обмена.
Заказы и продажи
Заказы покупателей, отгрузки, реализации и связанные статусы.
Контрагенты
Клиенты, поставщики и контактная информация, если она нужна обеим системам.
Документы
Приёмки, отгрузки и другие документы складского и торгового контура.
МойСклад + 1С: какие конфигурации можно связать
В зависимости от задач компании интеграция может строиться с разными конфигурациями 1С. В экосистеме МоегоСклада доступны готовые решения для обмена, в частности, с 1С:Бухгалтерией и 1С:УНФ. Также существуют решения для других конфигураций и собственные интеграции через API.
| 1С | Типовая задача | Особенности |
|---|---|---|
| 1С:Бухгалтерия | Продажи, документы, контрагенты, бухгалтерский учёт | Часто МойСклад используется как оперативный торговый контур |
| 1С:УНФ | Торговля, склад, заказы, производство | Важно определить, где находится основной справочник товаров |
| 1С:УТ | Оптовая торговля и управление продажами | При сложной логике часто нужен отдельный слой интеграции |
| 1С:ERP | Корпоративный учёт и несколько бизнес-контуров | Растёт значение маршрутизации, mapping и контроля обмена |
Для конкретного проекта набор поддерживаемых объектов и направление обмена нужно определять отдельно. Готовое решение может покрывать стандартный сценарий, но не обязательно повторяет бизнес-логику конкретной компании.
Варианты интеграции МойСклад и 1С
1. Готовая интеграция
Это самый простой вариант для стандартного обмена. МойСклад предлагает готовые решения для интеграции с 1С, а в каталоге решений доступны сторонние приложения. Например, решения могут поддерживать фильтрацию документов, сопоставление номенклатуры и контрагентов и автоматическую загрузку документов в 1С.
Такой вариант подходит, когда бизнес-процесс укладывается в предусмотренную разработчиком модель обмена и не требуется сложная маршрутизация данных.
2. Обмен через EnterpriseData или файлы
Для некоторых сценариев используется файловый обмен. Например, МойСклад документирует импорт данных формата EnterpriseData в 1С:Бухгалтерию. Такой подход может быть удобен, если realtime-синхронизация не нужна.
Минус файловой модели очевиден: появляется дополнительный этап формирования, передачи и загрузки файла. Для больших потоков и сложных интеграционных цепочек это обычно менее удобно, чем API или специализированный сервис обмена.
3. Собственный интеграционный сервис через API
Если требуется полный контроль, можно построить отдельный сервис, который взаимодействует с API МоегоСклада и API или интерфейсами 1С.
В такой архитектуре интеграционная логика находится вне учётных систем. Это особенно полезно, если к контуру подключены сайт, маркетплейсы, CRM, WMS, ЭДО или несколько баз 1С.
Архитектура МойСклад + 1С через интеграционный слой
Для одной базы 1С и небольшого объёма обмена отдельный middleware может быть избыточен. Но если интеграций становится много, отдельный слой позволяет централизовать mapping, очереди, retry, журналирование и мониторинг.
Пример архитектуры
┌──────────────────┐
│ МойСклад │
│ JSON API │
└────────┬─────────┘
│
│ HTTPS / JSON
▼
┌─────────────────────────────┐
│ Integration Layer │
│ │
│ Auth / Mapping / Routing │
│ Idempotency / Retry │
│ Queue / Audit / Monitoring │
└──────────────┬──────────────┘
│
┌─────────┴─────────┐
│ │
▼ ▼
┌────────────────┐ ┌────────────────┐
│ 1С УТ │ │ 1С ERP │
│ / УНФ / БУХ │ │ │
└────────────────┘ └────────────────┘
Такой слой не заменяет 1С или МойСклад. Его задача — управлять обменом между системами и не превращать каждую новую интеграцию в отдельный набор обработок.
Как синхронизировать номенклатуру
Номенклатура — одна из самых сложных частей интеграции. На первый взгляд кажется, что достаточно передать название товара и артикул. На практике в одной системе может быть несколько вариантов одного товара, разные единицы измерения, группы, характеристики и внутренние идентификаторы.
Поэтому лучше использовать явный mapping между объектами. Например:
| МойСклад | 1С | Ключ сопоставления |
|---|---|---|
| Товар | Номенклатура | Внешний ID / артикул / код |
| Контрагент | Партнёр / Контрагент | Внешний ID + ИНН при необходимости |
| Склад | Склад | Внешний ID / код |
Синхронизация остатков МойСклад ↔ 1С
С остатками важно сначала определить направление. Например, МойСклад может быть оперативной системой магазина, а 1С — источником данных для закупок и финансового учёта. В другом проекте источником истины по остаткам является 1С, а МойСклад получает только рассчитанные значения.
Если обе системы одновременно могут изменять остаток, появляется конфликт. Простое правило «передаём последнее изменение» не всегда корректно: изменение может быть результатом документа, пересчёта или корректировки.
Поэтому в архитектуре лучше синхронизировать не только число, но и бизнес-событие, которое его изменило: продажа, приёмка, перемещение, возврат или корректировка.
Синхронизация заказов
Типичный сценарий выглядит так:
- Заказ создаётся в МоемСкладе.
- Интеграционный сервис получает информацию о заказе.
- Заказ сопоставляется с контрагентом и номенклатурой в 1С.
- В 1С создаётся соответствующий документ.
- Идентификатор объекта 1С сохраняется в mapping.
- Изменения статуса передаются обратно в МойСклад, если это предусмотрено процессом.
Критически важно сделать обработку идемпотентной. Если внешний запрос повторится после сетевого таймаута, интеграция не должна создавать второй заказ или второй документ в 1С.
Ошибки интеграции: что происходит, если 1С или API недоступны
В реальной эксплуатации внешние API иногда недоступны, сеть может прерываться, а 1С может быть занята. Поэтому интеграция должна учитывать временные ошибки.
Retry
Повторная попытка для временных ошибок с контролируемой задержкой.
Idempotency
Защита от создания дублей при повторной доставке одного события.
Audit log
История запроса, ответа, объекта и результата обработки.
Dead letter
Отдельное хранение сообщений, которые нельзя обработать автоматически.
МойСклад API: когда он нужен
Официальная документация МоегоСклада описывает JSON API как основной интерфейс для интеграции с внешними системами. Через него можно получать и изменять сущности сервиса, поэтому API подходит для построения собственного коннектора.
В простом случае интеграционный сервис может выглядеть так:
МойСклад JSON API
│
├── GET /... → чтение данных
│
├── POST /... → создание
│
├── PUT /... → изменение
│
└── обработка ошибок / retry
│
▼
Integration Service
│
▼
1С
При разработке собственного коннектора нужно учитывать ограничения API, авторизацию, пагинацию, rate limits, структуру сущностей и обработку ошибок. Эти параметры следует проверять по актуальной документации перед реализацией конкретного обмена.
Готовая интеграция или разработка собственного коннектора?
| Задача | Готовая интеграция | Свой коннектор |
|---|---|---|
| Одна 1С + МойСклад | Обычно достаточно | Часто избыточно |
| Нестандартное сопоставление | Зависит от решения | Гибкая реализация |
| Несколько баз 1С | Может потребоваться доработка | Удобнее централизовать |
| МойСклад + CRM + WMS + ЭДО | Ограниченно | Подходит для интеграционного слоя |
| Нужен собственный SLA и мониторинг | Зависит от поставщика | Можно контролировать самостоятельно |
Когда нужен Symfony между МойСкладом и 1С
Symfony имеет смысл использовать не ради самого фреймворка, а когда интеграция становится самостоятельным сервисом.
Например, если к компании подключены МойСклад, несколько баз 1С, сайт, маркетплейсы, WMS и ЭДО, можно вынести маршрутизацию в единый Integration Layer.
Тогда Symfony-сервис может отвечать за:
- приём и отправку API-запросов;
- mapping идентификаторов между системами;
- очереди и асинхронную обработку;
- retry временных ошибок;
- идемпотентность;
- журналирование каждого обмена;
- мониторинг и технические метрики;
- маршрутизацию данных между несколькими системами.
Сколько стоит интеграция МойСклад с 1С
Стоимость зависит не столько от самого факта подключения МойСклада, сколько от количества объектов и бизнес-правил.
| Уровень | Что входит | Сложность |
|---|---|---|
| Типовой обмен | Готовая интеграция, базовые справочники и документы | Низкая |
| Доработка | Дополнительные поля, фильтры, правила сопоставления | Средняя |
| Enterprise Integration Layer | Несколько систем, очереди, retry, audit, мониторинг | Высокая |
Поэтому корректную смету лучше составлять после фиксации состава данных: номенклатура, контрагенты, остатки, цены, заказы, отгрузки, возвраты, несколько организаций и складов, а также требований к частоте обмена.
Типичные ошибки при интеграции МойСклад + 1С
Сопоставление только по названию
Изменение названия товара может привести к созданию дубля.
Нет владельца данных
Две системы начинают одновременно изменять один и тот же объект.
Нет идемпотентности
Повторный запрос после таймаута создаёт второй документ.
Нет журнала обмена
При ошибке невозможно быстро определить, где и почему остановилась синхронизация.
Как построить интеграцию МойСклад + 1С правильно
До разработки стоит описать матрицу ответственности за данные:
Объект Источник истины Получатель
──────────────────────────────────────────────────────
Номенклатура 1С / МойСклад другая система
Цены 1С / МойСклад другая система
Остатки 1С / МойСклад другая система
Заказы МойСклад 1С
Контрагенты 1С / МойСклад другая система
Отгрузки 1С / МойСклад другая система
После этого определяются идентификаторы, правила создания и изменения объектов, периодичность обмена, обработка ошибок и требования к журналированию.
Такой подход позволяет избежать ситуации, когда две системы «борются» за право изменить один и тот же объект.
Итог
Интеграция МойСклад с 1С может быть простой синхронизацией документов или полноценной корпоративной интеграцией. Для небольшого проекта разумно начать с готового решения. Если же появляются несколько баз 1С, нестандартные правила, маркетплейсы, WMS, CRM, ЭДО и требования к контролю обмена, интеграцию лучше проектировать как отдельный сервис.
Главный архитектурный вопрос — не способ передачи данных, а распределение ответственности между системами. После этого становятся понятны формат обмена, API, mapping, очереди, retry и требования к мониторингу.
По теме: если вы проектируете связанный контур, посмотрите Битрикс24 + 1С: интеграция CRM, заказов, товаров и остатков, 1С ↔ Ozon: open-source коннектор на Symfony vs типовые обработки и Integration Bus: интеграционная шина для 1С и корпоративных систем.