|
определить "глубину" справочника | ☑ | ||
---|---|---|---|---|
0
ladalk
30.07.12
✎
08:05
|
добрый день,
может кто знает, как можно весьма логично определить количество уровней в справочнике (куча вложенных папок)? |
|||
1
Живой Ископаемый
30.07.12
✎
08:06
|
запросом?
|
|||
2
ladalk
30.07.12
✎
08:07
|
(1) считать Справочник........Родитель??
|
|||
3
i_rodionov
30.07.12
✎
08:07
|
(0) Максимальная глубина? Или конкретный элемент, углубленный в папках?
|
|||
4
ladalk
30.07.12
✎
08:08
|
(3) ну с элементом проще.
нужна максимальная глубина по всему справочнику |
|||
5
Ranger_83
30.07.12
✎
08:09
|
в запросе максимальный уровень
|
|||
6
i_rodionov
30.07.12
✎
08:09
|
(4) Метаданные. Глобальный объект в восьмерке.
|
|||
7
Живой Ископаемый
30.07.12
✎
08:09
|
не, это вопрос. Так вот запросом сразу нельзя... потому что нет функции уровень() но можно в СКД
|
|||
8
Живой Ископаемый
30.07.12
✎
08:10
|
2(6) тогда все еще проще максимальный уровень часто вообще не задан
|
|||
9
Ranger_83
30.07.12
✎
08:15
|
уровень() есть у объектного типа справочника.если справочник небольшой,то можно сделать перебор всех элементов
|
|||
10
i_rodionov
30.07.12
✎
08:16
|
Свойство метаданных КоличествоУровней. Недоступно на тонком клиенте
|
|||
11
ladalk
30.07.12
✎
08:18
|
(6) а можно поподробнее? не нашла свойства "уровень" или что-то подобное у объекта метаданных
|
|||
12
ladalk
30.07.12
✎
08:18
|
(9) большой
|
|||
13
Живой Ископаемый
30.07.12
✎
08:19
|
2(11) Это не имеет значения. По умолчанию во всех типовых все справочники неограниченного уровня. Если движок конечно не базовый.
|
|||
14
Живой Ископаемый
30.07.12
✎
08:20
|
2(12) нужно пробовать.
|
|||
15
i_rodionov
30.07.12
✎
08:21
|
(11) Метаданные.Справочники.ИмяСправочника.КоличествоУровней - это свойство,доступное для чтения на сервере и толстом
|
|||
16
i_rodionov
30.07.12
✎
08:25
|
+(15) Нужно дополнительно контролировать Метаданные.Справочники.ИмяСправочника.ОграничиватьКоличествоУровней тип булевый. Доступно на сервере и толстом
|
|||
17
бомболюк
30.07.12
✎
08:25
|
Запросом в цикле. При первом обходе получаешь элементы, у которых родитель = пустая ссылка. При втором обходе получаешь элементы, у которых родитель в выборке первого обхода и так далее. Цикл гоняешь пока пустой результат запроса не вернется.
|
|||
18
ladalk
30.07.12
✎
08:25
|
странно..
определяю программно количество уровней (показывает 2), захожу в справочник - там в структуре можно увидеть и 4 уровня.. |
|||
19
ladalk
30.07.12
✎
08:26
|
(17) это нужно при формировании отчета - каждый раз обрабатывать тысячи элементов наверно не логично.
|
|||
20
бомболюк
30.07.12
✎
08:28
|
(19) другого пути нет.
|
|||
21
shuhard
30.07.12
✎
08:28
|
(19) бредовая затея
|
|||
22
бомболюк
30.07.12
✎
08:28
|
+(20) попробуй это должно быстро работать
|
|||
23
i_rodionov
30.07.12
✎
08:31
|
Предлагаю другое решение. Запросом выбрать только папки. После этого в цикле выборки посчитать их родителей
|
|||
24
бомболюк
30.07.12
✎
08:33
|
(23) существует иерархия элементов
|
|||
25
vde69
30.07.12
✎
08:33
|
(21) почему бредовая? количество запросов равно максимальному используемому уровню.
Ихмо - если это нужно разово то нормальная идея, если постоянно - нужно добовлять в справочники поле "Уровень" и заполнять его в подписке |
|||
26
ladalk
30.07.12
✎
08:33
|
ОграничиватьКоличествоУровней имеет значение Ложь => максимальное количество уровней иерархии неограничено, т.е. так получить количество уровней нельзя?
|
|||
27
aleks-id
30.07.12
✎
08:35
|
функция СколькоУровнейВСправочнике()
счетчик=1; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка, | Номенклатура.Родитель |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.ЭтоГруппа | И Номенклатура.Родитель = &Родитель"; Запрос.УстановитьПараметр("Родитель", Справочники.Номенклатура.ПустаяСсылка()); Родитель = Запрос.Выполнить().Выгрузить(); Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.ЭтоГруппа | И Номенклатура.Родитель В(&Родитель)"; условие=истина; пока условие цикл счетчик=счетчик+1; Родитель = Запрос.Выполнить().Выгрузить(); Запрос.УстановитьПараметр("Родитель", Родитель); Если Родитель.Количество()=0 Тогда Условие=Ложь; КонецЕсли; КонецЦикла; возврат счетчик КонецФункции |
|||
28
ladalk
30.07.12
✎
08:35
|
(25) под "уровнем" понимается группа?
|
|||
29
Ant1773
30.07.12
✎
08:35
|
(26) Через метаданные получить реально использованное кол-во уровней - нет.
|
|||
30
Ant1773
30.07.12
✎
08:36
|
(28) Группа - это группа. На одном уровне может быть много групп.
|
|||
31
patapum
30.07.12
✎
08:37
|
(0) а зачем вообще все это нужно? после озвучки задачи может выясниться что уровень нафиг не нужно получать...
|
|||
32
ladalk
30.07.12
✎
08:40
|
(31) выводить в отчет
|
|||
33
бомболюк
30.07.12
✎
08:41
|
(27) хороший код, только есть косячки:
1. не работает с иерархией элементов; 2. если я пральна понял, то минимум что вернет эта функция - это число 2, что будет неправильно для пустого справочника или справочника с 1 уровнем. 3. не проверял но имхо некорректно отработается ситуация, когда на последнем уровне нет элементов (а только пустые группы). |
|||
34
i_rodionov
30.07.12
✎
08:43
|
(33) пункт 1 ты прав.
пункт 3 тоже |
|||
35
Рэйв
30.07.12
✎
08:44
|
Велосипедостроители:-)
Справочники.ИмяСправочника.Пустаяссылка().Метаданные().КоличествоУровней |
|||
36
бомболюк
30.07.12
✎
08:45
|
(34) а 2 типа не прав чтоль?
|
|||
37
i_rodionov
30.07.12
✎
08:45
|
(35) речь идет о ОграничиватьКоличествоУровней имеет значение Ложь
|
|||
38
Рэйв
30.07.12
✎
08:46
|
(37)А... Вон оно что.
|
|||
39
i_rodionov
30.07.12
✎
08:46
|
(36) Может и прав, но я не проверил и не уверен. И не буду подписываться на то, что не уверен
|
|||
40
ladalk
30.07.12
✎
08:46
|
(35) тоже самое, что и (18)
|
|||
41
aleks-id
30.07.12
✎
08:50
|
(33) я не проснулся еще. просто пытался донести общий смысл.
по 1 вопросу согласен. по 2 счетчик надо в 0 или -1 по 3 неправ. |
|||
42
patapum
30.07.12
✎
08:50
|
(32) выводить в отчет максимальный уровень? или уровень каждого элемента? на хрена вообще юзерам такие отчеты...
|
|||
43
ladalk
30.07.12
✎
08:52
|
(42) в зависимости от глубины дальнейшее продолжение отчета.
|
|||
44
i_rodionov
30.07.12
✎
08:53
|
(43) Отчет на СКД?
|
|||
45
patapum
30.07.12
✎
08:56
|
(43) а можно не выносить людям мозг и озвучить собственно задачу? я думаю, помогут быстрее. хотя наверное, я не прав, надо было ближе к сотке вбросить...
|
|||
46
Serg_1960
30.07.12
✎
08:59
|
"А чё тут думать? Трясти нада!"(анекдот-с)
Рекурсия. И только рекурсия, если исходить из утверждения "количество уровней не ограничено". |
|||
47
ladalk
30.07.12
✎
09:00
|
(45) грубо говоря, вывести на печать прейскурант, прейскурант - справочник, в котором куча вложенных папок. нужно все по папкам, с группировкой.
|
|||
48
Ant1773
30.07.12
✎
09:03
|
(47) СКД
|
|||
49
ladalk
30.07.12
✎
09:05
|
(48) пытаюсь
|
|||
50
Живой Ископаемый
30.07.12
✎
09:06
|
2(47) а максимальный уровень зачем?
|
|||
51
i_rodionov
30.07.12
✎
09:07
|
(47) На СКД это проще реализовать. Там все очень просто группируется.
|
|||
52
ladalk
30.07.12
✎
09:08
|
(50) в настройках когда добавляю поля группировки - знать, сколько "родителей" указывать
|
|||
53
Serg_1960
30.07.12
✎
09:09
|
(50) +1 Знание максимального уровня автору не нужно при печати прескуранта.
|
|||
54
i_rodionov
30.07.12
✎
09:10
|
(53) Не надо, можно детально с иерархией
|
|||
55
Живой Ископаемый
30.07.12
✎
09:10
|
2(52) чего-чего?
|
|||
56
ladalk
30.07.12
✎
09:14
|
(55) на вкладке "настройки" добавить группировку для вывода на печать
|
|||
57
i_rodionov
30.07.12
✎
09:16
|
(56) С иерархией. Потом настраивайте отчет в целом и детальные записи
|
|||
58
ladalk
30.07.12
✎
09:18
|
(57)добавляю Элемент.Родитель.Родитель....Родитель
надо же знать, сколько этих родителей добавлять? |
|||
59
i_rodionov
30.07.12
✎
09:21
|
(58) Хм.. Я не понимаю. Я о группировках. Она одна. Добавляется с указанием, что она с иерархией
|
|||
60
vde69
30.07.12
✎
09:21
|
(58) вот и развязка, теперь можно тему - в юмор....
не делай так НИКОГДА!!! Это ппц какие тормоза будут... |
|||
61
i_rodionov
30.07.12
✎
09:23
|
(60) Да ладно тебе, может, человек не знает, что делать
|
|||
62
ladalk
30.07.12
✎
09:24
|
(61)))
|
|||
63
vde69
30.07.12
✎
09:25
|
(61) если человек не знает что делать - пусть ничего не делает.
то что он сейчас делает можно прировнять к терроризму :) |
|||
64
i_rodionov
30.07.12
✎
09:27
|
(63) Не прикалывайся :)) блин. Я бы объяснил автору, как мог, но даже не знаю, как подступить
|
|||
65
Ant1773
30.07.12
✎
09:28
|
(64) Дать консоль отчетов? Чтобы человек понял что такое СКД.
|
|||
66
ladalk
30.07.12
✎
09:29
|
(63) в настройках какое поле добавлять с группировкой?
|
|||
67
ladalk
30.07.12
✎
09:30
|
запрос - выбираю просто элемент из справочника.
|
|||
68
ladalk
30.07.12
✎
09:30
|
(67) со всеми родителями
|
|||
69
i_rodionov
30.07.12
✎
09:31
|
(66) Попробуй сначала пустое поле с иерархией в качестве первой группировки
|
|||
70
ladalk
30.07.12
✎
09:34
|
(69) получается "детальные записи" и пусто
|
|||
71
i_rodionov
30.07.12
✎
09:37
|
(70) Нужно настроить этот отчет, чтобы корень его выбирал детальные записи из запроса.
|
|||
72
ladalk
30.07.12
✎
09:39
|
(71) ну тогда еще вопрос: каким должен быть запрос? просто элемент или еще родителей выбирать?
|
|||
73
Ant1773
30.07.12
✎
09:40
|
(72) Просто элемент.
|
|||
74
i_rodionov
30.07.12
✎
09:42
|
(72) Запрос должен выбирать элементы. К сожалению, я не могу рассказать в рамках форума, как это должно работать. Вам нужно прочесть хорошую книгу по этому предмету. Я и сам только начинаю, и начал с чтения многих книг
|
|||
75
ladalk
30.07.12
✎
09:42
|
(73) а в настройках тогда что?
новая группировка - элемент - иерархия? |
|||
76
i_rodionov
30.07.12
✎
09:47
|
(75) настройки - это слишком обширная тема, вряд ли тут кто-то сможет помочь.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |