Как выбрать максимальное значение в запросе? #707262


#0 by sapravka
Здравствуйте! Если что то не так - прошу сильно не винить. В УТ 10.3 делаю простой запрос - вывожу список номеров договоров в запросе: ИЗ     Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов И вот получаю такие результаты - вот рисунок: Максимальный номер - 320. А вот когда делаю вот такой запрос: ВЫБРАТЬ ПЕРВЫЕ 1     ДоговорыКонтрагентов.Номер КАК НомерДоговора ИЗ     Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов А тут получаю такие результаты, вот рисунок: То почему то получается - 99. Убедительно прошу, подскажите пожалуйста, как в запросе реализовать выборку последнего номера(максимального)?
#1 by vi0
видимо это строка и "99..." действительно - максимум
#2 by sapravka
А как это может быть? А как реализовать в запросе так, что бы (в данной примере имеется ввиду) выбиралось 320 ?
#3 by AlteZ
извини, бро, если мимо, но разве "первые 1" не выбирает первую запись из таблицы? почему бы не выбрать максимум(ДоговорыКонтрагентов.Номер) ?
#4 by EvgeniuXP
потому что "9" больше "3" - всё правильно.
#5 by sapravka
Тоже 99 показывает Но вот почему???
#6 by Aleksey
потому что строка 99 > чем строка 100
#7 by Aleksey
ибо 9 > 1
#8 by sapravka
А как это может быть? А можно как то в запросе выбирать последнюю стоку (строка - число?)?
#9 by Torquader
Пойми, наконец, разницу между строками и числами.
#10 by Aleksey
строка не число, строка это строка. И от того что она выглядит как число он не становится числом
#11 by Torquader
Просто, некоторые, когда сортируют файлы в Windows и видят чудо - верят в то, что это будет так всегда.
#12 by sapravka
А как тогда сделать сортировку по чилу, а не по строке?
#13 by шаэс
т.е. в запросе выбрать все, преобразовать результат в число и отсортировать? или в запросе сразу преобразовать можно?
#14 by vi0
приводи к числу правда сам запрос неоптимальный будет, даже если проиндексируешь по номеру
#15 by newjon
выразить (НомерДоговора как число ) или сколько у тебя символово в договоре
#16 by newjon
да тут еще и сайте рекламируют
#17 by Torquader
Вам опять поговорить не с кем ?
#18 by neo_matrix_123
вот только что будет, если кому-то приспичит забить в номер договора что-то типа 01/03-07?
#19 by шаэс
мне ответ интересен.
#20 by Torquader
Исключение будет, а если преобразовать в запросе - то преобразовывать будет SQL и получит из "01/03-07" значение "1".
#21 by sapravka
Можно немного поподробнее, как это в запросе реализовать? А как тогда быть?
#22 by Torquader
В 1С нет сортировки через внешнюю функцию - она здесь как раз кстати.
#23 by Torquader
Хотя, как сравнить 009 и 01/03-07 ???
#24 by neo_matrix_123
предусматривать такой вариант развития событий перед записью нового договора, например. это вопрос существующих правил регистрации договоров. только на практике одними циферками не обходится, увы
#25 by Torquader
Я бы, всё-таки, сортировал бы как строки, но дописывал нули в начале.
#26 by sapravka
А как тогда лучше сделать?
#27 by neo_matrix_123
может к началу задачки вернуться? зачем нужна сортировка по номеру договора дабы найти "крайний"?
#28 by sapravka
Да найти максимальный номер(число) с помощью запроса.
#29 by sapravka
А  пример, можно в студию?
#30 by EvgeniuXP
при записи документа записывай в реквизит число и тащи в запросе.
#31 by sapravka
а в самом запросе - это как можно реализовать?
#32 by sapravka
Вот в запросе пытаюсь прописать: Но что то ругается...
#33 by Aleksey
а вот дальше будет интересно, ибо нумерация идёт в течении года (!), т.е. обычно в январе 1 договор имеет номер 1
#34 by МимохожийОднако
В СКД можно при вычислении указать функцию общего модуля, которая будет выделять число из строки.
#35 by zippygrill
Выразить(&номерСтрокогоТипа как число(15.2))
#36 by ДенисЧ
Что пил?
#37 by Обработка
Я бы задачу решил с другого конца. Перенумеровал бы все номера догвооров как следует. Например 99 на 00099 итп и тогда 00320 точно будет больше чем 00099. Как вариант превратить их в числовое поле. И не надо тогда парить себя мозг. А если мешают нули при выводе на печать то их всегда можно убрать...
#38 by Torquader
Добавлять нули - убирать нули - следить, чтобы пользователи число написали с правильным числом нулей. Число - и всё само решится. Если нужны номера с галочками и т.п. - поле "входящий номер" избавит от всяких вопросов.
#39 by sapravka
А подскажите пожалуйста еще: Вот написал: Но почему то при проведении документа получается: То есть первый номер спецификации вообще ничего не ставит, так как его еще нет... Подскажите, какое поставить условие, что бы номер 1 ставился... Я просто уже много перепробовал, но почему то первый номер вообще ничего не ставит, а уже со второго начинает плюсовать по 1, а вот необходимо что бы с первого номера плюсовать по одному....
#40 by Обработка
А зачем следить? Ведь 1С делает автонумерацию сама. Я всгда был против того чтоб номера трогал юзеры.
#41 by MKZM
Если НомерСпецификации.НомерСпецификацииНужный = Null  Тогда                 Если НомерСпецификации.НомерСпецификацииНужный = 0 Тогда Забавно.
#42 by Torquader
Видимо, про ИЛИ человек не знает.
#43 by sapravka
да ИЛИ тоже ставил, но все равно не ставить первый номер 1 - вообще ничего не ставит Подскажите, что прописать - если вообще ничего нет - что бы 1 ставил в номере...
#44 by hhhh
ну вот ты пишешь      Если НомерСпецификации.НомерСпецификацииНужный = Null  Тогда а потом вдруг НомерНаОдинБольше = НомерСпецификации.НомерСпецификацииНужный + 1; разве можно к NULL добавлять 1? Ведь бред.
#45 by sapravka
Да так тоже пробывал: Если НомерСпецификации.НомерСпецификацииНужный = НЕОПРЕДЕЛЕНО  Тогда все равно как бы вообще проскакивает при создании и вообще никакакой номер не создает
#46 by hhhh
ну запомните
#47 by Адимр
Вопрос на засыпку, а что больше число 5 или пустая строка ""? :))
#48 by Torquader
Исключение, которое вернёт такое сравнение, больше ^_^
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С