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



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

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

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

Проверка неуникальности номеров производится в соответствии с указанным нумератором документа или его видом, (если нумератор не указан) в пределах установленной периодичности номера. Для всеобъемлющего поиска неуникальных номеров необходимо указывать интервал выборки документов кратно периодичности номера. Для некорректных номеров просто проверяется соответствие количества пробелов в конце номера (по умолчанию — 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.

24 Comments

  1. vcv

    Не дают проголосовать за обработку. Рейтинг требуют. Вот захочешь доброе «+1» сказать человеку и не дают 🙁

    Вот еще бы доработать. При исправлении получается неудобно. Номера пересекаются у 2-х и более документов, обработка показывает только один и его и предлагает исправлять. А я выбрать хочу.

    Reply
  2. Shaman100M

    Доработаем. Правда, тогда и мех-м выбора придется прикручивать. 🙂

    Reply
  3. TIG-PROGRAMMIST

    Да уж особенно в конфигурации зарплата и кадры отлично исправляет номера, с учетом того что там номера принципиально сделаны меньше чем их размерность, после исправления сделать корректировку документа невозможно, так как вставить И01,И02 , надо доработать возможность ограничивать размерность исправления.

    Reply
  4. Shaman100M

    Два вопроса, Darex.

    1. «Размерность исправления» — это возможность создавать новый номер длиной меньше установленной в конфигураторе?

    2. «так как вставить И01, И02» — речь идет о посленомерной приставке, типа «постфиксе»? (ЗиК под рукой нет)?

    Reply
  5. Shaman100M

    Новая версия, с расширенными возможностями исправления номеров. Учтены пожелания vcv и Darex.

    Reply
  6. German

    Числовая часть была впереди(2-к) поэтому пришлось сделать так (добавить нули сначала)

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

    Показать полностью

    Reply
  7. German

    Хорошо бы переименовывать все документы(типы документов привязанных к нумератора) по шаблону.

    А то есть масса обработок, но все они привязаны только к типу документу а не к нумератору

    Reply
  8. Shaman100M

    (6) Считаю, что такие вещи можно делать в прошлом периоде нумерации, т.к. при таком способе текущая нумерация собъется. Ну, эта обработка позволяет задать количество пробелов в конце номера, и в соответствии с этим все доки перенумеровать. Потом написать небольшую обработку с куском кода в цикле вроде:

    Код
     Док.НомерДок = СокрЛП(Док.НомерДок)+НеобходимыйПрефикс; 

    Показать полностью

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

    С нумератором да, захотелось сделать все по правилам, хотя к концу выполнения такие задачи успевают надоесть. 🙂

    Reply
  9. mihenius

    На этапе Номера с пробелами

    Если в номере документа есть и префикс и постфикс, то обработка постфикс игнорирует и прибавляет 0 справа, хотя должна ставить перед числовой частью.

    Reply
  10. Shaman100M

    (9) к сожалению, данная версия обработки с постфиксами не работает, и воспринимает <префикс><номер><постфикс> как единый префикс.

    Reply
  11. Shaman100M

    (9) а, понял фишку:

    Р012ПП _ _ —> Р00012ПП

    Reply
  12. mihenius

    Да я уже для себя исправил, просто как бы маленький недочет ,)

    (11) Ога, а сейчас делает Р012ПП00, ерунду )

    Reply
  13. p_margo

    Спасибо огромное! Собралась уже сама писать что-нибудь по «отлову», и тут Вашу обработку v1.14 увидела! Быстренько нашлась ошибка, и заодно некоторые проблемы всплыли, о которых я и не подозревала. Все устранилось. Вы мне сэкономили много времени! ❗

    Reply
  14. elsystem

    Спасибо автору! Отдуши написано!

    Reply
  15. nikanat

    СПС!!!

    Reply
  16. vpozitive

    Хороший помощник!! Нужная вещь

    Reply
  17. Масянечка

    Спасибо! как раз насущная проблема после выгрузки из КПК посредствои Моби-С :(((

    Reply
  18. tgnike

    Спасибо. очень удобно и функционально!!!

    Reply
  19. courageous

    Отлично работает обработка. Бухам ручки поправить бы… как умудряются — непонятно, но теперь можно спокойно все исправить. Еще выриант переброски справочника из другой базы — коды полюбому совпадут, а с этой обработочкой такой проблемы больше нету! Автору спасибо.

    Reply
  20. san_nisan

    Отлично работает обработка. Автор молодец! Реально выручила ваша обработка. Всё четко работает

    Reply
  21. Artemuch2

    Отлично попробуем! как раз нужно перед сверткой

    Reply
  22. Joker

    хорошая вещь, постоянно борюсь с косяками в номерах, а универсальную все никак сам не сделал, теперь буду эту расшаривать

    Reply
  23. igor_35

    Помогло. Спасибо!

    Reply
  24. maksa2005

    Не помогло исправить(((

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *