|
v7: Поиск максимального строкового номера документа в запросе | ☑ | ||
---|---|---|---|---|
0
JuSik404
20.02.15
✎
11:48
|
Всем привет, помогите пожалуйста, уже второй день бьюсь головой и не могу сообразить.
Есть документ со строковым номером документа, шесть символов, причем номера могут быть такими: 030001 090001 200001 300001 400001 500001 970001 Первые две цифры в номере это код подразделения, ноль в начале некоторых - обязателен. Необходимо что бы при создании нового документа, в зависимости от выбранного подразделения установился новый номер, соответственно на один больше чем последний в своей "группе" 03, 09, 20, 40 .. Попробовал реализовать что бы запросом выбирало все номера документов и при выполнении в нем условия выборки к примеру между "300000" и "400000" ВыборЗначНач = "300000"; ВыборЗначКон = "400000"; ТекстЗапроса = " |Период С ДатаНачЗапроса По ДатаКонЗапроса; |ДокНом = Документ.СчетМетрология.НомерДок; |Группировка ДокНом; |Условие ((ДокНом >= ВыборЗначНач) И (ДокНом <= ВыборЗначКон)); |Функция МаксНом = Максимум(ДокНом); |"; Можно ли что то сделать толковое и что бы быстро работало, ведь это будет происходить при каждом создании нового документа, и если запрос будет долгим, пользователи взбесятся .. :) |
|||
1
Рэйв
20.02.15
✎
11:50
|
Как вариант выразить номера как числа и отсортировать
|
|||
2
Рэйв
20.02.15
✎
11:51
|
а... Сторно.
Не заметил, чтоклюшки |
|||
3
Рэйв
20.02.15
✎
11:52
|
ну тогда заполнить ТЗ преобразовывая в числа и потом отсортировать:-)
|
|||
4
Mutniy2
20.02.15
✎
11:52
|
Скуль?
|
|||
5
Ёпрст
20.02.15
✎
11:56
|
всё проще..каждому подразделению задайте свой префикс - нумерация будет сама, "автоматом" идти..
Префиксы, соответственно , "03","09","20" и т.д.. + УснановитьНовыйНомер(префиксПодразделения) в вводнового.. усё, наслаждайтесь, кушайте печенки |
|||
6
JuSik404
20.02.15
✎
12:11
|
(5) а если мне надо что бы символов всего было 6 в номере документа, но длина номера 9 символов в конфигурации?
Это для того что-бы туда можно было внести пару лишних цифр/букв в будущем. Если я сейчас делаю УснановитьНовыйНомер(префиксПодразделения) то у меня он заполняет все 9 символов и не учитывает ранее созданные 6-ти символьные номера :( |
|||
7
JuSik404
20.02.15
✎
12:11
|
(4) dbf
|
|||
8
Ёпрст
20.02.15
✎
12:20
|
ну ты как маленький, ну поставь префикс " 02"," 09"...
|
|||
9
JuSik404
20.02.15
✎
12:30
|
(8) обрадовался что всё так просто, но НЕТ :)
УстановитьНовыйНомер(" " + ДокПрефикс); все равно 9 цифр выдает :) он эти пробелы куда то опускает |
|||
10
Ёпрст
20.02.15
✎
12:35
|
ну блин, ну поставь неразрывной пробел, тоже мне, проблема на ровном месте
|
|||
11
Ёпрст
20.02.15
✎
12:38
|
на вот, дарю
" 09" " 02" |
|||
12
JuSik404
20.02.15
✎
13:17
|
(11) и получается тогда номер документа " 090001" а не "090387" в след уже существующего "090386"
Не знаю, может я что то еще не так делаю .. у меня документы создавались при импорте своей обработкой из access'а и префикса ранее я нигде не ставил а просто добавлял те номера что были .. Можно конечно сделать проще и просто изменить конфигурацию на 6 символов в номере документа, но в будущем все равно хочешь не хочешь, а придется делать больше .. Может всё таки перебором? Периодичность документов - год. За год где то больше 20 000 документов создается, не будет ли этот перебор на машине пользователя - долгим? Но вариант с УстановитьНовыйНомер() мне больше нравится! :) |
|||
13
Duke1C
20.02.15
✎
13:25
|
(12) ИМХО, Пробелы в текстовом номере документа - это зло.
Либо уменьшай номер, либо добей существующие до 9-и знаков (если уж хочется запас тебе какой-то) и юзай нормально УстановитьНовыйНомер() |
|||
14
JuSik404
20.02.15
✎
13:53
|
мне всё таки кажется что я допустил ошибку при импорте документов, наверное надо было не просто номер ставить, а вычленять у этого номера первые две цифры и командой "ПрефиксНомера(<Префикс>)" устанавливать префикс номера документа и только потом устанавливать сам номер документа, поправьте меня если я не правильно думаю ..
Так что при сокращении до 6 символов в номере документа, ситуация не поменялась, все равно создается документ с первым номером .. "090001" |
|||
15
Ёпрст
20.02.15
✎
13:57
|
(12) пилять, ну поставь руками один раз " неразрывные пробелы 090387".. , следующий документ будет как надо
|
|||
16
Ёпрст
20.02.15
✎
13:57
|
Че, первый раз префиксами чтоле пользуетесь ?
|
|||
17
JuSik404
20.02.15
✎
14:05
|
(16) так точно
|
|||
18
Ёпрст
20.02.15
✎
14:09
|
Ну делай (15), пока не поздно :)
|
|||
19
JuSik404
20.02.15
✎
14:14
|
(15) Цены вам нет!
Теперь дошло, и убирать лишние символы не надо и запрос тоже нафиг надо, весь этот гемор ... :)) И неразрывные пробелы тоже нафиг надо .. Короче! Просто один раз при создании документа устанавливаем новый номер с необходимым префиксом, он создаст длинный номер, редактируем его ручками на самый последний номер +1 и сохраняем, последующие доки с этим префиксом будут с нормальным номером! :) Всем спасибо! Особенно Ёпрст. Тема закрыта. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |