![]() |
|
Помогите с базой. Ошибка в обмене данными | ☑ | ||
---|---|---|---|---|
0
Fannasankh
10.08.13
✎
16:15
|
Здравствуйте. Прохожу обучение по книге Радченко в 24 занятие вот такая ошибка при попытке сделать Обмен данными в разделе Предприятие.
{ПланОбмена.Филиалы.МодульОбъекта(77)}: Ошибка при вызове метода контекста (НачатьЧтение) ЧтениеСообщения.НачатьЧтение(ЧтениеXML); по причине: Ошибка разбора XML: - [1,37] Фатальная ошибка: Extra content at the end of the document SystemId: file://C:/Users/Пользователь/AppData/Local/Temp/MessageФил_ЦБ.xml Код модуля плана обмена Филиалы Процедура ЗаписатьСообщениеСИзменениями() Экспорт Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "------Выгрузка в узел " + Строка(ЭтотОбъект) + "--------"; Сообщение.Сообщить(); Каталог = КаталогВременныхФайлов(); //Сформировать имя временного файла. ИмяФайла = Каталог + ?(Прав(Каталог, 1) = "\", "", "\") + "Message" + СокрЛП(Ссылка.Код) + "_" + СокрЛП(ПланыОбмена.Филиалы.ЭтотУзел().Код) + ".xml"; //Создать объект записи XML. //***Запись XML-документов ЗаписьXML = Новый ЗаписьXML; ЗаписьXML.ОткрытьФайл(ИмяФайла); ЗаписьXML.ЗаписатьОбъявлениеXML(); //***Инфраструктура сообщений. ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения(); ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Ссылка); Сообщение = Новый СообщениеПользователю; Сообщение.Текст = " Номер сообщения: " + ЗаписьСообщения.НомерСообщения; Сообщение.Сообщить(); //Получить выборку изменений данных. //***Механизм регистрации изменений. ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения); Пока ВыборкаИзменений.Следующий() Цикл //Записать данные в сообщение ***XML-сериализация. ЗаписатьXML(ЗаписьXML, ВыборкаИзменений.Получить()); КонецЦикла; ЗаписьСообщения.ЗакончитьЗапись(); ЗаписьXML.Закрыть(); Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "------Конец выгрузки-------"; Сообщение.Сообщить(); КонецПроцедуры Процедура ПрочитатьСообщениеСИзменениями() Экспорт Каталог = КаталогВременныхФайлов(); //Сформировать имя файла. ИмяФайла = Каталог + ?(Прав(Каталог, 1) = "\", "", "\") + "Message" + СокрЛП(Ссылка.Код) + "_" + СокрЛП(ПланыОбмена.Филиалы.ЭтотУзел().Код) + ".xml"; Файл = Новый Файл(ИмяФайла); Если Не Файл.Существует() Тогда Возврат; КонецЕсли; //***Чтение документов XML. //Попытаться открыть файл. ЧтениеXML = Новый ЧтениеXML; Попытка ЧтениеXML.ОткрытьФайл(ИмяФайла); Исключение Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Невозможно открыть файл обмена данными."; Сообщение.Сообщить(); Возврат; КонецПопытки; Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "-----Загрузка из " + Строка(ЭтотОбъект) + "-------"; Сообщение.Сообщить(); Сообщение = Новый СообщениеПользователю; Сообщение.Текст = " -Считывается файл " + ИмяФайла; Сообщение.Сообщить(); //Загрузить из найденного файла. //***Инфраструктура сообщений. ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); //Читать заголовок сообщения обмена данными - файла XML. ЧтениеСообщения.НачатьЧтение(ЧтениеXML); //Сообщение предназначено не для это узла. Если ЧтениеСообщения.Отправитель <> Ссылка Тогда ВызватьИсключение "Неверный узел"; КонецЕсли; //Удаляем регистрацию изменений для узла отправителя сообщения. //***Служба регистрации изменений. ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого); //Читаем данные из сообщения ***XML-сериализация. Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл //Читаем очередное значение. Данные = ПрочитатьXML(ЧтениеXML); //Не переносим изменения, полученные в главный из неглавного, //если есть регистрация изменения. Если Не ЧтениеСообщения.Отправитель.Главный И ПланыОбмена.ИзменениеЗарегистрировано(ЧтениеСообщения.Отправитель, Данные) Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = " - Изменения отклонены"; Сообщение.Сообщить(); Продолжить; КонецЕсли; //Записать полученные данные. Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель; Данные.ОбменДанными.Загрузка = Истина; Данные.Записать(); КонецЦикла; ЧтениеСообщения.ЗакончитьЧтение(); ЧтениеXML.Закрыть(); УдалитьФайлы(ИмяФайла); Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "------Конец загрузки--------"; Сообщение.Сообщить(); КонецПроцедуры Пожалуйста, помогите. Если нужно, вышлю выгрузку базы. |
|||
1
cons74
10.08.13
✎
18:58
|
Extra content at the end of the document = дополнительные (лишние) данные в конце документа (т.е. после закрывающего тега, видимо). По мне, так файл обмена кривой. Попробуй прогляди его (например, в IE).
|
|||
2
Fannasankh
11.08.13
✎
08:40
|
<?xml version="1.0" encoding="UTF-8"?>
вот это находится в файле обмена. Я так понимаю, это не то, что должно? |
|||
3
dmpl
11.08.13
✎
08:48
|
(2) Сделай пустую выгрузку (т.е. вообще без изменений) и выложи полностью, что формируется при этом.
|
|||
4
Fannasankh
11.08.13
✎
09:00
|
Не совсем понял, что значит без изменений...
Вот выгрузка базы http://rusfolder.com/37566488, после этой ошибки ничего не менял, ибо не знаю, что. |
|||
5
Fannasankh
11.08.13
✎
09:04
|
||||
6
dmpl
11.08.13
✎
09:20
|
(5) Файл вообще пустой, там нет ни заголовка сообщения, ни его тела.
|
|||
7
Fannasankh
11.08.13
✎
09:26
|
(6) А почему так получается? У меня же есть формирование файла. Выше код.
|
|||
8
Fannasankh
11.08.13
✎
09:28
|
(6) Я так понимаю, вот здесь файл формируется
Пока ВыборкаИзменений.Следующий() Цикл //Записать данные в сообщение ***XML-сериализация. ЗаписатьXML(ЗаписьXML, ВыборкаИзменений.Получить()); КонецЦикла; Да? |
|||
9
shuhard
11.08.13
✎
10:13
|
(0) у Радчено есть свой сайт, где он держит ответ за книжки:
http://devtrainingforum.v8.1c.ru/forum/ |
|||
10
Fannasankh
11.08.13
✎
10:17
|
(9) Я там написал, мне не отвечают. Есть похожая тема, там вопрос как-то решился, но я не понимаю как, у меня так не получается.
|
|||
11
dmpl
11.08.13
✎
20:46
|
(7) Есть подозрение что Ссылка - это предопределенный узел ИБ (т.к. если не ошибаюсь, выполнение этого модуля идет в контексте предопределенного узла), а надо передать ссылку не на предопределенный узел.
|
|||
12
hhhh
12.08.13
✎
01:44
|
(10) да, похоже вы пытаетесь узел сам с собой связать. Ничего не получится.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |