Как увеличить номер документа на единицу?
Допустим нужно увеличить номер документа на 1.
Номер следующего вида - У00000000011.
Значение номера строковое, соответственно если отсечь префикс функцией
Прав(), далее преобразовать получившееся в число, прибавить 1 и обратно преобразовать в строку,
получим - 12, без нулей перед префиксом.
Как получить результат У00000000012, а не У12?
Номер следующего вида - У00000000011.
Значение номера строковое, соответственно если отсечь префикс функцией
Прав(), далее преобразовать получившееся в число, прибавить 1 и обратно преобразовать в строку,
получим - 12, без нулей перед префиксом.
Как получить результат У00000000012, а не У12?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) niko11s,
а вообще вот это не проходит:
УстановитьНовыйНомер(<ПрефиксНомера>)
Параметры:
<ПрефиксНомера> (необязательный)
Тип: Строка.
Префикс устанавливаемого номера.
Значение по умолчанию: Пустая строка
Описание:
Устанавливает новый номер документа для заданного префикса номера.
а вообще вот это не проходит:
УстановитьНовыйНомер(<ПрефиксНомера>)
Параметры:
<ПрефиксНомера> (необязательный)
Тип: Строка.
Префикс устанавливаемого номера.
Значение по умолчанию: Пустая строка
Описание:
Устанавливает новый номер документа для заданного префикса номера.
(1) niko11s, у меня встречный вопрос - ЗАЧЕМ?
1с сама великолепно нумерует, пока кто-то кривыми ручками не попортит нумерацию. в этом случае я говорю - либо исправляйте по-хорошему, либо ждите год. как правило после такого владелец шаловливых ручек получает достаточное воздействие, чтобы не делать в будущем таких необдуманных операций
1с сама великолепно нумерует, пока кто-то кривыми ручками не попортит нумерацию. в этом случае я говорю - либо исправляйте по-хорошему, либо ждите год. как правило после такого владелец шаловливых ручек получает достаточное воздействие, чтобы не делать в будущем таких необдуманных операций
(9) GPL, согласен - 1С действительно очень хорошо сама нумерует. но иногда бывают пользователи которым по каким-либо причинам приходится (или хочется - когда как) редактировать и они это делают.
ладно хоть счас право редактирования номеров во многих типовых есть.
вобщем иногда всёже приходится нумерацию делать самому.
ладно хоть счас право редактирования номеров во многих типовых есть.
вобщем иногда всёже приходится нумерацию делать самому.
(24)То, что вы с этим никогда не встречались, не значит, что этого нет. Существуют региональные настройки и их можно устанавливать по желанию пользователя. Поэтому, чтобы не пришлось в следующий раз шерстить форумы и для общего самообразования: неразрывный пробел "бывает" разделителем групп числа. А бывает и не бывает. Для форматирования числа независимо от региональных установок существует функция Формат() и даже реализован конструктор форматной строки. Это хорошо, что вы знаете о существовании неразрывного пробела, знания никогда не бывают лишними. С праздником :)
Вот как то так получилось:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| РеализацияТоваровУслуг.Номер КАК Номер
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Ссылка <> &Ссылка
|
|УПОРЯДОЧИТЬ ПО
| Номер УБЫВ";
Запрос.УстановитьПараметр("Ссылка",ЭтотОбъект.Ссылка);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Номер = ВыборкаДетальныеЗаписи.Номер;
КонецЦикла;
Строка1 =Строка(Число(Прав(Номер,9)) + 1);
ДлиннаСтроки1 = СтрДлина(Строка1);
Разница = 9 - ДлиннаСтроки1;
Для р = 1 По Разница Цикл
Строка1 = "0" + Строка1;
КонецЦикла;
Строка1 = "УУ" + Строка1;
Номер = Строка1;
КонецЕсли;
Показать
У клиента есть в одном журнале реализация с префиксом и без префикса, причем нумероваться они должны независимо, соответственно делаю флажок в реализации, и если нужно с префиксом то использую код, который выше,
а если без - то все как обычно.
а если без - то все как обычно.
Вот чуть модификация. Вдруг кому пригодится;)
ПоследенийНомер = ВыборкаДетальныеЗаписи.Номер;
Инд=1;
Пока Инд<СтрДлина(ПоследенийНомер) Цикл
Символ = Сред(ПоследенийНомер,СтрДлина(ПоследенийНомер)-Инд,1);
Если Найти("0123456789",Символ)=0 Тогда
ДлинаЧисловойЧасти = Инд-1;
Прервать;
КонецЕсли;
Инд=Инд+1;
КонецЦикла;
НомерЛеваяЯчейка = Лев(ПоследенийНомер,СтрДлина(ПоследенийНомер)-ДлинаЧисловойЧасти);
НомерПраваяЯчейка = Число(СокрЛП(Прав(ПоследенийНомер,ДлинаЧисловойЧасти)));
НомерПраваяЯчейка = Число(НомерПраваяЯчейка)+1;
ДобавитьНулей = ДлинаЧисловойЧасти-СтрДлина(НомерПраваяЯчейка);
инд=0;
Пока Инд<ДобавитьНулей Цикл
НомерЛеваяЯчейка=НомерЛеваяЯчейка+"0";
Инд=Инд+1;
КонецЦикла;
НовыйНомерПолный = НомерЛеваяЯчейка+Строка(НомерПраваяЯчейка);
Номер = НовыйНомерПолный;
Показать
Префикс для организации статичный, номер динамический.
Сделал вот так.
Сделал вот так.
ПоследенийНомер = ВыборкаДетальныеЗаписи.Номер;
ПрефиксПоследенийНомер = Лев(ПоследенийНомер,5);
ЧислоПоследенийНомер = Формат(Прав(ПоследенийНомер,6),"ЧЦ=6; ЧДЦ=1; ЧВН=; ЧГ=0") + 1;
НовыйНомерПолный = "" + ПрефиксПоследенийНомер + ЧислоПоследенийНомер;
Возврат НовыйНомерПолный;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот