|
Иерархическая нумерация элементов справочника | ☑ | ||
---|---|---|---|---|
0
CMblCL
26.02.16
✎
08:10
|
Задача: В отчете на СКД выводить иерархический номер элемента и сортировать элементы по этому номеру.
Пример: 1 1.1 1.2 1.3 2 2.1 2.2 2.2.1 2.2.2 3 Иерархический номер, как я понял, "на лету" не сделать в отчете, поэтому его придется хранить в справочнике. Для этого надо сделать обработку для пользователя, чтобы он мог выбрать порядок элементов. Я решил реализовать хранение номера через 2 поля Иерархический номер родителя тип Строка и Порядковый номер в группе Тип Число Для того чтобы избежать косяков при сортировке, когда номер 2.11 ставится выше чем 2.2. Что Вы думаете о таком варианте реализации? Может есть какой-то более простой способ реализовать подобное? |
|||
1
shuhard
26.02.16
✎
08:11
|
(0)[Что Вы думаете о таком варианте реализации]
работать будет |
|||
2
Лефмихалыч
26.02.16
✎
08:44
|
1. Добавить реквизит ПолныйНомер с типом Строка. Индексировать с допупорядочиванием
2. ПередЗаписью записывать туда ПолныйКод(); 3. В формах списка сортировать по умолчанию по ПолныйНомер |
|||
3
CMblCL
26.02.16
✎
09:13
|
(2) ПолныйКод() Возвращает что-то вроде:
00000000001/00000000003/00000000008/00000000039 В то время как надо: 1.2.1.4 С контролем уникальности кодов во всем справочнике это не взлетит, потому что в любом случае придется использовать повторяющиеся коды. Да, можно установить нумерацию в пределах подчинения, тогда можно добиться 1.2.1.4, только коды элементов во всем справочнике уже перестанут быть уникальны. Да и менять коды элементов чревато проблемами. Вдруг где-либо в конфигурации используется конструкция НайтиПоКоду(). |
|||
4
Aleksey
26.02.16
✎
09:14
|
А что если элемент переместить в другую группу?
|
|||
5
Лефмихалыч
26.02.16
✎
09:15
|
СтрЗаменить(ПолныйКод(), "/", ".")
|
|||
6
Aleksey
26.02.16
✎
09:15
|
И что будет с нумерации следующего элемента? Она станет на 1 меньше или будет пропуск?
|
|||
7
Лефмихалыч
26.02.16
✎
09:16
|
и сделать код числовым, раз уж нужно "1.2.3"
|
|||
8
Лефмихалыч
26.02.16
✎
09:16
|
+(7) суть в том, что два реквизита нафиг не нужны, достаточно одного
|
|||
9
CMblCL
26.02.16
✎
09:26
|
(4) (6) Если перенести элемент в другую группу, то надо снова формировать порядок номеров.
|
|||
10
Лефмихалыч
26.02.16
✎
09:34
|
(9) это надо делать с любым количеством реквизитов
|
|||
11
Сильф
26.02.16
✎
09:46
|
(0) >"на лету" не сделать в отчете
Дык это... v8: СКД: НомерПоПорядкуВГруппировке из группировки родителя |
|||
12
CMblCL
26.02.16
✎
10:17
|
(8) Давай те ка посчитаем:
1) мы используем стандартный реквизит Код (7) "и сделать код числовым" 2) и создаем сами реквизит (2) "Добавить реквизит ПолныйНомер с типом Строка" Это уже 2 реквизита, а теперь почитаем что я написал в начале "Я решил реализовать хранение номера через 2 поля Иерархический номер родителя тип Строка и Порядковый номер в группе Тип Число" |
|||
13
CMblCL
26.02.16
✎
10:19
|
(11) Я не знаю заранее количество уровней в справочнике
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |