Помогите разобраться, кто сталкивался с похожей проблемой
InvoiceТип = ФабрикаXDTO.Тип("DataTransfer", "Invoice");
InvoiceDetailТип = ФабрикаXDTO.Тип("DataTransfer", "InvoiceDetail");
Invoice = ФабрикаXDTO.Создать(InvoiceТип);
Invoice.ID = Заказ.Номер;
Invoice.SubjectID = СокрЛП(Заказ.Контрагент.УникальныйИдентификатор());
Invoice.InvoiceType = ?(Заказ.ВидКонтрагента = Перечисления.ВидКонтрагента.Организация, 1, 0);
Для Каждого Выборка Из Заказ.ТаблицаТоваров Цикл
InvoiceDetail = ФабрикаXDTO.Создать(InvoiceDetailТип);
InvoiceDetail.ProductID = СокрЛП(Выборка.Номенклатура.УникальныйИдентификатор());
InvoiceDetail.Quantity = Выборка.Количество;
InvoiceDetail.Weight = Выборка.Вес;
InvoiceDetail.Amount = Выборка.Сумма;
Invoice.Detailing.Добавить(InvoiceDetail);
КонецЦикла;
РезультатXML = Новый ЗаписьXML;
РезультатXML.УстановитьСтроку("UTF-8");
ФабрикаXDTO.ЗаписатьXML(РезультатXML, Invoice);
Результат = РезультатXML.Закрыть();
// устанавливаем соединение с сервером
Если ПустаяСтрока(Сервер) Или ПустаяСтрока(Ресурс) Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не удалось установить соединение с сервером, не указаны параметры соединения с сервером";
Сообщение.Сообщить();
Иначе
Соединение = Новый HTTPСоединение(Сервер,,,,,,);
HTTPЗапрос = Новый HTTPЗапрос(Ресурс);
HTTPЗапрос.УстановитьТелоИзСтроки(Результат);
Результат = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
Соединение = Неопределено;
КонецЕсли;
(6) возможно, но вероятно вы обратились на устаревший урл, и система вам говорит, что нужно обратиться на другой.
Это стандартное поведение хорошей поддержки.
У меня была подобная проблема.
Админ по моей просьбе опубликовал базу 1С на веб-сервере. Эта самая база через веб-клиент работает нормально, а если ей отправить HTTP-запросы или обратиться через ODATA - ошибка 301, хоть убейся об стену.
Решилось всё довольно просто. Админ опубликовал базу под именем в ВЕРХНЕМ регистре, а я обращался к ней в нижнем. Из-за этого был редирект. Прописал у себя в настройках в верхнем регистре - и всё заработало.
(17) У меня похожая ситуация была. Спасибо что натолкнул на мысль куда копать. Были опубликованы базы, и их копии. И на живой все ок, на копии ни в какую не работало, хотя код взят с живой базы, рабочий. Но у меня отличие в том , что имена базы и сервисов были написаны вообще кэмел стилем, т.е. и верхний регистр, и нижний. Локализацию проблемы осложняло то что через браузер все ок, а через 1с как придется. После того как имена всех баз и урлы переименованы в нижний регистр проблемы с 301-й ошибкой ушли. кстати офф топ, зачастую, возникает ошибка 500-я ошибка, если демонически обновить конфу в базе которая опубликована, причем рандомно, 5 раз постучишься все ок, на 6-й будет косяк, так что обновлять опубликованные базы все таки лучше не динамически.
если 301 возвращает, обычно в заголовках ответа должен быть новый адрес ресурса в "Location", сделайте отдельную фукнцию с передачей строки ресурса, и если при вызове метода HTTP возвращает 301 ищите новый Location в заголовке, вызывайте саму себя с указанием значения Location...
чтото типа:
Функция ЗагрузитьФайл(url) Экспорт
СтруктураURI = ОбщегоНазначенияКлиентСервер.СтруктураURI(url);
Соединение = Новый HTTPСоединение(СтруктураURI.Хост, , , , , , Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос(СтруктураURI.ПутьНаСервере);
Ответ = Соединение.Получить(Запрос);
Если Ответ.КодСостояния = 302 Тогда // или 301
НовыйАдрес = Ответ.Заголовки.Получить("Location"); // тут конечно можно добавить проверку на заполненность
Результат = ЗагрузитьФайл(НовыйАдрес);
ИначеЕсли Ответ.КодСостояния = 200 Тогда
Результат = Ответ.ПолучитьТелоКакДвоичныеДанные();
Иначе
Результат = Неопределено;
КонецЕсли;
Возврат Результат;
КонецФункции
ли 301 возвращает, обычно в заголовках ответа должен быть новый адрес ресурса в "Location", сделайте отдельную фукнцию с передачей строки ресурса, и если при вызове метода HTTP возвращает 301 ищите новый Location в заголовке, вызывайте саму себя с указанием значения Location...
чтото типа:
Так то это да, Я описывал ситуацию с 301-й ошибкой когда одинэс чудит, заголовки в таком случае пустые. еще раз, из 1с стучимся в 1с. Заголовков ответа нет. только код состояния. Если такой косяк, смотреть на регистр символов в запросе, должны совпадать с тем что указано в публикации базы. Про 301-ую ошибку при обращении к внешним ресурсам(не 1с), я не писал. и там да, должно быть так как Вы описываете.
Спасибо за совет. У меня была похожая ситуация. В Url был путь с названием базы в верхнем регистре и похоже поэтому была ошибка 301 в веб сервисах. Как изменил на нижний регистр название базы в url, так все и заработало.