Через API СБИС получаю ссылку на документ вида https://disk.sbis.ru/disk/api/v1/длинная_длинная_строка.
В браузере при переходе по ссылке в итоге получаю XML-документ.
Если пытаюсь получить его программно, то в ответ прилетает то 302, то 307 код...
ИмяВходящегоФайла = "t:\1.xml";
СерверИсточник = "disk.sbis.ru";
Адрес = Новый HTTPЗапрос("/disk/api/v1/длинная_длинная_строка");
НТТР = Новый HTTPСоединение(СерверИсточник,443,,,,15,Новый ЗащищенноеСоединениеOpenSSL());
Ответ = НТТР.ОтправитьДляОбработки(Адрес, ИмяВходящегоФайла);
Куда копать?
Может, можно XML сразу через API СБИС получить, но в описалове не нашел ничего похожего.
(5) Посмотрел как я делал - стучусь на online.sbis.ru, запрос - disk/api/v1/длинная_строка, в заголовках передаю id сессии, content-type и user-agent. Попробуйте, в общем
Спасибо, помогло! Делаю прогрузку кодов маркировки, все данные возвращаются по API в структуре ответа, а сами коды какого-то... засунуты во вложение в XML файл.
Если что вот код разбора самого xml, после получения, чтобы вытащить из него коды маркировки:
код разбора xml
ТЧСбисНом = Новый ТаблицаЗначений;
ТЧСбисНом.Колонки.Добавить("НаименованиеСбис");
ТЧСбисНом.Колонки.Добавить("КодСбис");
ТЧСбисНом.Колонки.Добавить("КодМаркировки");
Пока ЧтениеXMLФайл.Прочитать() Цикл
Если ЧтениеXMLФайл.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Поле = ЧтениеXMLФайл.Имя;
Если Поле = "ТаблСчФакт" Тогда
Индекс = 1;
Пока Истина Цикл
Попытка
Фабрика=Новый ФабрикаXDTO;
ОбXDTO=Фабрика.ПрочитатьXML(ЧтениеXMLФайл);
Попытка
НаименованиеСбис = ОбXDTO.СведТов.НаимТов;
КоличествоСбис = Число(ОбXDTO.СведТов.КолТов);
КодСбис = ОбXDTO.СведТов.ДопСведТов.КодТов;
Пока Не КоличествоСбис = 0 Цикл
НовСтр = ТЧСбисНом.Добавить();
НовСтр.НаименованиеСбис = НаименованиеСбис;
НовСтр.КодСбис = КодСбис;
НовСтр.КодМаркировки = ОбXDTO.СведТов.ДопСведТов.НомСредИдентТов.КИЗ[КоличествоСбис-1];
КоличествоСбис = КоличествоСбис -1;
КонецЦикла;
Исключение
Для Каждого СтрДТ Из ОбXDTO.СведТов Цикл
НаименованиеСбис = СтрДТ.НаимТов;
КоличествоСбис = Число(СтрДТ.КолТов);
КодСбис = СтрДТ.ДопСведТов.КодТов;
Пока Не КоличествоСбис = 0 Цикл
НовСтр = ТЧСбисНом.Добавить();
НовСтр.НаименованиеСбис = НаименованиеСбис;
НовСтр.КодСбис = КодСбис;
НовСтр.КодМаркировки = СтрДТ.ДопСведТов.НомСредИдентТов.КИЗ[КоличествоСбис-1];
КоличествоСбис = КоличествоСбис -1;
КонецЦикла;
КонецЦикла;
КонецПопытки;
Исключение
Прервать;
КонецПопытки;
Индекс = Индекс + 1;
КонецЦикла;
Прервать;
КонецЕсли;
КонецЕсли;
КонецЦикла;
ЧтениеXMLФайл.Закрыть();