Как адаптировать расширение Яндекс Маркета для УТ 10.3 и настроить загрузку заказов

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При попытке интегрировать современное расширение от Яндекс Маркета, изначально разработанное для конфигураций на управляемых формах (таких как УТ 11, КА 2 или ERP), в классическую 1С:Управление торговлей 10.3, разработчики часто сталкиваются с проблемой: авторизация проходит успешно, но заказы «сами собой» не загружаются. Проанализируем эту ситуацию и разберем по шагам, как заставить расширение работать в условиях обычных форм и старой архитектуры метаданных.

Выясняем причину проблемы: почему не работает стандартный механизм

Основная сложность заключается в архитектурном различии платформ. Официальное расширение Яндекс Маркета построено на использовании HTTP-сервисов. В современных конфигурациях (УТ 11) эти сервисы уже встроены или корректно добавляются расширением. Однако в УТ 10.3, работающей на обычных формах (часто в режиме совместимости со старыми версиями платформы), механизм расширений может не переносить объекты метаданных типа HTTP-сервисы должным образом, либо они требуют ручной публикации и настройки.

Рассмотрим подробнее модель взаимодействия. Яндекс Маркет использует так называемую Push-модель (API для партнеров). Это означает, что не ваша 1С обращается к Яндексу за списком заказов, а сервер Яндекса отправляет HTTP-запрос на ваш адрес (URL), когда покупатель делает заказ. Если в вашей конфигурации не настроена «точка входа» (публикация на веб-сервере с работающим HTTP-сервисом), Маркет просто не сможет «достучаться» до базы.

Шаг 1. Поиск методов обработки в коде расширения

Проанализируем содержимое расширения. Даже если сами объекты HTTP-сервисы не появились в дереве метаданных после импорта, программный код (модули), отвечающий за логику, скорее всего, на месте. Нам необходимо найти экспортные функции, которые должны вызываться при поступлении внешнего запроса. Как правило, они имеют следующие названия:

Выясним причину их «неактивности»: в старых конфигурациях эти функции являются лишь «обработчиками», но для их запуска нужен «приемник». Если вы нашли эти методы, но они нигде не используются (нет ссылок в коде), значит, вам необходимо самостоятельно создать инфраструктуру для их вызова.

Шаг 2. Создание и настройка точки входа (HTTP-сервиса)

Разберем, как создать точку входа вручную. Для работы с Яндекс Маркетом ваша база 1С должна быть опубликована на веб-сервере (например, Apache или IIS). Посмотрим на алгоритм действий:

  1. Откройте конфигуратор и проверьте, позволяет ли версия платформы и режим совместимости создать объект HTTP-сервис.
  2. Если возможность есть, создайте новый HTTP-сервис с корневым URL (например, market-api).
  3. Добавьте шаблоны путей для каждого метода Яндекса: /cart, /order/accept, /order/status.
  4. В каждом методе (обычно это POST) пропишите вызов соответствующей функции из расширения.

Пример того, как может выглядеть перенаправление запроса в модуле HTTP-сервиса:


Функция cartPOST(Запрос)
    // Вызываем экспортную функцию из общего модуля расширения
    Ответ = МодульЯндексМаркетаРасширение.ОбработкаCartPOST(Запрос);
    Возврат Ответ;
КонецФункции

Важный нюанс: Обратите внимание на авторизацию. Маркет передает в заголовке запроса специальный токен (Authorization), который вы должны проверять в коде 1С перед выполнением логики. Этот токен задается в личном кабинете продавца.

Шаг 3. Работа со статусом RESERVED и структурой JSON

Проанализируем ситуацию с заказом в статусе RESERVED. Этот статус крайне важен для реализации схемы FBS/DBS. Когда пользователь на Маркете нажимает «Оформить заказ», Маркет отправляет запрос POST /cart. Ваша система должна мгновенно проверить остатки и зарезервировать товар. Если 1С ответит успешно, заказ перейдет в стадию оформления.

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


{
  "order": {
    "id": 123456,
    "status": "RESERVED",
    "currency": "RUR",
    "items": [
      {
        "feedId": 789,
        "offerId": "SKU-001",
        "feedCategoryId": "10",
        "count": 2,
        "price": 1500.00
      }
    ],
    "delivery": {
        "type": "DELIVERY"
    }
  }
}

Поскольку в УТ 10.3 используется старая платформа, работа с JSON через ЧтениеJSON может отличаться от реализации в новых версиях 8.3. Проверьте, что расширение корректно десериализует входящий поток. Если возникают ошибки, возможно, придется переписать парсинг на использование объекта JSONData или сторонних библиотек.

Шаг 4. Альтернативный вариант (Pull-модель)

Если настройка входящих соединений (Push) вызывает непреодолимые трудности (например, база находится за строгим брандмауэром или нет возможности опубликовать веб-сервер с SSL), рассмотрим альтернативу — Pull-модель.

Вместо того чтобы ждать запроса от Яндекса, мы сами будем периодически опрашивать API Маркета на предмет новых заказов. Для этого в 1С:

  1. Создаем регламентное задание, которое будет запускаться раз в 1–5 минут.
  2. В обработчике задания используем метод API Яндекса GET /campaigns/{campaignId}/orders.
  3. Получаем список заказов, фильтруем новые и создаем документы ЗаказПокупателя в УТ 10.3.

Этот способ менее оперативный, чем Push-уведомления, но он гораздо надежнее и проще в настройке для устаревших конфигураций, так как не требует внешней доступности вашей базы 1С.

Заключение

Подводя итог, можно сказать, что «натянуть» расширение от УТ 11 на УТ 10.3 «в один клик» не получится из-за отсутствия автоматической настройки HTTP-сервисов. Мы выяснили причину: расширение предоставляет логику (код), но не предоставляет точку входа в среде обычных форм.

Рекомендуемым решением является ручное создание HTTP-сервисов в конфигурации (если платформа 8.3) и проброс вызовов в функции расширения. При этом крайне важно уделить внимание обработке JSON и обеспечению безопасности через проверку авторизационных токенов Яндекса. Если же инфраструктура не позволяет использовать входящие запросы, переход на периодический опрос API (Pull-модель) станет стабильной и рабочей альтернативой для интеграции вашей УТ 10.3 с Яндекс Маркетом.

← На главную