Имя: Пароль:
1C
1С v8
варианты получения и работы с ДокументDOM на клиенте
0 novichok79
 
04.09.19
12:13
Доброго времени суток, уважаемые специалисты 1С.
Есть список XSD-документов, ссылающихся друг на друга, в них не указан так любимый фабриками XDTO "targetNamespace".
Я написал серверный модуль анализа и исправления файлов. Функция исправления ищет ссылки на вложенные в основной XSD-документы, превращает относительные пути в абсолютные, находит общий каталог у всех файлов, воссоздает иерархию во временном каталоге на сервере, кладет туда исправленные XSD-документы, затем создает фабрику XDTO из этих документов и кидает ее обратно. Когда файлы лежали на сервере в режиме теста, работали методы построителя DOM и выполнение XPath запросов.
Но в идеальный мир вмешался случай в виде необходимости разбора данной схемы на клиенте.

Варианты решения задачи:
1. Написать примитивный разбор XML через ЧтениеXML на клиенте, чтобы найти тэги "include" c путями к вложенным схемам. потом передать эту кучку файлов на сервер, на сервере построить иерархию, сохранить файлы, обработать их.
2. Написать непримитивный разбор XML с XPath выражениями и прочими плюшками, передавая текст файла XML на сервер, для дальнейшей обработки.

Первый вариант предпочтительнее, ибо происходит одна передача кучи файлов на сервер. На стороне сервера получаем хранилищезначений с двоичными данными исправленного XSD файла и запись этого дела в реквизит Объекта справочника.

А как считаете вы? Может быть есть более элегантное решение? Подскажите пожалуйста. Заранее благодарю за помощь.
1 Сияющий в темноте
 
04.09.19
12:22
если файлы небольшие,а результат нужен на сервере,то передавать их туда,а там уже обрабатывать.
2 novichok79
 
04.09.19
12:26
(1) в сумме, 12 рабочих XSD файлов дают 478 кб.
3 Вафель
 
04.09.19
12:41
и что это так сложно по сети прогнать?
4 novichok79
 
04.09.19
12:45
(3) это сейчас такой размер, но ведь заказчику могут прислать громадный XSD. ну и чтобы оное гонять по сети, для начала надо знать, какие именно файлы нужны, а для этого все равно нужен предварительный разбор XML перед отправкой. с сервера я могу вернуть фабрику XDTO без возможности сохранения в конечный файл XML (ибо метод Записать() серверный согласно СП), такая фабрика на**уй не нужна на клиенте, поэтому и предпочтительнее 1-й вариант.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой