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 что-нибудь, изменили?
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
откуда в линухе КОМ?
7 — 22.03.13 — 12:57
(5) В виде Base64. Я бы посоветовал обмен через ФабрикуXDTO.
Ссам так делаю. Вообще 1С с этим обменом давно могла генерить схему и выгружать и загружать данные согласно схеме
8 — 22.03.13 — 13:04
(6) Конечно, ниоткуда его там нет. Просто, получается, что не универсальная схема обмена «УниверсальныйОбменДаннымиXML».
(7) А много возни по реализации «обмен через ФабрикуXDTO»?
9 — 22.03.13 — 13:36
(8) Смотря, что переносить. Я в свое время и за 2 дня написал. Если базы близкие, то По сути занимаешься копированием из одного объектаXdto в другой. За исключением реквизитов с множественнвм типом.
10 — 22.03.13 — 13:49
(9)Для начала, базы абсолютно одинаковые.
«За исключением реквизитов с множественнвм типом» — и что с ними делать?
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?
13 — 22.03.13 — 14:49
(0) Переписать код под встроенные средства 1С работы с XML.
14 — 22.03.13 — 14:55
(13) Спасибо, друг.
А что-нибудь, менее категоричное?
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. Если такие есть — подключить ее и немного дописать код обработок в обеих базах…
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