Имя: Пароль:
1C
1C 7.7
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 и сохраняем, последующие доки с этим префиксом будут с нормальным номером! :)
Всем спасибо! Особенно Ёпрст. Тема закрыта.