Топ-7 инструментов 1С:УТ для интеграции с маркетплейсами

Топ-7 инструментов 1С:УТ для интеграции с маркетплейсами

Почему интеграция 1С:УТ с маркетплейсами стала критически важной в 2026 году

Российский рынок маркетплейсов продолжает стремительно расти. Wildberries, Ozon, Яндекс Маркет, СберМегаМаркет и AliExpress Россия суммарно обрабатывают десятки миллионов заказов ежедневно. Для торговых компаний, работающих одновременно на нескольких площадках, ручная синхронизация остатков, цен и заказов превращается в настоящий кошмар: пересортица, задвоенные продажи, запоздалое обновление цен, всё это ведёт к штрафам, плохим рейтингам и потере прибыли.

Именно здесь на первый план выходит 1С:Управление торговлей 11 (1С:УТ), система, изначально спроектированная для комплексного управления торговыми операциями. Начиная с версии 11.5 платформа получила существенно расширенный инструментарий для работы с внешними каналами продаж, а в 2025, 2026 годах этот функционал был значительно доработан с учётом требований ведущих маркетплейсов.

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

Если вы ищете готовые решения или специалиста для реализации интеграции, загляните на маркетплейс обработок Кодерион, там собраны проверенные инструменты от сообщества разработчиков.

Инструмент 1. Встроенный модуль «Интеграция с маркетплейсами» в 1С:УТ 11.5+

Начиная с релиза 11.5.10, фирма «1С» включила в типовую конфигурацию УТ встроенный модуль интеграции с маркетплейсами. Это важно: больше не нужно устанавливать сторонние расширения для базовых сценариев обмена с Wildberries и Ozon.

Что умеет встроенный модуль

  • Загрузка заказов, автоматическое получение новых заказов с маркетплейса и создание документов «Заказ клиента» в 1С.
  • Синхронизация остатков, периодическая (или событийная) выгрузка актуальных складских остатков на площадку.
  • Управление ценами, выгрузка прайс-листов с учётом ценовых групп и скидок маркетплейса.
  • Статусы отгрузок, передача трек-номеров и статусов доставки обратно на маркетплейс.
  • Работа с возвратами, получение уведомлений о возвратах и создание соответствующих документов в 1С.

Настройка подключения через API

Для настройки подключения к Ozon через встроенный модуль используется объект НастройкиИнтеграцииМаркетплейс. Ниже приведён пример программной инициализации настроек:

// Процедура инициализации настроек интеграции с Ozon
Процедура ИнициализироватьНастройкиOzon(КлючAPI, ИдентификаторМагазина)

	// Получаем или создаём элемент справочника настроек
	Настройки = Справочники.НастройкиИнтеграцииМаркетплейсов.НайтиПоКоду("OZON_MAIN");
	Если НастройкиОбъект = Справочники.НастройкиИнтеграцииМаркетплейсов.ПустаяСсылка() Тогда
		НастройкиОбъект = Справочники.НастройкиИнтеграцииМаркетплейсов.СоздатьЭлемент();
		НастройкиОбъект.Код = "OZON_MAIN";
	Иначе
		НастройкиОбъект = Настройки.ПолучитьОбъект();
	КонецЕсли;

	// Заполняем параметры подключения
	НастройкиОбъект.Наименование = "Ozon, основной магазин";
	НастройкиОбъект.ТипМаркетплейса = Перечисления.ТипыМаркетплейсов.Ozon;
	НастройкиОбъект.КлючAPI = КлючAPI;
	НастройкиОбъект.ИдентификаторМагазина = ИдентификаторМагазина;
	НастройкиОбъект.АвтоматическаяЗагрузкаЗаказов = Истина;
	НастройкиОбъект.ИнтервалОбновленияОстатков = 30; // минуты

	// Записываем настройки
	НастройкиОбъект.Записать();

	Сообщить("Настройки интеграции с Ozon успешно сохранены.");

КонецПроцедуры

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

Инструмент 2. HTTP-сервисы и REST API 1С для двустороннего обмена

Когда типовых возможностей недостаточно, разработчики обращаются к механизму HTTP-сервисов платформы 1С 8.3. Этот инструмент позволяет создать собственный REST-эндпоинт прямо внутри информационной базы, через который маркетплейс (или промежуточный сервис) может отправлять данные в режиме реального времени.

Архитектура двустороннего обмена

Типовая архитектура выглядит следующим образом:

  1. Маркетплейс отправляет webhook-уведомление на HTTP-сервис 1С при изменении статуса заказа.
  2. HTTP-сервис 1С обрабатывает входящий JSON, создаёт или обновляет документы.
  3. По расписанию регламентное задание 1С опрашивает API маркетплейса для получения новых заказов и актуализации данных.
  4. При изменении остатков или цен в 1С подписка на событие инициирует выгрузку данных на маркетплейс.
// HTTP-сервис для приёма webhook-уведомлений от Wildberries
// Модуль HTTP-сервиса «ВебхукМаркетплейс»

Функция ОбработатьЗапросPOST(Запрос)

	// Читаем тело запроса
	ТелоЗапроса = Запрос.ПолучитьТелоКакСтроку("UTF-8");

	// Десериализуем JSON
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(ТелоЗапроса);
	ДанныеВебхука = ПрочитатьJSON(ЧтениеJSON);
	ЧтениеJSON.Закрыть();

	// Определяем тип события
	ТипСобытия = ДанныеВебхука["type"];

	Если ТипСобытия = "new_order" Тогда
		ОбработатьНовыйЗаказWB(ДанныеВебхука);
	ИначеЕсли ТипСобытия = "cancel_order" Тогда
		ОтменитьЗаказWB(ДанныеВебхука["orderId"]);
	ИначеЕсли ТипСобытия = "return" Тогда
		СоздатьВозвратWB(ДанныеВебхука);
	КонецЕсли;

	// Формируем успешный ответ
	Ответ = Новый HTTPСервисОтвет(200);
	Ответ.УстановитьТелоИзСтроки("{\"status\": \"ok\"}", "UTF-8");

	Возврат Ответ;

КонецФункции

// Создание заказа клиента на основе данных от Wildberries
Процедура ОбработатьНовыйЗаказWB(ДанныеЗаказа)

	НачатьТранзакцию();
	Попытка

		// Создаём новый заказ клиента
		ЗаказОбъект = Документы.ЗаказКлиента.СоздатьДокумент();
		ЗаказОбъект.Дата = ТекущаяДатаСеанса();
		ЗаказОбъект.Организация = ПолучитьОрганизациюПоУмолчанию();

		// Заполняем контрагента (маркетплейс как юрлицо)
		ЗаказОбъект.Контрагент = Справочники.Контрагенты.НайтиПоКоду("WB_MARKETPLACE");
		ЗаказОбъект.Соглашение = ПолучитьСоглашениеWB();

		// Записываем номер заказа маркетплейса
		ЗаказОбъект.НомерВнешнегоЗаказа = Строка(ДанныеЗаказа["orderId"]);

		// Заполняем табличную часть товарами
		Для Каждого ТоварJSON Из ДанныеЗаказа["items"] Цикл
			НоваяСтрока = ЗаказОбъект.Товары.Добавить();
			НоваяСтрока.Номенклатура = НайтиНоменклатуруПоАртикулу(ТоварJSON["article"]);
			НоваяСтрока.Количество = ТоварJSON["quantity"];
			НоваяСтрока.Цена = ТоварJSON["price"];
		КонецЦикла;

		ЗаказОбъект.Записать(РежимЗаписиДокумента.Проведение);
		ЗафиксироватьТранзакцию();

	Исключение
		ОтменитьТранзакцию();
		ЗаписьЖурналаРегистрации(
			"ИнтеграцияМаркетплейс",
			УровеньЖурналаРегистрации.Ошибка,
			,
			"Ошибка создания заказа WB: " + ОписаниеОшибки()
		);
	КонецПопытки;

КонецПроцедуры

HTTP-сервисы, мощный инструмент, однако требуют открытого доступа к серверу 1С из интернета, что создаёт дополнительные требования к безопасности инфраструктуры.

Инструмент 3. Механизм обмена данными через планы обмена (XML/JSON)

Для компаний, которые используют несколько информационных баз 1С (например, отдельную базу УТ и базу 1С:Бухгалтерия для учёта), критически важен механизм планов обмена. для интеграции с маркетплейсами этот инструмент используется для синхронизации данных между базой УТ (где происходит управление заказами маркетплейса) и учётной системой.

Роль планов обмена в экосистеме маркетплейсов

Типовой сценарий: все заказы с маркетплейсов приходят в 1С:УТ, обрабатываются там, а затем финансовые операции (поступления оплат, реализации, комиссии маркетплейса) передаются в 1С:Бухгалтерию через стандартный план обмена. Это позволяет не дублировать логику интеграции в двух базах.

// Запрос для формирования выборки изменённых заказов маркетплейса
// для передачи в смежную систему через план обмена

Функция ПолучитьИзменённыеЗаказыМаркетплейса(УзелОбмена)

	Запрос = Новый Запрос;
	Запрос.Текст =
		"ВЫБРАТЬ
		|	Изменения.Ссылка КАК ЗаказКлиента,
		|	Изменения.Ссылка.Дата КАК ДатаЗаказа,
		|	Изменения.Ссылка.НомерВнешнегоЗаказа КАК НомерМаркетплейса,
		|	Изменения.Ссылка.Контрагент КАК Контрагент,
		|	Изменения.Ссылка.СтатусЗаказа КАК Статус
		|ИЗ
		|	Документ.ЗаказКлиента.Изменения(&УзелОбмена) КАК Изменения
		|ГДЕ
		|	Изменения.Ссылка.ИсточникЗаказа = ЗНАЧЕНИЕ(Перечисление.ИсточникиЗаказов.Маркетплейс)
		|УПОРЯДОЧИТЬ ПО
		|	Изменения.Ссылка.Дата";

	Запрос.УстановитьПараметр("УзелОбмена", УзелОбмена);

	Возврат Запрос.Выполнить().Выгрузить();

КонецФункции

Инструмент 4. Регламентные задания для автоматической синхронизации остатков и цен

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

Оптимальная стратегия обновления остатков

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

  • Полное обновление, раз в 2, 4 часа, передаёт все позиции номенклатуры.
  • Дельта-обновление, каждые 15, 30 минут, передаёт только изменившиеся позиции.
  • Событийное обновление, при проведении документов отгрузки или поступления немедленно обновляет затронутые позиции.
// Регламентное задание: выгрузка изменённых остатков на маркетплейсы
// Запускается каждые 20 минут

Процедура ВыгрузитьИзменённыеОстаткиНаМаркетплейсы() Экспорт

	// Получаем список активных настроек интеграции
	Запрос = Новый Запрос;
	Запрос.Текст =
		"ВЫБРАТЬ
		|	Настройки.Ссылка КАК НастройкиИнтеграции,
		|	Настройки.ТипМаркетплейса КАК ТипМаркетплейса,
		|	Настройки.КлючAPI КАК КлючAPI,
		|	Настройки.ИдентификаторМагазина КАК ИдентификаторМагазина
		|ИЗ
		|	Справочник.НастройкиИнтеграцииМаркетплейсов КАК Настройки
		|ГДЕ
		|	Настройки.АктивнаяИнтеграция = ИСТИНА
		|	И НЕ Настройки.ПометкаУдаления";

	ВыборкаНастроек = Запрос.Выполнить().Выбрать();

	Пока ВыборкаНастроек.Следующий() Цикл

		// Получаем остатки по складам маркетплейса
		Остатки = ПолучитьОстаткиДляМаркетплейса(ВыборкаНастроек.НастройкиИнтеграции);

		// Выгружаем на конкретный маркетплейс
		Если ВыборкаНастроек.ТипМаркетплейса = Перечисления.ТипыМаркетплейсов.Wildberries Тогда
			ВыгрузитьОстаткиWildberries(Остатки, ВыборкаНастроек.КлючAPI);
		ИначеЕсли ВыборкаНастроек.ТипМаркетплейса = Перечисления.ТипыМаркетплейсов.Ozon Тогда
			ВыгрузитьОстаткиOzon(Остатки, ВыборкаНастроек.КлючAPI, ВыборкаНастроек.ИдентификаторМагазина);
		КонецЕсли;

	КонецЦикла;

КонецПроцедуры

// Получение актуальных остатков по складам маркетплейса
Функция ПолучитьОстаткиДляМаркетплейса(НастройкиИнтеграции)

	Запрос = Новый Запрос;
	Запрос.Текст =
		"ВЫБРАТЬ
		|	Остатки.Номенклатура КАК Номенклатура,
		|	Остатки.Номенклатура.Артикул КАК Артикул,
		|	Остатки.Номенклатура.АртикулМаркетплейса КАК АртикулМаркетплейса,
		|	Остатки.Характеристика КАК Характеристика,
		|	СУММА(Остатки.КоличествоОстаток) КАК КоличествоОстаток
		|ИЗ
		|	РегистрНакопления.ТоварыНаСкладах.Остатки(
		|		&МоментВремени,
		|		Склад В (&СписокСкладов)
		|	) КАК Остатки
		|ГДЕ
		|	Остатки.Номенклатура.ИспользуетсяНаМаркетплейсах = ИСТИНА
		|СГРУППИРОВАТЬ ПО
		|	Остатки.Номенклатура,
		|	Остатки.Характеристика";

	Запрос.УстановитьПараметр("МоментВремени", ТекущаяДатаСеанса());
	Запрос.УстановитьПараметр("СписокСкладов", ПолучитьСкладыМаркетплейса(НастройкиИнтеграции));

	Возврат Запрос.Выполнить().Выгрузить();

КонецФункции

Важно понимать, что для корректной работы событийного обновления необходимо настроить подписки на события документов «Реализация товаров и услуг» и «Поступление товаров и услуг». Это позволит мгновенно реагировать на изменения физических остатков.

Инструмент 5. Расширения конфигурации для кастомизации без изменения типовой

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

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

  • Добавления новых реквизитов в справочник «Номенклатура» (артикулы маркетплейсов, идентификаторы категорий, статусы публикации).
  • Переопределения алгоритмов ценообразования для конкретных площадок.
  • Добавления команд в форму документа «Заказ клиента» для ручной синхронизации.
  • Реализации специфических правил валидации данных перед выгрузкой.
// Пример кода в расширении конфигурации
// Переопределение процедуры заполнения цены для маркетплейса Ozon
// с учётом комиссии площадки и минимальной маржи

&НаСервере
Процедура РассчитатьЦенуДляOzon(НоменклатураСсылка, Результат)

	// Получаем базовую цену из прайс-листа
	Запрос = Новый Запрос;
	Запрос.Текст =
		"ВЫБРАТЬ
		|	Цены.Цена КАК БазоваяЦена,
		|	Цены.Валюта КАК Валюта
		|ИЗ
		|	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
		|		&ДатаАктуальности,
		|		Номенклатура = &Номенклатура
		|		И ВидЦены = &ВидЦены
		|	) КАК Цены";

	Запрос.УстановитьПараметр("ДатаАктуальности", ТекущаяДатаСеанса());
	Запрос.УстановитьПараметр("Номенклатура", НоменклатураСсылка);
	Запрос.УстановитьПараметр("ВидЦены", ПолучитьВидЦеныОсновной());

	РезультатЗапроса = Запрос.Выполнить();

	Если РезультатЗапроса.Пустой() Тогда
		Результат = 0;
		Возврат;
	Конец

Инструмент 6. Внешние обработки и отчёты для управления интеграцией

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

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

// Внешняя обработка: ЗагрузкаЗаказовWildberries
// Основная процедура загрузки новых заказов через API Wildberries v3

&НаСервере
Функция ЗагрузитьНовыеЗаказы(НастройкиПодключения) Экспорт

	ЗаголовкиHTTP = Новый Соответствие;
	ЗаголовкиHTTP.Вставить("Authorization", "Bearer " + НастройкиПодключения.АПИКлюч);
	ЗаголовкиHTTP.Вставить("Content-Type", "application/json");

	АдресСервиса = "https://marketplace-api.wildberries.ru";
	МетодАПИ = "/api/v3/orders/new";

	СоединениеHTTP = Новый HTTPСоединение(
		АдресСервиса,
		443,,
		НастройкиПодключения.ТаймаутСекунд,
		Новый ЗащищённоеСоединениеOpenSSL()
	);

	ЗапросHTTP = Новый HTTPЗапрос(МетодАПИ, ЗаголовкиHTTP);
	ОтветHTTP = СоединениеHTTP.Получить(ЗапросHTTP);

	Если ОтветHTTP.КодСостояния <> 200 Тогда
		ЗаписатьОшибкуВЖурнал(
			"ЗагрузкаЗаказовWildberries",
			"Ошибка API: " + ОтветHTTP.КодСостояния
		);
		Возврат Неопределено;
	КонецЕсли;

	ДанныеОтвета = ПрочитатьJSON(ОтветHTTP.ПолучитьТелоКакСтроку());
	КоличествоЗаписанных = ОбработатьМассивЗаказов(ДанныеОтвета["orders"]);

	Возврат КоличествоЗаписанных;

КонецФункции

Инструмент 7. Брокеры сообщений и очереди задач для надёжной асинхронной интеграции

При высоких объёмах операций, сотни заказов в час, тысячи позиций в каталоге, частые обновления остатков, синхронная интеграция становится узким местом и источником ошибок. Таймауты API, временная недоступность маркетплейса или перегрузка сервера 1С приводят к потере данных. Решением служит архитектура с брокером сообщений: между 1С:УТ и API маркетплейса появляется промежуточный слой (RabbitMQ, Apache Kafka или даже простая таблица в базе данных), который гарантирует доставку каждого события, нового заказа, изменения цены, обновления статуса отгрузки.

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

// Процедура добавления события в очередь интеграции
// Вызывается из подписки на событие «ПриЗаписи» документа «ЗаказКлиента»

&НаСервере
Процедура ДобавитьСобытиеВОчередь(
	ТипСобытия,
	ИдентификаторОбъекта,
	ДанныеСобытия
) Экспорт

	НовоеСообщение = РегистрыСведений.ОчередьСообщенийМаркетплейсов.СоздатьМенеджерЗаписи();

	НовоеСообщение.ИдентификаторСообщения = Новый УникальныйИдентификатор();
	НовоеСообщение.ДатаСоздания = ТекущаяДатаСеанса();
	НовоеСообщение.ТипСобытия = ТипСобытия;
	НовоеСообщение.ИдентификаторОбъекта = ИдентификаторОбъекта;
	НовоеСообщение.СтатусОбработки = Перечисления.СтатусыОбработкиСообщений.Ожидает;
	НовоеСообщение.КоличествоПопыток = 0;
	НовоеСообщение.МаксимумПопыток = 5;
	НовоеСообщение.ДанныеJSON = ЗаписатьДанныеВJSON(ДанныеСобытия);

	НовоеСообщение.Записать();

КонецПроцедуры

// Регламентное задание: ОбработкаОчередиМаркетплейсов
// Запускается каждые 2 минуты, обрабатывает пакет до 50 сообщений

&НаСервере
Процедура ОбработатьПакетСообщений() Экспорт

	Запрос = Новый Запрос;
	Запрос.Текст =
		"ВЫБРАТЬ ПЕРВЫЕ 50
		|	Очередь.ИдентификаторСообщения КАК ИдентификаторСообщения,
		|	Очередь.ТипСобытия КАК ТипСобытия,
		|	Очередь.ДанныеJSON КАК ДанныеJSON,
		|	Очередь.КоличествоПопыток КАК КоличествоПопыток
		|ИЗ
		|	РегистрСведений.ОчередьСообщенийМаркетплейсов КАК Очередь
		|ГДЕ
		|	Очередь.СтатусОбработки = &СтатусОжидает
		|	И Очередь.КоличествоПопыток < Очередь.МаксимумПопыток
		|УПОРЯДОЧИТЬ ПО
		|	Очередь.ДатаСоздания ВОЗР";

	Запрос.УстановитьПараметр("СтатусОжидает",
		Перечисления.СтатусыОбработкиСообщений.Ожидает
	);

	ВыборкаСообщений = Запрос.Выполнить().Выбрать();

	Пока ВыборкаСообщений.Следующий() Цикл
		ОтправитьСообщениеНаМаркетплейс(
			ВыборкаСообщений.ИдентификаторСообщения,
			ВыборкаСообщений.ТипСобытия,
			ВыборкаСообщений.ДанныеJSON
		);
	КонецЦикла;

КонецПроцедуры

Найдите специалиста для решения этой задачи на koderion.ru