Настройка подписчиков
Пошаговое руководство по созданию подписчиков разных типов.
HTTP-подписчик
Отправка сообщений на REST API endpoint.
Шаг 1. Создание эндпоинта
Сначала настройте подключение в справочнике инт_Эндпоинты:
| Реквизит | Пример значения |
|---|---|
| Наименование | WMS Production |
| Сервер | wms.example.com |
| Порт | 443 |
| Защищённое соединение | ✅ (HTTPS) |
| Таймаут | 30 сек |
Шаг 2. Создание подписчика
В справочнике инт_ПодписчикиHTTP:
| Реквизит | Значение |
|---|---|
| Наименование | WMS API - Заказы |
| Активен | ✅ |
| Эндпоинт | WMS Production |
| Путь | /api/v1/orders |
| Метод HTTP | POST |
| Тип авторизации | 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:
// Доступные переменные:
// - ОтветHTTP: Структура (КодСостояния, Тело, Заголовки)
// - ИсходныеДанные: Ссылка на объект
Если ОтветHTTP.КодСостояния = 201 Тогда
// Успешно создано
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ОтветHTTP.Тело);
Ответ = ПрочитатьJSON(ЧтениеJSON);
// Сохраняем внешний ID
ВнешнийID = Ответ.Получить("externalId");
РегистрыСведений.инт_ИдентификаторыВнешнихСистем.Записать(
ИсходныеДанные,
"WMS",
ВнешнийID
);
ИначеЕсли ОтветHTTP.КодСостояния >= 400 Тогда
// Логируем ошибку
ЗаписьЖурналаРегистрации("WMS.Ошибка",
УровеньЖурналаРегистрации.Ошибка,
,
ИсходныеДанные,
ОтветHTTP.Тело);
КонецЕсли;Шаг 5. Привязка к потоку
- Откройте поток данных (
инт_ПотокиДанных) - Перейдите на вкладку Подписчики потока
- Добавьте созданного подписчика
RabbitMQ-подписчик
Публикация сообщений в очередь RabbitMQ.
Настройка эндпоинта
| Реквизит | Значение |
|---|---|
| Сервер | rabbitmq.example.com |
| Порт | 5672 |
| Virtual Host | /integration |
| Логин | publisher |
| Пароль | ****** |
Настройка подписчика
В справочнике инт_ПодписчикиRabbitMQ:
| Реквизит | Значение |
|---|---|
| Наименование | RabbitMQ Orders |
| Эндпоинт | RabbitMQ Production |
| Exchange | orders.exchange |
| Routing Key | orders.new |
| Durable | ✅ |
Схема маршрутизации
┌─────────────┐ ┌────────────────────┐ ┌─────────────────┐
│ Publisher │────▶│ orders.exchange │────▶│ orders.queue │
│ (1C) │ │ (direct/topic) │ │ (consumer) │
└─────────────┘ └────────────────────┘ └─────────────────┘
│
│ routing_key: orders.new
▼Kafka-подписчик
Публикация сообщений в топик Apache Kafka.
Настройка топика
В справочнике инт_ТопикиKafka:
| Реквизит | Значение |
|---|---|
| Наименование | Orders Topic |
| Имя топика | orders-events |
| Bootstrap Servers | kafka1: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 | ✅ |
Формат сообщения
{
"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 секПроверка подписчика
Тестовая отправка
// Получить сформированное сообщение
ДанныеСообщения = РегистрыСведений.инт_ОчередьИсходящихСообщений
.ПолучитьДанныеОчередиПоИдентификатору(
ИдентификаторСообщения,
"СформированноеСообщение"
);
// Отправить вручную (для HTTP)
Ответ = инт_КоннекторHTTP.Отправить(
Подписчик,
ДанныеСообщения.СформированноеСообщение
);Просмотр статуса рассылки
Регистр инт_ТекущийСтатусРассылкиСообщений:
| Измерение | Значение |
|---|---|
| ИдентификаторСообщения | UUID сообщения |
| Подписчик | Ссылка на подписчика |
| Ресурс | Значение |
|---|---|
| Статус | Отправлено / ОшибкаОтправки |
| Комментарий | Текст ошибки |
Рекомендации
Разделение сред
Создавайте отдельные эндпоинты для dev/test/prod. Переключайте среду через реквизит подписчика.
Мониторинг
Настройте алерты на статус ОшибкаОтправки для критичных подписчиков.
Безопасность
Не храните секреты (пароли, токены) в открытом виде. Используйте защищённое хранилище или переменные окружения.