|
Ошибка при синхронизации мобильной версии с компьютерной | ☑ | ||
---|---|---|---|---|
0
Antoha18rus
04.12.19
✎
19:20
|
Вообщем, создал 2 ИС, одна мобильная, другая компьютерная, разница лишь в том что в компьютерной версии есть Web-сервис
Итак, в чем суть вопроса, при нажатии на синхронизацию вылезает такая ошибка: {ОбщаяКоманда.ВыполнитьСинхронизацию.МодульКоманды(24)}:Ошибка при вызове метода контекста(Синхронизация):Ошибка вызова операции сервиса:{DataTransfer}:ОбменДанными:Синхронизация(): Ошибка SOAP сервера: Неизвестная ошибка. {WebСервис.ОбменДанными.Модуль(12)}:Ошибка при вызове метода контекста(Начать Чтение) по причине: {WebСервис.ОбменДанными.Модуль(12)}:Ошибка при вызове метода контекста(Начать Чтение) по причине: по причине: Номер сообщения меньше или равен номеру ранее принятого сообщения Таки вот и собсна ошибка (я еще обучаюсь в 1С:Предприяте) если вы можете, то сразу ткните на ошибку, ото у меня пока аллергия на заумные фразочки Вот код общей команды(мобильная ИС): &НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) Если ВыполнитьСинхронизациюНаСервере() Тогда Сообщить("Синхронизация прошла успешно!"); Иначе Сообщить("При синхронизации были ошибки!"); КонецЕсли; КонецПроцедуры &НаСервере Функция ВыполнитьСинхронизациюНаСервере() Попытка ВСОпределение = Новый WSОпределения("http://192.168.43.158/Lesprom/ws/ОбменДанными.1cws?wsdl"); ВСервис = ВСОпределение.Сервисы.Получить("DataTransfer","ОбменДанными"); ВТочкаВхода = ВСервис.ТочкиПодключения.Получить("ОбменДаннымиSoap"); ВОперация = ВТочкаВхода.Интерфейс.Операции.Получить("Синхронизация"); Данные = Новый ХранилищеЗначения(ЗарегестрироватьВыгрузку(), Новый СжатиеДанных(9)); ДанныеXDTO = ВСОпределение.ФабрикаXDTO.Создать(ВОперация.Параметры.Получить("Данные").Тип, Данные); ВСПрокси = Новый WSПрокси(ВСОпределение, "DataTransfer","ОбменДанными","ОбменДаннымиSoap") ; Ответ = ВСПрокси.Синхронизация(ДанныеXDTO); ПринятьИзменениеПоПлану(Ответ.Получить()); Возврат Истина Исключение Сообщить(ОписаниеОшибки()); Возврат Ложь; КонецПопытки; КонецФункции Процедура ПринятьИзменениеПоПлану(СтрокаСообщения); ЧтениеХМЛ = Новый ЧтениеXML; ЧтениеХМЛ.УстановитьСтроку(СтрокаСообщения); ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); ЧтениеСообщения.НачатьЧтение(ЧтениеХМЛ); Пока ВозможностьЧтенияXML(ЧтениеХМЛ) Цикл Данные = ПрочитатьXML(ЧтениеСообщения.ЧтениеXML); Если Не Данные = Неопределено Тогда Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель; Данные.ОбменДанными.Загрузка = Истина; Данные.Записать(); КонецЕсли; КонецЦикла; ЧтениеСообщения.ЗакончитьЧтение(); КонецПроцедуры Функция ЗарегестрироватьВыгрузку() ЗаписьХМЛ = Новый ЗаписьXML; ЗаписьХМЛ.УстановитьСтроку(); ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения(); Узел = ПланыОбмена.ОбменСМобильнымиУстройствами.НайтиПоКоду("ЦБ"); ЗаписьСообщения.НачатьЗапись(ЗаписьХМЛ,Узел); ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(Узел,ЗаписьСообщения.НомерСообщения); Пока ВыборкаИзменений.Следующий() Цикл ОбъектОбмена = ВыборкаИзменений.Получить(); ЗаписатьXML(ЗаписьХМЛ,ОбъектОбмена); КонецЦикла; ЗаписьСообщения.ЗакончитьЗапись(); Возврат ЗаписьХМЛ.Закрыть(); КонецФункции Вот код компьютерной ИС(Web-Сервис): Функция Синхронизация(Данные) ОтветКлиенту = ЗарегестрироватьВыгрузку(Данные.Получить()); Возврат Новый ХранилищеЗначения(ОтветКлиенту, Новый СжатиеДанных(9)); КонецФункции Функция ЗарегестрироватьВыгрузку(СтрокаСообщения) ЧтениеХМЛ = Новый ЧтениеXML; ЧтениеХМЛ.УстановитьСтроку(СтрокаСообщения); ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); ЧтениеСообщения.НачатьЧтение(ЧтениеХМЛ); Отправитель = ЧтениеСообщения.Отправитель; Пока ВозможностьЧтенияXML(ЧтениеХМЛ) Цикл Данные = ПрочитатьXML(ЧтениеСообщения.ЧтениеXML); Если Не Данные = Неопределено Тогда Данные.ОбменДанными.Отправитель = Отправитель; Данные.ОбменДанными.Загрузка = Истина; Данные.Записать(); КонецЕсли; КонецЦикла; ЧтениеСообщения.ЗакончитьЧтение(); ЗаписьХМЛ = Новый ЗаписьXML; ЗаписьХМЛ.УстановитьСтроку(); ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения(); ЗаписьСообщения.НачатьЗапись(ЗаписьХМЛ,Отправитель); ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(Отправитель,ЗаписьСообщения.НомерСообщения); Пока ВыборкаИзменений.Следующий() Цикл ОбъектОбмена = ВыборкаИзменений.Получить(); ЗаписатьXML(ЗаписьХМЛ,ОбъектОбмена); КонецЦикла; ЗаписьСообщения.ЗакончитьЗапись(); Возврат ЗаписьХМЛ.Закрыть(); КонецФункции УЖЕ СЛОМАЛ ГОЛОВУ, НЕ ПОНИМАЮ ЧТО НЕ ТАК, ПОМОГИТЕ :з |
|||
1
Cyberhawk
04.12.19
✎
19:58
|
Рано тебе таким заниматься еще
|
|||
2
Antoha18rus
05.12.19
✎
11:46
|
куда мне деваться)) у меня практика такая
Кстати, еще если все это делать в 1 ИС (мобильная и компьютерная вместе, то все работает) |
|||
3
Borteg
05.12.19
✎
11:48
|
(0) Номер сообщения меньше или равен номеру ранее принятого сообщения
|
|||
4
Antoha18rus
26.02.20
✎
20:55
|
//СохранитьвPDF
ТабДок.Защита=Истина; ВремФайл=ПолучитьИмяВременногоФайла("pdf"); ТабДок.Записать(ВремФайл,ТипФайлаТабличногоДокумента.PDF); ЗапуститьПриложение(ВремФайл); |
|||
5
palsergeich
26.02.20
✎
21:28
|
(0) номера сообщений в пакете и плане обмена приведи впорядок
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |