AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.11.2010, 15:42   #1  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
Здравствуйте.
Пытаюсь нарисовать в Navision xml-файлики, чтобы дальше скармливать их некоему порталу.
Ориентируюсь на некий пример.
В этом самом примере во многих тегах рисуется атрибут xmlns.
Типа

<?xml version="1.0" ?>
<Заглавный элемент xmlns="блаблабла">
<DocumentID xmlns="другое блаблабла">ДокументИД</DocumentID>
<DocumentDate>ДатаДокумента</DocumentDate>
</Заглавный элемент>

Но. Навыжн, увидев два элемента с названием xmlns ругается и кричит, что переменная xmlns определена более одного раза.
Обзывать атрибут по-другому, типа xmlns1 - тогда и на выходе получается

<?xml version="1.0" ?>
<Заглавный элемент xmlns="блаблабла">
<DocumentID xmlns1="другое блаблабла">ДокументИД</DocumentID>
<DocumentDate>ДатаДокумента</DocumentDate>
</Заглавный элемент>

что делать? как быть?

Прошу прощения, если вопрос совсем тупой, я с xml первый раз в жизни общаюсь.
__________________
"Моей лошадке ядрышком полмордочки снесло..."
А.В.Суворов, письма к дочери
Старый 18.11.2010, 16:22   #2  
prefreitor is offline
prefreitor
Участник
 
214 / 11 (1) +
Регистрация: 03.10.2006
А что за переменная xmlns? 'Microsoft XML, v3.0'.DOMDocument?
Старый 18.11.2010, 17:04   #3  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
Цитата:
Сообщение от prefreitor Посмотреть сообщение
А что за переменная xmlns? 'Microsoft XML, v3.0'.DOMDocument?
В своем XMLPort я рисую эдакие хреновинки, которые называются в нем TagName, для них еще задается TagType, SourceType и DataSource
Чтобы нарисовать хреновинку типа
<DocumentID xmlns="другое блаблабла">ДокументИД</DocumentID>
я рисую Tag DocumentID с TagType Element, а под ним рисую Tag xmlns с TagType Atribute, внутри атрибута xmlns на триггере
xmlns - Export::OnBeforePassVariable()
пишу
xmlns := 'другое блаблабла';

атрибут xmlns встречается больше одного раза
хочу понять, как мне уговорить XMLPort нарисовать атрибут xmlns больше одного раза
__________________
"Моей лошадке ядрышком полмордочки снесло..."
А.В.Суворов, письма к дочери
Старый 19.11.2010, 08:48   #4  
prefreitor is offline
prefreitor
Участник
 
214 / 11 (1) +
Регистрация: 03.10.2006
Ок, понял... Мне кажется проще сделать используя Automation - DOMDocument, много примеров есть на mibuso.com
А XML портов отродясь я не делал
Старый 19.11.2010, 10:03   #5  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
Цитата:
Сообщение от prefreitor Посмотреть сообщение
Ок, понял... Мне кажется проще сделать используя Automation - DOMDocument, много примеров есть на mibuso.com
А XML портов отродясь я не делал
угу, если с портами так и не разберусь, попробую, спасибо
__________________
"Моей лошадке ядрышком полмордочки снесло..."
А.В.Суворов, письма к дочери
Старый 10.12.2010, 13:33   #6  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
Я так понимаю везде стоит SourceType=Text? Тогда нужно сделать в DataSource разные название переменных, но при этом TagName будет одинаковый в двух местах.
Старый 21.10.2011, 17:39   #7  
Васыо is offline
Васыо
Участник
 
316 / 12 (1) ++
Регистрация: 15.11.2006
Цитата:
Сообщение от Дуд Посмотреть сообщение
Пытаюсь нарисовать в Navision xml-файлики, чтобы дальше скармливать их некоему порталу.
А вот я таки нарисовал в NAV xml-порт, чтобы дальше скармливать файлики в 1С Битрикс. Проблема в следующем: чтобы всё нормально работало (UTF-8), необходимо созданный в NAV файл пересохранить в другом редакторе, который поставит в начале файла метку порядка байтов (EF BB BF). NAV можно как-то приучить делать это самостоятельно?
Старый 21.10.2011, 21:32   #8  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Цитата:
Сообщение от Васыо Посмотреть сообщение
Проблема в следующем: чтобы всё нормально работало (UTF-8), необходимо созданный в NAV файл пересохранить в другом редакторе, который поставит в начале файла метку порядка байтов (EF BB BF). NAV можно как-то приучить делать это самостоятельно?
У меня была такая же проблема, помогло следующее:
1. В Property's XML-порта в Encoding поставил UTF-8
2. При экспорте все техтовые+кодовые тэги конвертирую функцией ANSI2ASCII (т.е из конвертирую ANSI в ASCII).
Ковертацию делаю в триггере OnBeforePassField().
Старый 24.10.2011, 10:13   #9  
Васыо is offline
Васыо
Участник
 
316 / 12 (1) ++
Регистрация: 15.11.2006
Спасибо, помогло!
Сама функция есть вот здесь: http://www.mibuso.com/dlinfo.asp?FileID=287
Старый 13.01.2012, 16:35   #10  
Васыо is offline
Васыо
Участник
 
316 / 12 (1) ++
Регистрация: 15.11.2006
Столкнулся с новой проблемой: длинные описания (заведомо многократно больше 250 символов). Перед тем как думать, как их подгрузить в NAV и хранить там - хотелось бы понять, можно ли вообще средствами NAV получить внутри xml-тега строку длиннее 250 знаков?
Старый 13.01.2012, 17:05   #11  
Васыо is offline
Васыо
Участник
 
316 / 12 (1) ++
Регистрация: 15.11.2006
длиннее 1024 знаков конечно
Старый 13.01.2012, 22:03   #12  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
http://forum.mazzy.ru/index.php?show...ndpost&p=54641 - тут обсуждался похожий вопрос. Только там аутомейшен используется.
Как вариант, создать несколько одинаковых тэгов и разбить в них описание.
Старый 16.01.2012, 18:03   #13  
Васыо is offline
Васыо
Участник
 
316 / 12 (1) ++
Регистрация: 15.11.2006
Цитата:
Как вариант, создать несколько одинаковых тэгов и разбить в них описание.
Честно говоря не очень понял, как это. Вроде бы прочтен будет всё равно только первый.

А в случае с аутомэйшеном - не упрусь ли я опять в 1024 знака, когда буду ему передавать переменную? Вот если бы аутомейшен умел переменные собирать - другое дело!
Старый 16.01.2012, 19:10   #14  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Как раз с аутомейшеном создать/прочитать можно сколько угодно одинаковых тэгов. С xml-портами не работал, может они и один тэг прочитают.
Старый 16.01.2012, 19:36   #15  
Васыо is offline
Васыо
Участник
 
316 / 12 (1) ++
Регистрация: 15.11.2006
Мне из Nav надо выгружать в битрикс. Что подразумевается под одинаковыми тегами?
Такая конструкция?
Код:
<Description>Длинная строка 1</Description>
<Description>Длинная строка 2</Description>
Такое xml порт умеет, но битрикс прочитает только содержимое первого тега. Требуется как раз в первый тег засунуть строку длиннее 1024 знаков.
Старый 16.01.2012, 20:52   #16  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Цитата:
Сообщение от Васыо Посмотреть сообщение
Мне из Nav надо выгружать в битрикс. Что подразумевается под одинаковыми тегами?
Такая конструкция?
Код:
<Description>Длинная строка 1</Description>
<Description>Длинная строка 2</Description>
Такое xml порт умеет, но битрикс прочитает только содержимое первого тега. Требуется как раз в первый тег засунуть строку длиннее 1024 знаков.
Мне кажется обращение Битрикса с xml противоречит самой сути этого формата, но это лирика

Добавление текста большой длинный выглядит следующим образом

Код:
      
// создаем текстовый нод
xmlNode4Text := xmlNode.ownerDocument.createTextNode('Bigtext');
// наполняем его
FOR i:= 1 TO 100 DO
  xmlNode4Text.appendData('01234567890123456789');
// создаем родителя текстового нода
xmlNode2:=xmlNode.ownerDocument.createNode('element','Bigtext',NameSpace);
// связываем их
xmlNode2.appendChild(xmlNode4Text);
// добавляем родителя в документ
xmlNode.appendChild(xmlNode2);

Name	        DataType	Subtype	Length
xmlNode	        Automation	'Microsoft XML, v6.0'.IXMLDOMNode	
xmlNode4Text	Automation	'Microsoft XML, v6.0'.IXMLDOMText	
xmlNode2	Automation	'Microsoft XML, v6.0'.IXMLDOMNode
Как и сказал rmv в ветке, которую я привел выше, аналог BigText.
Старый 17.01.2012, 12:42   #17  
Васыо is offline
Васыо
Участник
 
316 / 12 (1) ++
Регистрация: 15.11.2006
Класс! А дальше, если, например, хранить описания в текстовых файлах, что-то типа этого?
Код:
fFile.OPEN('C:\1.txt');
fFile.CREATEINSTREAM(iStream);
tBigText.READ(iStream);
tBigText.GETSUBTEXT(text1,1,1024);
tBigText.GETSUBTEXT(text2,1025,1024);
xmlNode4Text.appendData(text1+text2);
Всё бы ничего, опять с русскими буквами проблема:[attachment=1274:description.JPG]
Изображения
 
Старый 17.01.2012, 12:50   #18  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Код:
xmlNode4Text.appendData(text1+text2);
вы так уже пробовали? думаю, что не прокатит, потому как сначала оно должно конкатинироваться и положить результат во временную переменную, а переменной с такой длинной нету и это вызовет ошибку.
так что правильней будет

Код:
tBigText.GETSUBTEXT(text1,1,1024);
xmlNode4Text.appendData(text1);
tBigText.GETSUBTEXT(text2,1025,1024);
xmlNode4Text.appendData(text2);
с кодировкой уж как-нибудь сами, ща нет времени пример искать
Старый 17.01.2012, 16:34   #19  
Васыо is offline
Васыо
Участник
 
316 / 12 (1) ++
Регистрация: 15.11.2006
Вот решение вопроса с кодировкой, если кому вдруг понадобится: http://mibuso.com/dlinfo.asp?FileID=959
каждую строку придётся конвертировать:
Код:
text1 := StringConvert.CodepageConvert(text1);
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:34.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.