Как увеличить номер документа на единицу?

1. niko11s 988 10.12.12 12:46 Сейчас в теме
Допустим нужно увеличить номер документа на 1.
Номер следующего вида - У00000000011.
Значение номера строковое, соответственно если отсечь префикс функцией
Прав(), далее преобразовать получившееся в число, прибавить 1 и обратно преобразовать в строку,
получим - 12, без нулей перед префиксом.
Как получить результат У00000000012, а не У12?
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
4. KonstB 180 10.12.12 12:56 Сейчас в теме
(1) niko11s,
ТекНомер   = 11;
НовыйНомер = ТекНомер + 1;

фНовыйНомер = Формат(НомерДокумента, "ЧЦ=11; ЧВН=; ЧГ=0");

фНовыйНомер = "У" + фНовыйНомер;


Это как вариант...

Конфигурация не типовая?
6. KonstB 180 10.12.12 13:02 Сейчас в теме
(1) niko11s,
а вообще вот это не проходит:

УстановитьНовыйНомер(<ПрефиксНомера>)
Параметры:

<ПрефиксНомера> (необязательный)

Тип: Строка.
Префикс устанавливаемого номера.
Значение по умолчанию: Пустая строка

Описание:
Устанавливает новый номер документа для заданного префикса номера.
9. GPL 3 10.12.12 13:19 Сейчас в теме
(1) niko11s, у меня встречный вопрос - ЗАЧЕМ?
1с сама великолепно нумерует, пока кто-то кривыми ручками не попортит нумерацию. в этом случае я говорю - либо исправляйте по-хорошему, либо ждите год. как правило после такого владелец шаловливых ручек получает достаточное воздействие, чтобы не делать в будущем таких необдуманных операций
10. Salavat 13 10.12.12 13:28 Сейчас в теме
(9) GPL, согласен - 1С действительно очень хорошо сама нумерует. но иногда бывают пользователи которым по каким-либо причинам приходится (или хочется - когда как) редактировать и они это делают.

ладно хоть счас право редактирования номеров во многих типовых есть.

вобщем иногда всёже приходится нумерацию делать самому.
20. lefthander 13.09.18 10:37 Сейчас в теме
(1)Я вот так привожу номер к нужной строке

Номер собственно сам номер
КолРазрядов - сколько цифр в номере
НовыйНомер = Прав("0000000000000000000"+СтрЗаменить(СокрЛП(Номер)," ",""),КолРазрядов);
21. catena 110 13.09.18 10:54 Сейчас в теме
(20)
СтрЗаменить(СокрЛП(Номер)," ","")

Смешно, да.
22. lefthander 13.09.18 10:57 Сейчас в теме
(21)Если номер 4 и больше значный туда может затесаться неразрывный пробел... а так можете смеяться, но работает.
Если эту строчку оформить функцией и передать номер, то очень хорошо, номер может быть и очень большой... ;)
23. catena 110 13.09.18 11:35 Сейчас в теме
(22)А потом - внезапно - в какой-нибудь базе вместо неразрывного пробела разделителем групп используют апостроф. Круто, правда? Для этих манипуляций существует Формат().
24. lefthander 13.09.18 12:41 Сейчас в теме
(23) а причем здесь разделители групп? в числах, особенно при нумерации объектов, бывает неразрывный пробел, апострофов я не встречал. :)

ЗЫ я просто поделился одним из способов как формирую номер для нумерации объектов, не более того.
25. catena 110 13.09.18 13:16 Сейчас в теме
(24)То, что вы с этим никогда не встречались, не значит, что этого нет. Существуют региональные настройки и их можно устанавливать по желанию пользователя. Поэтому, чтобы не пришлось в следующий раз шерстить форумы и для общего самообразования: неразрывный пробел "бывает" разделителем групп числа. А бывает и не бывает. Для форматирования числа независимо от региональных установок существует функция Формат() и даже реализован конструктор форматной строки. Это хорошо, что вы знаете о существовании неразрывного пробела, знания никогда не бывают лишними. С праздником :)
26. lefthander 13.09.18 13:31 Сейчас в теме
(25)И Вам того же, по тому же месту. С праздником. ;)
2. beldieff 10.12.12 12:48 Сейчас в теме
Как получить результат У00000000012, а не У12?
Дописать недостающие нули.
3. nikky81 10.12.12 12:50 Сейчас в теме
Проверить, если количество символов меньше 12 добавить нулей после префикса
5. niko11s 988 10.12.12 12:59 Сейчас в теме
Забыл про функцию СтрДлина(), сейчас попробую.
7. niko11s 988 10.12.12 13:09 Сейчас в теме
Пробовал УстановитьНовыйНомер("У"), просто добавляет следующий номер без префикса.
8. Salavat 13 10.12.12 13:15 Сейчас в теме
(7) niko11s, никогда не понимал как работает эта функция, поэтому просто делал типа:
текномер = прав(док.номер,9);
новномер="ут"+формат(текномер+1,"формат-строка с нулями и без группировок..");
11. GPL 3 10.12.12 13:31 Сейчас в теме
(7) niko11s, должно работать с префиксом. пользовал эту функцию
12. Salavat 13 10.12.12 13:37 Сейчас в теме
(11) GPL, иногда в модуле самого документа ещё прописывается нумерация. поэтому работает - невсегда.
но в синтакс-помошнике описание есть. как и что.
13. niko11s 988 10.12.12 13:44 Сейчас в теме
Вот как то так получилось:

Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ ПЕРВЫЕ 1
		|	РеализацияТоваровУслуг.Номер КАК Номер
		|ИЗ
		|	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
		|ГДЕ
		|	РеализацияТоваровУслуг.Ссылка <> &Ссылка
		|
		|УПОРЯДОЧИТЬ ПО
		|	Номер УБЫВ";
		
	Запрос.УстановитьПараметр("Ссылка",ЭтотОбъект.Ссылка);

	Результат = Запрос.Выполнить();

	ВыборкаДетальныеЗаписи = Результат.Выбрать();

	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Номер = ВыборкаДетальныеЗаписи.Номер;
	КонецЦикла;

		Строка1 =Строка(Число(Прав(Номер,9)) + 1);
		ДлиннаСтроки1 = СтрДлина(Строка1);
		Разница = 9 - ДлиннаСтроки1;
		Для р = 1 По Разница Цикл
			Строка1 = "0" + Строка1;
		КонецЦикла;
	    Строка1 = "УУ" + Строка1;

    Номер = Строка1;
	КонецЕсли;
Показать
14. m-serg74 46 10.12.12 13:47 Сейчас в теме
(13) niko11s, после

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Номер = ВыборкаДетальныеЗаписи.Номер;
КонецЦикла; 

с учетом
|УПОРЯДОЧИТЬ ПО
| Номер УБЫВ"


в переменной Номер у тебя будет самый маленький номер
15. niko11s 988 10.12.12 13:48 Сейчас в теме
У клиента есть в одном журнале реализация с префиксом и без префикса, причем нумероваться они должны независимо, соответственно делаю флажок в реализации, и если нужно с префиксом то использую код, который выше,
а если без - то все как обычно.
16. niko11s 988 10.12.12 13:50 Сейчас в теме
Для m-serg74

Я беру только одну первую запись из результата запроса.
17. m-serg74 46 10.12.12 13:54 Сейчас в теме
ВЫБРАТЬ ПЕРВЫЕ 1
точно... не заметил)
18. avadon 28.05.18 14:14 Сейчас в теме
Вот чуть модификация. Вдруг кому пригодится;)
ПоследенийНомер = ВыборкаДетальныеЗаписи.Номер; 
		Инд=1; 
		Пока Инд<СтрДлина(ПоследенийНомер) Цикл 
			Символ = Сред(ПоследенийНомер,СтрДлина(ПоследенийНомер)-Инд,1);
			Если Найти("0123456789",Символ)=0 Тогда 
				ДлинаЧисловойЧасти = Инд-1; 
				Прервать;
			КонецЕсли;	
			Инд=Инд+1; 
		КонецЦикла;	
		НомерЛеваяЯчейка = Лев(ПоследенийНомер,СтрДлина(ПоследенийНомер)-ДлинаЧисловойЧасти);
		НомерПраваяЯчейка = Число(СокрЛП(Прав(ПоследенийНомер,ДлинаЧисловойЧасти)));
		НомерПраваяЯчейка = Число(НомерПраваяЯчейка)+1;  
		ДобавитьНулей = ДлинаЧисловойЧасти-СтрДлина(НомерПраваяЯчейка);
		инд=0;
		Пока Инд<ДобавитьНулей Цикл 
			НомерЛеваяЯчейка=НомерЛеваяЯчейка+"0";
			Инд=Инд+1;
		КонецЦикла;	
		НовыйНомерПолный = НомерЛеваяЯчейка+Строка(НомерПраваяЯчейка); 
		Номер = НовыйНомерПолный;
Показать
Serg243; IvanGorbunov; +2 Ответить
19. yghmd 11 13.09.18 09:45 Сейчас в теме
(18) Альтернатива добавления нулей в номер:

НовыйНомер = НомерЛеваяЯчейка + Формат(НомерПраваяЯчейка, "ЧЦ=" + ДлинаЧисловойЧасти + "; ЧВН=; ЧГ=0")
27. Serg243 29.03.23 14:52 Сейчас в теме
Префикс для организации статичный, номер динамический.
Сделал вот так.
	ПоследенийНомер = ВыборкаДетальныеЗаписи.Номер;
		
	ПрефиксПоследенийНомер = Лев(ПоследенийНомер,5);
	ЧислоПоследенийНомер = Формат(Прав(ПоследенийНомер,6),"ЧЦ=6; ЧДЦ=1; ЧВН=; ЧГ=0") + 1;
	НовыйНомерПолный = "" + ПрефиксПоследенийНомер + ЧислоПоследенийНомер;
	
	Возврат НовыйНомерПолный;
Показать
28. Serg243 29.03.23 17:54 Сейчас в теме
Чутка ошибся - вот так надо
ПрефиксПоследенийНомер = Лев(ПоследенийНомер,5);
				ЧислоПоследенийНомер = Число(Формат(Прав(ПоследенийНомер,6),"ЧЦ=6; ЧДЦ=1; ЧВН=; ЧГ=0")) + 1;
				НовыйНомерПолный = "" + ПрефиксПоследенийНомер + Формат(ЧислоПоследенийНомер,"ЧЦ=6; ЧДЦ=0; ЧВН=; ЧГ=0");
Оставьте свое сообщение
Вакансии
Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день

Программист 1C
Волгоград
зарплата от 200 000 руб.
Полный день

Аналитик
Санкт-Петербург
зарплата от 200 000 руб. до 250 000 руб.
Полный день