Skip to content

Настройка подписчиков

Пошаговое руководство по созданию подписчиков разных типов.

HTTP-подписчик

Отправка сообщений на REST API endpoint.

Шаг 1. Создание эндпоинта

Сначала настройте подключение в справочнике инт_Эндпоинты:

РеквизитПример значения
НаименованиеWMS Production
Серверwms.example.com
Порт443
Защищённое соединение✅ (HTTPS)
Таймаут30 сек

Шаг 2. Создание подписчика

В справочнике инт_ПодписчикиHTTP:

РеквизитЗначение
НаименованиеWMS API - Заказы
Активен
ЭндпоинтWMS Production
Путь/api/v1/orders
Метод HTTPPOST
Тип авторизацииBearer Token
СериализацияJSON

Шаг 3. Настройка авторизации

В зависимости от типа авторизации:

Basic Auth

Логин: api_user
Пароль: ******

Bearer Token

Токен: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

OAuth 2.0

URL получения токена: https://auth.example.com/oauth/token
Client ID: integration_client
Client Secret: ******
Scope: orders:write

Шаг 4. Обработчик ответа (опционально)

Если нужно обработать ответ от API:

bsl
// Доступные переменные:
// - ОтветHTTP: Структура (КодСостояния, Тело, Заголовки)
// - ИсходныеДанные: Ссылка на объект

Если ОтветHTTP.КодСостояния = 201 Тогда
    // Успешно создано
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(ОтветHTTP.Тело);
    Ответ = ПрочитатьJSON(ЧтениеJSON);
    
    // Сохраняем внешний ID
    ВнешнийID = Ответ.Получить("externalId");
    
    РегистрыСведений.инт_ИдентификаторыВнешнихСистем.Записать(
        ИсходныеДанные,
        "WMS",
        ВнешнийID
    );
ИначеЕсли ОтветHTTP.КодСостояния >= 400 Тогда
    // Логируем ошибку
    ЗаписьЖурналаРегистрации("WMS.Ошибка",
        УровеньЖурналаРегистрации.Ошибка,
        ,
        ИсходныеДанные,
        ОтветHTTP.Тело);
КонецЕсли;

Шаг 5. Привязка к потоку

  1. Откройте поток данных (инт_ПотокиДанных)
  2. Перейдите на вкладку Подписчики потока
  3. Добавьте созданного подписчика

RabbitMQ-подписчик

Публикация сообщений в очередь RabbitMQ.

Настройка эндпоинта

РеквизитЗначение
Серверrabbitmq.example.com
Порт5672
Virtual Host/integration
Логинpublisher
Пароль******

Настройка подписчика

В справочнике инт_ПодписчикиRabbitMQ:

РеквизитЗначение
НаименованиеRabbitMQ Orders
ЭндпоинтRabbitMQ Production
Exchangeorders.exchange
Routing Keyorders.new
Durable

Схема маршрутизации

┌─────────────┐     ┌────────────────────┐     ┌─────────────────┐
│  Publisher  │────▶│  orders.exchange   │────▶│  orders.queue   │
│  (1C)       │     │  (direct/topic)    │     │  (consumer)     │
└─────────────┘     └────────────────────┘     └─────────────────┘

                           │ routing_key: orders.new

Kafka-подписчик

Публикация сообщений в топик Apache Kafka.

Настройка топика

В справочнике инт_ТопикиKafka:

РеквизитЗначение
НаименованиеOrders Topic
Имя топикаorders-events
Bootstrap Serverskafka1:9092,kafka2:9092

Настройка подписчика

В справочнике инт_ПодписчикиKafka:

РеквизитЗначение
НаименованиеKafka Orders
ТопикOrders Topic
Партиция-1 (авто)
Ключ сообщения{orderId}

Ключ сообщения

Ключ определяет партицию для гарантии порядка:

// Шаблон ключа: {orderId}
// Результат: "550e8400-e29b-41d4-a716-446655440000"

// Все сообщения с одним orderId попадут в одну партицию

JRPC 2.0-подписчик

Вызов методов по протоколу JSON-RPC 2.0.

Настройка подписчика

В справочнике инт_ПодписчикиJRPC:

РеквизитЗначение
НаименованиеLegacy System RPC
ЭндпоинтLegacy API
МетодcreateOrder
Включать ID

Формат сообщения

json
{
  "jsonrpc": "2.0",
  "method": "createOrder",
  "params": {
    "orderNumber": "00001",
    "date": "2026-01-27T10:30:00",
    "items": [...]
  },
  "id": "550e8400-e29b-41d4-a716-446655440000"
}

Подсистема интеграции (межбазовый обмен)

Обмен данными с другой базой 1С, использующей эту подсистему.

Настройка подписчика

В справочнике инт_ПодписчикиПодсистемаИнтеграции:

РеквизитЗначение
НаименованиеБаза склада
ЭндпоинтСклад Production
Входящий потокORDERS_IMPORT

Схема обмена

┌────────────────────────┐         ┌────────────────────────┐
│  База продаж           │         │  База склада           │
│                        │         │                        │
│  Исходящий поток:      │  HTTP   │  Входящий поток:       │
│  ORDERS_EXPORT        ─┼────────▶│  ORDERS_IMPORT         │
│                        │         │                        │
│  → ЗаказКлиента        │         │  → СоздатьЗаявкуНаСборку│
└────────────────────────┘         └────────────────────────┘

Настройка повторных попыток

Для всех типов подписчиков:

РеквизитОписаниеРекомендация
Пауза между попыткамиИнтервал (сек)30-60 сек
Количество попытокМаксимум повторов3-5

Экспоненциальная задержка

Для критичных интеграций настройте увеличивающиеся интервалы:

Попытка 1: немедленно
Попытка 2: через 30 сек
Попытка 3: через 60 сек
Попытка 4: через 120 сек
Попытка 5: через 300 сек

Проверка подписчика

Тестовая отправка

bsl
// Получить сформированное сообщение
ДанныеСообщения = РегистрыСведений.инт_ОчередьИсходящихСообщений
    .ПолучитьДанныеОчередиПоИдентификатору(
        ИдентификаторСообщения,
        "СформированноеСообщение"
    );

// Отправить вручную (для HTTP)
Ответ = инт_КоннекторHTTP.Отправить(
    Подписчик,
    ДанныеСообщения.СформированноеСообщение
);

Просмотр статуса рассылки

Регистр инт_ТекущийСтатусРассылкиСообщений:

ИзмерениеЗначение
ИдентификаторСообщенияUUID сообщения
ПодписчикСсылка на подписчика
РесурсЗначение
СтатусОтправлено / ОшибкаОтправки
КомментарийТекст ошибки

Рекомендации

Разделение сред

Создавайте отдельные эндпоинты для dev/test/prod. Переключайте среду через реквизит подписчика.

Мониторинг

Настройте алерты на статус ОшибкаОтправки для критичных подписчиков.

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

Не храните секреты (пароли, токены) в открытом виде. Используйте защищённое хранилище или переменные окружения.

Следующие шаги

Документация подсистемы интеграции