|
Стандартный нумератор. | ☑ | ||
---|---|---|---|---|
0
Raxla
15.11.12
✎
00:24
|
На мисте много тем про нумераторы, но как-то не получилось систематизировать всю информацию.
Хочется разложить по полочкам работу стандартного нумератора. Как мне представлялось, если требовать новый код по префиксу, то из задействованных кодов должен делать отбор по этому префиксу и потом наибольший + 1 в рамках разрядности этого наибольшего: ПРЕФ0001 ПРЕФ002 -> запрашиваем. получаем ПРЕФ003, а не ПРЕФ0003 При этом все номера, у которых нет префикса "ПРЕФ" вообще не должны учитываться. Ну а если мы запрашиваем код без префикса, то наоборот, должны учитываться все "чистые" номера, у которых нет никакого префиса. Однако простая првоерка показало, что всё работает совершенно не так: 000-010 -> 0000011 (несмотря на нецифровой симовол никакого префиска нумератор не видит) 005/8 -> 005/9 ( нумератор посчитал от префикса (следующий номер будет не уникальным), хотя запрашивался просто код и, по моему представлению, все номера с любмыми префиксами должны тупо игнорироваться, отдавая номер от максимального "чистонумерного" кода либо 000001 в соотвествии с максимальной разрядностью, если чистых ещё не было) Проясните, пожалуйста эти моменты |
|||
1
Aleksey
15.11.12
✎
00:43
|
"005/8 -> 005/9 ( нумератор посчитал от префикса (следующий номер будет не уникальным), хотя запрашивался просто код и, по моему представлению, все номера с любмыми префиксами должны тупо игнорироваться, отдавая номер от максимального "чистонумерного" кода либо 000001 в соотвествии с максимальной разрядностью, если чистых ещё не было)"
Поясни мысль на примере, что в случае 005/8 должен сделать нумератор? |
|||
2
Aleksey
15.11.12
✎
00:45
|
||||
3
Азат
15.11.12
✎
00:49
|
за слэш в номере - однозначно ссаной тряпочкой по эппальничку...
особенно интересно, что должен сделать нумератор после 005/9, если длина номера - 5 знаков... а если будет а0б/9... то ли а0в/1, то ли а1б/1, то ли что |
|||
4
o KIA
15.11.12
✎
09:42
|
По моему ТС не знает что такое максимальный номер.
Телепатирую: По ТС все номера разбиты на группы по префиксу и имеют свой максимальный номер, поэтому УстановитьНовыйНомер("ПРЕФ"),вроде как получит Макс("ПРЕФ"{num}*)+1/ Следуя этой логике УстановитьНовыйНомер() для 005/8 получит 00001, потому что пустой префикс это не префикс "005/". Насколько я знаю максимальный номер всегда получается одним и тем же способом и уже поверх него шьётся префикс. кстати, как именно он вычисляется я не в курсе, тоже интересно было бы почитать |
|||
5
o KIA
15.11.12
✎
10:45
|
Нашёл выдержку из книги: "Профессиональная разработка в системе 1С:Предприятие 8 (Габец, Гончаров, Козырев, Кухлевский, Радченко)"
Описан процесс при пустом префиксе: 1. ищется наиболее длинный префикс. 1. среди наиболее длинных выбирается больший по алфавиту 3. среди номеров с этим наибольшим префиксом выбирается наибольшее числовое значение (лидирующие нули и пробелы не играют роли) 4. инкременируется найденное число, при этом сохраняется такая же разрядность, то есть, теперь учитываются лидирующие нули и пробелы конкретно этого числа. 5. я начал сомневаться, что при непустом префиксе алгоритм такой же. |
|||
6
o KIA
15.11.12
✎
11:20
|
Посыпаю голову пеплом: префикс учитывается по нему осуществляется отбор, но алгоритм остаётся прежним: просто он применяется к коду за вычетом префикса.
То есть УстановитьНовыйНомер("ПРЕФ") для номеров: ПРЕФ0001 ПРЕ0009 ПРЕФ/02 Аналогично такой ситуации:УстановитьНовыйНомер() среди номеров: 0001 /02 Надеюсь понятно объяснил, поправьте меня, если я прогнал. |
|||
7
o KIA
15.11.12
✎
17:46
|
Не поленился, протестировал на примерах, в целом, всё работает как должно. Но скажите, почему вот в таком наборе:
0000001 0000002 000/003 УстановитьНовыйНомер() вернёт 0000003, а не 000/004 ? кстати, а что ТС молчит, я тут один что ли копаю? |
|||
8
Raxla
16.11.12
✎
07:27
|
Спасибо за информацию, в интернете нашлась эта книжка в djvu и мне тоже не понятно, почему не 000/004 :-)
|
|||
9
Raxla
16.11.12
✎
07:28
|
Может Азат, что дельное скажет, помимо ссаной тряпочки, ведь на слешах у него - опыт!?
|
|||
10
НЕА123
16.11.12
✎
09:01
|
(9)
сегодня пятница, можно пофлудить потому что последовательность в порядке возрастания из(7) 000/003 0000001 0000002 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |