Мы используем cookies. Продолжая использовать сайт, вы соглашаетесь с нашей политикой обработки персональных данных и использования Cookies
Москва
+7 (495) 786 26 32
Москва
+7 (495) 786 26 32
08 июня 2026

Репрайсер и парсер цен в модуле 1С:Виктория. Интеграция с маркетплейсами

Андрей Старчиков
Андрей Старчиков
Руководитель направления автоматизации торговли
Опыт работы: 26

1. Постановка задачи

Селлеры на Wildberries и Ozon ежедневно сталкиваются с двумя противоположными по сути, но связанными задачами:

  • Удержать цену в заданных границах — не уйти ниже РРЦ дистрибьютора и не выйти выше психологического порога для покупателя.
  • Динамически реагировать на спрос — если товар продается слабо, цену нужно понижать; если продажи идут активно, цену можно повышать, оптимизируя маржу.

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

  • СПП (скидка постоянного покупателя на Wildberries) — площадка применяет ее самостоятельно, селлер не управляет ею напрямую, но обязан учитывать.
  • Цена «по карте» (Ozon Premium, скидки по Ozon Карте) — аналогичная ситуация на Ozon.
  • Промоакции площадки, в которые товар может попадать автоматически.

Реальную итоговую цену нельзя получить ни через официальный API Wildberries, ни через API Ozon — площадки ее не отдают. А именно эта цена интересует селлера, потому что именно по ней покупатель сравнивает товары и принимает решение о покупке.

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

2. Архитектура решения

Архитектура решения

Схема архитектуры: база 1С клиента → сервер Victoria (BigData) → парсер-кластер → карточки Wildberries и Ozon

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

Уровень 1. База 1С клиента

  • регистры с ценами, загруженными штатным API («Цены товаров»);
  • регистры с заказами, загруженными штатным API;
  • справочник вмп_ФункцииРепрайсера — настроенные алгоритмы;
  • справочник вмп_СценарииРепрайсера — типы алгоритмов и их параметры;
  • регистр вмп_ЗаданияПарсера — локальная очередь заданий на парсинг;
  • регистры вмп_ЦеныПарсера и вмп_ЦеныТоваровССайта — результаты парсинга;
  • регламентные задания, которые запускают процесс по расписанию.

Уровень 2. Сервер Victoria (BigData)

  • авторизует клиентскую базу по токену;
  • шифрует и маршрутизирует запросы;
  • проверяет тариф, лимиты и баланс;
  • ставит задания в очередь к парсер-кластеру;
  • кэширует результаты (по умолчанию 24 часа на SKU);
  • ведет биллинг.

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

Уровень 3. Парсер-кластер

  • открывает реальные карточки товаров на wildberries.ru и ozon.ru;
  • извлекает цену с учетом СПП и цену по карте Ozon;
  • учитывает регион и признак «нет в продаже» (out_of_stock);
  • ротирует прокси и пользовательские сеансы, чтобы не попадать под антибот-защиту.

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

3. Программная модель в 1С

3.1. Сценарии репрайсера

Сценарий (вмп_СценарииРепрайсера) — это тип алгоритма. В текущей версии поддерживаются:

  • Поддержка цены — удержание в коридоре относительно РРЦ.
  • Корректировка цен по спросу — динамическое управление на основе истории заказов.

В форме сценария реализована управляемая видимость реквизитов в зависимости от типа. Это дает пространство для расширения: добавление нового сценария — это новый элемент перечисления вмп_ТипыСценариевРепрайсера и новая ветка в обработчике. Существующие настройки клиента при этом не ломаются.

Если Сценарий.ТипСценария = ПредопределенноеЗначение(
"Перечисление.вмп_ТипыСценариевРепрайсера.КорректировкаЦенПоСпросу")
Тогда
   ПроверяемыеРеквизиты.Добавить("ГлубинаАнализа");
   ПроверяемыеРеквизиты.Добавить("ШагИзмененияЦены");
   ПроверяемыеРеквизиты.Добавить("КритерийПродажМинимум");
   ПроверяемыеРеквизиты.Добавить("КритерийПродажМаксимум");
КонецЕсли;

3.2. Функции репрайсера

вмп_ФункцииРепрайсера — конкретная настройка алгоритма для определенного набора учетных записей и номенклатуры.

Реквизит Назначение
Включено Флаг участия в регламентном запуске
Сценарий Ссылка на тип алгоритма
Периодичность Минимальный интервал между запусками, сек
Время последнего выполнения Контроль фактических запусков
Учетные записи Отбор по аккаунтам (пусто = все активные)
Номенклатура Отбор по товарам с поддержкой групп

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

3.3. Удобство наполнения номенклатуры

Когда в функцию репрайсера нужно добавить 500–5000 SKU, ручной подбор невозможен. Реализована загрузка из Excel по артикулу. Контроль дублей дополнительно срабатывает интерактивно: при ручном выборе через ОбработкаВыбора и при изменении строки табличной части второе вхождение той же номенклатуры удаляется с сообщением «Дубль. Номенклатура не была добавлена». Это критично, потому что один и тот же товар, попавший в репрайсер дважды, мог бы получить противоречивые команды установки цены.

КоличествоТовара = Объект.Номенклатура.НайтиСтроки(
   Новый Структура("Номенклатура", Номенклатура)).Количество();
Если КоличествоТовара = 0 Тогда
   НоваяСтрока = Объект.Номенклатура.Добавить();
   НоваяСтрока.Номенклатура = Номенклатура;
   НоваяСтрока.ВидНоменклатуры = "Товар";
   КолвоНовыхНоменклатур = КолвоНовыхНоменклатур + 1;
КонецЕсли;

4. Алгоритмы

4.1. Поддержка РРЦ

Бизнес-задача: дистрибьютор требует не уходить ниже РРЦ. Или, наоборот, не превышать рекомендованную верхнюю границу.

  • Из регистра «Цены товаров» берется актуальная цена площадки.
  • Выполняется сравнение с видом цены «РРЦ» по выбранной формуле: не ниже РЦ, не выше РЦ или равно РЦ.
  • При включенной опции «С учетом СПП» решается обратная задача: вычисляется цена до скидки, которая после применения СПП даст нужное значение.
  • Минимальный и максимальный вид цены работают как защитные пороги. Если расчет уводит цену за эти границы, установка блокируется.
  • Результат фиксируется либо документом «Установка цен номенклатуры», либо прямой отправкой на сайт.

ЦенаДоСПП = ЦенаРРЦ / (1 − ПроцентСПП)

4.2. Корректировка цен по спросу

  • ГлубинаАнализа (дни) — за какой период считать продажи;
  • КритерийПродажМинимум / КритерийПродажМаксимум — границы нормы;
  • ШагИзмененияЦены (%) — на сколько изменять цену.
  • Получить актуальную цену площадки из «Цены товаров».
  • Посчитать количество заказов за период ГлубинаАнализа по уже загруженным в 1С заказам.
  • Сравнить результат с коридором: ниже минимума — минус шаг, выше максимума — плюс шаг, в коридоре — не менять цену.
  • Применить минимальный и максимальный вид цены как ограничители.
  • Записать результат документом или прямой отправкой.

Важная деталь: и здесь, и в «Поддержке РРЦ» учитывается СПП. Если на витрине покупатель видит цену с СПП = 1490 ₽, а в учете у нас цена 1990 ₽, алгоритм должен сравнивать продажи именно с витринной ценой. Иначе стратегия перестает быть корректной. Поэтому СПП нужно знать, а получить его без парсинга нельзя.

5. Парсер: почему он необходим и как устроен

5.1. Почему API недостаточно

Ни Wildberries, ни Ozon не возвращают через официальный API актуальную цену с учетом СПП для конкретной карточки, цену по карте Ozon и факт того, что товар временно отсутствует в продаже на витрине, хотя в личном кабинете он активен. Эти данные есть только на самой витрине. Поэтому единственный технически корректный способ их получить — открыть страницу карточки и извлечь данные.

5.2. Как выглядит цикл парсинга

  • Submit — отправка списка SKU на парсинг.
  • Status — проверка готовности задания.
  • Result — получение результатов.
  • Limits — получение информации о балансе и квоте.

СтрокаJSON = ПреобразоватьДанныеВJSON(ДанныеЗапросаДляОтправки);
ЗашифрованноеТело = вмп_СлужебныеФункцииСервер.ЗашифроватьТекст(СтрокаJSON);
ЗапросHTTP.УстановитьТелоИзСтроки(ЗашифрованноеТело);

Ответ также расшифровывается. Это нужно для защиты токена и ИНН клиента в канале и для невозможности подсмотреть формат тела сторонней средой.

5.3. Учет типа клиентской инфраструктуры

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

Попытка
   ОтветHTTP = Настройки.Соединение.ОтправитьДляОбработки(ЗапросHTTP);
Исключение
   Настройки = ПолучитьНастройкиПодключения(ДанныеЗапроса.УчетнаяЗапись, Истина);
   ОтветHTTP = Настройки.Соединение.ОтправитьДляОбработки(ЗапросHTTP);
КонецПопытки;

5.4. Пакетная отправка

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

МаксимумВПакете = 10;
МассивПакетов = РазбитьМассивНаПакеты(НомераТоваров, МаксимумВПакете);

5.5. Получение результатов и классификация ошибок

  • Фатальная ошибка — задание сразу помечается ошибочным, в журнал пишется причина.
  • Временная ошибка (HTTP 5xx, 429, таймаут) — задание остается активным и будет проверено повторно.
  • Жесткий таймаут в 1 час защищает от зависших заданий.

ФатальныеКоды = Новый Массив;
ФатальныеКоды.Добавить("JOB_NOT_FOUND");
ФатальныеКоды.Добавить("JOB_EXPIRED");
ФатальныеКоды.Добавить("INVALID_TOKEN");
ФатальныеКоды.Добавить("LIMIT_EXCEEDED");
ФатальныеКоды.Добавить("SUBSCRIPTION_EXPIRED");

5.6. Кэширование и биллинг

Каждый успешный парсинг карточки кэшируется на сервере BigData, по умолчанию на 24 часа. Повторный запрос того же SKU в течение этого окна не выполняет повторный парсинг карточки, не списывает деньги с баланса и помечается флагом source = "cached". Это критично для регулярных регламентных заданий: можно безопасно ставить опрос каждый час и не расходовать бюджет впустую.

Если ДанныеSKU.Получить("source") = "cached" Тогда
   ТекстИнформации = ТекстИнформации + " из кэша";
Иначе
   // ...
КонецЕсли;

6. Запуск: регламентные задания и длительные операции

Репрайсер запускается тремя способами:

  • Автоматически — общим регламентным заданием по расписанию из настроек модуля.
  • Принудительно из списка функций — кнопкой «Выполнить все» или «Выполнить выделенные».
  • Из карточки конкретной функции — кнопкой «Выполнить регламентное задание» с передачей ссылки в массив запускаемых функций.

Запуск унифицирован через механизм длительных операций БСП. Это дает клиенту следующее:

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

Возврат ДлительныеОперации.ВыполнитьПроцедуру(
   ПараметрыВыполнения,
   "вмп_Репрайсер.ВыполнитьРегЗаданиеРепрайсер",
   ПараметрыВызова
);

7. Защита от типовых ошибок эксплуатации

7.1. Защита от расхождения цен в учете и на витрине

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

7.2. Защита от «выстрела ниже себестоимости»

Минимальный и максимальный вид цены работают как hard-stop. Если расчет по сценарию дает значение за пределами коридора, установка блокируется, а причина пишется в журнал.

7.3. Защита от дублей в настройках

Механизм отлова дублей в табличной части номенклатуры срабатывает при загрузке из Excel, при подборе и при ручном вводе.

7.4. Защита от перерасхода бюджета на парсинг

Используются кэширование на 24 часа, дневной лимит SKU на стороне BigData и явное разделение тестового и платного режима.

7.5. Защита от зависших заданий

Используются жесткий 1-часовой таймаут на статус задания парсинга и классификация ошибок на фатальные и временные.

8. Что в результате получает клиент

С точки зрения пользователя С точки зрения технологии
Один раз настроить функции репрайсера: выбрать сценарий, аккаунты, загрузить из Excel номенклатуру, указать виды цен и пороги. Парсинг витринной цены с учетом СПП и цены по карте Ozon — данных, которых нет в API.
Включить флаг «Активна» — после этого функция автоматически выполняется по расписанию. Алгоритмы принятия решений по ценообразованию с учетом РРЦ и реакции на спрос.
Периодически заходить в журнал работы репрайсера и в регистр цен с сайта, чтобы видеть, какие цены сейчас на витрине, какие документы были созданы и какие установки были заблокированы порогами. Безопасное применение результатов — через документы 1С или прямую отправку, с порогами и контролем дублей.

Архитектурно решение состоит из трех слоев — база 1С клиента, BigData-сервер Victoria и парсер-кластер на Python. Компоненты взаимодействуют асинхронно через зашифрованные JSON-запросы, поддерживают как локальные, так и облачные базы, отказоустойчивы по каналам связи и снабжены биллинговой моделью с кэшированием и тестовым режимом.

9. Применимость и совместимость

  • Поддерживаемые конфигурации 1С: УТ 11.4/11.5, КА 2, ERP 2, УНФ 3.0, Розница 2.3/3.0 (через подсистему интеграции).
  • Поддерживаемые площадки в текущей версии репрайсера: Wildberries, Ozon.
  • Архитектура парсера расширяется на любую витрину, где цена видна на публичной странице карточки.
  • Тарификация: модульная — функциональность включена в подписку PRO, парсинг — отдельная квота SKU/сутки, настраиваемая под объемы клиента.
  • Развертывание: не требует доработок ядра клиентской базы, поставляется расширением (*.cfe), не блокирует обновления типовой конфигурации.

Резюме

Репрайсер «1С:Виктория» — это не просто кнопка «изменить цену», а полноценная система динамического ценообразования для маркетплейсов, которая закрывает разрыв между тем, что показывает API маркетплейса, и тем, что реально видит покупатель на витрине.

Подробнее о продукте и сценариях использования — на странице решения.


Смотрите также:



Другие статьи

Репрайсер для маркетплейсовРепрайсер для маркетплейсов
Управление ценами является одним из основных столпов успешной торговли на маркетплейсах. Чтобы оставаться конкурентоспособным и не торговать в убыток, необходимо анализировать множество параметров и гибко реагировать на постоянно изменяющиеся условия. Ниже расскажем об основных показателях и имеющихся средствах автоматизации.
Читать
Декомпенсация Ozon: как отразить в 1СДекомпенсация Ozon: как отразить в 1С

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

Читать
Интеграция 1С и маркетплейсов: типовые ошибки продавцовИнтеграция 1С и маркетплейсов: типовые ошибки продавцов
Работа с маркетплейсами WildberriesOzon и Яндекс Маркет сопряжена с рисками, связанными с разрозненным учетом и множеством рутинных ручных операций, что приводит к финансовым потерям. Настоящая статья систематизирует основные ошибки продавцов и предлагает их решение.
Читать
Учет маркетплейсов в 1С:УНФУчет маркетплейсов в 1С:УНФ

Интеграция с популярными маркетплейсами, такими как Озон, Вайлдберриз, Яндекс.Маркет и другими, позволяет автоматизировать управление различными аспектами бизнеса. Этот процесс подразумевает соединение учетной системы компании с торговыми площадками.

Читать
Заказы с маркетплейсов в 1С: от настройки складов до устранения расхожденийЗаказы с маркетплейсов в 1С: от настройки складов до устранения расхождений

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

Читать