|
Автонумерация документа
| ☑ |
0
urbanstyle
18.04.13
✎
13:57
|
здравствуйте! сбилась нумерация у документа.
сделал функцию, которая ищет последний по номеру и дате документ.
Потом ее вызываю в процедуре ПередЗаписью() документа.
Создается новый документ, ему автоматически присваивается новый номер, но когда создаю следующий документ, номер повторяется. Как сделать так, чтобы при записи каждого нового документа в БД, происходила автоматическая нумерация?
Функция ПрисвоитьНовыйНомер()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| МойДокумент.Номер КАК Номер,
| МойДокумент.Дата КАК Дата,
| МойДокумент.Ссылка
|ИЗ
| Документ.МойДокумент КАК МойДокумент
|УПОРЯДОЧИТЬ ПО
| Номер УБЫВ,
| Дата УБЫВ";
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Номер
Иначе Возврат
"000000001"
КонецЕсли;
Номер = Строка(Число(Номер) + 1);
Номер = СтрЗаменить(Номер,Символ(160),"");
Для N = 1 По 9-СтрДлина(Номер) Цикл
Номер = "0" + Номер;
КонецЦикла;
Возврат Номер
КонецФункции
|
|
1
Kreont
18.04.13
✎
14:01
|
Код:
Номер = Строка(Число(Номер) + 1);
Номер = СтрЗаменить(Номер,Символ(160),"");
Для N = 1 По 9-СтрДлина(Номер) Цикл
Номер = "0" + Номер;
КонецЦикла;
Возврат Номер
не выполнится ни когда!
|
|
2
Лефмихалыч
18.04.13
✎
14:02
|
(0) убери свою функцию. Просто убери.
В свойствах формы документа выключи автонумерацию и всё
|
|
3
Kreont
18.04.13
✎
14:07
|
(2) +100
наверное жалко, столько кода написал по автонумерации :)
|
|
4
urbanstyle
19.04.13
✎
14:49
|
почему не выполнится? хочу понять!
|
|
5
SherifSP
19.04.13
✎
14:55
|
+(2) И убери доступность у реквизита "Номер"
|
|
6
SherifSP
19.04.13
✎
14:56
|
(4) Писать код, когда можно все сделать стандартными средствами, не кошерно
|
|
7
urbanstyle
19.04.13
✎
15:15
|
не изменилось ничего, галка стоит. только теперь нумерация идет с "999" и также дублируется.
мне нельзя затирать старые номера, не могу воспользоваться обработкой для нумерации.
все дело в этом куске:
Номер = Строка(Число(Номер) + 1);
Номер = СтрЗаменить(Номер,Символ(160),"");
Для N = 1 По 9-СтрДлина(Номер) Цикл
Номер = "0" + Номер;
КонецЦикла;
Возврат Номер
Здесь меняется номер на 1 больше. и на этом моменте я застрял
Номер = Строка(Число(Номер) + 1);
Нужно сделать цикл чтобы каждому новому доку присваивался номер на 1 больше. Только не доходит до меня никак(
|
|
8
Kreont
19.04.13
✎
15:31
|
(7) O_O, зачем тут цикл вообще?
Номер = Строка(Число(Номер) + 1);
//Номер = СтрЗаменить(Номер,Символ(160),"");
//Для N = 1 По 9-СтрДлина(Номер) Цикл
Номер = Прав("0000000000000000" + Номер,ДлинаПоляНомераБезПрефикса); //Это если в лоб :)
//КонецЦикла;
Возврат Номер
|
|
9
salvator
19.04.13
✎
15:34
|
(7) Длина номера какая у документа?
|
|
10
urbanstyle
19.04.13
✎
15:41
|
длина 9
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший