Имя: Пароль:
1C
1C 7.7
v7: универсальный парсер xml
,
0 Grigory123456789
 
13.07.11
11:17
Добрый день. Вопрос в следующем. Нужна обработка для чтения xml файлов и загрузки этого дела сразу в тз. Видел ли кто-нибудь подобное решение.Формат xml произвольный.
1 ДенисЧ
 
13.07.11
11:18
хе...
Произвольный формат загрузить в плоскую таблицу... Как это ты себе представляешь? :-)
2 Grigory123456789
 
13.07.11
11:20
пример: берем xml и открываем его в екселе, ексель сам все читает и конвертирует в табличку. Вот и хотелосьбы такое только на 1с
3 ДенисЧ
 
13.07.11
11:20
сделай (с)
4 Grigory123456789
 
13.07.11
11:22
спс за совет!!! умное решение, а будут более продуктивные предложения согласно первоначального вопроса "Видел ли кто-нибудь подобное решение?"
5 Лефмихалыч
 
13.07.11
11:25
<root>
  <node foo="bar" bar="foo"> valvalval
     <удачи в="загрузке" этого="в">
        <Таблицу>
           Значений
        </Таблицу>
     </удачи>
  </node>
</root>
6 Grigory123456789
 
13.07.11
11:28
ммммммммда в очередной раз  убеждаюсь, что народу делать нефига, стебется да и только, а дельное что нибудь предложить это упс и сдулись)))
7 Злопчинский
 
13.07.11
11:31
в книге знаний здесь есть - выводит строки в табло, вместо вывода строки пихать ее в ТЗ - два пальца об асфальт
8 Лефмихалыч
 
13.07.11
11:32
(6) переходите на v8, там это реализовано - ТЗ замечательно сериализуются в XML и обратно. В 7.7, как щас помню, всегда было достаточно ЗначениеВСтрокуВнутр() и обратно
9 Рэйв
 
13.07.11
11:32
(6)Как будешь оргнизовывать вложенность веток в плоской тз?
10 Grigory123456789
 
13.07.11
11:33
спс за наводку, будем копать)))
11 Grigory123456789
 
13.07.11
11:34
"Как будешь оргнизовывать вложенность веток в плоской тз?"
получением одной большой плоской тз, с дублями, такие вещи легко потом читать.
12 Grigory123456789
 
13.07.11
11:51
не подскажите где конкретно в книге знаний лежит данный ответ)))) по поиску нахожу только частные примеры
13 andrewks
 
13.07.11
13:11
(0) нафига? почему с хмл работать не хочешь?
его ведь не от нечего делать придумали
14 Grigory123456789
 
13.07.11
14:15
потомучто пытаюсь с минимальными временными и мозговыми затратами решить вопрос, а не заплатки новые ставить когда клиент придумает новый формат xml, а так дал ему решение универсальное и хай сам мучается, а я белый и пушистый, да и вообще пора уже на эпиляцию и в салярий)))
15 Широкий
 
13.07.11
14:26
(8) Т.З. сериализуется в хмл?? Хм... я юзаю ЗначениеВСтрокуВнутр..
Пример можешь привести?
16 1Сергей
 
13.07.11
14:48
глянь мою поделку, если разберёшься :)
http://infostart.ru/public/60322/
Я там даже никаких ВК не использовал
17 zdas
 
13.07.11
14:58
(0) вот ты в (2) описал что хочешь - сделай тоже самое через ОЛЕ и получай данные в свою тз))))
18 Grigory123456789
 
13.07.11
19:51
Поздравьте!!!!!!! Завтра скину решение)))))))))))) Авось кому и понадобится)))
19 Злопчинский
 
14.07.11
03:23
(16) атрибуты тегов обрабатываются?
20 1Сергей
 
14.07.11
07:39
(19) да, но не очень длинные
21 ЧеловекДуши
 
14.07.11
08:00
Походу автор не хочет думать :)
...Холяву ищет :)... Жаль что не пятницО :(
22 Grigory123456789
 
14.07.11
16:34
Добрый день!!! Нашел решение своей проблемы))))
1)Создаем екселевский файлик в папке КаталогПользователя()+"konv.xls"
2)Обязательно смотрим настройки по vbs, безопасность, достоверность и т.д.
3)В 1с добавляем процедуру текст:
//Перем текстовик;
    Перем Файл,Каталог;  
    //текстовик=СоздатьОбъект("текст");
    //текстовик.записать(КаталогПользователя()+"Konv.txt");
    //текстовик.открыть(КаталогПользователя()+"Konv.txt");
   
    Если ФС.ВыбратьФайл(0,Файл,Каталог,"Открытие документа XML","Документы XML|*.xml")=0 Тогда
       Возврат;
    КонецЕсли;

    Эксел= СоздатьОбъект("Excel.Application");
    ФайлЭксел = Эксел.Workbooks.Open(Сокрлп(КаталогПользователя())+"konv.xls");
    НашЛист = ФайлЭксел.Sheets(1);        
    //ФайлЭксел.VBProject.VBComponents.Import(КаталогПользователя()+"Konv.txt");  
    ФайлЭксел.VBProject.VBComponents.Add(1); // добавляем модуль номер 1
    ФайлЭксел.VBProject.VBComponents("Module1").CodeModule.InsertLines(1, "Sub Konv()");
    ФайлЭксел.VBProject.VBComponents("Module1").CodeModule.InsertLines(2, "Workbooks.OpenXML Filename:= _");
    ФайлЭксел.VBProject.VBComponents("Module1").CodeModule.InsertLines(3, """"+Сокрлп(Каталог+Файл)+""", LoadOption:= _");
    ФайлЭксел.VBProject.VBComponents("Module1").CodeModule.InsertLines(4, "xlXmlLoadImportToList");
    ФайлЭксел.VBProject.VBComponents("Module1").CodeModule.InsertLines(5, "ActiveWorkbook.SaveAs Filename:= _");
    //ФайлЭксел.VBProject.VBComponents("Module1").CodeModule.InsertLines(6, """"+Сокрлп(Каталог+Файл)+".xls"", _");
    ФайлЭксел.VBProject.VBComponents("Module1").CodeModule.InsertLines(6, """"+Сокрлп(Каталог+Файл)+".xls""");
    //    //ФайлЭксел.VBProject.VBComponents("Module1").CodeModule.InsertLines(7, "FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _");    
    //        ФайлЭксел.VBProject.VBComponents("Module1").CodeModule.InsertLines(7, "FileFormat:=xlExcel8,, , _");
    //
    //    ФайлЭксел.VBProject.VBComponents("Module1").CodeModule.InsertLines(8, "ReadOnlyRecommended:=False, CreateBackup:=False");
    ФайлЭксел.VBProject.VBComponents("Module1").CodeModule.InsertLines(9, "End Sub");
    Эксел.Run("Konv");
    //Workbooks("BOOK1.XLS").Close SaveChanges:=False
    //Эксел.ActiveWorkBook.save();
    //Эксел.WorkBooks.close();
    Эксел.DisplayAlerts = 0;
    Эксел.Workbooks.Close();
    Эксел.DisplayAlerts = 1;
    Эксел.Quit();    

4) Получившийся файл читаем просто в тз
23 Grigory123456789
 
14.07.11
16:35
Может кому и пригодится,но меня очень спасло))
24 andrewks
 
14.07.11
16:36
это шо, мне теперь, шоб xml прочитать, МС оффис покупать надоть?
25 Grigory123456789
 
14.07.11
17:17
Нууууууу так уж и быть!!! Разрешаю)))
26 zdas
 
14.07.11
17:17
(22) сам придумал?:)
27 Grigory123456789
 
14.07.11
17:19
Мысля крутилась, но не охото vbs изучать, а тут нашел примерчик как можно макрос запихать в фаил и выполнить))) вот и все