Книга знаний

1С:Предприятие / v8 / Объекты конфигурации / Документы

v8: Укороченный номер документа

У нас возникла ситуация, когда у документа был номер длиной 20 без автонумерации (это был номер договора, достаточно длинный), куда писал кто чего хотел. Затем решили ввести автонумерацию и сделать номер длиной 10 с префиксом 4 знака вида "XXX-". Однако физически номер не урезали, чтобы сохранить старые номера. Описано, как добиться этого в 1С.Автор статьи:
Последняя редакция №1 от 22.05.08
URL: http://kb.mista.ru/article.php?id=673

В общем, мы решили использовать префикс, например "ППМ-" и номер длиной 10 символов.
Однако физическая длина номера была 20.

Поэтому первый номер был "ППМ-0000000000000001".
Суть алгоритма в том, что такой номер заменяется на короткий "ППМ-000001" и далее нумерация уже идет правильно стандартными средствами:
ППМ-000002
ППМ-000003
ППМ-000004
ППМ-000005
ППМ-000006
ППМ-000007
ППМ-000008
ППМ-000009
ППМ-000010
ППМ-000011
ППМ-000012
...

Соответствующий код приведен здесь:

Функция ПовторитьСимвол(Символ, Сч)
    Р="";
    Для Инд=1 По Сч Цикл
        Р=Р+Символ;
    КонецЦикла;
    Возврат Р;
КонецФункции

Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)
    НужнаяДлина=10;
    ТекПрефикс = "ППМ-";
    Если ТекПрефикс=Префикс Тогда
        Возврат; //Защита от рекурсии
    КонецЕсли;
    УстановитьНовыйНомер(ТекПрефикс);
    Если Номер=ТекПрефикс+ПовторитьСимвол("0", Метаданные().ДлинаНомера-СтрДлина(ТекПрефикс)-1)+"1" Тогда
        Номер=ТекПрефикс+ПовторитьСимвол("0", НужнаяДлина-1)+"1";
        СтандартнаяОбработка=ложь;
    КонецЕсли;
КонецПроцедуры

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика