Обработка «Проверка и исправление (перенумерация) неуникальных и некорректных номеров документов»
Обработка осуществляет поиск документов с неуникальными и некорректными номерами и их последующую перенумерацию. Неуникальные номера могут образоваться, например, вследствие одновременного создания документов в разных частях распределенной базы данных с одиннаковым префиксом и последующего обмена данными. Некорректные номера (с пробелом в конце) могут образовываться из-за их ручной корректировки пользователями, а также при увеличении длины номера средствами конфигурирования и непустой выборке
документов по данному виду.
Проверка неуникальности номеров производится в соответствии с указанным нумератором документа или его видом, (если нумератор не указан) в пределах установленной периодичности номера. Для всеобъемлющего поиска неуникальных номеров необходимо указывать интервал выборки документов кратно периодичности номера. Для некорректных номеров просто проверяется соответствие количества пробелов в конце номера (по умолчанию — 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.
Не дают проголосовать за обработку. Рейтинг требуют. Вот захочешь доброе «+1» сказать человеку и не дают 🙁
Вот еще бы доработать. При исправлении получается неудобно. Номера пересекаются у 2-х и более документов, обработка показывает только один и его и предлагает исправлять. А я выбрать хочу.
Доработаем. Правда, тогда и мех-м выбора придется прикручивать. 🙂
Да уж особенно в конфигурации зарплата и кадры отлично исправляет номера, с учетом того что там номера принципиально сделаны меньше чем их размерность, после исправления сделать корректировку документа невозможно, так как вставить И01,И02 , надо доработать возможность ограничивать размерность исправления.
Два вопроса, Darex.
1. «Размерность исправления» — это возможность создавать новый номер длиной меньше установленной в конфигураторе?
2. «так как вставить И01, И02» — речь идет о посленомерной приставке, типа «постфиксе»? (ЗиК под рукой нет)?
Новая версия, с расширенными возможностями исправления номеров. Учтены пожелания vcv и Darex.
Числовая часть была впереди(2-к) поэтому пришлось сделать так (добавить нули сначала)
Показать полностью
Хорошо бы переименовывать все документы(типы документов привязанных к нумератора) по шаблону.
А то есть масса обработок, но все они привязаны только к типу документу а не к нумератору
(6) Считаю, что такие вещи можно делать в прошлом периоде нумерации, т.к. при таком способе текущая нумерация собъется. Ну, эта обработка позволяет задать количество пробелов в конце номера, и в соответствии с этим все доки перенумеровать. Потом написать небольшую обработку с куском кода в цикле вроде:
Показать полностью
(7) Шаблон еще больше усложнит обработку. Только если есть большая необходимость в этом. В принципе, <Префикс><Номер><Пробелы> — простейший и самый употребляемый шаблон, не противоречащий автонумерации. А вместо сложных шаблонов для номера документа можно ввести доп. строчный реквизит с маской, и обрабатывать его в форме документа.
С нумератором да, захотелось сделать все по правилам, хотя к концу выполнения такие задачи успевают надоесть. 🙂
На этапе Номера с пробелами
Если в номере документа есть и префикс и постфикс, то обработка постфикс игнорирует и прибавляет 0 справа, хотя должна ставить перед числовой частью.
(9) к сожалению, данная версия обработки с постфиксами не работает, и воспринимает <префикс><номер><постфикс> как единый префикс.
(9) а, понял фишку:
Р012ПП _ _ —> Р00012ПП
Да я уже для себя исправил, просто как бы маленький недочет ,)
(11) Ога, а сейчас делает Р012ПП00, ерунду )
Спасибо огромное! Собралась уже сама писать что-нибудь по «отлову», и тут Вашу обработку v1.14 увидела! Быстренько нашлась ошибка, и заодно некоторые проблемы всплыли, о которых я и не подозревала. Все устранилось. Вы мне сэкономили много времени! ❗
Спасибо автору! Отдуши написано!
СПС!!!
Хороший помощник!! Нужная вещь
Спасибо! как раз насущная проблема после выгрузки из КПК посредствои Моби-С :(((
Спасибо. очень удобно и функционально!!!
Отлично работает обработка. Бухам ручки поправить бы… как умудряются — непонятно, но теперь можно спокойно все исправить. Еще выриант переброски справочника из другой базы — коды полюбому совпадут, а с этой обработочкой такой проблемы больше нету! Автору спасибо.
Отлично работает обработка. Автор молодец! Реально выручила ваша обработка. Всё четко работает
Отлично попробуем! как раз нужно перед сверткой
хорошая вещь, постоянно борюсь с косяками в номерах, а универсальную все никак сам не сделал, теперь буду эту расшаривать
Помогло. Спасибо!
Не помогло исправить(((