Имя: Пароль:
1C
1С v8
Посоветуйте по плану обмена
0 URAL
 
30.06.13
17:43
Всем привет.
Возникла необходимость изучить планы обмена и начал с книжки Радченко практическое пособие разработчика. Там есть глава посященная обмену данными "Филиалы" м/у двумя базами.
Вот код:
Процедура ПрочитатьСообщениеСИзменениями() Экспорт

   Каталог = КаталогВременныхФайлов();

   // Сформировать имя файла
   ИмяФайла = Каталог + ?(Прав(Каталог, 1) = "\", "", "\") +
    "Message" + СокрЛП(Ссылка.Код) + "_" + СокрЛП(ПланыОбмена.Филиалы.ЭтотУзел().Код) + ".xml";
   Файл = Новый Файл(ИмяФайла);
   Если Не Файл.Существует() Тогда
       Возврат;
   КонецЕсли;

   // *** Чтение документов XML    
   // Попытаться открыть файл
   ЧтениеXML = Новый ЧтениеXML;
   Попытка
       ЧтениеXML.ОткрытьФайл(ИмяФайла);
   Исключение
       Сообщение = Новый СообщениеПользователю;
       Сообщение.Текст = "Невозможно открыть файл обмена данными.";
       Сообщение.Сообщить();
       Возврат;
   КонецПопытки;
   Сообщение = Новый СообщениеПользователю;
   Сообщение.Текст = "-------- Загрузка из " + Строка(ЭтотОбъект) + " ------------";
   Сообщение.Сообщить();
   Сообщение = Новый СообщениеПользователю;
   Сообщение.Текст = " – Считывается файл " + ИмяФайла;
   Сообщение.Сообщить();
   
   // Загрузить из найденного файла
   // *** Инфраструктура сообщений
   ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();

   // Читать заголовок сообщения обмена данными – файла XML
   ЧтениеСообщения.НачатьЧтение(ЧтениеXML);

   // Сообщение предназначено не для этого узла
   Если ЧтениеСообщения.Отправитель <> Ссылка Тогда ВызватьИсключение "Неверный узел";
   КонецЕсли;
   
   // Удаляем регистрацию изменений для узла отправителя сообщения.
   // *** Служба регистрации изменений
   ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель,ЧтениеСообщения.НомерПринятого);
   // Читаем данные из сообщения *** XML-сериализация
   Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл
       // Читаем очередное значение
       Данные = ПрочитатьXML(ЧтениеXML);
       // Не переносим изменение, полученное в главный из неглавного, если есть регистрация изменения
       Если Не ЧтениеСообщения.Отправитель.Главный И
           ПланыОбмена.ИзменениеЗарегистрировано(ЧтениеСообщения.Отправитель, Данные) Тогда
           Сообщение = Новый СообщениеПользователю;
           Сообщение.Текст = " – Изменения отклонены";
           Сообщение.Сообщить();
           Продолжить;
       КонецЕсли;
       // Записать полученные данные
       Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
       Данные.ОбменДанными.Загрузка = Истина;
       Данные.Записать();
   КонецЦикла;

   ЧтениеСообщения.ЗакончитьЧтение();
   
   ЧтениеXML.Закрыть();
   УдалитьФайлы(ИмяФайла);
   Сообщение = Новый СообщениеПользователю;
   Сообщение.Текст = "-------- Конец загрузки ------------";
   Сообщение.Сообщить();

КонецПроцедуры


В XML коде указаны Гуиды.
Подскажите как именно производиться чтение и запись в методе

// Записать полученные данные
       Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;


По ГУИД-у? Возможно ли производить регистрацию изменений если XML файл будет выгружен с другой базы? Может у кого есть опыт создания обмена м/у базой 1С и базой не 1С?
1 URAL
 
01.07.13
10:24
может сегодня кто подскажет?
2 hhhh
 
01.07.13
10:28
(1) а оно тебе это точно надо? Десять лет работаем, никому это магическое знание пока не понадобилось. Регистрация производится при выгрузке. При загрузке нет ее.
3 Maxus43
 
01.07.13
10:29
вопрос не понятен.
Читается Данные = ПрочитатьXML(ЧтениеXML);

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

Это касается сериализованных данных. Со сторонней программой так не сделаешь... если только не руками собирать текст хмл, чтоб был аля сериализован
4 AaNnDdRrEeYy
 
01.07.13
11:17
Чтение и Запись никак с планом обмена не связаны, это стандартная сериализация, ее можно и без плана обмена использовать. План обмена нужен что бы узнать что изменилось, а вот что именно изменилось можно и запросом дернут а потом результат хоть в xml хоть в текстовик хоть веб сервисом передать.
5 November
 
18.07.13
18:46
(4) подскажите, пожалуйста, как можно выдернуть запросом, что именно изменилось? как раз хочется это потом передать веб сервисом, а не записывать в xml.
6 Живой Ископаемый
 
18.07.13
20:27
(5)

http://screencast.com/t/BSCviBVK3Sm
как написано в любых букварях
7 November
 
19.07.13
12:09
(6) простите, что задаю вопрос, не дойдя до нужной страницы букваря! спасибо!