Ошибка при создании com объекта msxml2 domdocument

Я
   Stim

15.04.13 — 10:19

У пользователя все права кроме Администрирование.

При выполнении кода

Обработки.УниверсальныйОбменДаннымиXML.Создать()

Выдается ошибка

Ошибка при создании COM-объекта Msxml2.DOMDocument

Права на просмотр и использование обработки есть.

С правами администрирования такой ошибки нет.

8.2.16, бп 3.0

Как победить? Давать адм права польз нельзя.

   cw014

1 — 15.04.13 — 10:20

Регистрировать библиотеку (dll) с объектом Msxml2.DOMDocument для этого пользователя ОС

   Stim

2 — 15.04.13 — 10:26

(1) объект создается, если у пользователя 1с адм права. Значит, dll установлена

   Stim

3 — 15.04.13 — 10:38

Ап. Отладку не могу запустить без адм прав

  

Stim

4 — 21.04.13 — 16:44

разобралсо. кому интересно — не был включен безопасный режим у обработки

I am trying to create an instance of the object Msxml2.DOMDocument.4.0, but I am getting the following error:
ActiveX component can’t create object: ‘MSXML2.DOMDocument’

The error occures in this line:
Set xmlDoc = CreateObject(«Msxml2.DOMDocument.4.0»)

How can I solve this problem?

Thank you for your helps

asked Apr 23, 2013 at 10:32

Kaja's user avatar

Probably the specific version 4.0 of Msxml2.DOMDocument is not (properly) installed on the computer your script runs on. Try to create the version-independent object:

Set xmlDoc = CreateObject("Msxml2.DOMDocument")

This should give you the version that ‘works’ on your machine. If this fails, try

Set xmlDoc = CreateObject("Msxml2.DOMDocument.6.0")

or experiment with the version number. Use TypeName(xmlDoc) to get a hint wrt the effective version.

P.S. If your problem is caused by 32 vs. 64 bit troubles, this may give you further hints for things to check.

answered Apr 23, 2013 at 11:27

Ekkehard.Horner's user avatar

Ekkehard.HornerEkkehard.Horner

38.4k2 gold badges44 silver badges94 bronze badges

Check if msxml4.dll exists on your system. and (re-)register the library if it does:

cd %SystemRoot%system32
regsvr32 /u msxml4.dll
regsvr32 msxml4.dll

You need admin privileges to do this.

answered Apr 23, 2013 at 14:34

Ansgar Wiechers's user avatar

Ansgar WiechersAnsgar Wiechers

192k24 gold badges247 silver badges321 bronze badges

Three things you need to check:

  1. While registering MSXML4 make sure the MSXML4r.dll is at the same path as MSXML4.dll
  2. Register using proper syntax
    Regsvr32 msxml4.dll
  3. Enable 32 bit in IIS app pool

answered Jun 8 at 13:14

Sunam Debnath's user avatar

1

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

Версии DomDocument
Msxml2.DOMDocument.3.0
Msxml2.DOMDocument.4.0
Msxml2.DOMDocument.5.0
Msxml2.DOMDocument.6.0

Для того чтобы создать или парсить xml, существуют примеры написанные с использованием встроенных объектов (ЗаписьXML, ЧтениеXML) языка программирования 1С. При сложной структуре xml, объём программного кода в таких примерах может быть очень большим. При использовании «Msxml2.DOMDocument» программный код можно сделать более компактным и получить более гибкий механизм обращения к узлам XML документа.

Технология DOMDocument предоставляет удобные методы для работы с данными в виде XML. В данном объекте, структура данных представлена в виде дерева узлов. Все узлы, являются подчиненными к корневому. Благодаря DOMDocument можно перебирать, создавать, удалять, копировать узлы и выполнять многие другие действия.

Создать, записать XML файл

Функция СоздатьXML()Попытка
DomDocument = Новый COMОбъект("MSXML2.DOMDocument.6.0");
Исключение
Сообщить("Ошибка: объект MSXML2.DOMDocument не создан");
Возврат Ложь;
КонецПопытки;//Записать объявление XML
XML = DomDocument.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""");
DomDocument.insertBefore(XML,);//Создать корневой узел
ElementRootTag = DomDocument.createElement("RootTag"); //Создать подчиненный узел
ElementTag = DomDocument.createElement("Tag");
ElementTag.setAttribute("ИмяАтрибута","ЗначениеАтрибута");
ElementText = DomDocument.createTextNode("Текст");
ElementTag.appendChild(ElementText);
CDATA = DomDocument.createCDATASection("Значение");
ElementTag.appendChild(CDATA);//Записать узлы
ElementRootTag.appendChild(ElementTag);
DomDocument.appendChild(ElementRootTag);//Записать файл
DomDocument.Save("C:Test.xml");//Сформированный XML текст
XMLТекст = DomDocument.xml;КонецФункции

Прочитать XML файл

Функция СчитатьXML()Попытка
DomDocument = Новый COMОбъект("MSXML2.DOMDocument.6.0");
Исключение
Сообщить("Ошибка: объект MSXML2.DOMDocument не создан");
Возврат Ложь;
КонецПопытки;//Загрузить XML из строки
DomDocument.loadXML("<?xml version=""1.0"" encoding=""UTF-8""?>
|<RootTag>
|<Tag Имя="
"Значение"">Текст[CDATA[Значение]]</Tag>
|</RootTag>"
);//Загрузить файл XML
DomDocument.load("C:Test.xml");Если DomDocument.parseError.errorCode <> 0 Тогда
Сообщить("Ошибка: XML файл не валидный");
Возврат Ложь;
КонецЕсли;//Выбрать узлы
Nodes = DomDocument.SelectNodes("Tag");Для Индекс = 0 По Nodes.Length - 1 Цикл
ЗначениеАтрибута = Nodes.Item(Индекс).getAttribute("ИмяАтрибута");
Tag = Nodes.Item(Индекс);
КонецЦикла; КонецФункции

Похожие статьи:
ЗаписьXML, ЧтениеXML в 1С:Предприятии
Запись, чтение XML из ДокументDOM

4 / 4 / 0

Регистрация: 06.03.2018

Сообщений: 134

1

17.04.2020, 10:12. Показов 3155. Ответов 4


Студворк — интернет-сервис помощи студентам

Не совсем понимаю почему появилась ошибка
Ошибка при создании ком-объекта Msxml2.DOMDocument при выгрузке 1С Бухгалтерия, установил Microsoft Core XML Services (MSXML) 6.0 — все равно ошибка



0



Тест

Эксперт 1С

383 / 162 / 56

Регистрация: 26.02.2010

Сообщений: 1,241

17.04.2020, 13:11

2

наверное нет такого com?



0



Модератор

Эксперт 1С

3724 / 2918 / 575

Регистрация: 10.03.2011

Сообщений: 11,491

Записей в блоге: 1

17.04.2020, 15:59

3

Stavrius, 1С 7.7 ?
Зачем тебе Msxml2.DOMDocument ?

Добавлено через 39 секунд

Цитата
Сообщение от Dethmontt
Посмотреть сообщение

Msxml2.DOMDocument

Полностью повторен в платформе 1С 8.1 и старше в виде родных объектов



0



4 / 4 / 0

Регистрация: 06.03.2018

Сообщений: 134

18.04.2020, 07:02

 [ТС]

4

Dethmontt, для выгрузки данных в Бухгалтерию

Добавлено через 43 секунды
_ЕГОР_, как его можно создать ?



0



Модератор

Эксперт 1С

3724 / 2918 / 575

Регистрация: 10.03.2011

Сообщений: 11,491

Записей в блоге: 1

20.04.2020, 02:41

5

Цитата
Сообщение от Stavrius
Посмотреть сообщение

_ЕГОР_, как его можно создать ?

Новый ЗаписьXML



0



  

Худой

22.03.13 — 05:26

База лежит в PostgreSQL на Linux.

Сделал нормальный обмен данными через файл обмена.

Все работает. Но достало все руками делать.

Решил напрямую из базы в базу.

В общем, если база под Windows(MS SQL или файловая), то обмен без промежуточного файла

работает замечательно.

А вот если Linux, то выдается сообщение

«Ошибка при создании COM-объекта Msxml2.DOMDocument»

и затем, при попытке соединения с базой, выдантся сообщение —

«При попытке соединения с COM-сервером произошла следующая ошибка:

{ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(13796)}: Ошибка при вызове конструктора (COMОбъект): COM-объекты поддерживается только в операционных системах Windows»

Есть решение этой проблемы?

  

Капитан О

1 — 22.03.13 — 06:10

есть, но «только в операционных системах Windows»

  

Худой

2 — 22.03.13 — 06:13

(1) Это я вижу. Остальное не может быть? Например, под 8.3 что-нибудь, изменили?

  

hhhh

3 — 22.03.13 — 07:31

(2) Вроде через файл обмена всё автоматом делается. Почему руками?

  

Худой

4 — 22.03.13 — 08:34

(3)Ситуация такая.

База 17 гигабайт. Если через файл обмена делать, то полностью не получается. Файл обмена очень огромный и сваливается по ошибке. Если порциями выгружать, то получается ручками по 2-4 дня. А база почти три года.

  

Худой

5 — 22.03.13 — 12:45

Интересно, как выглядят в файле выгрузки PDF файлы, которые находятся в базе.

  

ДенисЧ

6 — 22.03.13 — 12:50

откуда в линухе КОМ?

  

Serginio1

7 — 22.03.13 — 12:57

(5) В виде Base64. Я бы посоветовал обмен через ФабрикуXDTO.

Ссам так делаю. Вообще 1С с этим обменом давно могла генерить схему и выгружать и загружать данные согласно схеме

  

Худой

8 — 22.03.13 — 13:04

(6) Конечно, ниоткуда его там нет. Просто, получается, что не универсальная схема обмена «УниверсальныйОбменДаннымиXML».

(7) А много возни по реализации «обмен через ФабрикуXDTO»?

  

Serginio1

9 — 22.03.13 — 13:36

(8) Смотря, что переносить. Я в свое время и за 2 дня написал. Если базы близкие, то По сути занимаешься копированием из одного объектаXdto в другой. За исключением реквизитов с множественнвм типом.

  

Худой

10 — 22.03.13 — 13:49

(9)Для начала, базы абсолютно одинаковые.

«За исключением реквизитов с множественнвм типом» — и что с ними делать?

  

Serginio1

11 — 22.03.13 — 14:31

Если базы одинаковые то там вообще все значительно проще через ЗаписатьXML прочитатьXML

Если ТекОбъект.Owner<>Неопределено Тогда

Тип=СериализаторXDTO.XMLТипЗнч(ТекОбъект.Owner);

Объект.Owner=Фабрика.Создать(Фабрика.Тип(Тип.URIПространстваИмен, Тип.ИмяТипа),XMLСтрока(ТекОбъект.Owner));

Иначе

Объект.Owner=СсылкаNull

КонецЕсли;

ТипNull=ФабрикаДляКомплексной.Тип(«http://www.w3.org/2001/XMLSchema»,»anySimpleType»);

       СсылкаNull=ФабрикаДляКомплексной.Создать(ТипNull);

  

Худой

12 — 22.03.13 — 14:48

(11) То есть, это все работает и под Linux?

  

sapphire

13 — 22.03.13 — 14:49

(0) Переписать код под встроенные средства 1С работы с XML.

  

Худой

14 — 22.03.13 — 14:55

(13) Спасибо, друг.

А что-нибудь, менее категоричное?

  

Serginio1

15 — 22.03.13 — 14:57

(12) Вообще посмотри код обмена данными

http://help1c.com/faq82/view/431.html

  

Худой

16 — 22.03.13 — 15:00

(15) Мне надо без промежуточных файлов из одной базы в другую

  

К_Дач

17 — 22.03.13 — 15:09

Не знаток Линукса… но одно знаю точно, отличие «универсального обмена» через файл от НЕ через файл только в том, что в случае «не через файл» — файл все равно создается, а точнее не файл а ЗаписьXML, и его чтение запускается в базе-приемнике, которую в свою очередь получают по КОМУ… COMConnector

Чтение в приемнике производит аналогичная обработка УниверсальныйОбмен, только в режиме загрузки. Так что тебе нужна dll-ка, которая позволит в Линуксе сделать ComConnect. Если такие есть — подключить ее и немного дописать код обработок в обеих базах…

  

Serginio1

18 — 22.03.13 — 15:12

А чем файлы не нравятся?

Я отвечал тебе на (4). Линукс не поддерживает КОМ.

Но можно наваять ВК, которая по TCPIP будет принимать файлы, отвечать на сообщения

Или Если хочешь автоматизации запускай регламентное задание и проверяй наличие файлов.

  

Худой

19 — 22.03.13 — 15:17

(17) Ну я примерно, такое и предполагаю. Даже, вроде, видел какую-то разработку для такого рода вещей под линукс. Но тогда просто прошел мимо, не задумываясь

(18)На изучение всех этих вопросов и, тем более, написание  просто не хватает времени.

Может быть, «регламентное задание» спасет. Но, опять же, этим еще не пробовал заниматься.

  

Serginio1

20 — 22.03.13 — 15:25

(19) Век живи и век учись.

4 / 4 / 0

Регистрация: 06.03.2018

Сообщений: 134

1

17.04.2020, 10:12. Показов 2946. Ответов 4


Не совсем понимаю почему появилась ошибка
Ошибка при создании ком-объекта Msxml2.DOMDocument при выгрузке 1С Бухгалтерия, установил Microsoft Core XML Services (MSXML) 6.0 — все равно ошибка

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

Тест

Эксперт 1С

383 / 162 / 56

Регистрация: 26.02.2010

Сообщений: 1,241

17.04.2020, 13:11

2

наверное нет такого com?

0

Модератор

Эксперт 1С

3700 / 2899 / 570

Регистрация: 10.03.2011

Сообщений: 11,414

Записей в блоге: 1

17.04.2020, 15:59

3

Stavrius, 1С 7.7 ?
Зачем тебе Msxml2.DOMDocument ?

Добавлено через 39 секунд

Цитата
Сообщение от Dethmontt
Посмотреть сообщение

Msxml2.DOMDocument

Полностью повторен в платформе 1С 8.1 и старше в виде родных объектов

0

4 / 4 / 0

Регистрация: 06.03.2018

Сообщений: 134

18.04.2020, 07:02

 [ТС]

4

Dethmontt, для выгрузки данных в Бухгалтерию

Добавлено через 43 секунды
_ЕГОР_, как его можно создать ?

0

Модератор

Эксперт 1С

3700 / 2899 / 570

Регистрация: 10.03.2011

Сообщений: 11,414

Записей в блоге: 1

20.04.2020, 02:41

5

Цитата
Сообщение от Stavrius
Посмотреть сообщение

_ЕГОР_, как его можно создать ?

Новый ЗаписьXML

0

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

Версии DomDocument
Msxml2.DOMDocument.3.0
Msxml2.DOMDocument.4.0
Msxml2.DOMDocument.5.0
Msxml2.DOMDocument.6.0

Для того чтобы создать или парсить xml, существуют примеры написанные с использованием встроенных объектов (ЗаписьXML, ЧтениеXML) языка программирования 1С. При сложной структуре xml, объём программного кода в таких примерах может быть очень большим. При использовании «Msxml2.DOMDocument» программный код можно сделать более компактным и получить более гибкий механизм обращения к узлам XML документа.

Технология DOMDocument предоставляет удобные методы для работы с данными в виде XML. В данном объекте, структура данных представлена в виде дерева узлов. Все узлы, являются подчиненными к корневому. Благодаря DOMDocument можно перебирать, создавать, удалять, копировать узлы и выполнять многие другие действия.

Создать, записать XML файл

Функция СоздатьXML()Попытка
DomDocument = Новый COMОбъект("MSXML2.DOMDocument.6.0");
Исключение
Сообщить("Ошибка: объект MSXML2.DOMDocument не создан");
Возврат Ложь;
КонецПопытки;//Записать объявление XML
XML = DomDocument.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""");
DomDocument.insertBefore(XML,);//Создать корневой узел
ElementRootTag = DomDocument.createElement("RootTag"); //Создать подчиненный узел
ElementTag = DomDocument.createElement("Tag");
ElementTag.setAttribute("ИмяАтрибута","ЗначениеАтрибута");
ElementText = DomDocument.createTextNode("Текст");
ElementTag.appendChild(ElementText);
CDATA = DomDocument.createCDATASection("Значение");
ElementTag.appendChild(CDATA);//Записать узлы
ElementRootTag.appendChild(ElementTag);
DomDocument.appendChild(ElementRootTag);//Записать файл
DomDocument.Save("C:Test.xml");//Сформированный XML текст
XMLТекст = DomDocument.xml;КонецФункции

Прочитать XML файл

Функция СчитатьXML()Попытка
DomDocument = Новый COMОбъект("MSXML2.DOMDocument.6.0");
Исключение
Сообщить("Ошибка: объект MSXML2.DOMDocument не создан");
Возврат Ложь;
КонецПопытки;//Загрузить XML из строки
DomDocument.loadXML("<?xml version=""1.0"" encoding=""UTF-8""?>
|<RootTag>
|<Tag Имя="
"Значение"">Текст[CDATA[Значение]]</Tag>
|</RootTag>"
);//Загрузить файл XML
DomDocument.load("C:Test.xml");Если DomDocument.parseError.errorCode <> 0 Тогда
Сообщить("Ошибка: XML файл не валидный");
Возврат Ложь;
КонецЕсли;//Выбрать узлы
Nodes = DomDocument.SelectNodes("Tag");Для Индекс = 0 По Nodes.Length - 1 Цикл
ЗначениеАтрибута = Nodes.Item(Индекс).getAttribute("ИмяАтрибута");
Tag = Nodes.Item(Индекс);
КонецЦикла; КонецФункции

Похожие статьи:
ЗаписьXML, ЧтениеXML в 1С:Предприятии
Запись, чтение XML из ДокументDOM

Понравилась статья? Поделить с друзьями:
  • Ошибка при соединении с сервером steam
  • Ошибка при создании com объекта 1с сбис
  • Ошибка при соединении с сервером smtp mail ru
  • Ошибка при создании cadescom hasheddata
  • Ошибка при соединении с сервером 104