Необходимость подобной перенумерации может возникнуть в случае беспорядочного редактирования кодов элементов пользователями.
Данная простейшая обработка выполняет всего одну функцию, а именно сквозную (без учета иерархии) перенумерацию элементов выбранного справочника. Порядок существующих кодов соблюдается, но коды приводятся к натуральным числам (числовой тип кода) либо к строкам, состоящим из дополненных ведущими нулями натуральных чисел (строковый тип кода).
Необходимость подобной перенумерации может возникнуть в случае беспорядочного редактирования кодов элементов пользователями.
На время выполнения обработки необходимо отключить контроль уникальности кодов для требующего обработки справочника (после запуска обработки в окне сообщений будет выведена подробная инструкция действий для такого отключения).
Результат выполнения обработки необратим, поэтому рекомендуется создать резервную копию базы до ее выплнения, если Вы не совсем уверены в своих действиях.
Настоятельно не рекомендуется выполнять обработку для справочников, коды которых содержат значимую информацию, а не просто порядковые номера элементов. Примеры таких справочников: Банки (коды используются для хранения кодов МФО), Налоги и отчисления (коды используются в конфигурации для определения нужных ставок налогов и отчислений), Коды УКТВЭД (коды используются для хранения самих кодов УКТВЭД) и т.д.
«Необходимость подобной перенумерации может возникнуть в случае беспорядочного редактирования кодов элементов пользователями.»
За такие дела надо руки поломать 👿
А слабо без отмены контроля уникальности?
Выгрузить коды и ссылки на элементы в таблицу исходных кодов.
Добавить колонку и привести коды к необходимому формату.
Отсортировать по этой колонке.
Сформировать таблицу с последовательностью «правильных» кодов по формату и исходя из количества элементов в исх. таблице.
В первом проходе из таблицы исходных кодов выбрать элементы с «правильными» кодами и подставить их в таблицу правильных кодов (а из исходных удалить — останутся только «неправильные»).
Во втором проходе из исходной таблицы подряд выбирать оставшиеся элементы и ставить их в соответствие незадействованным «правильным» кодам.
Пройтись по таблице правильных кодов и транзакцией записать «правильные» коды только элементам у которых код отличается от «приведенного».
(можно использовать только одну ТЗ — тут по желанию)
Т.о. во первых не нужно ни кого выгонять из базы и менять конфигурацию.
Во вторых, особенно если справочник большой, а нарушена нумерация только у небольшой части кодов (например вчера кто-то «накосячил» и пара сотен кодов из 10 000 «пошли вразнос») сохранится нумерация для тех элементов, которые уже имели верные коды даже неправильного формата(а это часто бывает важно, когда пользователи ориентируются по кодам а не по наименованиям).
Да и в обще — как-то по феншую это 😉
К тому же гораздо интереснее, чем тупо перебором перебить все подряд ИМХО.
Очередной велосипед. Поражаюсь упорству.
Уже много лет на ИТС есть обработки по перенумерации всего и вся.
(2) ivisor_fil,
Подход, конечно, правильный 🙂 Все по феншую. Да и не «велосипед» получится, а велосипед с программным управлением. Только вот реально, нет необходимости уде в том, вариантов чего в рабочем виде десятки уже на форуме
(4) soba
Дык это ж не я выложил — я просто написал, что бы я сам стал выкладывать и делать.
А простую перенумерацию можно на коленке за 5 минут написать — даже на форуме искать не придется.