Имя: Пароль:
1C
1С v8
Обмен через планы обмена
0 ИУБиПовиц
 
20.03.14
11:49
Добрый день. Хочу сделать обмен через план обмена. Создаю в конфигураторе новый план обмена, добавляю в состав нужные мне справочники. Создаю в модуле функции ВыгрузитьИзмененияДанныхДляУзла, ЗаписатьНовоеСообщение, и ЗагрузитьИзмененияДанныхДляУзла. Выгрузка проходит успешно, а вот при загрузке выскакивает ошибка преобразования xml. Я так понимаю, из за того что, разная структура конфигураций. Вопрос, как прочитать то что я записал в хмл-ку
1 Timon1405
 
20.03.14
11:51
любым браузером
2 Maxus43
 
20.03.14
11:52
Если разные конфигурации - надо писать правила обмена. Сериализация только в одинаковых конфах (точнее только для одинаковых объектов по структуре)
3 VikingKosmo
 
20.03.14
11:52
Если конфигурации разные, то тут два пути: 1. Идем в КД, пишем правила обмена. 2. Почти тоже самое только все вышеперечисленное делаем у себя в базе :)
4 ИУБиПовиц
 
20.03.14
11:54
А в принципе, я ж могу сам парсить хмл-ку и разбирать по тегам то? и тогда все должно получится?так ведь?
5 VikingKosmo
 
20.03.14
11:55
+ (3) ИМХО, если в конфигурации отсутствует БСП, по добавить онный, написать в КД правила обмена и меняться. В БСП процедуры по обмену через правила КД очень душевно прописаны.
6 Maxus43
 
20.03.14
11:56
(4) можешь, читай по тегам
7 VikingKosmo
 
20.03.14
11:56
(4) абсолютно верно, но геморрой еще тот. Если уж так хочется самому писать алгоритм обмена, я бы посмотрел в сторону XDTO.
8 Maxus43
 
20.03.14
11:57
Пример:

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

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

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

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

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

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

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

        // В примере просто выводим признак конца элемента
        // в окно сообщений
        Сообщить("--Конец:" + Чтение.Имя);
        
    КонецЕсли;    
    
КонецЦикла
9 Timon1405
 
20.03.14
11:58
Действительно, чего-йто там 1с написала на 10к строк в этой страшной обработке обмена, опять поди индусов понабрали, и код на экране зазря переводят.
10 х86
 
20.03.14
12:00
(4)можно конечно, но имхо лучше разобраться с обменом на КД, проще быстрее и перспективнее
11 ИУБиПовиц
 
20.03.14
12:04
Ок.Спасибо за советы.
12 ИУБиПовиц
 
20.03.14
12:05
А БСП не охота тянуть в конфу,и захламлять её.