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