1С 8.3 ОбновитьНумерациюОбъектов
Данные > Примеры кода 1С > 1С 8.3 Документы
Перейти в раздел примеры кода 1С 8.3:
Был номер вида Префикс-День-ПоследовательныйНомер и вдруг стал просто ПоследовательныйНомер…
Есть функция ОбновитьНумерациюОбъектов(<Метаданные>)
Пример: ОбновитьНумерациюОбъектов(Метаданные.Документы.Заказ)
С ней тоже надо быть аккуратнее и лучше тестировать на копии, прежде чем выполнять в рабочей базе. Но по своей логике, она сбрасывает нумерацию и после этого при создании нового номера, он будет генерировать последовательно по максимальному номеру. Чтобы она отработала корректно, предварительно нужно поправить все «неправильные» номера в документах либо справочниках. Либо путем ручного изменения (если речь об нескольких элементах) либо написать обработку, которая по правилу присвоения номера исправит принудительно номера в «съехавших» документах. При написании такой обработки, документы как правило упорядочиваются по "Ссылка".
Классический вариант перенумерации в 1С 8.3:
Процедура ОбновитьНумерациюДокументов()
// Получаем менеджер документов "Заказ"
МенеджерДокументов = Документы.Заказы;
// Получаем все документы "Заказ"
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Заказы.Ссылка КАК Ссылка,
| Заказы.Номер КАК Номер
|ИЗ
| Документ.Заказы КАК Заказы
|УПОРЯДОЧИТЬ ПО
| Заказы.Дата";
РезультатЗапроса = Запрос.Выполнить();
// Обходим все документы и обновляем номера
Выборка = РезультатЗапроса.Выбрать();
Счетчик = 1;
Пока Выборка.Следующий() Цикл
Документ = Выборка.Ссылка.ПолучитьОбъект();
Документ.Номер = Счетчик;
Документ.Записать(); // Сохраняем изменения
Счетчик = Счетчик + 1;
КонецЦикла;
Сообщить("Нумерация документов обновлена!");
КонецПроцедуры
// Получаем менеджер документов "Заказ"
МенеджерДокументов = Документы.Заказы;
// Получаем все документы "Заказ"
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Заказы.Ссылка КАК Ссылка,
| Заказы.Номер КАК Номер
|ИЗ
| Документ.Заказы КАК Заказы
|УПОРЯДОЧИТЬ ПО
| Заказы.Дата";
РезультатЗапроса = Запрос.Выполнить();
// Обходим все документы и обновляем номера
Выборка = РезультатЗапроса.Выбрать();
Счетчик = 1;
Пока Выборка.Следующий() Цикл
Документ = Выборка.Ссылка.ПолучитьОбъект();
Документ.Номер = Счетчик;
Документ.Записать(); // Сохраняем изменения
Счетчик = Счетчик + 1;
КонецЦикла;
Сообщить("Нумерация документов обновлена!");
КонецПроцедуры
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник