Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

// Читаем очередное значение. Данные = ПрочитатьXML(ЧтениеXML);




// Читаем очередное значение. Данные = ПрочитатьXML(ЧтениеXML);

КонецЦикла;

ЧтениеСообщения. ЗакончитьЧтение(); ЧтениеXML. Закрыть(); УдалитьФайлы(ИмяФайла);

Сообщение = Новый СообщениеПользователю; Сообщение. Текст = " -------- Конец загрузки ";

Сообщение. Сообщить();

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


В результате выполнения этого метода переменная Данные будет содержать объект «1С: Предприятия», соответствующий данным XML.

Теперь, после того как объект «1С: Предприятия» получен, следует разрешить возможную коллизию (листинг 24. 23).

листинг 24. 23. Разрешение возможных коллизий

Процедура ПрочитатьСообщениеСИзменениями() Экспорт Каталог = КаталогВременныхФайлов();

// Сформировать имя файла.

ИмяФайла = Каталог +? (Прав(Каталог, 1) = " \", " ", " \" ) + " Message" + СокрЛП(Ссылка. Код) + " _" +

СокрЛП(ПланыОбмена. Филиалы. ЭтотУзел(). Код) + ". xml"; Файл = Новый Файл(ИмяФайла);

Если Не Файл. Существует() Тогда Возврат;

КонецЕсли;

// *** Чтение документов XML

// Попытаться открыть файл. ЧтениеXML = Новый ЧтениеXML; Попытка

ЧтениеXML. ОткрытьФайл(ИмяФайла);

Исключение

Сообщение = Новый СообщениеПользователю;

Сообщение. Текст = " Невозможно открыть файл обмена данными. "; Сообщение. Сообщить();

Возврат; КонецПопытки;

Сообщение = Новый СообщениеПользователю;

Сообщение. Текст = " -------- Загрузка из " + Строка(ЭтотОбъект) + " --------- ";

Сообщение. Сообщить();

Сообщение = Новый СообщениеПользователю; Сообщение. Текст = " – Считывается файл " + ИмяФайла; Сообщение. Сообщить();

// Загрузить из найденного файла

// *** Инфраструктура сообщений.

ЧтениеСообщения = ПланыОбмена. СоздатьЧтениеСообщения();

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

// Сообщение предназначено не для этого узла.


Занятие 24



 

Если ЧтениеСообщения. Отправитель < > Ссылка Тогда ВызватьИсключение " Неверный узел";

КонецЕсли;

// Удаляем регистрацию изменений для узла - отправителя сообщения.

// *** Служба регистрации изменений. ПланыОбмена. УдалитьРегистрациюИзменений(ЧтениеСообщения. Отправитель,

ЧтениеСообщения. НомерПринятого);

// Читаем данные из сообщения *** XML-сериализация. Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл

// Читаем очередное значение. Данные = ПрочитатьXML(ЧтениеXML);

// Не переносим изменение, полученное в главный из неглавного,

// если есть регистрация изменения.

Если Не ЧтениеСообщения. Отправитель. Главный И ПланыОбмена. ИзменениеЗарегистрировано(

ЧтениеСообщения. Отправитель, Данные) Тогда Сообщение = Новый СообщениеПользователю;

Сообщение. Текст =" – Изменения отклонены"; Сообщение. Сообщить();

Продолжить; КонецЕсли;

КонецЦикла;

ЧтениеСообщения. ЗакончитьЧтение(); ЧтениеXML. Закрыть(); УдалитьФайлы(ИмяФайла);

Сообщение = Новый СообщениеПользователю; Сообщение. Текст = " -------- Конец загрузки ";

Сообщение. Сообщить();

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

Возможная коллизия разрешается следующим образом: мы проверяем, является ли узел-отправитель главным узлом и есть ли записи об изменении этого объекта для данного узла в нашей базе данных. Если объект изменялся в нашей базе и отправитель не является главным узлом, мы отклоняем запись полученного объекта. Во всех остальных случаях мы принимаем изменения полу- ченного объекта.

Теперь единственное, что нам осталось сделать, – записать полу- ченные данные (листинг 24. 24).


листинг 24. 24. Запись полученных данных

Процедура ПрочитатьСообщениеСИзменениями() Экспорт Каталог = КаталогВременныхФайлов();

// Сформировать имя файла.

ИмяФайла = Каталог +? (Прав(Каталог, 1) = " \", " ", " \" ) + " Message" + СокрЛП(Ссылка. Код) + " _" +

СокрЛП(ПланыОбмена. Филиалы. ЭтотУзел(). Код) + ". xml"; Файл = Новый Файл(ИмяФайла);

Если Не Файл. Существует() Тогда Возврат;

КонецЕсли;

// *** Чтение документов XML

// Попытаться открыть файл. ЧтениеXML = Новый ЧтениеXML; Попытка

ЧтениеXML. ОткрытьФайл(ИмяФайла);

Исключение

Сообщение = Новый СообщениеПользователю;

Сообщение. Текст = " Невозможно открыть файл обмена данными. "; Сообщение. Сообщить();

Возврат; КонецПопытки;

Сообщение = Новый СообщениеПользователю;

Сообщение. Текст = " -------- Загрузка из " + Строка(ЭтотОбъект) + " --------- ";

Сообщение. Сообщить();

Сообщение = Новый СообщениеПользователю; Сообщение. Текст = " – Считывается файл " + ИмяФайла; Сообщение. Сообщить();

// Загрузить из найденного файла

// *** Инфраструктура сообщений.

ЧтениеСообщения = ПланыОбмена. СоздатьЧтениеСообщения();

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

// Сообщение предназначено не для этого узла.

Если ЧтениеСообщения. Отправитель < > Ссылка Тогда ВызватьИсключение " Неверный узел";

КонецЕсли;

// Удаляем регистрацию изменений для узла отправителя сообщения

// *** Служба регистрации изменений. ПланыОбмена. УдалитьРегистрациюИзменений(ЧтениеСообщения. Отправитель,

ЧтениеСообщения. НомерПринятого);

// Читаем данные из сообщения *** XML-сериализация.


Занятие 24



 

Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл

// Читаем очередное значение. Данные = ПрочитатьXML(ЧтениеXML);

// Не переносим изменение, полученное в главный из неглавного,

// если есть регистрация изменения.

Если Не ЧтениеСообщения. Отправитель. Главный И ПланыОбмена. ИзменениеЗарегистрировано(

ЧтениеСообщения. Отправитель, Данные) Тогда Сообщение = Новый СообщениеПользователю;

Сообщение. Текст = " – Изменения отклонены"; Сообщение. Сообщить();

Продолжить; КонецЕсли;

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...