|
Посоветуйте по плану обмена | ☑ | ||
---|---|---|---|---|
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
|
||||
7
November
19.07.13
✎
12:09
|
(6) простите, что задаю вопрос, не дойдя до нужной страницы букваря! спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |