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