Имя: Пароль:
1C
 
Функция максимум для строк в запросе
,
0 Waterfall1
 
04.12.17
15:38
Есть подарочные сертификаты в формате "ххх/уууууу" Где У числа. А "ххх" всегда одинаковы в рамках одного вида сертификата.
На данный момент очень плохой код определяет новый номер для сертификата через преобразование "уууууу" в число и последующие их сравнения.
Есть использовать Максимум(КодСертификата) в запросе, то в результате действительно получаем последний код сертификата. Интересует насколько стабильно это будет работать, не могут ли возникнуть проблемные ситуации при взятии максимума по полю с типом строка.
1 Петрович 2018
 
04.12.17
15:41
(0) От наличия лидирующих нулей зависит.
2 _Дайвер_
 
04.12.17
15:42
(0) Как ты максимум получишь по полю с типом строка? Строке вообще пофиг, только после преобразования ты можешь получить максимум, но так как 999999 сертификатов выдадите не скоро, да еще и приставка в виде ХХХ используется то вероятность такая минимальная.
3 Waterfall1
 
04.12.17
15:44
(1) Даже с лидирующими нулями в разном количестве отрабатывало. Просто хочу перестраховаться при переносе на живую базу.
4 Мыш
 
04.12.17
15:44
(0) "Максимум" для строки - это последнее упорядоченное по возрастанию. Отсюда все сложности.
5 dezss
 
04.12.17
15:46
если там будут всегда только цифры, то проблем не будет (в рамках одного и того же "ххх")....
6 бомболюк
 
04.12.17
15:47
(3) если лидирующих нулей нет то результат упорядочивания строки и числа будет разным.
7 dezss
 
04.12.17
15:47
(5) + только вот если несколько сенсов одновременно буду производить добавление, то будут дубли
8 Waterfall1
 
04.12.17
15:49
(7) Не относится к теме, этот момент давно проработан. Номер получается прямо перед записью в БД.
9 Waterfall1
 
04.12.17
15:50
(6) Тоесть в случае если у нас в строке "уууууу" есть хотя бы один лидирующий ноль, то результат максимума будет корректным?
10 dezss
 
04.12.17
15:52
(8) ну смотри
(9) длина строки всегда должна быть одинаковой, всегда должны быть все лидирующие нули, либо всегда их быть не должно(тогда вместо нулей должно быть что-то другое)...
11 бомболюк
 
04.12.17
15:53
(9) не один. должна быть равной длина всех подстрок. потому что "3" > "11", но 3 < 11 и "03" < "11".
12 Waterfall1
 
04.12.17
15:54
(10) Строка всегда одной длинны в рамках одного вида сертификата. Всегда есть лидирующие нули, разве что перейдем на первый разряд. Пока вроде ~021500 максимальный номер.
13 бомболюк
 
04.12.17
15:55
(12) тогда все будет хорошо
14 dezss
 
04.12.17
15:57
(12) сравнение строк идет посимвольно, как только нашли первую пару отличающихся символов, сразу выдается результат, примеры как раз в (11)
15 Waterfall1
 
04.12.17
16:13
Спасибо, создал себе тестовые таблицы с разными вариантами, и вроде при всех возможных вариантах отрабатывает корректно.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.