Вход | Регистрация

1С:Предприятие ::

Метки: 

Функция максимум для строк в запросе

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


Список тем форума
Рекламное место пустует Рекламное место пустует
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует