Имя: Пароль:
1C
 
Как перенумеровать справочник
0 misha122062
 
05.10.10
08:42
Прошу уважаемое сообщество помочь решить следующий вопрос.
Как перенумеровать справочник. Несмотря на кажущуюся простоту что то сразу на ум не приходит красивое и универсальное решение.
Итак есть справочник, скажем Номенклатура в котором 5000 записей. Народ стал править коды и теперь там такие 1,99999999,12 1000 и проч...
Теперь при попытке внести новый элемент программа посылает далеко. нужно сделать по порядку.
если бы не были забиты все разряды - можно было бы найти максимальное число и перенумеровать вверх, а потом вниз.
Но элемент 99999999 и подобные - забиты юзерами.
Интересны Ваши методологические решения!
Заранее благодарен за ответ.
1 чувак
 
05.10.10
08:43
Есть же специальная обработка, которая перенумирует справочники!
2 EGAfonov
 
05.10.10
08:45
перенумеровать, используя префикс "Х" например. потом снова с префиксом "0" (ноль)
3 YHVVH
 
05.10.10
08:45
если строка то префикс, потом его убрать
4 YHVVH
 
05.10.10
08:45
(2) опередил
5 misha122062
 
05.10.10
08:48
(1)не нашел... не в курсе где она?
(2)Тип кода текстовый. Т.е. надо установить префикс базы, перенумеровать и затем убрать префикс?
6 misha122062
 
05.10.10
08:48
поправка
(2)Тип кода ЧИСЛОВОЙ. Т.е. надо установить префикс базы, перенумеровать и затем убрать префикс?
7 чувак
 
05.10.10
08:50
(5) В диске ИТС, называется "Универсальный подбор и обработка объектов"
8 misha122062
 
05.10.10
08:56
(7)понял, а отдельного никакого нету?
9 Ksandr
 
05.10.10
08:58
(8) А чем не подходит?
10 Дарт Вейдер
 
05.10.10
09:19
Обработку уже предлагали..
Если пишешь сам, может быть такой вариант:
у тебя должны стать коды от 1 до <Количество элементов в справочнике>..

1) заводишь счетчик от 1 до <Количество элементов в справочнике> и ищешь, если элемент с таким кодом есть, то пропускаешь его, если нет то пишешь код в СписокЗначений  "сзСвободныеКоды".

2) далее прохоишь все элементы с кодом большим <Количество элементов в справочнике> и по порядку присваиваешь им коды из "сзСвободныеКоды".
11 Sserj
 
05.10.10
09:22
(10) А почему нельзя просто перебирать и текущий код хранить в переменной?
Если текущий занят увеличивать на единицу, если нет то присваивать?
12 Дарт Вейдер
 
05.10.10
09:23
(11) если элементы отсортировать по коду, то можно, конечно и так
13 Sserj
 
05.10.10
09:25
(12) Ну тобишь по идее можно выбрать все ссылки запросом, упорядочить по коду и прогнать с увеличением переменной, где хранится код?
14 Дарт Вейдер
 
05.10.10
09:31
(13) если запросом, то можно вообще так:
1) Выбрать подзапросом все ссылки, отсортировать по коду
2) Пронумеровать строки в запросе (в Базе Знаний есть пример), это будет колонка НовыйНомер

потом просто пройти выборку и присвоить значение из НовыйНомер
15 misha122062
 
05.10.10
09:40
спасибо. Понял. Хотелось самому написать.