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



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

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

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

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