| 0
    
        pessok   13.07.16✎ 17:41 | 
        Всем привет, коллеги! Платформа 8.3.8.1747. Натолкнулся тут на интересное. Вообще с мобильной платформой познакомился буквально вчера, вот изучаю.
Итак, есть мобильная конфа, соединяется через ws с головной базой, получает данные, потом отдает измененные. В головной базе сделан веб-сервис с двумя командами: одна отдает, вторая записывает в базу. В мобильном приложении кроме одной обработки представления данных больше никаких метаданных нет (по крайней мере пока).
 
 Считывается из головной базы все прекрасно, а вот при записи вот такая ошибка
 
 
 
 {Обработка.СписокЗаказовКлиентов.Форма.Форма.Форма(157)}: Error calling context method (ApplyOrdersInfo)
 , reason:
 Web service call error. Service operation call error: {raybtOrders}:pessokRemoteDriversExchange:ApplyOrdersInfo()
 , reason:
 Web service call error. Unknown error. Internet error:  java.io.EOFException
 , reason:
 Internet error:  java.io.EOFException
 
 
 Если запустить мобильное приложение в тонком клиенте - все отрабатывает ожидаемо.
 
 Код обработки в мобильном приложении:
 
 
 
&НаСервере
 Процедура ПринятьОплатуНаСервере()
 
 Прокси = WSСсылки.ПолучениеДанныхПоСпискуЗаказов.СоздатьWSПрокси("Orders", "pessokRemoteDriversExchange", "pessokRemoteDriversExchangeSoap");
 Прокси.Пользователь = "mobile";
 Прокси.Пароль = "1";
 
 ПространствоИмен = "DriverApplying";
 
 ДатаУстановки = ПреобразоватьДату(ДатаОтбора);
 ТаблицаДанныхXDTO = РаботаСXDTO.СоздатьКоллекциюXDTO(Прокси, ПространствоИмен, "Свойства", ПространствоИмен, "СтрокаУстановки", "СтрокиУстановки", ТоварыЗаказа.Выгрузить());
 
 Попытка
 
 РезультатОбмена = Прокси.ApplyOrdersInfo(ДатаУстановки, ТаблицаДанныхXDTO);
 
 Исключение
 Сообщить(ОписаниеОшибки());
 Возврат;
 
 КонецПопытки;
 
 Если РезультатОбмена Тогда
 ОбновитьДанные();
 Сообщить("Синхронизация выполнена!");
 Иначе
 Сообщить("Ошибка синхронизации!");
 КонецЕсли;
 
 КонецПроцедуры
 
 Функция СоздатьКоллекциюXDTO(WSПрокси, ПространствоИменКоллекции, ИмяКоллекции, ПространствоИменДанныхКоллекции, ИмяДанныхКоллекции, ИмяСтрокиДанныхКоллекции, ИсходнаяТаблица, СтруктураСоответствий = Неопределено) Экспорт
 
 ТипXDTOСвойства             = WSПрокси.ФабрикаXDTO.Тип(ПространствоИменКоллекции, ИмяКоллекции);
 XDTOСвойства                 = WSПрокси.ФабрикаXDTO.Создать(ТипXDTOСвойства);
 ТипXDTOРезультатОперации     = WSПрокси.ФабрикаXDTO.Тип(ПространствоИменДанныхКоллекции, ИмяДанныхКоллекции);
 
 
 КолонкиИсходнойТаблицы = ИсходнаяТаблица.Колонки;
 
 Для Каждого ТекСтрИсходнойТаблицы Из ИсходнаяТаблица Цикл
 
 XDTOПозиции = WSПрокси.ФабрикаXDTO.Создать(ТипXDTOРезультатОперации);
 
 Для Каждого Колонка Из КолонкиИсходнойТаблицы Цикл
 
 ИмяКолонки = Колонка.Имя;
 
 Если XDTOПозиции.Свойства().Получить(ИмяКолонки) = Неопределено Тогда
 Продолжить;
 КонецЕсли;
 
 ЗначениеКолонки = ТекСтрИсходнойТаблицы[ИмяКолонки];
 
 Если ТипЗнч(ЗначениеКолонки) = Тип("Булево") Тогда
 
 Если ЗначениеКолонки Тогда
 ЗначениеКолонки = 1;
 Иначе
 ЗначениеКолонки = 0;
 КонецЕсли;
 
 КонецЕсли;
 
 XDTOПозиции[ИмяКолонки] = ЗначениеКолонки;
 
 КонецЦикла;
 
 Если СтруктураСоответствий <> Неопределено Тогда
 
 Для Каждого ЗаписьСтруктуры Из СтруктураСоответствий Цикл
 
 XDTOПозиции[ЗаписьСтруктуры.Значение] = ТекСтрИсходнойТаблицы[ЗаписьСтруктуры.Ключ];
 
 КонецЦикла;
 
 КонецЕсли;
 
 XDTOСвойства[ИмяСтрокиДанныхКоллекции].Добавить(XDTOПозиции);
 
 КонецЦикла;
 
 Возврат XDTOСвойства;
 
 
 
 Код веб-сервиса в головной базе:
 
 
 
 ДанныеУстановки = ApplyingInfo.СтрокиУстановки;
 
 КвалификаторЧисла = Новый КвалификаторыЧисла(10);
 КвалификаторСтроки = Новый КвалификаторыСтроки(100);
 МассивТиповЧисло = Новый Массив;
 МассивТиповЧисло.Добавить(Тип("Число"));
 МассивТиповСтрока = Новый Массив;
 МассивТиповСтрока.Добавить(Тип("Строка"));
 
 ОписаниеТиповЧ = Новый ОписаниеТипов(МассивТиповЧисло, , , КвалификаторЧисла);
 ОписаниеТиповС = Новый ОписаниеТипов(МассивТиповСтрока, , , , КвалификаторСтроки);
 
 
 ТаблицаДанных = Новый ТаблицаЗначений;
 ТаблицаДанных.Колонки.Добавить("НомерЗаказа", ОписаниеТиповС);
 ТаблицаДанных.Колонки.Добавить("Номенклатура", ОписаниеТиповС);
 ТаблицаДанных.Колонки.Добавить("НомерСтроки", ОписаниеТиповЧ);
 ТаблицаДанных.Колонки.Добавить("Пометка", ОписаниеТиповЧ);
 
 
 Для Каждого СтрокаУстановки Из ДанныеУстановки Цикл
 
 ЗаполнитьЗначенияСвойств(ТаблицаДанных.Добавить(), СтрокаУстановки);
 
 КонецЦикла;
 
 //тут обработка данных, выбираем то, что надо, обрабатываем ошибки
 
 Если Результат Тогда
 ЗафиксироватьТранзакцию();
 Возврат Истина;
 Иначе
 ОтменитьТранзакцию();
 Возврат Ложь;
 КонецЕсли;
 
 
 
 
 Куда ковырнуть? Умом то я понимаю, что "Unknown error", но мало ли кто сталкивался...
 |  |