|
|||
Stim
15.04.13 — 10:19 |
У пользователя все права кроме Администрирование. |
||
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
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.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 WiechersAnsgar Wiechers
192k24 gold badges247 silver badges321 bronze badges
Three things you need to check:
- While registering MSXML4 make sure the MSXML4r.dll is at the same path as MSXML4.dll
- Register using proper syntax
Regsvr32 msxml4.dll - Enable 32 bit in IIS app pool
answered Jun 8 at 13:14
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
Не совсем понимаю почему появилась ошибка
0 |
Тест 383 / 162 / 56 Регистрация: 26.02.2010 Сообщений: 1,241 |
|
17.04.2020, 13:11 |
2 |
наверное нет такого com?
0 |
Модератор 3724 / 2918 / 575 Регистрация: 10.03.2011 Сообщений: 11,491 Записей в блоге: 1 |
|
17.04.2020, 15:59 |
3 |
Stavrius, 1С 7.7 ? Добавлено через 39 секунд
Msxml2.DOMDocument Полностью повторен в платформе 1С 8.1 и старше в виде родных объектов
0 |
4 / 4 / 0 Регистрация: 06.03.2018 Сообщений: 134 |
|
18.04.2020, 07:02 [ТС] |
4 |
Dethmontt, для выгрузки данных в Бухгалтерию Добавлено через 43 секунды
0 |
Модератор 3724 / 2918 / 575 Регистрация: 10.03.2011 Сообщений: 11,491 Записей в блоге: 1 |
|
20.04.2020, 02:41 |
5 |
_ЕГОР_, как его можно создать ? Новый Запись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
Не совсем понимаю почему появилась ошибка
__________________ 0 |
Тест 383 / 162 / 56 Регистрация: 26.02.2010 Сообщений: 1,241 |
|
17.04.2020, 13:11 |
2 |
наверное нет такого com? 0 |
Модератор 3700 / 2899 / 570 Регистрация: 10.03.2011 Сообщений: 11,414 Записей в блоге: 1 |
|
17.04.2020, 15:59 |
3 |
Stavrius, 1С 7.7 ? Добавлено через 39 секунд
Msxml2.DOMDocument Полностью повторен в платформе 1С 8.1 и старше в виде родных объектов 0 |
4 / 4 / 0 Регистрация: 06.03.2018 Сообщений: 134 |
|
18.04.2020, 07:02 [ТС] |
4 |
Dethmontt, для выгрузки данных в Бухгалтерию Добавлено через 43 секунды 0 |
Модератор 3700 / 2899 / 570 Регистрация: 10.03.2011 Сообщений: 11,414 Записей в блоге: 1 |
|
20.04.2020, 02:41 |
5 |
_ЕГОР_, как его можно создать ? Новый Запись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