При разработке интеграции между 1С и личным кабинетом транспортной компании «Деловые линии» программисты часто сталкиваются с тем, что старые обработки или примеры кода перестают работать, выдавая ошибку 301 Moved Permanently. Эта ошибка означает, что ресурс навсегда перемещен по другому адресу, но автоматического перенаправления в коде 1С не происходит или оно ведет на общую страницу сайта вместо программного интерфейса. Давайте разберем, как правильно настроить соединение и какие инструменты использовать для стабильной работы.
Первым делом проанализируем ситуацию, с которой сталкиваются разработчики при попытке авторизации. Ошибка 301 возникает, когда в коде указан адрес основного сайта (например, dellin.ru), в то время как для программного взаимодействия выделен отдельный поддомен. Рассмотрим основные моменты:
НТТРЗапрос сервер пытается перенаправить запрос, что и вызывает код 301.api.dellin.ru.Посмотрим на пример правильной инициализации соединения в 1С:
// Неправильно: Соединение = Новый HTTPСоединение("dellin.ru",,,, Прокси, Истина);
// Правильно:
СерверAPI = "api.dellin.ru";
Соединение = Новый HTTPСоединение(СерверAPI, 443,,,,, Новый ЗащищенноеСоединениеOpenSSL());
Если вы все же получаете 301 или 302, проанализируем заголовки ответа (Headers). В заголовке Location сервер обычно указывает точный адрес, по которому он ожидает увидеть запрос. В 1С получить эти данные можно следующим образом:
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния = 301 Тогда
НовыйАдрес = Ответ.Заголовки.Получить("Location");
Сообщить("Ресурс перемещен. Новый адрес: " + НовыйАдрес);
КонецЕсли;
Важно помнить, что современные методы API «Деловых линий» (особенно версии v2 и v3) требуют не только логина и пароля от личного кабинета, но и наличия appkey. Без этого идентификатора сервер может обрывать соединение или возвращать ошибки доступа. Получить его нужно в разделе для разработчиков на официальном сайте ТК. Этот ключ передается в каждом JSON-запросе как обязательное поле.
Стандартные механизмы 1С для работы с HTTP (HTTPСоединение, HTTPЗапрос) требуют написания большого объема шаблонного кода для обработки заголовков, кодировок и преобразования JSON. Для упрощения этой задачи профессиональное сообщество рекомендует использовать открытую библиотеку «Коннектор» (от Владимира Бондаревского).
Рассмотрим, почему это удобно:
Content-Type и кодировками.Пример того, как может выглядеть отправка данных в «Деловые линии» через «Коннектор»:
ПараметрыЗапроса = Новый Структура;
ПараметрыЗапроса.Вставить("appkey", "ВАШ_УНИКАЛЬНЫЙ_КЛЮЧ");
ПараметрыЗапроса.Вставить("login", "ваш_логин");
ПараметрыЗапроса.Вставить("password", "ваш_пароль");
// Используем общий модуль КоннекторHTTP
Ответ = КоннекторHTTP.Post("https://api.dellin.ru/v1/public/auth.json", ПараметрыЗапроса);
Если Ответ.КодСостояния = 200 Тогда
ДанныеJSON = Ответ.Значение; // Библиотека сама десериализует JSON в структуру 1С
Сессия = ДанныеJSON.data.sessionID;
КонецЕсли;
Проанализируем ситуацию с версиями API. Обработки 2017 года, скорее всего, используют устаревшие методы или XML-структуры. Современная интеграция должна ориентироваться на API v3. Выделим ключевые особенности:
Разберем еще несколько моментов, которые помогут избежать проблем:
Подводя итог, можно сказать: если ваша старая обработка «Деловых линий» перестала работать, первым делом проверьте адрес сервера (api.dellin.ru), наличие appkey и рассмотрите возможность перехода на современную библиотеку обмена данными, такую как «Коннектор». Это значительно сократит время на отладку и сделает интеграцию более отказоустойчивой.