Функциональные возможности:
- Выбор объекта, у которого длина кода/номера отлична от нуля
- Отключение контроля записи (ОбменДанными.Загрузка = Истина)
- Выполнение обновления нумерации в одной транзакции
- Присвоение префикса всем обновляемым объектам
- Настройка произвольного отбора
- Настройка произвольной сортировки
Принцип работы
Основной функционал обработки
МетаданныеОбъекта = Метаданные.НайтиПоПолномуИмени(ПолноеИмяОбъекта);
ВидОбъекта = СтрРазделить(ПолноеИмяОбъекта, ".")[0];
ПолеНомера = ?(ВидОбъекта = "Документ" ИЛИ ВидОбъекта = "БизнесПроцесс" ИЛИ ВидОбъекта = "Задача", "Номер", "Код");
ФорматнаяСтрока = "ЧЦ=" + (МетаданныеОбъекта["Длина" + ПолеНомера + "а"] - СтрДлина(Префикс)) + "; ЧВН=; ЧГ=0";
Если ВыполнитьВТранзакции Тогда
НачатьТранзакцию();
КонецЕсли;
Попытка
Номер = 0;
Для Каждого ТекСтрока Из КоллекцияЗначений Цикл
Номер = Номер + 1;
Объект = ТекСтрока.Ссылка.ПолучитьОбъект();
Объект[ПолеНомера] = Префикс + Формат(Номер, ФорматнаяСтрока);
Если ОтключитьКонтрольЗаписи Тогда
Объект.ОбменДанными.Загрузка = Истина;
КонецЕсли;
Объект.Записать();
КонецЦикла;
ОбновитьНумерациюОбъектов(МетаданныеОбъекта);
Если ВыполнитьВТранзакции Тогда
ЗафиксироватьТранзакцию();
КонецЕсли;
Исключение
Если ВыполнитьВТранзакции Тогда
ОтменитьТранзакцию();
КонецЕсли;
СообщениеПользователю = Новый СообщениеПользователю;
СообщениеПользователю.Текст = ОписаниеОшибки();
СообщениеПользователю.Сообщить();
Возврат Ложь;
КонецПопытки;
Вступайте в нашу телеграмм-группу Инфостарт
