Имя: Пароль:
1C
 
V7PLUS.dll и XMLParser
0 nv24
 
07.01.10
01:21
Доброго часа.
Столкнулся с проблемой в V7 суть в следующем:

файл выгрузки в V8.1 созданый стандартной обработкой имеет вид:

<?xml version="1.0" encoding="UTF-8"?>
<V8Exch:_1CV8DtUD xmlns:V8Exch="http://www.1c.ru/V8/1CV8DtUD/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v8="http://v8.1c.ru/data">
   <V8Exch:Data>
... и так далее
пробую создать элемент

Парсер=СоздатьОбъект("AddIn.XMLParser");
Корень=Парсер.СоздатьДокумент();
Корень.Кодировка="UTF-8";
Узел=Корень.СоздатьПодчиненныйЭлемент("V8Exch:_1CV8DtUD");
Возникает ошибка... TestXml.ERT(53)}: : Ошибка создания нового узла
ругается именно на двоеточие


Создаю тогда узел без двоеточий
Узел=Корень.СоздатьПодчиненныйЭлемент("V8Exch");
и пробую в него записать элемент справочнтка ДоговорыКонтрагентов
с указанием владельца <Owner>
в Файле созданом стандартной выгрузкой в 8.1 узел имеет вид
<Owner xsi:type="CatalogRef.Контрагенты">eb506acd-36b8-11dd-ae29-0017315d547b</Owner>

создаю его так:
Owner= Узел.СоздатьПодчинненыйЭлемент("Owner");
Owner.УстановитьАтрибут("xsi:type","CatalogRef.Контрагенты);  
Owner.Значение=UID;
В данном случае при записи файла возникает ошибка:
Type 'CatalogRef.Контрагенты' is not found in Schema.

Посмотрел описание работы c V7plus но на свои вопросы ответа не нашел
Можно ли создать элемент с двоеточием в названии
и почему возникает ошибка "...is not found in Schema." ?

Что я делаю не так? Возможно ли в 7.7 с помощью V7Plus создать XML документ чтоб загружался типовой загрузкой?

Спасибо.
1 syktyk
 
07.01.10
01:22
xml3 твоя проблема.
2 nv24
 
07.01.10
01:25
(1) а по подробнее можно?
3 syktyk
 
07.01.10
01:30
Парсер msxml4.dll разрегь, и зарегь msxm3.dll. Имхается, что поможет.
4 syktyk
 
07.01.10
01:34
regsvr32 /?
5 nv24
 
07.01.10
01:43
(3) не помогло элемент с двоеточием в имени не пишет.
Может ещё какие варианты -  ПространствоИмен ...  -(
6 syktyk
 
07.01.10
01:47
(5)Ты посмотри, какие еще парсеры типа msxml стоят на машине с 7.7. Разрегивай все, а потом регь только 3-й. такая хрень еще на 8-ке была. Решилась тупо. Даже не вникали.
7 syktyk
 
07.01.10
01:47
Выгрузка прошла нормально только с 3-им
8 nv24
 
07.01.10
01:49
(6) а как посмотреть какие парсеры зарегены?
9 nv24
 
07.01.10
01:52
разрегил msxml4 через ключ /u какие остались - как узнать?
10 milan
 
07.01.10
02:08
(5) я бы на твоем месте почитал что такое хмл схема и как оно связяно с пространством имен.
вот в этом пространстве имен  xmlns:V8Exch="http://www.1c.ru/V8/1CV8DtUD/"
наверное описан тип xsi:type="CatalogRef.Контрагенты">
а создав голый хмл ты можешь выгружать только типы из пространства имен xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance", это string,date,int и там нет никаких CatalogRef.Контрагенты.
11 nv24
 
07.01.10
02:21
(10) с пространством имен вроде разобрался - получается так
ОБМЕН =Корень.СоздатьПодчиненныйЭлемент("V8Exch");   //:_1CV8DtUD  
ОБМЕН.УстановитьПространствоИмен("http://www.1c.ru/V8/1CV8DtUD/","V8Exch" );
ОБМЕН.УстановитьПространствоИмен("http://www.w3.org/2001/XMLSchema-instance","xsi" );
но дело в том что узел сам выглядит вот так
<V8Exch:_1CV8DtUD xmlns:V8Exch="http://www.1c.ru/V8/1CV8DtUD/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v8="http://v8.1c.ru/data">

тоесть как я понял V8Exch:_1CV8DtUD - имя узла а xmlns:V8Exch,xmlns:xsi,xmlns:v8 это пространства имен
либо я не до конца понял, либо не пойму как записать имя узла с двоеточием в 7.7
может ошибаюсь - поправьте если так.
12 nv24
 
07.01.10
11:27
вверх
13 nv24
 
07.01.10
11:45
Народ, кто пользуется XML для обмена как создать из 7.7 такой элемент в файле
<V8Exch:_1CV8DtUD>
Помогите
15 nv24
 
07.01.10
14:05
ап
16 Jaap Vduul
 
07.01.10
15:31
(13)
СоздатьПодчиненныйЭлемент(<?>, ,)
createChildElement(<?>, , )
Синтаксис:
СоздатьПодчиненныйЭлемент(<НаимЭлемента>, <ВставитьПеред>, <ПространствоИмен>)
Назначение
Предназначением метода является облегчение часто встречающейся операции - процесса создания подчиненного элемента. Если параметр ВставитьПеред не используется, элемент будет вставлен в конец списка.
Возвращаемое значение:
Объект созданного элемента
Параметры:
<НаимЭлемента> - Строковое выражение, содержащее наименование создаваемого элемента.
<ВставитьПеред> - Необязательный параметр. Узел, перед которым следует вставить создаваемый узел элемента.
<ПространствоИмен> - Необязательный параметр, строковое выражение, указывающее пространство имен, в контексте которого создается новый элемент. Если не указан, анализатор предпринимает попытку создать элемент в контексте пространства имен, определенного у стоящих выше по иерархии узлов документа с учетом префикса, указанного в параметре НаимЭлемента.
17 Jaap Vduul
 
07.01.10
15:34
+16
Узел = Корень.СоздатьПодчиненныйЭлемент("V8Exch:_1CV8DtUD", , "http://www.1c.ru/V8/1CV8DtUD/");
18 nv24
 
07.01.10
15:56
(16)и(17)спаибо!