Начать проект

Обсудим проект?

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

Отправлено!

Спасибо за заявку, мы свяжемся с вами в ближайшее время!

Интеграция с 1С: как связать учётную систему с сайтом, приложением и CRM

Интеграция с 1С: обмен данными между учётной системой, сайтом и приложением

Сайт торгует по вчерашним остаткам, менеджер вбивает заказ второй раз руками, а бухгалтерия сводит оплаты в отдельной таблице — так выглядит компания, в которой 1С живёт отдельно от всего остального. Мы в Code Pilots делаем обмен между системами и надстройки поверх учётного ядра, поэтому чаще видим не первую настройку, а чужой обмен, который перестал справляться.

Если совсем коротко. Интеграция с 1С — это не одна задача, а набор обменов: каталог и цены на сайт, заказы обратно, контрагенты и оплаты в CRM, отгрузки в личный кабинет. Для каждого обмена отдельно выбираются механизм, направление, ключ сопоставления и частота.

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

Что значит «интегрировать с 1С»

Формулировка «нужно связать сайт с 1С» на первой встрече обычно скрывает пять-шесть разных обменов с разными требованиями. Их полезно выписать по отдельности сразу: дальше по каждому принимаются свои решения.

Сценарий Что передаётся Направление Чувствительность к задержке
Интернет-магазин Номенклатура, цены, остатки, заказы, статусы В обе стороны Остатки и цены — высокая, каталог — низкая
CRM Контрагенты, счета, оплаты, отгрузки Чаще из 1С в CRM, заказы обратно Средняя
Личный кабинет клиента или дилера Заказы, отгрузки, взаиморасчёты, документы Из 1С, заявки обратно Средняя, но нужен быстрый отклик страницы
Мобильное приложение сотрудника Задания, остатки, факт выполнения, фото В обе стороны Высокая, плюс работа без сети
Маркетплейсы Цены, остатки, заказы, статусы В обе стороны Высокая, штрафы за просрочку
Банк, ЭДО, оператор фискальных данных Платежи, документы, чеки В обе стороны Регламентная, по расписанию
Аналитика и отчётность Продажи, себестоимость, движение товара Из 1С в витрину Низкая, обычно ночью

Из таблицы видно главное: у обменов разные требования, и загонять их в один механизм «раз в 15 минут выгружаем всё» — источник половины проблем. Связка с продажами — отдельный сюжет: если рядом стоит CRM под процесс компании, обмен с ней проектируется вместе с воронкой, а не после запуска. Обзор самого учётного контура и того, что вокруг него достраивают, собран в материале про ERP-системы.

Пять способов обмена

У платформы есть несколько штатных механизмов плюс два «внешних» подхода. Выбор определяет и сроки разработки, и стоимость поддержки на годы вперёд.

Механизм Что даёт Ограничения Когда применять
CommerceML Готовый стандарт обмена каталогом, ценами, остатками и заказами с интернет-магазином Формат заточен под товарные данные, всё нестандартное дописывается Магазин на CMS с готовым модулем обмена
Синхронизация EnterpriseData Штатный обмен между конфигурациями 1С, настраивается без программиста Только поддерживаемые конфигурации и заданный состав данных 1С ↔ 1С, в том числе между юрлицами
OData Доступ к справочникам и документам почти без разработки на стороне 1С Не отдаёт отчёты, регламентные задания и пользователей; на больших выборках нагружает базу Чтение данных, витрины, быстрый старт
HTTP-сервисы Свой контракт: свои методы, свои проверки, своя логика записи Пишется и сопровождается разработчиком 1С Запись данных, нестандартные операции, мобильные приложения
Очередь сообщений Развязывает системы: 1С пишет, потребители читают в своём темпе Отдельный компонент в ландшафте, его надо сопровождать Пиковые нагрузки, несколько потребителей, критичные обмены

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

Что бы вы ни выбрали, у обмена должен быть описанный контракт: перечень полей, их типы, обязательность, поведение при ошибке. Принципы, по которым такие контракты проектируют, разобраны в материале про проектирование API — они применимы и к HTTP-сервисам 1С.

Механизмы обмена с 1С: CommerceML, синхронизация EnterpriseData, OData, HTTP-сервисы, очередь сообщений

Онлайн или пакетно

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

Данные Разумная задержка Как обычно делают
Остатки Минуты Кэш или витрина, обновление по расписанию, точная проверка при оформлении
Цены Минуты — часы Пакетная выгрузка изменений, срочная переоценка отдельным запуском
Каталог и характеристики Часы — сутки Ночной пакет, ручной запуск после большой правки
Заказ с сайта Секунды Сразу в очередь, приём подтверждается покупателю немедленно
Статус заказа и отгрузка Минуты Обратный обмен по событию или коротким интервалом
Оплаты и взаиморасчёты Часы Регламентный обмен, сверка раз в сутки
Данные для аналитики Сутки Ночная выгрузка в витрину

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

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

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

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

Что ломается на объёмах

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

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

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

Блокировки и «виснущие» сеансы. Тяжёлый внешний запрос конкурирует с работой пользователей за одни и те же данные. Особенно заметно, когда витрину сайта строят прямыми запросами к учётной базе на каждый клик посетителя.

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

Повторы без защиты. Внешняя система не получила ответа, отправила заказ ещё раз — в 1С появился второй документ. Без ключа операции такое происходит регулярно, а находят это обычно на складе.

Обмен встал после обновления. Конфигурацию обновили в пятницу вечером, реквизит переименовали, структура выгрузки поехала. Если обмен нигде не описан и не покрыт проверкой, выясняется это через несколько дней — по жалобам, а не по мониторингу. Отсюда практика: обновление конфигурации проходит сначала на тестовом контуре, где обмен прогоняют целиком.

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

Витрина и очередь

Прямая связка «сайт ходит в 1С» работает, пока нагрузка невелика, а требования к скорости мягкие. Дальше между системами появляется промежуточный слой, и это нормальная эволюция, а не признак ошибки в проектировании.

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

Очередь сообщений. Буфер между отправителем и получателем: 1С публикует событие, потребители забирают его в своём темпе. Если внешняя система лежит, сообщения ждут; когда поднимается — разбирает накопленное. Это же место, где живут повторы и порядок обработки.

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

Разберём ваш обмен

Посмотрим, что чинится настройкой и ключами, а где действительно нужен промежуточный слой — витрина или очередь.

Обсудить проект

Ключи: чем сшивают записи

Ключ — самая скучная и самая дорогая тема интеграции. Правило простое: у каждой сущности должен быть идентификатор, который не меняется никогда и не зависит от того, как её назвали.

Для номенклатуры это внутренний идентификатор записи или артикул, если он действительно уникален и не переиспользуется. Для контрагентов — ИНН плюс КПП, с оговоркой на филиалы. Для заказов — номер с префиксом источника, чтобы заказ с сайта и заказ из розницы не столкнулись.

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

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

Отдельно стоит договориться, что происходит при объединении дублей в 1С. Две карточки схлопнули в одну — на сайте остались две, и на одну из них ведут ссылки, отзывы и позиции в старых заказах. Обмен должен уметь передавать событие «эта запись теперь та», а внешняя система — переносить связанные данные и ставить редирект.

Безопасность обмена

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

Рабочая схема: обмен идёт через шлюз или отдельный сервис во внешнем контуре, а сама база остаётся внутри сети. Доступ — только по защищённому каналу, с ограничением по адресам, с отдельным пользователем обмена, у которого права ровно на те объекты, что участвуют в интеграции.

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

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

Окна регламентных работ

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

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

Мониторинг и восстановление

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

  • Журнал обмена с человекочитаемой ошибкой: что за документ, куда шёл, на чём упал.
  • Алерт в почту или мессенджер при накоплении ошибок или остановке обмена дольше согласованного времени.
  • Повторная отправка — руками из интерфейса и автоматически по расписанию, без участия разработчика.
  • Ключ операции, по которому повтор не создаёт дубль.
  • Сверка — регулярное сравнение количества документов и сумм на обеих сторонах.

Последний пункт часто считают избыточным, пока не выясняется, что за месяц на сайт не доехали двести карточек, а в 1С не приехали сорок заказов — и никакой ошибки при этом в журнале не было.

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

Что должно быть у обмена: журнал ошибок, алерт при остановке, повторная отправка, ключ операции, регулярная сверка

Сколько стоит

Диапазон между простой выгрузкой и двусторонним обменом с очередью — примерно десятикратный, поэтому цена всегда считается по списку объектов. Что двигает смету:

Фактор Дешевле Дороже
Направление Односторонняя выгрузка Двусторонний обмен с подтверждениями
Состав данных Один-два объекта Каталог, заказы, оплаты, документы, статусы
Режим Пакетно по расписанию Онлайн по событию с повторами
Состояние справочников Есть ключи и порядок Дубли, разные ведущие системы
Конфигурация Типовая Изменённая, снятая с поддержки
Объёмы Тысячи записей Сотни тысяч, пики переоценки
Требования к отказоустойчивости Обмен может подождать Очередь, мониторинг, сверка, регламент восстановления

По нашим работам отдельная интеграция стоит от 150 тыс. до 1,5 млн ₽ — это цена за одну связку, а не за проект целиком. Заказная разработка продукта под процесс начинается от 1,7 млн ₽, модули и личные кабинеты поверх 1С — от 3 млн ₽, аудит существующих обменов с разбором архитектуры — от 200 до 600 тыс. ₽. Точную цифру считаем по списку объектов и режимов: оценка проекта бесплатная.

Прикинуть порядок бюджета можно самостоятельно — бесплатный калькулятор оценки собирает вилку по составу работ за несколько минут.

Посчитаем интеграцию по вашему списку

Пришлите состав объектов, направление обмена и объёмы — вернём смету с разбивкой по связкам и срок по каждой.

Получить консультацию

Что писать в ТЗ

Документ на одну-две страницы по каждому обмену снимает большую часть будущих споров. Что в нём должно быть:

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

Интеграция начинается не с кода, а с двух ответов: чем сшиваем записи и что происходит, когда сообщение не дошло.

Повторяющиеся ошибки

Сначала пишут код, потом ищут ключ. Обмен запускают на наименованиях, а через месяц разбирают дубли вручную.

Тестируют на боевой базе. Экономия недели на разворачивании копии оборачивается испорченными документами и разговором с бухгалтерией.

Считают, что обмен настраивают один раз. Меняются конфигурация, структура каталога, требования маркетплейсов — интеграция требует сопровождения так же, как и любой другой код.

Никто не отвечает за обмен. Подрядчик сделал и ушёл, внутренний специалист по 1С считает это зоной веб-студии, веб-студия — зоной 1С. Обмен встал в пятницу, узнали в понедельник от клиента.

Открывают базу наружу «на время запуска». Временное решение живёт годами и однажды становится историей про утечку прайсов и контрагентов.

С чего начать

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

Второе — по каждому объекту назвать ключ и ведущую систему. Если ответа нет ни у кого, начинать надо с порядка в справочниках, иначе любая интеграция будет разъезжаться.

Третье — если обмен уже есть, собрать статистику: сколько ошибок за месяц, сколько документов расходится при сверке, сколько времени занимает разбор инцидента. С этими цифрами становится видно, чинить существующее или строить заново.

С чего начать интеграцию: список обменов, ключ и ведущая система по каждому объекту, статистика ошибок текущего обмена

Обсудим ваш обмен?

Соберём состав первой интеграции, назовём ключи и режим, оценим объём работ. Оценка бесплатная.

Обсудить проект

Часто задаваемые вопросы

Частично. Типовой обмен с интернет-магазином на популярных CMS настраивается штатными средствами, и для базового сценария «каталог, цены, остатки, заказы» этого хватает. Программист нужен, когда появляются нестандартные поля и правила, обмен с несколькими системами, требования к скорости или конфигурация уже дорабатывалась.

По задаче. Для магазина на CMS — типовой обмен CommerceML. Для чтения данных во внешнюю витрину — OData. Для записи и нестандартных операций — HTTP-сервисы со своим контрактом. Для обмена между конфигурациями 1С — штатная синхронизация. Для пиков и нескольких потребителей — очередь сообщений. На реальном проекте обычно сочетаются два-три механизма.

От 150 тыс. до 1,5 млн ₽ за одну связку. Разброс определяют направление обмена, состав объектов, режим, объёмы, состояние справочников и то, дорабатывалась ли конфигурация. Проект из нескольких обменов считается по каждому отдельно, оценка бесплатная.

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

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

Разработка с Code Pilots

Code Pilots — студия заказной разработки полного цикла: веб- и мобильные продукты со сложной бизнес-логикой, интеграциями и высокими нагрузками. Обмен для нас не сопутствующая работа, а отдельная инженерная задача: витрины и кэш, очереди для развязки пиков, журнал с повторами и алертами, сверка данных на обеих сторонах.

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

Внутри — аналитики с отраслевой экспертизой, backend- и мобильные разработчики, QA и DevOps, middle+ и senior. Пришлите список систем, между которыми данные ходят руками, — по нему уже видно, с чего начинать. Обсудить проект →

Обсудим проект?

Заполните форму или напишите нам
на airmail@code-pilots.ru
Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь с политикой конфиденциальности.

Спасибо!

Спасибо за сообщение, мы свяжемся
с вами в ближайшее время!
success