Просто о дереве значений

13 Comments

  1. VmvLer

    автор изложил свою картину миру в проекции дерева значений, причем, по моему, ни фига не просто, скорее коряво.

    но он имеет право на свою картину мира и как и я на свою.

    я бы не рекомендовал эту статью первокурснику по ит.

    Reply
  2. Infector

    Субъективно, но все-таки — не люблю, когда слишком увлекаются деревом значений. За пределами интерфейсных задач это вообще бессмысленно, а в интерфейсных зачастую встречаю перегруженность уровнями, когда ради того чтобы добраться до конечных строк нужно долго и упорно эти уровни разворачивать. Т.е. как временно-случайному пользователю такого интерфейса, где попросили что-то подправить, мне это не нравится еще больше, чем как разработчику. По сей причине предпочитаю таблицы значений с отборами, удобнее со всех сторон.

    Reply
  3. w.r.

    (2) аналогично считаю. Если список большой, то работа с деревом будет сильно тормозить 1с. Лучше всего использовать динамические списки с динамическим считыванием данных

    Reply
  4. dkoder

    (2) за пределами интерфейсных задачь, есть как минимум одна задача — разузлование изделий, и это реальная боль.

    Согласен, что увлекаться глубокими уровнями вложенности не стоит, но интерфесно распределение чего либо: занятость станков, оплаты по реализации, и т.п. очень даж удобно.

    Reply
  5. dkoder

    (3)а что, в динамическом списке уже можно напрямую ячейки редактировать?

    Reply
  6. dkoder

    дам пару советов:

    — на больших данных не используйте рекурсивный вызов процедур, используйте искуственную рекурсию внутри одной процедуры, для этого нужно два массива, это работает если не на порядок, то в разы быстрее. Кстати в erp2 для разузлования используется рекурсия через две процедуры — это боль.

    — для формирования дерева одним запросом используйте СКД с иерархией детальных записей, через связи наборов данных, где делаете связь набора к самому себе

    Reply
  7. Infector

    (4) я в свое время эксперементировал и с деревом, и в вложенными таблицами. На данный момент при разработке с чистого листа в том числе для разузлования не стал бы пользоваться деревом. Таблица значений с дополнительными полями, идентифицирующим строки и связи между ними в использовании оказывается много удобнее.

    Reply
  8. user925427

    (6) Приветствую. Спасибо за комментарии, с которыми я лично согласен. Они дают больше знаний о дереве и сопутствующих задачах. Статья-то для начинающих, тех, кто знакомится с деревом. Кому-то, мой взгляд на него может оказаться полезным. (1) показался корявым, но я и не претендую на академичность.

    Reply
  9. sm.artem

    На мой взгляд немного некорректно показалось описание метода НайтиСтроки() для коллекции строк:

    в отличие от ТаблицыЗначений, у которой можно получить произвольное количество строк методом НайтиСтроки(), получаемые строки ограничены текущим уровнем иерархии, то есть значением колонки Родитель.

    А как же второй параметр в этом методе, который как-раз таки и определяет возможность поиска с учетом подчиненных коллекций или без них?

    Reply
  10. user925427

    В целом, согласен. Есть второй параметр у метода НайтиСтроки(), который позволяет получить и подчинённые строки тоже. Почему о нём не написал? Потому что не было цели скопировать содержимое СП. Я предложил начинающим подход к работе с деревом — получать текущий уровень и работать с ним. Иначе, при использовании второго параметра, придётся разбирать массив строк на текущий и подчинённые уровни. Это тоже вариант, но немного более сложный для понимания. В 1С, вообще, почти всегда есть несколько путей решения задач. Но статья называется «Просто о дереве значений», поэтому я и выбрал более простой, в моём понимании, путь.

    Reply
  11. Daruma

    И сильно «рекурсивная» НайтиВДереве отличается от «корневой» Дерево_НайтиНаКлиенте? 🙂

    Reply
  12. user925427

    (11) Только начальными условиями, стартом с верхнего уровня. Тут простор для творчества широкий, кому как нравится. Эффективность не страдает, читабельность кода, на мой взгляд, повыше.

    Reply
  13. Daruma

    (12) Я понял. Вопрос был чисто риторический. На мой взгляд, одна функция (может быть даже чуть более развернутая) лучше двух, практически дублирующих друг друга.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *