HelpF.pro

Пример присвоения нового номера, при проблемах с нумерацией

Пример реализации автоматич. расчета следующего номера, нумерация

Предположим, у документа Начисление Отпуска слетела нумерация, кто-то влез и ручками исправил номер документа )

Самый простой способ исправить ситуацию - найти документ с некорректным номером и изменить в нем номер на правильный.
Или можно перенумеровать воспользовавшись специальными обработками -
https://helpf.pro/files/view/8.html
https://helpf.pro/files/view/11.html
Ну а если найти некорректный документ не удается, а использовать обработки перенумерации нежелательно, тогда:
в модуле документа, у которого слетела нумерация, в процедуре
Код 1C v 7.x
  Процедура ВводНового(Копирование) 
добавить (пример для документа "НачислениеОтпуска" ):

Код 1C v 7.x
 
//E_Migachev автоматический расчет следующего номера
//Выберем документы в обратном порядке
ДокНачислениеОтпуска = СоздатьОбъект("Документ.НачислениеОтпуска");
ДокНачислениеОтпуска.ОбратныйПорядок(1);
ДокНачислениеОтпуска.ВыбратьДокументы(НачКвартала(РабочаяДата()-15),КонКвартала(РабочаяДата()+27));
ДокНачислениеОтпуска.ПолучитьДокумент();
//Получим последний числовой номер
новномдк=Строка(число(Сред(ДокНачислениеОтпуска.НомерДок,3,7)));
стрдлинаномдк=СтрДлина(Строка(СокрЛП(Сред(ДокНачислениеОтпуска.НомерДок,3,7))));
новномдк=Число(новномдк)+1;
иткол=стрдлинаномдк-СтрДлина(новномдк);
префиксдк="ОТ";
если иткол>0 тогда
для н=1 по иткол цикл
префиксдк=префиксдк+строка(0);
конеццикла;
конецесли;
докном=префиксдк+новномдк;
//Если документ исправление то нужен префикс И
Если Исправление=1 Тогда
знтри=Прав(ДокНачислениеОтпуска.НомерДок,3);
Если Строка(Лев(знтри,1))="И" Тогда
чзнтри=Число(Прав(знтри,2));
чзнтри=чзнтри+1;
Иначе
чзнтри=1;
КонецЕсли;
Если СтрДлина(чзнтри)=1 Тогда
докном=докном+"-И0"+Строка(чзнтри);
Иначе
докном=докном+"-И"+Строка(чзнтри);
КонецЕсли;
КонецЕсли;
//Присвоим новый номер
НомерДок=докном; //E_Migachev автоматич расчет номера

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq/view/263.html