Имя: Пароль:
1C
1С v8
Иерархическая нумерация элементов справочника
,
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) Я не знаю заранее количество уровней в справочнике
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn