Как исправить ошибку 301 Moved Permanently при интеграции 1С с API «Деловых линий»?

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

При разработке интеграции между 1С и личным кабинетом транспортной компании «Деловые линии» программисты часто сталкиваются с тем, что старые обработки или примеры кода перестают работать, выдавая ошибку 301 Moved Permanently. Эта ошибка означает, что ресурс навсегда перемещен по другому адресу, но автоматического перенаправления в коде 1С не происходит или оно ведет на общую страницу сайта вместо программного интерфейса. Давайте разберем, как правильно настроить соединение и какие инструменты использовать для стабильной работы.

Выясняем причину ошибки: правильный адрес сервера

Первым делом проанализируем ситуацию, с которой сталкиваются разработчики при попытке авторизации. Ошибка 301 возникает, когда в коде указан адрес основного сайта (например, dellin.ru), в то время как для программного взаимодействия выделен отдельный поддомен. Рассмотрим основные моменты:

  1. Разделение интерфейсов: Основной домен компании предназначен для пользователей и браузеров. При обращении к нему через НТТРЗапрос сервер пытается перенаправить запрос, что и вызывает код 301.
  2. Корректный эндпоинт: Для работы через API необходимо использовать специализированный адрес api.dellin.ru.
  3. Протокол соединения: Обязательно использование защищенного протокола HTTPS.

Посмотрим на пример правильной инициализации соединения в 1С:


// Неправильно: Соединение = Новый HTTPСоединение("dellin.ru",,,, Прокси, Истина);
// Правильно:
СерверAPI = "api.dellin.ru";
Соединение = Новый HTTPСоединение(СерверAPI, 443,,,,, Новый ЗащищенноеСоединениеOpenSSL());

Использование заголовков ответа для диагностики

Если вы все же получаете 301 или 302, проанализируем заголовки ответа (Headers). В заголовке Location сервер обычно указывает точный адрес, по которому он ожидает увидеть запрос. В 1С получить эти данные можно следующим образом:


Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния = 301 Тогда
    НовыйАдрес = Ответ.Заголовки.Получить("Location");
    Сообщить("Ресурс перемещен. Новый адрес: " + НовыйАдрес);
КонецЕсли;

Обязательный параметр: Ключ приложения (AppKey)

Важно помнить, что современные методы API «Деловых линий» (особенно версии v2 и v3) требуют не только логина и пароля от личного кабинета, но и наличия appkey. Без этого идентификатора сервер может обрывать соединение или возвращать ошибки доступа. Получить его нужно в разделе для разработчиков на официальном сайте ТК. Этот ключ передается в каждом JSON-запросе как обязательное поле.

Упрощение работы с помощью библиотеки «Коннектор»

Стандартные механизмы 1С для работы с HTTP (HTTPСоединение, HTTPЗапрос) требуют написания большого объема шаблонного кода для обработки заголовков, кодировок и преобразования JSON. Для упрощения этой задачи профессиональное сообщество рекомендует использовать открытую библиотеку «Коннектор» (от Владимира Бондаревского).

Рассмотрим, почему это удобно:

Пример того, как может выглядеть отправка данных в «Деловые линии» через «Коннектор»:


ПараметрыЗапроса = Новый Структура;
ПараметрыЗапроса.Вставить("appkey", "ВАШ_УНИКАЛЬНЫЙ_КЛЮЧ");
ПараметрыЗапроса.Вставить("login", "ваш_логин");
ПараметрыЗапроса.Вставить("password", "ваш_пароль");

// Используем общий модуль КоннекторHTTP
Ответ = КоннекторHTTP.Post("https://api.dellin.ru/v1/public/auth.json", ПараметрыЗапроса);

Если Ответ.КодСостояния = 200 Тогда
    ДанныеJSON = Ответ.Значение; // Библиотека сама десериализует JSON в структуру 1С
    Сессия = ДанныеJSON.data.sessionID;
КонецЕсли;

Переход на актуальные методы API (v3)

Проанализируем ситуацию с версиями API. Обработки 2017 года, скорее всего, используют устаревшие методы или XML-структуры. Современная интеграция должна ориентироваться на API v3. Выделим ключевые особенности:

Типичные ошибки при интеграции

Разберем еще несколько моментов, которые помогут избежать проблем:

  1. Путаница с адресами: Не путайте адрес для получения справочников (терминалы, города) и адрес для расчета заказа. Всегда проверяйте актуальную документацию в ЛК разработчика.
  2. Обработка 404 vs 301: Иногда сервер настроен специфично, и при обращении к несуществующему методу по адресу основного сайта вместо 404 (Not Found) он отдает 301, пытаясь «приземлить» вас на главную страницу. Всегда проверяйте правильность пути (URI) после домена.
  3. Таймауты: Запросы на расчет стоимости могут длиться несколько секунд. Устанавливайте таймаут соединения не менее 30-60 секунд.

Подводя итог, можно сказать: если ваша старая обработка «Деловых линий» перестала работать, первым делом проверьте адрес сервера (api.dellin.ru), наличие appkey и рассмотрите возможность перехода на современную библиотеку обмена данными, такую как «Коннектор». Это значительно сократит время на отладку и сделает интеграцию более отказоустойчивой.

← На главную