Перенумерация документов
Обновление 14-03-2025г.
Добавил версию 2.1 - для перенумерации документов для УФ.
Есть видеообзор на рутуб Демонстрация работы обработки в двух режимах + дополнительно как добавить свое упорядочивание документов
Данная обработка протестирована на двух разных рабочих базах БП Проф 3.0.171.23 разных клиентов.
Что добавил:
1. Добавил механизм для подключения к базе внешней обработки. Теперь обработку можно открыть не только через Файл-Открыть, но сохранить в своей рабочей базе.
2. Добавил режим нумерации согласно упорядочиванию по дате документов - появился соответствующий Флаг "Упорядочить по дате документов" в разделе "Основные параметры" (первый рисунок в Ленте).
Что дает этот режим - документы упорядочиваются по дате, далее начиная с Номера = 1 документам присваиваются новые номера с учетом указанного префикса (с учетом таблицы замены префиксов). Конкретно, была поставлена задача за 2024 год перенумеровать все Приходные кассовые ордера (ПКО) - в БП Проф они называются Поступления наличных средств - перенумеровать нужно было с учетом упорядочивания по датам пробития чеков.
До этой версии 2.1, такого режима перенумерации у документов не было - сейчас есть.
Если флаг "Упорядочить по дате документа" не возведен, тогда будет срабатывать режим максимального сохранения номеров документов, при котором удаляются дубли номеров, удаляются лишние символы, неправильные префиксы заменяются на правильные, проставляются промежуточные номера, а не с последнего имеющегося (см. видеообзор на рутуб).
3. Добавил сохранение параметров формы при закрытии и открытии.
4. Добавил список обрабатываемых документов с отображением имеющегося и нового номера документа.
Для предварительного отображения списка документов и перед началом работы нажмите "Заполнить список". Далее просмотрите по списку какие имеются префиксы номеров - пропишите все имеющиеся префиксы - и пропишите рядом, на что их нужно заменить. Необходимо для корректных префиксов также прописывать те же самые корректные префиксы - см. рисунок 2 в Ленте.
5. Добавил периодичность документов в установку периода документов: для периодичности год, начало и конец периода отбора документов будут соответственно НачалоГода и КонецГода.
6. Упаковал таблицы и разделы параметров в сворачиваемые элементы формы - для красивости и удобства работы с формой.
Обновление от 07.02.2022г - добавил обработку для конфигураций на Управляемых формах "ПеренумерацияДокументов_УФ" - учет префиксов встроен обязательным механизмом. Описание соответствует описанию для обработки для _ОбычныхФорм. Разработана и протестирована на 1С:Комплексная автоматизация 2 (2.4.13.281), платформа 1С:Предприятие 8.3 (8.3.18.1741).
Напомню, что для документов важно указать период (обычно год), организацию, вид документа, правила замены префиксов (даже если заменять префиксы не надо).
Обновление от 03.02.2022.
В ходе рефакторинга кода полностью изменился алгоритм перенумерации:
1) теперь учитываются дубли номеров (даже в разрезе префиксов)
2) теперь нужно задавать вручную все префиксы и прописывать правила замены префиксов.
Условно для примера напишу так:
префикс ТК => ТК - означает сценарий, при котором префикс не изменяется;
префикс "" => ТК - означает сценарий, при котором номера без префиксов должны приобрести префикс ТК, и быть уникальными в разрезе префикса ТК;
префикс БП- => ТК - означает сценарий, при котором префикс БП- должен замениться на префикс ТК. В данном примере тире можно указывать в разделе префиксов или в разделе ЛишнихСимволов, которые удаляются из номеров. По факту тире уйдет, поэтому будет одинаково задать тире в разных разделах (вспомогательных таблицах - см. рис.)
3) механизм префикса организации или узла базы данных связан лишь с созданием новых документов, а так как мы документы не создаем, а перенумеровываем уже имеющиеся документы, то мы работаем уже с теми имеющимися префиксами, которые у нас сидят в документах. Они могут прилететь из обмена из другой базы, из прошлого периода, когда мы работали с другим префиксом, из-за ошибки пользователя и т.д. Поэтому все префиксы, которые попадаются в заданном периоде (период - для документов это обычно определенный год), вам нужно вручную прописать во вспомогательной таблице Префиксы, и для каждого задать правило замены (даже для тех, которые изменять не надо).
4) Изменил алгоритм определения уникального номера по порядку - метод описан подробно ниже по тексту.
Обработка протестирована на Управление производственным предприятием, редакция 1.3 (1.3.173.3), платформа 1С:Предприятие 8.3 (8.3.18.1741), обычные формы.
На рисунках ниже показан ситуация, когда 5 документов имеют некорректные номера. Для перенумерации надо запустить алгоритм сначала для 2015 года с префиксами ТК, затем второй раз для 2011 года с префиксами ТК, "" (пустая строка), БП (тире я отнес к лишним символам, хотя можно было отнести к префиксу БП-). На втором и третьем рисунках показаны результаты перенумерации.
Перенумерация кодов справочника
Обновление от 07.02.2022г - добавил обработку для конфигураций на Управляемых формах "ПеренумерацияСправочников_УФ" - учет префиксов встроен обязательным механизмом. Описание соответствует описанию для документов для _ОбычныхФорм. Разработана и протестирована на 1С:Комплексная автоматизация 2 (2.4.13.281), платформа 1С:Предприятие 8.3 (8.3.18.1741).
Обновление от 02.02.2022г.
Была проведена проверка и тестирование работы первой версии внешней обработки для справочников на конфигурации УПП 1.3 (Управление производственным предприятием, редакция 1.3 (1.3.173.3) ), на платформе 1С:Предприятие 8.3 (8.3.18.1741)) - первая версия обработки корректно восстановила коды справочника Номенклатура в демо-базе УПП 1.3.
В ходе рефакторинга кода полностью изменился алгоритм до неузнаваемости - сейчас представлена обновленная версия:
1) добавлены все справочники с длиной кода больше нуля (тип кода - строковый или числовой - не важно);
2) учтены дубли кодов - при этом для учета дублей кодов в разрезе префиксов добавлена вторая обработка. Если у вас нет префиксов, то используйте обработку "Перенумерация Справочников". Если у вас справочник содержит элементы с разными префиксами, то используйте обработку "Перенумерация Справочников СУчетомПрефиксов". Это связано с тем, что все алгоритмы для поиска и подбора уникального кода происходят в разрезе префиксов (например, для префиксов "БП-" или "УТ-"), и этот же алгоритм для справочника без префиксов будет работать дольше - это вы почувствуете на больших справочниках и малых мощностях компьютера. Если справочник небольшой и префиксов нет, можете использовать любую обработку - разница будет в несущественной скорости выполнения обработки.
3) для справки - в обработке "Перенумерация справочников" учета префиксов кодов нет - если вам надо перезадать коды справочника без учета префикса кодов - то есть удалить префиксы и восстановить обычную нумерацию, задайте префиксы во вспомогательной таблице ЛишниеСимволы - тогда при этом префиксы будут удалены из кодов и восстановлены лидирующими нулями до длины формата кода.
4) ранее при записи нового кода при возникновении ошибки "Не уникальный код справочника" - я обрабатывал исключительную ситуацию поиском нового уникального кода и перезаписью справочника, сейчас полностью ушел от этого механизма. Сейчас заранее определяю все дубли кодов ("000000012", "0012", "12" - все это дубли одного кода) и корректно обрабатываю все коды без обработки исключительных ситуаций.
5) добавил Флаг -параметр для обработки справочника не запросом, а через объектную модель - полезно для очень большого справочника и небольших мощностей компьютера (памяти в первую очередь) - чтобы не вылететь в ошибку "Не хватает памяти".
6) для разных платформ применяю функцию Найти() или СтрНайти() - в зависимости от версии, указывайте соответствующий Флаг "ИспользоватьСтаруюФункциюНайти" (смотрите рисунки ниже) - метод СтрНайти() - доступен, начиная с версии 8.3.6 (в режиме совместимости с версией 8.3.6 и последующими).
Ниже на рисунках представлена ситуация "Как было" - и "Как стало" после перенумерация справочника Номенклатура с учетом имеющихся префиксов. Представлена ситуация, когда в справочнике до перехода на обмен с бухгалтерией (БП-) префиксы не использовались (элементы без префиксов), с переходом на обмен - появился родной префикс УТ-, и элементы из другой базы с префиксов БП-.
Префиксы указывайте с тире, если тире используется при формировании кода. И наоборот, без тире - если тире не используется.
Обратите внимание, что после обработки код "БП-00000001" и код "УТ-00000001" - это разные и уникальные коды в разрезе своих префиксов. Уникальные коды были установлены, потому что до обработки элементы имели дубли-кодов. При этом код "УТ-00000125" корректно восстановил свою длину с учетом того, что дублей в разрезе префикса "УТ-" не было.
7) Для справки - типовая обработка 1С заменяет все подряд коды, начиная с вашего заданного номера (по умолчанию с 1) последовательно увеличивая на 1 следующий код. Перезаписываются все элементы справочника, участвующие в этом алгоритме.
В представленных обработках по справочнику - те элементы справочника, у которых нет дублей кодов и формат кодов валидный для конфигурации - не будут перезаписаны, сохранят исходное значение кода. Вы производите минимальные изменения со справочником.
8) Для справки - обработка рассчитана на простые правила задания кода: Префикс + ЛидирующиеНули + ЧисловойКод. Для других правил (сложных вариантов) обработка не подходит. Например, когда Код задается как КодГруппы (4 символа) + "-" + КодЭлемента. В данном примере нет префиксов, нет лидирующих нулей, длина кода не соответствует предустановленной в конфигураторе. Такие нестандартные сценарии обработка не обрабатывает!
9) Для справки - алгоритм перенумерации справочников с учетом префиксов занимает 343 строки кода, без учета префиксов - 251 строка кода. Не думаю, что подобный механизм можно включить в типовую групповую обработку справочников в раздел "ПроизвольныйАлгоритм", тем более без отладки...
Всем добра!
С пользой для клиентов, RustIG.
1) [Расширение] УНФ. Список заказов + Структура подчиненности
2) [Расширение] УТ 11.4. Счет на оплату с факсимиле
3) [Расширение] БП 3.0. Список счетов/ Список реализаций + Связанные документы
Внешние обработки (не расширения!):
1) Список заказов поставщикам + структура подчиненности
2) Список заказов покупателей + структура подчиненности
3) Список реализаций со структурой подчиненности + реестр документов
4) Список заказов покупателей (Расширенная версия)
Другие публикации:
1) Удаление справочников для любых баз на управляемых формах
2) Удаление документов для любых баз на управляемых формах
3) Удаление чеков ККМ в Рознице 2.2
4) Загрузка товаров, штрихкодов, цен и остатков на УФ - Розница 2.2
5) Отчет Остатки и цены (прайс с остатками)
7) Как почистить характеристики в УТ 10.3
8) Доработка конфигурации Конвертация Данных
9) Ввод показателей план-факта БП 3.0
11) Просмотр свойств метаданных (подписки на события, функциональные опции и другое)
Проверено на следующих конфигурациях и релизах:
- 1С:Комплексная автоматизация 2, релизы 2.4.13.281
- Управление производственным предприятием, редакция 1.3, релизы 1.3.173.3
- Бухгалтерия предприятия, редакция 3.0, релизы 3.0.171.23