Иерархическая нумерация элементов справочника #766278


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

В этой группе 1С