gifts2017

Проверка и исправление ( перенумерация ) неуникальных и некорректных номеров

Опубликовал Михаил Семенов (Shaman100M) в раздел Обработки - Обработка документов

Поиск неуникальных (в соответствии с периодичностью, заданным нумератором) и некорректных (несоответствие пробелов в конце) номеров документов, исправление простое ("УстановитьНовыйНомер") и бинарным поиском, возможность сохранить прежнюю числовую часть, задание количества пробелов в конце номера, изменение префикса перед перенумерацией.

Обработка "Проверка и исправление (перенумерация) неуникальных и некорректных номеров документов"

Обработка осуществляет поиск документов с неуникальными и некорректными номерами и их последующую перенумерацию. Неуникальные номера могут образоваться, например, вследствие одновременного создания документов в разных частях распределенной базы данных с одиннаковым префиксом и последующего обмена данными. Некорректные номера (с пробелом в конце) могут образовываться из-за их ручной корректировки пользователями, а также при увеличении длины номера средствами конфигурирования и непустой выборке
документов по данному виду.

Проверка неуникальности номеров производится в соответствии с указанным нумератором документа или его видом, (если нумератор не указан) в пределах установленной периодичности номера. Для всеобъемлющего поиска неуникальных номеров необходимо указывать интервал выборки документов кратно периодичности номера. Для некорректных номеров просто проверяется соответствие количества пробелов в конце номера (по умолчанию - 0). В случае, если наличие пробелов в конце номера предусмотрено конфигурацией, их количество для "корректного" номера можно указать (колонка "Отступ" в таблице на первой закладке)

Поиск оптимизирован, работает достаточно быстро, зависимость времени выполнения от количества документов -пропорциональная, эквивалентна 2-х - 3-х кратному перебору документов в цикле. Найденные документы отображаются в таблице на форме на новой закладке.

В таблице отображаются все документы с неуникальными номерами, для перенумерации требуется для одного из группы документов с неуникальным номером снять галку участия в перенумерации.

Правила формирования нового номера для документа:

Документы с номерами типа "Число" обрабатываются только с пом. метода "УстановитьНовыйНомер()"

Для документов с номером текстового типа предложено три этапа нумерации, которые выполняются до момента
успешного поиска уникального номера:

Этап 1. Новый номер с прежней числовой частью. В старом номере выделяется числовая часть и переносится в новый к новому префиксу. Длина номера корректируется либо добавлением нулей, либо обрезанием числовой части слева. Для последнего предусмотрен флаг отмены, в этом случае перенумерация документа не производится.
Этап 2. "УстановитьНовыйНомер". Стандартный метод установки нового номера, выполняется при отсутствии / неудачном выполнении первого этапа.
Этап 3. Бинарный поиск нового номера. Выполняется при отсутствии / неудачном выполнении предыдущих этапов (для первого - найденный номер неуникален, для второго - не соответствует количество пробелов в конце, либо номер неуникален). Бинарный поиск выдаст последний номер в серии номеров, если она непрерывна, в противном случае, есть малая вероятность получения номера из "пропуска в серии".

В ходе разработки нашел "грабли": методы документа общего вида "НайтиПоНомеру", "ВыбратьПоНомеру" при одноименных "нумераторе" и "виде документа" отрабатывает "вид документа". Грабли убрал.

Обработка не использует ВК.

Версия 1.14 (06.08.09)
- обход метода документа "ВыбратьПоНомеру" без указания вида документа/нумератора

Версия 1.12 (20.08.07)
- возможность изменить префикс для всех документов (требующих перенумерации) выбранной ИБ

Версия 1.11 (15.08.07)
- исправлены условия перехода между этапами перенумерации

Версия 1.10 (13.08.07) - 1.00 (07.08.07)
- Разделены для окончательной обработки документы "неуникальные" и "по пробелам в конце"
- Полные группы документов с неуникальным номером (ранее - начиная со второго с неуник. номером в выборке)
- Механизм выбора документов для перенумерации.
- "Автовыбор" документов по информационной базе, "по умолчанию"
- Механизм формирования номера формализован по выбираемым пользователем этапам.

Пишите отзывы и предложения, не забывайте про рейтинг.
С Уважением, Shaman100M.

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

Наименование Файл Версия Размер
RepairNomDoc v1.0 767
.1186471497 14,49Kb
25.09.09
767
.1186471497 14,49Kb Бесплатно
RepairNomDoc v1.14 895
.1187005435 22,03Kb
25.09.09
895
.1187005435 22,03Kb Бесплатно

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Владислав Чинючин (vcv) 07.08.07 12:26
Не дают проголосовать за обработку. Рейтинг требуют. Вот захочешь доброе "+1" сказать человеку и не дают :-(
Вот еще бы доработать. При исправлении получается неудобно. Номера пересекаются у 2-х и более документов, обработка показывает только один и его и предлагает исправлять. А я выбрать хочу.
2. Михаил Семенов (Shaman100M) 07.08.07 12:44
Доработаем. Правда, тогда и мех-м выбора придется прикручивать. :)
3. Darex (TIG-PROGRAMMIST) 07.08.07 13:00
Да уж особенно в конфигурации зарплата и кадры отлично исправляет номера, с учетом того что там номера принципиально сделаны меньше чем их размерность, после исправления сделать корректировку документа невозможно, так как вставить И01,И02 , надо доработать возможность ограничивать размерность исправления.
4. Михаил Семенов (Shaman100M) 07.08.07 14:13
Два вопроса, Darex.
1. "Размерность исправления" - это возможность создавать новый номер длиной меньше установленной в конфигураторе?
2. "так как вставить И01, И02" - речь идет о посленомерной приставке, типа "постфиксе"? (ЗиК под рукой нет)?
5. Михаил Семенов (Shaman100M) 13.08.07 22:35
Новая версия, с расширенными возможностями исправления номеров. Учтены пожелания vcv и Darex.
6. Герман (German) 28.08.07 12:27
Числовая часть была впереди(2-к) поэтому пришлось сделать так (добавить нули сначала)

Код
            // пытаемся добавить - убрать лишние цифры после префикса 
               
               Если       ДлинаПрежнейЧЧ   < ДлинаЧЧ Тогда
                  // добавляем нули
                  //Док.НомерДок   = ТекТаблица.Префикс   + Формат(ЧисловойНомер,"Ч(0)"+ДлинаЧЧ);
                  Док.НомерДок   = Формат(ЧисловойНомер,"Ч(0)"+ДлинаЧЧ)+ТекТаблица.Префикс;
Показать полностью



7. Герман (German) 28.08.07 13:29
Хорошо бы переименовывать все документы(типы документов привязанных к нумератора) по шаблону.
А то есть масса обработок, но все они привязаны только к типу документу а не к нумератору
8. Михаил Семенов (Shaman100M) 08.09.07 13:48
(6) Считаю, что такие вещи можно делать в прошлом периоде нумерации, т.к. при таком способе текущая нумерация собъется. Ну, эта обработка позволяет задать количество пробелов в конце номера, и в соответствии с этим все доки перенумеровать. Потом написать небольшую обработку с куском кода в цикле вроде:

Код
 Док.НомерДок = СокрЛП(Док.НомерДок)+НеобходимыйПрефикс; 
Показать полностью


(7) Шаблон еще больше усложнит обработку. Только если есть большая необходимость в этом. В принципе, <Префикс><Номер><Пробелы> - простейший и самый употребляемый шаблон, не противоречащий автонумерации. А вместо сложных шаблонов для номера документа можно ввести доп. строчный реквизит с маской, и обрабатывать его в форме документа.

С нумератором да, захотелось сделать все по правилам, хотя к концу выполнения такие задачи успевают надоесть. :)
9. ПодОпытный (mihenius) 28.07.09 10:14
На этапе Номера с пробелами
Если в номере документа есть и префикс и постфикс, то обработка постфикс игнорирует и прибавляет 0 справа, хотя должна ставить перед числовой частью.
10. Михаил Семенов (Shaman100M) 28.07.09 14:26
(9) к сожалению, данная версия обработки с постфиксами не работает, и воспринимает <префикс><номер><постфикс> как единый префикс.
11. Михаил Семенов (Shaman100M) 28.07.09 14:38
(9) а, понял фишку:

Р012ПП _ _ --> Р00012ПП
12. ПодОпытный (mihenius) 29.07.09 12:57
Да я уже для себя исправил, просто как бы маленький недочет ,)
(11) Ога, а сейчас делает Р012ПП00, ерунду )
13. Маргарита (p_margo) 27.09.09 18:15
Спасибо огромное! Собралась уже сама писать что-нибудь по "отлову", и тут Вашу обработку v1.14 увидела! Быстренько нашлась ошибка, и заодно некоторые проблемы всплыли, о которых я и не подозревала. Все устранилось. Вы мне сэкономили много времени! :!:
14. JD (elsystem) 08.01.10 23:22
Спасибо автору! Отдуши написано!
15. Николай Спириденко (nikanat) 17.10.11 04:53
16. Алиса Кирстен (vpozitive) 01.11.11 23:07
Хороший помощник!! Нужная вещь
17. Светялчок (Масянечка) 06.11.11 13:36
Спасибо! как раз насущная проблема после выгрузки из КПК посредствои Моби-С :(((
18. Тимур (tgnike) 08.11.11 12:33
Спасибо. очень удобно и функционально!!!
19. Андрей Никитин (courageous) 10.11.11 12:55
Отлично работает обработка. Бухам ручки поправить бы... как умудряются - непонятно, но теперь можно спокойно все исправить. Еще выриант переброски справочника из другой базы - коды полюбому совпадут, а с этой обработочкой такой проблемы больше нету! Автору спасибо.
20. san san (san_nisan) 17.11.11 21:42
Отлично работает обработка. Автор молодец! Реально выручила ваша обработка. Всё четко работает
21. IR IR (Artemuch2) 29.01.12 21:17
Отлично попробуем! как раз нужно перед сверткой
23. Антон (Joker) 30.03.12 09:30
хорошая вещь, постоянно борюсь с косяками в номерах, а универсальную все никак сам не сделал, теперь буду эту расшаривать
24. igor (igor_35) 18.01.13 11:26
25. Максим Литвинов (maksa2005) 09.04.15 09:13
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа