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", но мало ли кто сталкивался...
|
|