Имя: Пароль:
1C
1С v8
Как парсить файл xml?
,
0 bebibo
 
26.11.19
13:58
Здравствуйте. Задача такая: есть xml файл. При нажатии на кнопку, нужно этот хмл файл распарсить по реквизитам в обработке встроенной. То есть: загрузила хмл файл - парсится - и все нужные значения вставил в реквизиты обработки этой.
То есть например чтобы эту обработку по 10 раз не заполнять ПОЧТИ одними и те же ми данными, я беру файл хмл и парсю и в обработке заполняются реквизиты из этого файла хмл.
Вопрос, как это сделать? В интернете не понятно, там только чтение и запись. А мне надо чтобы из хмл в реквизиты обработки вставали данные.
1 mikecool
 
26.11.19
13:59
тебе читать про чтение
2 bebibo
 
26.11.19
14:01
(1) читать то я понимаю как, но как запихнуть в нужные реквизиты?
3 Папа Гапа
 
26.11.19
14:02
(2) Атрибуты обработки или на форме?
4 bebibo
 
26.11.19
14:02
(3) На форме
5 Папа Гапа
 
26.11.19
14:06
Тогда желательно знать какая у вас версия вижуалбейсика
6 8 bit
 
26.11.19
14:06
Какая боль чувствуется в этом словесном потоке. Автор мечется между увольнением и лишением премии.
7 Папа Гапа
 
26.11.19
14:08
(6) Не флудите. Уважайте собеседника. Когда-нибудь он станет вашим руководителем.
8 План счетов
 
26.11.19
14:08
Мощная вещь:
https://ru.wikipedia.org/wiki/XSLT
9 Александр Б
 
26.11.19
14:11
(2) Присвоением.
10 bebibo
 
26.11.19
14:13
(5) А зачем вижуалбейсик? не понимаю немного)
11 Папа Гапа
 
26.11.19
14:15
(10) Так вы на кнопочку прямо на клавиатуре хотите нажимать?
12 bebibo
 
26.11.19
14:16
(11) нет, на форме обработки, в поле выбора выбираю ХML файл ниже на форме кнопка, нажимая по ней заполняются ниже реквизиты этой обработки из файла  XML
13 Папа Гапа
 
26.11.19
14:17
(9) За присвоение могут посадить. Это ключевой признак хищения.
14 Fragster
 
гуру
26.11.19
14:19
а откуда этот файл берется? почему именно XML?
15 SprayTM
 
26.11.19
14:20
А чем чтение не угодило? Читаете атрибуты, присваиваете их к переменным, заносите в значения реквизитов
16 _Дайвер_
 
26.11.19
14:23
(12) ПрочитатьXML(<ЧтениеXML>, <ТипЗначения>)
17 _Дайвер_
 
26.11.19
14:25
(16) +
ЧитаемДату = Ложь;
Пока ЧтениеXML.Прочитать() Цикл
    Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
        Если ЧтениеXML.ЛокальноеИмя = "Дата" Тогда
            ЧитаемДату = Истина;
        КонецЕсли;
    ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда
        Если ЧитаемДату Тогда
            Дата = XMLЗначение(Тип("Дата"), ЧтениеXML.Значение);
        КонецЕсли
    КонецЕсли
КонецЕсли
18 Fragster
 
гуру
26.11.19
14:38
(17) это отвратительно
19 hhhh
 
26.11.19
14:55
(17) ДокументDOM пробуйте. Там попроще многоуровневые элементы разбирать.
20 RomanYS
 
26.11.19
14:58
(19) может ОбъектXDTO?

    Ч = Новый ЧтениеXML();
    Ч.ОткрытьФайл(ИмяФайла);
    
    
    Ф = Новый ФабрикаXDTO();
    ОбъектXDTO = Ф.ПрочитатьXML(Ч);
21 8 bit
 
26.11.19
15:15
(7) сомневаюсь.

Вообще ТС-у я бы порекомендовал ознакомиться со структурой исходного файла, т.е. с XSD-схемой. Зная схему можно проверить на корректность синтаксиса XML-файла, его структуру, модель содержания и типы данных.

При попытке анализа непонятно чего нельзя это непонятно что присвоить чему-то.
22 ZDenis
 
26.11.19
15:19
(20) Фабрику можно даже не создавать                    

ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайла);
ПисанинаXML = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
23 Garykom
 
гуру
26.11.19
15:29
(18) SAX вполне имеет право на жизнь, не только же DOMить.
24 Garykom
 
гуру
26.11.19
15:31
(22) Если XML файл имеет размер 1Гб, а винда и 1С x86 как думаем этот код сумеет выполниться и не рухнуть с нехваткой памяти?
25 Fragster
 
гуру
26.11.19
15:33
(24)да
26 hhhh
 
26.11.19
15:35
(22) это должны тогда совпадать имена полей и реквизитов в файле и в фабрике. А у девушки здесь вероятность совпадения имен 0 целых хрен десятых.
27 Дмитрий
 
26.11.19
15:35
А почему пол мужской?
28 Garykom
 
гуру
26.11.19
15:36
(25) Неа, если по РИБ прилетает обновление типовой конфы которая размером под 1 гиг то оно нихрена не грузится на x86 винде.
На 64 бит винде и 32 бит 1C как повезет.
29 Fragster
 
гуру
26.11.19
15:41
(28) не путай обновление типовой конфы (которое и без XML нифига не выполняется на x86 для измененной ERP, например) и простые данные
30 Fragster
 
гуру
26.11.19
15:41
1 гиг XML с легкостью прочитается через фабрику XDTO
31 Garykom
 
гуру
26.11.19
15:48
(30) ОК, x86 операционка и 2, 3, 4 и т.д. гиг XML файлик.
Кроме как SAX никак не выйдет, для DOM парсера банально памяти не хватит.
32 mistеr
 
26.11.19
17:17
(2) Ознакомиться с примерами ЧтениеXML не пробовал?
33 Сияющий в темноте
 
26.11.19
18:29
и 64 бит,чтобы память всю убить
ведь в нее же мы суем никому не нужный DOM.
и поэтому для вас был придумах метод SAX.
34 Garykom
 
гуру
26.11.19
18:41
(33) Не-не DOM штука полезная когда надо не простое линейное чтение а по разному засунуть XML в некую структуру и там крутить как угодно пробегая или выборки делая.
Или даже изменяя XML а потом назад записать в файлик.
35 Fragster
 
гуру
26.11.19
22:53
на самом деле никто не мешает комбинировать - методами чтения спуститься на уровень, в котором лежит миллион объектов и дальше читать их по одному через фабрику. вроде как раз так и работает типовая выгрузказагрузкаXML. когда в XML лежат именно что миллионы объектов - оно полезно., и работает быстрее. Но у автора - сохраненные реквизиты. Может ему даже и XML не нужен, а хватит типового сохранения реквизитов формы пользюка. на вопрос, откуда этот XML берется, он так и не ответил
36 Папа Гапа
 
27.11.19
06:21
Вы чего так тупите - тут про форму вопрос. Как в реквизиты загрузить. Неужели никто не знает?
37 Сияющий в темноте
 
27.11.19
08:48
прочитали реквизиты с именами в структуру,а потом ЗаполнитьЗначенияСвойств и кошки сыты и мышки целы.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший