Имя: Пароль:
1C
 
Мобильная платформа. Передача больших файлов на сервер.
0 nick_p-k
 
06.11.15
14:18
Передаю с мобильного приложения фотографии на сервер.
Вроде все работало, пока не установил релиз 8.3.6.215. Перестали отправляться файлы больше 100 кБ.
Вот думаю: откатиться на предыдующий релиз или все-таки надо бить файл на части?
1 nick_p-k
 
06.11.15
14:18
Ну и код процедуры
Функция ВыгрузитьФайлВЦентральнуюБазу(Файл)
    ЗаписьXML = новый ЗаписьXML;
    ЗаписьXML.УстановитьСтроку("UTF-16");
    ЗаписьXML.ЗаписатьОбъявлениеXML();
    ЗаписьXML.ЗаписатьНачалоЭлемента("File");
    ЗаписьXML.ЗаписатьАтрибут("Наименование",СокрЛП(Файл.Наименование));
    ЗаписьXML.ЗаписатьАтрибут("Расширение",СокрЛП(Файл.Расширение));
    ЗаписьXML.ЗаписатьАтрибут("Идентификатор",ИдентификацияОбъектовСервер.ПолучитьИдентификаторПоСсылке(Файл));
    Строка64 = Base64Строка(Файл.ФайлХранилище.Получить());
    Строка64 = СтрЗаменить(Строка64, Символ(10), "");
    Строка64 = СтрЗаменить(Строка64, Символ(13), "");
    ЗаписьXML.ЗаписатьАтрибут("ДвоичныеДанные",Строка64);
    ЗаписьXML.ЗаписатьКонецЭлемента();
    XMLСтрока = ЗаписьXML.Закрыть();
    
    СтрокаСоединения = Константы.НастройкиПодключенияСервер.Получить();
    Соединение = Новый HTTPСоединение(СтрокаСоединения,
                                         ,     // порт
                                         Константы.НастройкаПодключенияИмяПользователя.Получить(),
                                         Константы.НастройкаПодключенияПароль.Получить(),
                                        ,
                                        );
                                        
    Запрос = Новый HTTPЗапрос("hs/MobileDevices/SetFile");
    Запрос.УстановитьТелоИзСтроки(XMLСтрока);
    
    
    Попытка
        Ответ = Соединение.ОтправитьДляОбработки(Запрос);
    Исключение
        Причина = ОписаниеОшибки();
        Сообщить(Причина);
        Возврат ложь;
    КонецПопытки;
    Если Ответ.КодСостояния <> 200 Тогда
        //Сообщить(Ответ.КодСостояния);
        Возврат ложь;
    КонецЕсли;
    
    Возврат истина;
КонецФункции
2 nick_p-k
 
06.11.15
14:32
ап
3 DitriX
 
07.11.15
13:37
Тут апать нечего, я сейчас с 1С воюю на эту тему :)
Такой баг проявляетс только с мобильной платофрмы версии 190+ (т.е. на 190 все работает), и только в том случае, если база на SQL висит, если файловая - все работает.
4 DitriX
 
07.11.15
13:41
Ну и подсказка вам на будущее
Весь ваш код надо переделать, сделайте просто:
Запрос.УстановитьТелоИзДвоичныхДанных(Файл.ФайлХранилище.Получить());
А доп параметры - передавайте через список заголовков.
Делайте красиво :)А то если бы я не знал про эту ошибку, счел бы, что просто ваш код не верно отрабатывает :)
5 shachneff
 
11.11.15
13:25
(3) 1С об этом знает? Не нашел в списках зарегистрированных ошибок, не нашел на партнерском. Собственно, и проблему-то на 8.3.6.215 повторить не могу. ЧЯНДТ?
Ошибка? Это не ошибка, это системная функция.