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


Что стало (16-12-2024г.). Добавил учет префикса при перенумерации документов. Выложил обработку «Перенумерация документов».
Что было. Выкладываю обработку «Перенумерация кодов справочника». Обработка создавалась под реальную задачу. Суть — максимально сохранить «правильные» имеющиеся коды, т.к. они несут информацию (табельный номер сотрудника, инвентарный номер ОС), исправив только «неправильные». Для такой задачи типовая универсальная не подходит.

Что стало (16-12-2024г.).

Добавил учет префикса при перенумерации документов.

При этом сохранил алгоритм определения уникального номера по порядку — метод описан подробно ниже по тексту.

Выложил обработку "Перенумерация документов". Обработка создавалась под реальную задачу, протестирована на КА 1.1.33.3, БП 2.0.64.41, УПП 1.3.64.1, на платформе 8.2.19.130.

Алгоритм работает на всех конфигурациях, в общих модулях которых имеется следующий вызов функций и процедур:

ПрефиксОрганизации = ОбщегоНазначения.ПолучитьЗначениеРеквизита(Организация, "Префикс");
Если
ЗначениеЗаполнено(ПрефиксОрганизации) Тогда
Префикс = ПрефиксОрганизации;
КонецЕсли;

ОбщегоНазначения.ДобавитьПрефиксУзла(Префикс);

Что еще изменилось (15-12-2024г.).  

   Обработка "Перенумерация справочников" сконвертирована для работы на платформе 8.2. Обработка не потеряла своей актуальности даже на сегодня (15-12-2024г). Мой комментарий №25 от 29 января 2024 г раскрывает суть внесенных изменений.

Что было. Или суть метода.

Есть справочники, в которых перенумерацию кодов с помощью типовой универсальной обработки "Универсальный подбор и обработка объектов" без сурьезных 🙂 доработок делать не следует: справочник физлиц — потому что код зачастую соответствует табельному номеру, справочник  ОС — потому что код зачастую совпадает с инвентарным номером. Я реализовал свою обработку с возможностью сохранения корректных старых номеров и  возможностью установки уникальных новых. Если у кого возник вопрос, а есть ли разница с типовой универсальной, тогда прямо сейчас и поясню.

Так, например, если в базе есть табельные номера "000000001" и "0003", то моя обработка возвратит "000000001" и "000000003", а универсальная типовая — "000000001" и "000000002".

Далее для двух табельных номеров "00004" и "004" моя программа вернет номер "000000004" и еще не занятый номер "000000002", а универсальная продолжит нумеровать последовательно, то есть выдаст "000000004" и "000000005". Вот и вся разница с универсальной типовой :).

        В общем фишка заложена в алгоритме: по которому сначала номер (код) проверяется на корректность, далее в случае некорректного номера (кода) объекту подбирается уникальный новый номер (код) из незанятых.

        Кому может пригодиться обработка: тем, кто сталкивается с таким вот сообщением при добавлении нового элемента "Код не уникален!". Проблема вылезает, когда бухгалтера начинают изменять код элемента (документа) вручную.

      Пояснения к алгоритму:  

 1. Обрабатываем только справочники с типом кода "Строка". Расширить варианты можете сами. Добавить справочник (документ) можете через процедуру ПриОткрытии() формы обработки. Для моей задачи реализованы только те справочники, с которыми мне пришлось столкнуться — это справочники ФизЛиц, Контрагентов, ОС, Номенклатуры.

 2. Восстанавливаем длину кода добавлением в начало кода нулей.

 3. Если код становится не уникальным, обрабатываем исключительную ситуацию: устанавливаем свой уникальный код. При этом анализируем все свободные коды справочника из диапазона от 1 до Максимального Кода.

 4. Код, состоящий из одних нулей, переводим в "ненулевой".

 5. Максимальный Код (для примера, это обычно "99999…9") переводим в "нормальный" согласно возрастающей последовательности имеющихся кодов. Этого нет.

 6. Если в кодах справочника встречаются вредные символы, которые мешают преобразовывать строковый код в числовой формат, их нужно указать в табличке (см. рис.). 

       Вообще, алгоритм установки уникальных номеров я использовал в своей практике в дальнейшем при выгрузке и загрузке ОС в разные базы. При этом алгоритм несколько раз улучшался, но в описание данной статьи не попал. То есть, я заранее оговариваюсь, что в моем алгоритме есть место вашим улучшениям :).


       Дополнение. У бухгалтеров проявилась подобная ошибка с неуникальностью номеров документов. Выложил обработку для перенумерации документов.

Всем успехов и всего доброго! 🙂

Центр автоматизации, г.Казань


См. также:

Как эффективно использовать Инфостарт NEW!

Список реализаций + структура подчиненности + реестр документов SALE’1sm

Список заказов поставщикам + структура подчиненности SALE’1sm

Список заказов покупателей + структура подчиненности SALE’1sm

Договоры для 1с-ника ТОП-скачиваний

Сетка расписания (Планировщик) нестанДАрт

Два механизма, которые ускорили работу бухгалтеров в 1С нестанДАрт

Мини-CRM для УТ 10.3

Расчет банковских (рабочих) дней нестанДАрт

Шаблоны кода в режиме 1С:Предприятие SALE’1sm

Доработка конфигурации Конвертация Данных

Планирование платежей. Прогнозирование прибылей и убытков

Ввод показателей план-факта БП 3.0 Know-how

Инвентаризация личного опыта Для новичков 1С

Большие запросы: взгляд на проблему нестанДАрт

Технология создания коммерческих разработок Know-how

Андроид-решение для создания заказов в 1С Know-how + нестанДАрт

Отчет Остатки и цены

Печать ценников с одной и двумя ценами 55х40, 100х60, 140х200

Загрузка данных о розничных продажах из магазинов Intimissimi (Интимиссими) и Calzedonia (Кальцедония)

Доработки обмена "УТ 10.3 — интернет-магазина Shop-Script"

29 Comments

  1. iov

    (0) Вопрос поиском по сайту смотрели что есть?

    И согласно вашим же словам

    5. «Китайская» мудрость:

    А. «Не придумывай велосипед» Если я решаю задачу, например, с применением ComОбъекта, то можно найти в глобальном поиске в конфигурации УПП все механизмы и методы объектов, например, которые используются совместно с ComСоединением. Задача решится быстрее.

    если нужны оценки… то нужно то что чего здесь нет…

    Reply
  2. Rustig

    …я не из оценок сюда выложил обработку. Я смотрел выложенные обработки по этой теме — ничего не подошло. …в том-то все и дело, что Вы могли бы в комментариях указать работающую обработку по этой теме — кинуть ссылку. И еще я не смотрел на других форумах.

    Reply
  3. Rustig

    … я согласен, что «китайская» мудрость звучит банально.

    Reply
  4. iov

    http://infostart.ru/public/?rubric=1575#comm

    А теперь по пунктам:

    1 Уточнение возраста…. Молодой человек это дешевый прием на школофорумах тут такое не принято.

    2 «Не подошло» Дописать в любой перенумаратор (из готовых) кусок заменяющий символы на другие символы — это банальность. Напишите туда хотя бы установку префикса по правилам или изменение положения номера относительно префикса или установку номера с учетом кода группы в которой находится. Ну что нить такое что многофункционально и нужно.

    3 Эмоциональность что за детские психи с кучей слов? По фото вполне взрослый и самоуверенный молодой человек. Примите как конструктивную критику. Почитайте наконец кто и что писал к аналогичным обработкам другие пользователи. Это не наезд на вас вообще то был а попытка «настроить на серьезные задачи». Примерно того что тут нет в личке. И без нервов — они вам пригодятся еще.

    Reply
  5. Rustig

    Ну что ж. Посмотрел я ссылку… Своего мнения не изменил — для справочников и для 8.1 есть обработки, но они не обходят проблему «Не уникальный код!» Пусть моя реализация обработки висит в системе и дарит людям помощь. Пусть не сразу, а по необходимости. Я, например, нахожу на инфостарте обработки от 2008 и 2009 года, которые мне помогают в работе. 🙂

    Reply
  6. Abadonna

    (2), (4) Дебаты по поводу перенумераторов предлагаю прекратить. Писали, пишут, и будут писать.


    — Ваш любымый полонез?

    -Огинского

    -Ваше любомое произвдение Огинского?

    -Полонез

    Ограничений на выкладывание оных творений нет, это дело внутреннего цензора автора.

    Мнение выказать проще всего плюсом или минусом. Минус пять — и гудбай обработка

    Reply
  7. iov

    (6) никаких споров и дебатов Все мирно и спокойно. перенумераторы писать будут — согласен. Но тут вопрос то не что делает обработка а выкладывать полезные вещи. этот перенумератор может работать в УТ ? Наверняка может. так почему не дополнить его дополнительными функциями? Наверняка у каждого в загашнике свой или чужой многофункциональный перенумератор лежит… Я не исключение мне проще скачать готовое и воспользоваться чем самому писать какую нить банальшину. Так что я не как программист в данном случае а как пользователь. Минуса лепить за работу выполненную и работающую я принципиально не ставлю… Человек старался — делал.

    P.S. тем более я понимаю что у автора инстинкт защитный работает и что-то объяснять бесполезно. Тем более человек импульсивный не терпящий критики. Вы уважаемый «Abadonna» в критиков не минусами же бросаетесь а делаете лучше — быстрее- универсальнее… Так что никаких проблем и дебатов лежит и пусть лежит она есть не просит.

    Reply
  8. Rustig

    Доработал алгоритм под документы, проверил на проблемной базе, сработало отлично. Обработку не выложил, поскольку хоть она не претендует на универсальность. 🙂

    Reply
  9. Rustig

    С чего это вдруг эта статья стала «рекомендуемой сообществом»?

    У меня есть собственное замечание к своей статье 🙂 : табельный номер присваивается сотруднику (справочник «Сотрудники»), но не ФизЛицу… Инвентарный номер присваивается ОС отдельно от кода элемента справочника ОС, причем только тогда, когда ОС принимается к учету.

    так что статья несколько сбивает с толку, но при этом алгоритм установки уникальных кодов в справочниках сохраняет свою востребованность 🙂

    Reply
  10. bes-kkm

    А в Управлении торговлей 8.1 будет работать , а то может нет и смысла скачивать?

    Reply
  11. Rustig

    (10) на торговле не тестировалась. вы можете взять для себя алгоритм установки уникального номера.

    адаптировать под торговлю вам не составит труда, так как я комментировал свой алгоритм.

    возможно мне следует выложить в публикации алгоритм, который затем можно будет вставить в «универсальный подбор и обработку данных»…

    Reply
  12. dimas_downloader

    Работает

    Reply
  13. mrd_84

    Штука нужная, безусловно! Мне после переноса данніх из 77 в 8 пригодилась. Сразу по неопыпности об эотм не позаботился вот и возник вопрос. Автор, спасибо тебе! Век живи, век учись!)))

    Reply
  14. mrd_84

    Штука нужная, безусловно! Мне после переноса данных из 77 в 8 пригодилась. Сразу по неопыпности об эотм не позаботился вот и возник вопрос. Автор, спасибо тебе! Век живи, век учись!)))

    Reply
  15. DaBoogy

    Доброго дня! У меня РБД на рознице 8,1 на обмене как-то скажется или придется делать образы по новой.

    Reply
  16. fin7

    Спасибо, применяла для КАМИН:Расчет зароботной платы для бюджетных учреждений ред. 3.5

    Работает, жаль, префикс поставить нельзя

    Reply
  17. JohnyDeath

    Зачетный скрин обработки! УФ? )

    Reply
  18. KostyaBu

    Обработка убирает бредовые символы, но не перенумеровывает задвоенные коды!!!! Т.о. не выполняет своей основной задачи.

    Reply
  19. KostyaBu

    Автор, обработка не дорабатывает

    Reply
  20. Rustig

    (18), (19) Возможно, друг. Наверное бессмысленно писать, что кому-то обработка помогла… То есть она вполне работоспособна. С вашей стороны было бы профессионально и более корректно обратиться ко мне по-другому, чем, просто «Автор, обработка не дорабатывает».

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

    Вообще время для тестирования и исправления уже прошло — посмотрите дату публикации. Я не буду ее пересматривать. Может и уроки вежливости напрасно описывал…

    Это старая обработка. Возьмите из нее за основу механизм (посмотрите код и скопируйте) — механизм обхода проблемы неуникального кода и заодно формирования уникального кода.

    После публикации, я для себя много раз оптимизировал этот алгоритм и для семерки, и для восьмерки, но не выкладывал исходники кода. Спросите у ребят. которые сказали спасибо за эту обработку — могут ли они помочь вам. Я неоднократно получал помощь от ребят на ИС — просто задавал вопрос, они откликались. И у вас получится. 🙂 Только задавайте вопрос адресно — то есть кому-то конкретно пишите и спрашивайте.

    Reply
  21. KostyaBu

    (20) Хорошо, на счет корректности признаю, в обработке нехватает малюсенького кусочка кода, для отслеживания задвоенных кодов

    кодпредыдущий = «»;

    Пока Выборка.Следующий() Цикл

    Код = СокрЛП(Выборка.Код);

    если код = кодпредыдущий тогда

    код=»»;

    конецесли;

    кодпредыдущий = СокрЛП(Выборка.Код);

    Reply
  22. Niberu

    Начал смотреть отчего дублирующиеся коды не делает уникальными.

    Смотрю, тут уже обсуждалось, понятно.

    Интересно, это зачем в коде модуля формы при нажатии кнопки «выполнить»?

    Если Ложь Тогда

    Об = Справочники.ФизическиеЛица.СоздатьЭлемент();

    КонецЕсли;

    Reply
  23. Rustig

    (22) теперь у переменной Об есть контекст элемента спр-ва ФизЛиц — можешь вызывать экспортные процедуры и необходимые реквизиты физлиц

    Reply
  24. mamay

    А в Бухгалтерия предприятия, редакция 2.0 (2.0.53.4) вообще не запускается, пишет не может быть прочитана текущей версией программы. Было бы справедливым возвращать $m за скачанные, но не работоспособные обработки.

    Reply
  25. Rustig

    (24) сначала надо открыть в конфигураторе, после чего конфигуратор сам задаст вопрос «Требуется преобразование обработки». Согласитесь с этим. Затем открывайте в пользовательском режиме.

    …В кои-то веки пришлось мне сегодня обновлять БП 2.0 до последней версии, при чем конфигуратор при обновлении выдал предупреждение, что коды стали не уникальными в справочнике «Прочие доходы и расходы».

    Воспользовался своей обработкой, добавил новый справочник прочих доходов и расходов в процедуре «ПриОткрытии» как описано в публикации. Также закомментировал строку

    Если КраткоеПредставлениеОшибки(ИнформацияОбОшибке()) = «Код не уникален!» Тогда 

    так как на новой версии платформы краткое представление ошибки не «срабатывает».

    Обработка обновила коды, как надо.

    Reply
  26. Milanick

    «исходный текста модуля отсутствует»

    Это специально?

    Reply
  27. Rustig

    (26) картинку приложите пож-та

    код открыт

    Reply
  28. user1146742

    Подскажите,пожалуйста,будет ли работать на конфигурациях БГУ 2.0 и ЗКГУ 3.1

    Reply
  29. Rustig

    (28) добрый день. не могу подсказать — не тестировал. с точки зрения алгоритмов может сработать. прошу делать копии перед использованием.

    Reply

Leave a Comment

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