Имя: Пароль:
1C
1С v8
ПланыОбмена, ошибка при обмене
0 abbas
 
16.09.14
15:27
Доброе время суток, у меня две конфигурации самописанные, обмениваюсь через ПланыОбмена к примеру только справочниками, но дело в том что в одном справочнике нет некоторых реквизитов(а эти реквизиты имеют ссылки на другие объекты, тем самым тянут их с собою),
и при обмене выдается ошибка "Ошибка при вызове метода контекста (ПрочитатьXML)" и я полагаю что ошибка именно в этом
Код выкладываю ниже
1 abbas
 
16.09.14
15:27
ЧтениеХМЛ = Новый ЧтениеXML;
ЧтениеХМЛ.УстановитьСтроку(СтрокаСообщения);

ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
ЧтениеСообщения.НачатьЧтение(ЧтениеХМЛ);
ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель,ЧтениеСообщения.НомерПринятого);
Пока ВозможностьЧтенияXML(ЧтениеХМЛ) Цикл
Данные = ПрочитатьXML(ЧтениеСообщения.ЧтениеXML); //ошибку выдает в этом месте!!!!!!!!!!!!!!!!!
Если Не Данные = Неопределено Тогда

Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
Данные.ОбменДанными.Загрузка = Истина;

Данные.Записать();

КонецЕсли;
КонецЦикла;

ЧтениеСообщения.ЗакончитьЧтение();
2 abbas
 
16.09.14
15:28
Надо добавить перед чтением реквизиты в СтрокаСообщения, который содержит список реквизитов, как добавить подскажите плс или ошибка вообще не в этом...???
3 abbas
 
16.09.14
15:28
Я пытался изменить СтрокаСообщения, добавлял туда список реквизитов, но все равно, выдается та же ошибка, не может прочитать
4 Maxus43
 
16.09.14
15:32
ПрочитатьXML() в данном случае только для идентичных конфигураций
5 Maxus43
 
16.09.14
15:33
Если надо обмениваться данными произвольной структуры - надо из типовых дёрнуть механизмы обмена по Правилам, либо руками на тэги разбирать тебе этот xml придётся
6 dmpl
 
16.09.14
15:35
(5) Лучше самому написать, иначе будет под вопросом лицензионная чистота.
7 abbas
 
16.09.14
15:36
(5)"либо руками на тэги разбирать тебе этот xml придётся"
это должно решить проблему? а разбирать простыми методами?
8 anatoly
 
16.09.14
15:43
(5) причем тут из типовых - если он пишет что "самописные"?

в КД сделать правила обмена, и в настройках обмена выбрать обмен по правилам.
9 Maxus43
 
16.09.14
15:55
(8) нет у него настроек обмена где можно выбрать по правилам, самописка, сам же сказал. Или ты думаешь это платформа делает сама?)
10 Maxus43
 
16.09.14
15:58
(7) самыми простыми, как в книжках

Чтение = Новый ЧтениеXML;

Чтение.ОткрытьФайл(ПутьКФайлу);

Пока Чтение.Прочитать() Цикл // Прочитать «структурные части» элементов.

    // Проверить, какая часть элемента – текущая.
    Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
        ИмяУзла = Чтение.Имя;
        
        Сообщить("--" + ИмяУзла);

        // Атрибуты элементов можно читать только если текущая часть – начало элемента
        Пока Чтение.ПрочитатьАтрибут() Цикл

            // Прочитать данные узла атрибута.
            ТипУзла  = Чтение.ТипУзла;
            Имя      = Чтение.Имя;
            Значение = Чтение.Значение;
    
        // Обработать полученные значения.
        //    ...
        
        КонецЦикла;
        
    ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда    

        // В примере просто выводим текст в окно сообщений.    
        Сообщить("Текст:" + Чтение.Значение);
        
    ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда

        // В примере просто выводим признак конца элемента
        // в окно сообщений
        Сообщить("--Конец:" + Чтение.Имя);
        
    КонецЕсли;    
    
КонецЦикла    


З.ы. но я лично против... делать дак хорошо, структура поменяется - код переписывать?
Независимо от того, куда вы едете — это в гору и против ветра!