ПостроительDOM #653731


#0 by Pasha12312
Доброго времени суток. Разбираюсь с ПостроительDOM. Вот выгрузка: .... вот код для загрузки: Чтение = Новый ЧтениеXML; проблема следующая, в СписокЗначений попалает только первый документ, так как я не знаю как опустится с узла "СчетаНаОплату" на "Документ", а сразу  начинаю с узла "Документ"... Подскажите ,пожалуйста,  как сделать обход для каждого узла "Документ" , а не только для одного...
#1 by alexei366
СчетаНаОплату скорее всего будет у тя ЭлементДокумента, посмотри в отладчике, а следом значит все дочерние узды будут у тя Документ, или же у Документ взять свойство Следующий, оно по теории укажет тебе на следующий документ
#2 by Pasha12312
не совсем понял...имеется введу - Пока POSITION.Следующий ...? покажите , пожалуйста , что нужно изменить в коде.
#3 by zladenuw
#4 by Pasha12312
так не получается... в СписокЗначений ничего не попадает.
#5 by alexei366
#6 by Pasha12312
попробовал так тоже, получается тоже самое...
#7 by alexei366
Узел это у тя "Документ", чтоб до даты добраться Узел.ДочерниеУзлы
#8 by alexei366
Яж написал в коде "Для Каждого Документ Из СчетНаОплату.ДочерниеУзлы Цикл"
#9 by Pasha12312
Алексей, написал как вы говорите .... при отладке во всех "Документ.ИмяУзла"  значение "Документ" .. "Документ.ТекстовоеСодержимое" значение имеет весь текст (Дата,Контрагент......) В списокЗначений по прежнему не попадает...
#10 by Шапокляк
POSITION = ДокументDOM.ПолучитьЭлементыПоИмени("*","Документ"); не пробовали?
#11 by alexei366
Да    б л я т ь       Для Каждого УзелДокумента Из Документ.ДочерниеУзлы Цикл
#12 by Fragster
автору нужен не построитель дом, а фабрика XDTO
#13 by Fragster
#14 by alexei366
У него пространства имен нет, а так-то можно и ФабрикуXDTO применить. Да и пока этого хватит, человек с ЧтенияXML начинал, пусть пока с ДокументDOM разберётся. И вообще  Pasha12312 пробуй побольше отладчиком пользоваться, там сразу всё поймешь что куда и откуда
#15 by Pasha12312
При отладке значение есть только у "Дата" ....
#16 by Fragster
там все и без нее работает
#17 by alexei366
Фиг его знает, помню как-то случайно затер пространство имен в пакете, так конфигуратор не давал сохранить
#18 by Fragster
в конфигураторе ничего сохранять не надо
#19 by alexei366
Ты точку останова сделай в цикле где получаешь УзелДокумента, к примеру на первом Если, и посмотри его свойства, там если не ошибаюсь есть ИмяУзла, ЛокальноеИмя и ещё всякая фигня.
#20 by alexei366
Ты имеешь ввиду создавать Фабрику из файла
#21 by Fragster
нет. просто сделать безо всяких дополнительных приблуд. единственное, что потребуется - это через XMLЗначение преобразовывать числа и даты - потому как там все текстовое содержимое будет строками
#22 by Fragster
ну и булево, да
#23 by alexei366
я конешь сам не пробывал, но в СП пишет что преобразовывать при методе Прочитать без указания типа будет пытаться к любому поддерживаемому сериализацию, а эт как понимаю наличие xsd. Я конеш могу ошибаться.
#24 by Pasha12312
тут разобрался, значения попадают , но в СпискеЗначений все равно загружает  только 1-й документ.
#25 by Fragster
а я - пробовал
#26 by alexei366
Для Каждого Документ  Из СчетНаОплату.ДочерниеУзлы Цикл Вот так делай
#27 by alexei366
А вот теперь представь, что у него в СчетаНаОплату будет только 1 Документ. И наверно Список превратиться в свойство, эт ему ещё логику распаралеливать придётся немного
#28 by Pasha12312
вот что получается : [URL= [IMG]
#29 by Pasha12312
обычная ссылка :
#30 by Pasha12312
в файле выгрузки вообще находится 10 документов...
#31 by Pasha12312
делал как говорили:
#32 by Fragster
обязательно превратится. но это 1 строка вместо бесконечных
#33 by alexei366
Ну во первых убери после ДокументDOM  = ПостроительDOM.Прочитать(Чтение); строку
#34 by alexei366
И это в отладчике сколько циклов делает если поставить точку останова после Для Каждого Документ  Из СчетНаОплату.ДочерниеУзлы Цикл , на НоваяСтрока = СписокЗначений.Добавить;?
#35 by alexei366
можно конешь автору ещё разочек ФабрикуXDTO предложить, но я думаю щас уже не согласиться.
#36 by Pasha12312
я проверил отладчиком "СчетНаОплату.ДочерниеУзлы" - количество  документов 10 (правильно), "Документ.ДочерниеУзлы" - тоже правильно показывает , а чего  цикл проходит только раз не понимаю.. ... я б согласен делать через  ФабрикаXDTO, только ничего ниразу не делал через нее..
#37 by alexei366
Посмотри СчетНаОплату.ДочерниеУзлы.Количество, если 10 то значит гдето в коде или ошибка вылетает (хотя как понимаю нет), или же мож Прервать где написал, или СписокЗначений гдето очищаешь постоянно, или инициализируешь.
#38 by alexei366
КонецПроцедуры
#39 by alexei366
Ой только поменяй ветки условия  в Первой процедуре, я перепутал чуток
#40 by Fragster
к : для дат, чисел и булево надо использовать соответственно
#41 by Fragster
Бузевл = Булево :) хотя непринципиально
#42 by Pasha12312
сделал так: Для Каждого Документ  Из СчетНаОплату.ДочерниеУзлы Цикл
#43 by Pasha12312
оооо тут уже ФабрикаXDTO)) ... Ветки так поменять?   Тип("СписокXDTO")=СчетНаОплату.Документ.Тип
#44 by alexei366
А СписокЗначений это у тя "ТаблицаЗначений" ?
#45 by alexei366
Я имел ввиду обработку когда Истина и Ложь.
#46 by alexei366
+ имеется ввиду поменять местами код следующий за Тогда и Иначе местами.
#47 by Pasha12312
да.
#48 by alexei366
Закоментируй весь код который присваивает значения в колонки, оставь только где НоваяСтрока = СписокЗначений.Добавить; а остальное в коммент, и посмотри сколько пустых строк на выходе вышло.
#49 by Pasha12312
#50 by Pasha12312
{Форма.Форма.Форма}: Метод объекта не обнаружен (Тип)
#51 by Pasha12312
посмотрел по синтаксису: Тип(<ИмяXML>) .. какое имя нужно передать?
#52 by Pasha12312
товарищи , в особенности   alexei366, большое человеческое СПАСИБО, за помощь  сегодня..
#53 by alexei366
Чувак я честно говоря даж конфигуратор не запускал (всмысле своим делом занимался) чтоб твой пример посмотреть, из памяти фигачил, ты посмотри в отладчике и СП как определить Тип свойства ОбъектаXDTO, я просто не помню.
#54 by Pasha12312
я не знаю как определить Тип свойства ОбъектаXDTO, но я посмотрел значение "СчетНаОплату.Документ" и там - о чудо !! )) все мои 10 документов , со всеми записями  и табличными частями .  ета строка обязательно нужна?:
#55 by Pasha12312
...и я надеюсь последний вопрос , у меня там в документе еще Табличная часть есть...как обойти еще ёё?
#56 by alexei366
Там фишка в чём, если количество у тя будет 1 то у тя там не список будет и тогда у тя ошибка вывалется на Для Каждого Документ Из СчетНаОплату.Документ Цикл
#57 by alexei366
XML тогда покажи пока я домой не ушёл.
#58 by Pasha12312
мне нужна только "Табличная_Часть_Услуги" <СчетаНаОплату>
#59 by alexei366
Для Каждого СтрокаТабЧасти Из Документ.Табличная_Часть_Товары Цикл    ............................
#60 by Pasha12312
спасибо!! вы уже домой идете ?))))
#61 by alexei366
пока нет, ещё в Dota 2 разок сыграю.
#62 by Pasha12312
блин, опять лажа у меня: {Форма.Форма.Форма}: Итератор для значения не определен    Для Каждого СтрокаТабЧасти Из Документ.Табличная_Часть_Товары Цикл
#63 by Pasha12312
и может кто в курсе какой тип тут задать? Если СчетНаОплату.Документ.Тип(??? ) = Тип("СписокXDTO")
#64 by alexei366
КонецПроцедуры
#65 by alexei366
Ну тут опять тотже венегред, если строка таб части одна, то это уже не список и обход элементов не применим.
#66 by Fragster
автору можно получить большой левелап, если он сам покурить про схемы xml, сделает схему, создаст фабрику с этой схемой и будет уже работать со схемой. Тогда там где список - всегда будет список, примитивные типы сами станут нормальными значениями и прочее. Но это если точить есть время.
#67 by Pasha12312
тут есть еще 3-й вариант ( по поводу табличной части документа). Если в табличной части нет ни одной записи тоже ошибка. Как тут проверить ёё на Количество . Документ.Табличная_Часть_Товары.Количество - нет такого метода. Как по другому , может кто подскажет?
#68 by Serginio1
В схеме укажи минимальное количество (minOccurs) 0.
#69 by Fragster
проверь существование свойства у Документ автор еще не юзает схему
#70 by Pasha12312
извиняйте, но не совсем понял.. как его проверить?
#71 by Fragster
#72 by Pasha12312
так ето есть ! А если  табличная часть вообше пустая!? оно выдает что "поле объекта не обнаружено"... Вот что у меня:
#73 by Serginio1
Ну Фабрика по любому схему использует Можно выгрузить схему и её подправить.
#74 by alexei366
Так наверно перед эти сделай условие вроде токое если память не изменяет
#75 by alexei366
Нет у него xsd, пространства имен нет.
#76 by Pasha12312
{Форма.Форма.Форма}: Метод объекта не обнаружен (Свойство)    Если Документ.Свойство("Табличная_Часть_Услуги") <> Неопределено Тогда
#77 by alexei366
Если Документ.Свойства.Получить("Табличная_Часть_Услуги") <> Неопределенно Тогда
#78 by Pasha12312
выдает тоже самое: Поле объекта не обнаружено (Номенклатура)
#79 by Fragster
о_О
#80 by Fragster
Документ.Табличная_Часть_Услуги.Свойства.Количество <> 0
#81 by Fragster
я оттелепатил
#82 by Fragster
типа там <Табличная_Часть_Услуги/> в XMLе
#83 by alexei366
Чот я тя не понял, какая нафиг Номенклатура Если Документ.Свойства.Получить("Табличная_Часть_Услуги") <> Неопределенно Тогда
#84 by alexei366
Мож у тя в Табличной части Номенклатуры нет?
#85 by Pasha12312
помогло))) спасибо огромное, товарищи))
#86 by alexei366
Давай, давай, а то ща до 100 сообщений дойдём.
#87 by Serginio1
72 Универсальное средство это попытка исключение
#88 by Pasha12312
та почти готово. только сделать сопоставление и записать))
#89 by zladenuw
а надо только погуглить было :) :)
#90 by Pasha12312
так я же что -то пробовал с построителем!не получалось немного.. "немного" затянулось  почти на 100 сообщений))
#91 by Fragster
построитель дом - он не для того немного
#92 by zladenuw
да вариант решение милионы :). я про то, что слепо ждать ответа, тут не надо. а гугл в помощь. кто то, ведь, когда то делал, что то такое
#93 by Pasha12312
так я так и делал.. сначала было прямое чтение, потом построителем пару вариантов пробовал ,ВычислитьВыражениеXPath  ...
#94 by Pasha12312
Здравствуйте, снова.. Опять вернулся к этой обработку. Хотел перегрузить док, где в ТабЧасть 3 наименования, получил ошибку.. Подскажите , как мне тут получить значение колонки "Номенклатура"
#95 by Fragster
СтрокаТабЧасти.Номенклатура
#96 by Fragster
ПЦ, вообще-то
#97 by Pasha12312
спасибо))))) ..стыдно так тупить)), но опыта пока мало..
#98 by etc
с вашими мучениями помоему проще было схему быстренько накидать.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С