|   |   | 
| 
 | Сортировка нодов XML (Xpath) | ☑ | ||
|---|---|---|---|---|
| 0
    
        КусокЗабора 05.02.15✎ 09:35 | 
        Как можно отсортировать ноды xml по значению атрибутов, Xpath или может еще есть механизмы в 1С?
 Прмер xml: <?xml version="1.0" encoding="UTF-8"?> <Справочники> <Док Код ="20" Родитель="4"/> <Док Код ="18" Родитель="15"/> <Док Код ="4" Родитель="3"/> </Справочники> Нужно что б в цикле ноды обрабатывались в определенном порядке, отсортированные по коду, иначе на мемент создания элемента с кодом 20, родителя еще в БД не будет Или только цикл сортировка пузырьком и всякое такое? | |||
| 50
    
        КусокЗабора 05.02.15✎ 11:09 | 
        (48) вопрос был:
 "Нужно что б в цикле ноды обрабатывались в определенном порядке, отсортированные по коду" (36) задачу решает. Или иди читай про линк | |||
| 51
    
        Бубка Гоп 05.02.15✎ 11:10 | 
        (46) -> (39) чем не встроенный функционал? кстати полностью аналогично твоему примеру из (36)     | |||
| 52
    
        КусокЗабора 05.02.15✎ 11:10 | 
        (49) ну и? 
 прочитай, я уже об этом писал (16) | |||
| 53
    
        igork1966 05.02.15✎ 11:11 | 
        (52) в (40) НЕ СОРТИРОВКА С УЧЕТОМ ИЕРАРХИИ
 и на самом деле не решает проблему со вставкой иерархических данных расположенных в не сортированной коллекции | |||
| 54
    
        КусокЗабора 05.02.15✎ 11:12 | 
        (51) и это (10) встроеный функционал,
 и своя сортировка (тем же пузырьком) - встроеный функционал т.е. использования встроеных механизмов, но это как не крути свое решение | |||
| 55
    
        КусокЗабора 05.02.15✎ 11:13 | 
        (53) у меня данной задачи не было, это раз.
 Набросай мне структуру xml (иерархическую) какую нельзя было бы отсортировать линком | |||
| 56
    
        Бубка Гоп 05.02.15✎ 11:14 | 
        (54) в (10) пример алгоритма для ухода от сортировки. в (39) сама сортировка, так тебе необходимая     | |||
| 57
    
        Бубка Гоп 05.02.15✎ 11:15 | 
        ТЗ.Сортировать() - это не свое решение. это решение платформы. и твою задачу решает чуть более чем полностью. чего еще нужно не могу понять     | |||
| 58
    
        igork1966 05.02.15✎ 11:16 | 
        (55) ну лови
 <?xml version="1.0" encoding="UTF-8"?> <Справочники> <Док Код ="3" Родитель="1"/> <Док Код ="2" Родитель="4"/> <Док Код ="1" Родитель="4"/> <Док Код ="4" Родитель="3"/> </Справочники> | |||
| 59
    
        igork1966 05.02.15✎ 11:17 | 
        (58) сории
 <Док Код ="4" Родитель=""/> | |||
| 60
    
        КусокЗабора 05.02.15✎ 11:18 | 
        (58) и как тебе это отсортировать? по какому артибуту?     | |||
| 61
    
        КусокЗабора 05.02.15✎ 11:19 | 
        (57) а выгружать ты ноды xml в ТЗ как будешь, циклом?     | |||
| 62
    
        igork1966 05.02.15✎ 11:19 | 
        (60) по иерархии.. чтобы сначала родители появлялись.
 С учтетом того что уровней неизвестное количество | |||
| 63
    
        КусокЗабора 05.02.15✎ 11:20 | 
        (рецепт длиннопостов - оскорбить 1С)
 :) | |||
| 64
    
        igork1966 05.02.15✎ 11:22 | 
        (63) я не пишу на 1С, уже 2 года ежели че     | |||
| 65
    
        igork1966 05.02.15✎ 11:22 | 
        (64) + просто подобные наезды не более чем юношеский максимализм     | |||
| 66
    
        КусокЗабора 05.02.15✎ 11:22 | 
        (62) для уточнения, результат ты хочешь в такой последовательностии?
 <Док Код ="3" Родитель="1"/> <Док Код ="4" Родитель="3"/> <Док Код ="2" Родитель="4"/> <Док Код ="1" Родитель="4"/> | |||
| 67
    
        КусокЗабора 05.02.15✎ 11:23 | 
        (65) просто я писал и пишу не только на 1С и чувствую разницу     | |||
| 68
    
        igork1966 05.02.15✎ 11:24 | 
        (66) я по-моему ясно описал задачу:
 <Док Код ="1" Родитель=""/> <Док Код ="3" Родитель="1"/> <Док Код ="4" Родитель="3"/> <Док Код ="2" Родитель="4"/> | |||
| 69
    
        КусокЗабора 05.02.15✎ 11:25 | 
        (68) да без проблем, 5 сек дай мне     | |||
| 70
    
        Asmody 05.02.15✎ 11:25 | 
        (36) и чё? на scala будет так: (<Справочники> <Док Код ="3" Родитель="1"/> <Док Код ="2" Родитель="4"/> <Док Код ="1" Родитель="4"/> <Док Код ="4" Родитель="3"/> </Справочники>) \\ "Док" sortBy { n => (n \ "@Код").text.toInt } | |||
| 71
    
        КусокЗабора 05.02.15✎ 11:25 | 
        взять тот же код
 var result = node.Elements().OrderBy(_ => _.TryGetAttributeValue("Родитель", "0").ToDecimal()); | |||
| 72
    
        igork1966 05.02.15✎ 11:27 | 
        (71) под каждый набор данных будешь новый код писать?
 В общем виде это не решит проблему | |||
| 73
    
        КусокЗабора 05.02.15✎ 11:29 | 
        (72) что значит под каждый набор данных?     | |||
| 74
    
        igork1966 05.02.15✎ 11:29 | 
        (72) +
 <Док Код ="5" Родитель=""/> <Док Код ="3" Родитель="5"/> <Док Код ="4" Родитель="3"/> <Док Код ="1" Родитель="4"/> | |||
| 75
    
        КусокЗабора 05.02.15✎ 11:30 | 
        (74) ты не очень понимаешь смысла кода (71) 
 т.к. он и (74) сортирует без проблемм | |||
| 76
    
        Бубка Гоп 05.02.15✎ 11:30 | 
        (61) какая разница как их выгружать в ТЗ? 
 даже если циклом, один раз прочитал его в тз и делай с ним что хочешь. хоть сортируй хоть сворачивай, хоть поиск строк. хоть в запрос в ВТ засунь. это будет явно более универсальный механизм чем (71) | |||
| 77
    
        igork1966 05.02.15✎ 11:30 | 
        (73) Это означает что сортировка по родителю не даст результата на произвольном дереве.     | |||
| 78
    
        КусокЗабора 05.02.15✎ 11:31 | 
        (74) тебе нужно по коду в обратной последовательности?     | |||
| 79
    
        Asmody 05.02.15✎ 11:31 | 
        (75) Ты не понимаешь условия. В случае (74) никакая сортировка тебе не поможет     | |||
| 80
    
        igork1966 05.02.15✎ 11:31 | 
        (75) Похоже это ты не понимаешь что такое сортировка дерева с учетом иерархии.     | |||
| 81
    
        КусокЗабора 05.02.15✎ 11:34 | 
        (79) (80) так кто ж иерархию в xml в плоском виде представляемт, это ж XML. А если структура у нее будет древовидная то нет проблемм.
 Вы не понимаете сути, линком я могу сортировать ноды по значению атрибутов и отсюда можно отталкиваться и строить алгоритмы, в 1С нет такой возможности | |||
| 82
    
        igork1966 05.02.15✎ 11:35 | 
        (81) Это называется передернуть карты. Поскольку у тебя в (0) вовсе не в иерархии xml хранится.     | |||
| 83
    
        igork1966 05.02.15✎ 11:36 | 
        Слив засчитан     | |||
| 84
    
        Asmody 05.02.15✎ 11:36 | 
        (81) " так кто ж иерархию в xml в плоском виде представляемт" — ты сам в (0)     | |||
| 85
    
        Asmody 05.02.15✎ 11:37 | 
        Кстати, ты подставился. Ибо разбор xml с учетом иерархии — та еще задачка.     | |||
| 86
    
        КусокЗабора 05.02.15✎ 11:39 | 
        (84) тогда я точно не понимаю какую сортировку от меня хочет увидить igork1966 т.к. в моем примере я могу сортировать как по коду, так и по родитель, да хоть по коду и родителю одновременно, эт раз. Два я пришел сюда с определенной задачей, а вы накрутили каких-то еще задач какие я решать и не соберался     | |||
| 87
    
        Бубка Гоп 05.02.15✎ 11:39 | 
        (81) как то сам с собой не в ладах тс походу     | |||
| 88
    
        КусокЗабора 05.02.15✎ 11:40 | 
        (82) в моей xml задача явно описана была, перечитай     | |||
| 89
    
        mehfk 05.02.15✎ 11:41 | ||||
| 90
    
        igork1966 05.02.15✎ 11:42 | 
        (86) Сортировка дерева с учетом иерархии достаточно не тривиальная задачи и без циклов принципиально не решается.
 При правильной сортировке по иерархии родители всегда раньше детей встречаются в наборе. Независимо от полей id и parentid | |||
| 91
    
        КусокЗабора 05.02.15✎ 11:42 | 
        сухой остаток, в 1С нет возможности сортировтаь ноды по атрибуту - вывод 1С шняга. А вся остальная демагогия это вопли 1Сников, т.к. на их хлеб нагадели     | |||
| 92
    
        КусокЗабора 05.02.15✎ 11:44 | 
        (90) кто вообще говорил про сортировку с учетом иерархии? почему мы обсуждаем это? 
 Ну давайте тогда за одно обсудим проблемы адресации памети, или кто убил Кнеди, а что, все равно с каким вопросом пришли в (0) будем обсуждать всче что захотим | |||
| 93
    
        Новенький_2009 05.02.15✎ 11:44 | 
        Кажется, пора товарищу красную карточку выписывать.     | |||
| 94
    
        Бубка Гоп 05.02.15✎ 11:45 | 
        (91) win     | |||
| 95
    
        igork1966 05.02.15✎ 11:46 | 
        (92) Это ясно было из твоего XML
 Просто никто не будет решать задачу (0) ради 3 строк как в (0) НА произвольных данных твой алгоритм провалится | |||
| 96
    
        Бубка Гоп 05.02.15✎ 11:46 | 
        если тебе этого НАСТОЛЬКО не хватает, а реализовать это по другому не позволяет религия или уровень интеллекта, то вероятно 1с и правда не для тебя     | |||
| 97
    
        Asmody 05.02.15✎ 11:48 | 
        (91) А в c# нет возможности делать отчеты на СКД. Всё, c# — голимый отстой!     | |||
| 98
    
        КусокЗабора 05.02.15✎ 11:48 | 
        (93) на основе чего?     | |||
| 99
    
        Asmody 05.02.15✎ 11:48 | 
        (98) Был бы человек, а статья найдётся.     | |||
| 100
    
        mehfk 05.02.15✎ 11:49 | 
        (100)     | |||
| 101
    
        КусокЗабора 05.02.15✎ 11:50 | 
        (97) сказал человек который не имеет не молейшего представления о c#, да там не СКД, но не чуть не хуже, а в некоторых случаях и лучше     | |||
| 102
    
        Escander 05.02.15✎ 11:52 | 
        (101) что именно там сравнимо с СКД по встроенному функционалу?     | |||
| 103
    
        КусокЗабора 05.02.15✎ 11:52 | 
        (95) ну дай мне эти произвольные данные, поставь задачу, которая не решится линком.
 не просто косок хмельки (74) и фиг знает какой ты ожидаешь результат, а с описанием, какую последовательность ты ошидаешь. | |||
| 104
    
        КусокЗабора 05.02.15✎ 11:54 | 
        (102) любите вы 1Сники все готовое юзать, вам дай механизм мы мышкой покликаем готово - ура я программист )).
 c# + wpf = офигительные отчеты, с диаграммами, графиками и с чем хочешь | |||
| 105
    
        igork1966 05.02.15✎ 11:54 | 
        (103) Примеры тебе бесполезно писать. Ты принципиально не понимаешь что такое сортировка деревьев. И решаешь частную задачу на конкретные данные.     | |||
| 106
    
        mehfk 05.02.15✎ 11:56 | 
        (103) Эпичненько. Сам забыл что хотел?     | |||
| 107
    
        КусокЗабора 05.02.15✎ 11:56 | 
        (105) ну если ты пишешь о том что мой пример кода не решает общие задачи, что так трудно запросить у меня эту общую задачу? Видимо да трудно, ее ж еще придумать нужно     | |||
| 108
    
        Escander 05.02.15✎ 11:56 | 
        (104) вам вообще доводилось писать отчёты на СКД? Там только мышкой? Там нет диаграмм/графиков? Вы вообще имеете хоть какую-то компетенцию о вещах о которых тут берётесь судить?     | |||
| 109
    
        КусокЗабора 05.02.15✎ 11:56 | 
        (106) то что я хотел, я пример привел (36) или ты считаешь что поставленая задача в (0) не решится так?     | |||
| 110
    
        КусокЗабора 05.02.15✎ 11:58 | 
        (108) а я писал что в СКД нет диаграмм? Почему вы делаете выводы не известно из чего? Я писал что на C# они есть. И да в СКД 90% работа с UI, а не программирование, даже 98% только не в не тривиальных задачах приходится лесть в код     | |||
| 111
    
        mehfk 05.02.15✎ 12:00 | 
        (109) Тогда ждем как твое решение отработает на (74)     | |||
| 112
    
        Бубка Гоп 05.02.15✎ 12:03 | 
        (104) ты постоянно сам себе противоречишь     | |||
| 113
    
        КусокЗабора 05.02.15✎ 12:07 | 
        (111) вот как задачу поставят так сделаю, я сейчас могу отсортировать по коду в обратной последовательности и это будет ровно то что (74), но это же вас не устроет, либо дайте xml где больше подчененых элементов и я сделаю     | |||
| 114
    
        КусокЗабора 05.02.15✎ 12:07 | 
        (112)например?     | |||
| 115
    
        igork1966 05.02.15✎ 12:08 | 
        Есть таблица в которой хранятся иерархические данные, без зацикливаний
 ID - идентификатор Parent_ID - ссылка на родителя Нужно отсортировать коллекцию чтобы родительские элементы всегда были раньше в коллекции чем дочки. PS. Без циклов или хранения(вычисления) доп.информации такая задача не решается. PS2. Уж не говорю про случай когда еще внутри подчиненности нужно сортировать по другим атрибутам. | |||
| 116
    
        igork1966 05.02.15✎ 12:08 | 
        (115) + вот тебе в общем виде задача     | |||
| 117
    
        igork1966 05.02.15✎ 12:12 | 
        (115) + Можешь считать что ID это Код а Parent_ID код вышестоящего. При условии что коды уникальны.     | |||
| 118
    
        mehfk 05.02.15✎ 12:12 | 
        (113) Задача в (0), а набор данных взять в (74)     | |||
| 119
    
        Бубка Гоп 05.02.15✎ 12:13 | 
        (114) то ты не хочешь написать лишние 2 строчки кода, ибо тебе нужно воспользоваться 1 функцией, встроенной в решение, которая сама сделает хорошо. то наоборот, одинесники лузеры не могут накодить, пользуются встроенным реешением и пишут отчеты мышкой (про скд)     | |||
| 120
    
        Escander 05.02.15✎ 12:15 | 
        (110) когда вы расхваливаете свой вариант то почему-то ссылаетесь на отчёты с графиками и диаграммами, если вы знаете что таковые в СКД есть то какой смысл хвалиться тем что есть везде?     | |||
| 121
    
        КусокЗабора 05.02.15✎ 12:16 | 
        (118) ну ты тугой батя, решение задачи в (0) уже выкладывалось, если ты считаешь что выложеный код не подходит для моей же задачи (0) прошу написать почему не подходит     | |||
| 122
    
        КусокЗабора 05.02.15✎ 12:17 | 
        (120) потому что тот кто упоминул СКД выставил это как уникальность 1С и сослался на то что на c# такого нет     | |||
| 123
    
        Escander 05.02.15✎ 12:18 | 
        (121) переход на личности детектед... так делают поцы когда обосновать больше нечем.     | |||
| 124
    
        Escander 05.02.15✎ 12:18 | 
        (122) а что в с-шарпе есть СКД?     | |||
| 125
    
        mehfk 05.02.15✎ 12:20 | 
        (121) Продолжай в том же духе, жги.     | |||
| 126
    
        КусокЗабора 05.02.15✎ 12:20 | 
        (115) не ленись накидай пример исходной xml и желательно что бы в подчинении было больше одного элемента, я могу накидать, но ты ж задачу ставишь     | |||
| 127
    
        igork1966 05.02.15✎ 12:21 | 
        (121) Потому что так
 <Док Код ="5" Родитель=""/> <Док Код ="1" Родитель="4"/> <Док Код ="4" Родитель="3"/> !!!!!!!!!!!!! <Док Код ="3" Родитель="5"/> и так: <Док Код ="1" Родитель="4"/> !!!!!! <Док Код ="3" Родитель="5"/> !!!!!! <Док Код ="4" Родитель="3"/> <Док Код ="5" Родитель=""/> последовательность неправильная | |||
| 128
    
        КусокЗабора 05.02.15✎ 12:21 | 
        (125)
 для тех кто на ручнике "прошу написать почему не подходит" | |||
| 129
    
        mehfk 05.02.15✎ 12:22 | 
        Для танкистов (127)     | |||
| 130
    
        igork1966 05.02.15✎ 12:22 | 
        (126) можешь использовать любую из (127)
 (128) ----> (127) | |||
| 131
    
        КусокЗабора 05.02.15✎ 12:23 | 
        (127) а откуда у тебя получилось такая последовательность?
 <Док Код ="5" Родитель=""/> <Док Код ="1" Родитель="4"/> <Док Код ="4" Родитель="3"/> !!!!!!!!!!!!! <Док Код ="3" Родитель="5"/> | |||
| 132
    
        Asmody 05.02.15✎ 12:23 | 
        (124) Чувак осилил целых полкнижки по c#, теперь "типа крутой программист"     | |||
| 133
    
        КусокЗабора 05.02.15✎ 12:23 | 
        (130) "и желательно что бы в подчинении было больше одного элемента"     | |||
| 134
    
        КусокЗабора 05.02.15✎ 12:23 | 
        (132) ага, и пару лет кодинга     | |||
| 135
    
        КусокЗабора 05.02.15✎ 12:24 | 
        (131) + 
 мой код не вернет такой последовательности | |||
| 136
    
        igork1966 05.02.15✎ 12:25 | 
        (133) ну в первом ошибся чуток, вот по родителю отсортированно
 <Док Код ="5" Родитель=""/> <Док Код ="4" Родитель="3"/> !!!!!!!!!!!!! <Док Код ="1" Родитель="4"/> <Док Код ="3" Родитель="5"/> | |||
| 137
    
        КусокЗабора 05.02.15✎ 12:26 | 
        (130) если я возму пример из (127) как есть я отсортирую по коду и родителю и получу то что ты хочешь, но это опять же тебя не устроет, по этому я и прошу что бы было несколько подчиненых     | |||
| 138
    
        КусокЗабора 05.02.15✎ 12:26 | 
        (136) -> (137)     | |||
| 139
    
        Escander 05.02.15✎ 12:28 | 
        (134) а гонору как бу-то нас посетил как минимум Тьюринг или фон Нейман или Кнут.     | |||
| 140
    
        КусокЗабора 05.02.15✎ 12:31 | 
        (139) так потому что я знаю что с данной задачей c# в легкую справится, а вы спорите не зная c#     | |||
| 141
    
        Asmody 05.02.15✎ 12:31 | 
        (137) Ну нарисуй на c# код, который из xml в (136) вернет "типа" дерево, ну хотя бы на списках.     | |||
| 142
    
        igork1966 05.02.15✎ 12:32 | 
        (137) Я чего, тебе генератор последовательностей....?
 Люди умнее нас с тобой занимались алгоритмами сортировки дерева, и простого решения не нашли. и заранее говорю, сортировка по коду + родителю тебе не поможет <Док Код ="2" Родитель="5"/> <Док Код ="3" Родитель="5"/> <Док Код ="7" Родитель="5"/> <Док Код ="5" Родитель=""/> <Док Код ="8" Родитель="1"/> <Док Код ="4" Родитель="3"/> <Док Код ="1" Родитель="4"/> а результат правильный: <Док Код ="5" Родитель=""/> <Док Код ="2" Родитель="5"/> <Док Код ="3" Родитель="5"/> <Док Код ="7" Родитель="5"/> <Док Код ="4" Родитель="3"/> <Док Код ="1" Родитель="4"/> <Док Код ="8" Родитель="1"/> | |||
| 143
    
        Escander 05.02.15✎ 12:32 | 
        (140) реши простенькую задачу которую тут тебе привели и посмотрим чего вообще стоят твои 2 года кодинга     | |||
| 144
    
        Escander 05.02.15✎ 12:35 | 
        (140) > а вы спорите не зная c#
 Очень смелое утверждение того, кто вообще ничего не знает о навыках/знаниях/умениях оппонента. Вам 20 лет хотя-бы есть? | |||
| 145
    
        igork1966 05.02.15✎ 12:37 | 
        (140) Ну я писал на C# + linq немного, и че?
 Поэтому и удивляюсь твоей крутизне... рассуждать о том, что не знаешь. | |||
| 146
    
        Бубка Гоп 05.02.15✎ 12:39 | 
        (140) то есть мысли что тут кто то может знать с# получше, тебя не посещает?     | |||
| 147
    
        Asmody 05.02.15✎ 12:49 | 
        Тсс! Товарищ пошёл изучать, как представляются разные структуры данных.     | |||
| 148
    
        КусокЗабора 05.02.15✎ 15:03 | 
        (147) я вообщет работаю еще, не могу чидеть тут всегда и развлекать вас. 
 (145) по твоей задаче, сделал, но согласен без доп переменных и временых колекций не обошлось, по этому результат не выкладываю (но если вам интересно выложу). Но я ж негде не обещал что я сделаю одной строкой кода или без использования доп. переменных. К тому же повторюсь спецом для упертых, изначально задачи которую мне поставил igork1966 у меня не было, это уже тут накрутили типа "а ну рескни" | |||
| 149
    
        Serginio1 05.02.15✎ 15:03 | 
        (0) Никто тебе не мешает использовать C# в 1С
 v8: v8: Использование сборок .NET в 1С 7.x и 8.x Что касается иерархии, то её изначально нужно выводить данные иерархически, разворачивая по группам. Но иногда и этого бывает недостаточно. Например есть реквизит справочника, который является элементов подчиненного справочника. Тогда приходится запоминать такие элементы и заного записывать. А тебе нужна сортировка по "Родитель,Код". И рекурсивный обход по дочерним элементам. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |