// Удаляем регистрацию изменений для узла отправителя сообщения.
// Удаляем регистрацию изменений для узла отправителя сообщения. // *** Служба регистрации изменений. ПланыОбмена. УдалитьРегистрациюИзменений(ЧтениеСообщения. Отправитель, ЧтениеСообщения. НомерПринятого); ЧтениеСообщения. ЗакончитьЧтение(); ЧтениеXML. Закрыть(); УдалитьФайлы(ИмяФайла); Сообщение = Новый СообщениеПользователю; Сообщение. Текст = " -------- Конец загрузки------------------------------------------------------- "; Сообщение. Сообщить(); КонецПроцедуры
Обратите внимание, что здесь мы обращаемся к службе регистрации изменений и используем метод УдалитьРегистрациюИзменений() для выполнения описанных действий. Теперь, наконец, мы можем приступить к чтению непосредственно самих данных, содержащихся в сообщении (листинг 24. 21). листинг 24. 21. Чтение данных из сообщения Процедура ПрочитатьСообщениеСИзменениями() Экспорт Каталог = КаталогВременныхФайлов(); // Сформировать имя файла. ИмяФайла = Каталог +? (Прав(Каталог, 1) = " \", " ", " \" ) + " Message" + СокрЛП(Ссылка. Код) + " _" + СокрЛП(ПланыОбмена. Филиалы. ЭтотУзел(). Код) + ". xml"; Файл = Новый Файл(ИмяФайла); Если Не Файл. Существует() Тогда Возврат; КонецЕсли; // *** Чтение документов XML // Попытаться открыть файл. ЧтениеXML = Новый ЧтениеXML; Попытка ЧтениеXML. ОткрытьФайл(ИмяФайла); Исключение Сообщение = Новый СообщениеПользователю; Сообщение. Текст = " Невозможно открыть файл обмена данными. "; Сообщение. Сообщить(); Возврат; КонецПопытки; Сообщение = Новый СообщениеПользователю; Сообщение. Текст = " -------- Загрузка из " + Строка(ЭтотОбъект) + " --------- "; Сообщение. Сообщить(); Сообщение = Новый СообщениеПользователю; Сообщение. Текст = " – Считывается файл " + ИмяФайла; Сообщение. Сообщить();
// Загрузить из найденного файла // *** Инфраструктура сообщений. ЧтениеСообщения = ПланыОбмена. СоздатьЧтениеСообщения(); // Читать заголовок сообщения обмена данными – файла XML. ЧтениеСообщения. НачатьЧтение(ЧтениеXML); // Сообщение предназначено не для этого узла. Если ЧтениеСообщения. Отправитель < > Ссылка Тогда ВызватьИсключение " Неверный узел"; КонецЕсли; Чтение данных выполняется в цикле, причем мы снова обращаемся к механизмам XML-сериализации и методом глобального контекста ВозможностьЧтенияXML() получаем очередной тип данных XML из объекта ЧтениеXML и определяем, имеется ли соответствующий тип «1С: Предприятия». В случае успеха выполнение цикла продол- жается. И первое, что нам нужно сделать, – представить данные XML в виде некоторого значения, имеющего тип «1С: Предприятия». Для этого мы используем метод глобального контекста ПрочитатьXML(), листинг 24. 22. листинг 24. 22. Представление данных XML в виде значения, имеющего тип Занятие 24 ЧтениеXML. ОткрытьФайл(ИмяФайла); Исключение Сообщение = Новый СообщениеПользователю; Сообщение. Текст = " Невозможно открыть файл обмена данными. "; Сообщение. Сообщить(); Возврат; КонецПопытки; Сообщение = Новый СообщениеПользователю; Сообщение. Текст = " -------- Загрузка из " + Строка(ЭтотОбъект) + " --------- "; Сообщение. Сообщить(); Сообщение = Новый СообщениеПользователю; Сообщение. Текст = " – Считывается файл " + ИмяФайла; Сообщение. Сообщить(); // Загрузить из найденного файла // *** Инфраструктура сообщений. ЧтениеСообщения = ПланыОбмена. СоздатьЧтениеСообщения(); // Читать заголовок сообщения обмена данными – файла XML. ЧтениеСообщения. НачатьЧтение(ЧтениеXML); // Сообщение предназначено не для этого узла. Если ЧтениеСообщения. Отправитель < > Ссылка Тогда ВызватьИсключение " Неверный узел";
КонецЕсли; // Удаляем регистрацию изменений для узла отправителя сообщения. // *** Служба регистрации изменений. ПланыОбмена. УдалитьРегистрациюИзменений(ЧтениеСообщения. Отправитель, ЧтениеСообщения. НомерПринятого); // Читаем данные из сообщения *** XML-сериализация. Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|