gifts2017

Обработка перенумерации справочников

Опубликовал Дмитрий Воробьев (vde69) в раздел Администрирование - Сервисные утилиты

Обработка перенумерации справочников. Преобразует в числовой, или содержащий только цифры код, при этом гарантирует уникальнось во всем справочнике.

Преобразует в числовой, или содержащий только цифры код, при этом гарантирует уникальнось во всем справочнике
алгоритм определяет и использует "Правильные" коды и их не перезаписывает
алгоритм "ОДНОПРОХОДНЫЙ"

новая версия Версия 1.0.05 - в ней исправлена досадная ошибка пробела в текстовом коде, и добавлен алгоритм упаковки кодов

Скачать файлы

Наименование Файл Версия Размер
ПеренумерацияСправочников 636
.1168597716 8,79Kb
25.09.09
636
.1168597716 8,79Kb Бесплатно

См. также

Contragent+ 5.0 от 2 500
Подписаться Добавить вознаграждение

Комментарии

1. Ricko 07.05.07 12:42
Нужна обработка по перенумерации справочник под версию 7.7
4. Дмитрий Воробьев (vde69) 24.01.08 10:21
документы немного сложнее перенумеровывать, для этого по хорошему их нужно перепроводить (конечно можно и без перепроведения, но это не гуд)

у меня задачи такой небыло :)
aleks_cons; +1 Ответить 2
5. Klim (Klim_дУБЛЬ) 07.03.08 11:27
нужна для 8.1 позарез :(
сложно доработать?
6. Михаил Ражиков (tango) 07.03.08 11:38
(5) просто откройте версию для 8.0 в конфигураторе 8.1
пс: возможно, руками придется поправить синтаксис типа
ЗначениеНеЗаполнено() на НЕ ЗначениеЗаполнено()
7. Сhe Burashka (CheBurator) 28.01.09 21:54
(4) насколько я себе представляю номердока нигде не фигурирует в качестве "значимого" реквизита в алгоритмах.. так что спокойно чохом можно перенумеровывать.. я так делал регулярно и живой.... (клюшки!)
8. Дмитрий Воробьев (vde69) 28.01.09 22:14
(7) по разному бывает, особенно если документы строгой отчетности (типа доверености)
кроме того бывают всякие префиксы и т.д.
9. Сhe Burashka (CheBurator) 28.01.09 22:29
(8) это да, имеется в виду что результат алгоритмов проведения доков не зависит от их номеров...
10. Дмитрий (rayson) 06.04.09 10:08
на 1С:Предприятие 8.1 (8.1.13.41) не дышит
11. Jenya78 (Jenya78) 27.05.09 12:30
12. earybusha 26.06.09 14:53
Чтобы работал в 81 запустите в конф и он переведет в 81
Большое спасибо автору
VOSMOI08; +1 Ответить
13. Андрей Куканов (KukA.5) 04.03.10 16:55
(4) документы можно перенумеровывать и не перепроводить (а просто записать изменения) - и это будет не просто правильно (номер документа :) не используется в алгоритмах проведения, и проведение не имеет смысла), но и более производительнее.
14. Андрей Куканов (KukA.5) 04.03.10 18:01
Анализ кода обработки:

1) избыточный (не имеющий смысла) код:
МассивВыгрузки = Новый Массив;
МассивВыгрузки.Очистить();

2) не нужная поверка передаваемого параметра:
из процедуры КнопкаВыполнитьНажатие() идет вызов локальной процедуры ПеренумероватьПростойСправочник() с проверкой однозначно передаваемого параметра на заполненность, причем поверка выполняется с помощью преобразования типа в строку и потом сравнением полученной строки... с пустой строкой.

3) не понимание назначения Транзакции, и соответственно не имеющий никакого смысла код (он ниже):
Для каждого Элемент из МассивНеРаспределенныхСсылок Цикл
Попытка
НачатьТранзакцию();

КодДляИспользования = ПреобразоватьКод (ПоследнийНомерРаспределения, СтрокаТипКода, ДлинаКода);
ЭлСправочника = Элемент.ПолучитьОбъект();
ЭлСправочника.Код = КодДляИспользования;
ЭлСправочника.Записать();

ЗафиксироватьТранзакцию();

СписокРаспределенныхНомеров.Добавить(ПоследнийНомерРаспределения);
ПередвинутьПоследнийНомерРаспределения(СписокРаспределенныхНомеров, ПоследнийНомерРаспределения);
Исключение
Сообщить("Не удалось записать элемент справочника <" + ИмяСправочника + "> с кодом <" + Элемент.Код + "> под новым кодом <" + КодДляИспользования + ">");
ОтменитьТранзакцию();
КонецПопытки;
Поясню этот комментарий:
Если мы опасаемся вылета на ошибку в этих четырех строках кода, то мы используем Попытку. Ошибка может возникнуть при получении или записи (например, он заблокирован) объекта , то есть разработчик в этом случае может перехватить событие и обработать его (потому что оно не критичное) - например, вывести сообщение (или повторить попытку пока не пройдет, или отложить обработку объекта в на потом и т.д.)
А если мы уже изменили базу данных и после этого у нас возникла ошибка, и при этом мы хотим обеспечить целостность всех наших изменений, только тогда и будет иметь смысл применение Попытки.

4) этому фрагменту сложно дать оценку (и понять ход мыслей разработчика):
Попытка
ЭтоРеальныйЧисловойКод = (СокрЛП(Формат(Число(Код),"ЧЦ=" + ДлинаКода + "; ЧДЦ=0; ЧВН=; ЧГ=")) = СокрЛП(Код));
Исключение
ЭтоРеальныйЧисловойКод = Ложь;
КонецПопытки;
Справка:
При преобразовании Кода (у него тип строка) к числу Число(Код), если Код не является строковым представлением числа - ...валим платформу в ошибку :) и таким образом узнаем, что ЭтоНеРеальныйЧисловойКод %).

Удачи, Дима.
Прими мою критику как профессиональную поддержку коллеги по программированию.
15. Дмитрий Воробьев (vde69) 05.03.10 09:25
(14) соглашусь с п.1 - это наследие с семерки, писал очень давно когда только перешел на снеговика

п.2 - разница между отсутствием в метаданных и незаполненым параметром должна быть очевидна (особенно при использование части кода в другом месте)

п.3 - скорее соглашусь, транкзация осталась от варианта когда я менял местами 2 кода элеменов справочника, и там была запись двух элементов

п.4 - этот код отлавливает разницу между кодом "001" и "1" по моему все понятно должно быть
16. Андрей Куканов (KukA.5) 08.03.10 00:28
(15) "...соглашусь с п.1 - это наследие с семерки..."

Это не так! Это неумение признавать свою профессиональную некомпетентность (пусть давнюю), но... все-таки :|

Свеже созданный еще девственно-чистый объект никогда и нигде, ни в какой программной среде (в том числе V7 и V8), не нужно было очищать... ;)

Есть очень хорошая книга "Профессиональная разработка в среде 1С:Предприятие 8", полезна как при освоении платформы, особенностей программирования, так и вопросов, касающихся производительности прикладных решений - рекомендую.
17. dushelov (Душелов) 08.03.10 01:08
(16) Эта книга не совсем то. Надо читать бестселлеры, типа Маконелла "Совершенный код" и т.п. книги.
18. Дмитрий Воробьев (vde69) 08.03.10 17:18
(17) я много учился, и много чего знаю как практического так и теоретического, и буду учится и через 10 лет.

я за собой умею признавать ошибки, и в этой обработке есть незначительная избыточность, которая не носит критический характер. Критических ошибок тут нет.

У Андрея Куканова какой-то нездоровый интерес и желание похаять меня (я догадываюсь о причинах), и я не собираюсь с ним вступать в бесполезные споры. Попробуй обьективно сравнить эту обработку и его (типа независимый экспертизы)
19. Андрей Куканов (KukA.5) 14.03.10 01:58
(18) Какое милое заблуждение :) ...интереса к тому, от кого мне нечего взять, у меня нет, по определению...

Я с тобой не спорил, я выразил свое (аргументированное) мнение о твоей профессиональной подготовке (и профессиональной культуре). А сделал это потому что, был сильно удивлен уРоВНеМ единственного, но ведущего специалиста-разработчика (у нас на проекте стажер будет покруче).

А самая тупая часть всего этого "общения" с данным автором здесь http://infostart.ru/public/21745/
20. Аркадий Кучер (Abadonna) 14.03.10 05:37
(18), (19) Схватились два автора перенумераторов, прикольно!
Не хватает еще войны "рабочих столов 8.1"... и поздравлений :D
21. Daulet Turysbekov (atlakh) 29.09.11 16:52
хорошая обработка. правильно работает. жаль только не пригодилась. клиент отказался от услуги.
22. Александр Пушкин (Sasha25) 08.11.11 20:29
Вообще то не совсем понятен механизм деления на правильный и не правильный номер. Если можно по подробнее прокоментировать.
23. Александр Пушкин (Sasha25) 08.11.11 20:35
Вообще то достаточно штатная ситуация когда требуется перенумеровать спроавочники или документы. Поэто му автору большое спасибо очень пригодилась.
24. Олег Ларькин (Prikum) 14.12.11 21:07
Вроде нормально работает, применял в 2-х организациях.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа