Перенумерация документов
Обновление от 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) Доработка конфигурации Конвертация Данных
Проверено на следующих конфигурациях и релизах:
- 1С:Комплексная автоматизация 2, релизы 2.4.13.281
- Управление производственным предприятием, редакция 1.3, релизы 1.3.173.3