Обработка позволяет перенумеровать документы за период в соответствии с заданной сортировкой в таблице.
Как работать!
ПЕРЕД ВЫПОЛНЕНИЕМ ОБРАБОТКИ РЕКОМЕНДУЕТСЯ СДЕЛАТЬ АРХИВНУЮ КОПИИ БАЗЫ ДАННЫХ
1. Установите период и выберите вид документа
2. Отсортируйте полученный список по любому из полей
3. В первой строке введите начальный номер для документов
4. Нажмите Перенумеровать
Протестировано в конфигурации 1С:Бухгалтерия Предприятия 3.0.47.33
В обработке реализован следующий код:
&НаСервере
Процедура ПеренумероватьНаСервере()
// Перенумеровывать будем в два этапа.
// Сначала перенумеруем с символом "_" вместо первого символа,
// потом заменим его на первый символ из заданного.
// Подготовка. Разберем первый номер. Определим цифровую часть и префикс.
ПервыйНомерПолностью = Объект.ТабДок[0].Номер;
НомерТекст = ПолучитьЦифрыНомера(ПервыйНомерПолностью);
ДлинаНомера = СтрДлина(НомерТекст);
ДлинаПрефикса = СтрДлина(ПервыйНомерПолностью) - СтрДлина(НомерТекст);
Префикс = Лев(ПервыйНомерПолностью, ДлинаПрефикса);
Если Префикс="" Тогда
ПервыйСимвол = Символ(КодСимвола(НомерТекст, 1));
НомерТекст = Сред(НомерТекст, 2);
ДлинаНомера = СтрДлина(НомерТекст);
Иначе
ПервыйСимвол = Символ(КодСимвола(Префикс, 1));
Префикс = Сред(Префикс, 2);
ДлинаПрефикса = СтрДлина(Префикс);
КонецЕсли;
НачНомер = Число(НомерТекст);
// Этап 1. Первый символ - символ подчеркивания
Номер = НачНомер;
Для каждого Док Из Объект.ТабДок Цикл
ДокОб = Док.Ссылка.ПолучитьОбъект();
ТекНомер = "_" + Префикс + Формат(Номер, "ЧЦ=" + СокрЛП(ДлинаНомера) + "; ЧВН=; ЧГ=0");
ДокОб.Номер = ТекНомер;
Если ДокОб.Проведен Тогда
Попытка
ДокОб.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
Исключение
ДокОб.Записать(РежимЗаписиДокумента.Запись);
КонецПопытки;
Иначе
ДокОб.Записать(РежимЗаписиДокумента.Запись);
КонецЕсли;
Номер = Номер + 1;
КонецЦикла;
// Этап 2. Первый символ "КАК НАДО"
Для каждого Док Из Объект.ТабДок Цикл
ДокОб = Док.Ссылка.ПолучитьОбъект();
ТекНомер = ПервыйСимвол + Сред(ДокОб.Номер, 2);
ДокОб.Номер = ТекНомер;
Если ДокОб.Проведен Тогда
Попытка
ДокОб.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
Исключение
ДокОб.Записать(РежимЗаписиДокумента.Запись);
КонецПопытки;
Иначе
ДокОб.Записать(РежимЗаписиДокумента.Запись);
КонецЕсли;
КонецЦикла;
ИмяДокументаПриИзмененииНаСервере(Объект.ИмяДокумента, Объект.ПериодОбработки.ДатаНачала, Объект.ПериодОбработки.ДатаОкончания);
КонецПроцедуры
---------------------
ВНИМАНИЕ!!! Обработка запускается через файл-открыть. Для пользователя должно быть доступна возможность открытия внешних обработок.