|
Как в СКД преобразовать строку в число? | ☑ | ||
---|---|---|---|---|
0
SherifSP
26.07.13
✎
11:25
|
Пишу ВЫРАЗИТЬ(НомерДома, КАК Число) запрос отвечает: Не совместимые типы "ВЫРАЗИТЬ", как тогда можно преобразовать строку в число?
|
|||
1
Капитан О
26.07.13
✎
11:28
|
на зачем?
|
|||
2
SherifSP
26.07.13
✎
11:28
|
Для сортировки, по строке не правильно сортирует
|
|||
3
cw014
26.07.13
✎
11:30
|
(2) А если номер дома = "29-а"???
|
|||
4
SherifSP
26.07.13
✎
11:31
|
(3) Делема)
|
|||
5
Капитан О
26.07.13
✎
11:31
|
(4) что это?
|
|||
6
rinatru
26.07.13
✎
11:32
|
дилемма
|
|||
7
cw014
26.07.13
✎
11:32
|
(5) Не знаю, может тещю так зовут
|
|||
8
SherifSP
26.07.13
✎
11:32
|
(3) Но дробная часть отдельным полем выводится
|
|||
9
Капитан О
26.07.13
✎
11:33
|
(8) а ты насильно присвой туда ересь
|
|||
10
Капитан О
26.07.13
✎
11:33
|
+(9) тип поля же такое позволяет
|
|||
11
SherifSP
26.07.13
✎
11:36
|
(10) В скд на закладке вычисления в поле значение выставил этому полю число, но сортировка не работает
|
|||
12
Nexux
26.07.13
✎
11:37
|
не в запросе не получится, в вычисляемых полях попробовать можно Число([ИмяПоля])
|
|||
13
salvator
26.07.13
✎
11:37
|
(0) Напиши свою функцию и вызывай ее в вычисляемых полях
|
|||
14
Serg_1960
26.07.13
✎
11:37
|
(5) Это пятница :)
По теме: Чтобы сортировка имела хоть какой-то смысл - надо "стандартизировать" написание номера дома. А вот это в типовых нет. Можно предпологатьвстретить в адресе любое написание "29-а" ("29а", "29А" и т.д.) В СКД - только вызовом внешней функции решается |
|||
15
SherifSP
26.07.13
✎
11:41
|
(14) Дайте ссылку на эту функцию?)
|
|||
16
cw014
26.07.13
✎
11:42
|
(15) Напишите сами
|
|||
17
SherifSP
26.07.13
✎
11:43
|
(16) Там велосипед нужно придумывать, а хотелось бы к общему принципу свести
|
|||
18
cw014
26.07.13
✎
11:44
|
(17) Никаких велосипедов, работы на 5 минут с перекурами
|
|||
19
SherifSP
26.07.13
✎
11:47
|
(18) Через попытку попробовать сразу в число преобразовать в исключении перебрать каждый символ значения, откинуть не нужное и преобразовать в число?
|
|||
20
cw014
26.07.13
✎
11:49
|
(19) Исключи попытку и первое преобразование
|
|||
21
Капитан О
26.07.13
✎
11:49
|
(19) 43/4 - > 434
|
|||
22
cw014
26.07.13
✎
11:50
|
+(19) Перебирай строку, проверяй, что у тебя код символа текущий между 48 и 57 (включительно). Если не так, прерывай цикл и то что получилось преобразовывай в число
|
|||
23
SherifSP
26.07.13
✎
11:53
|
К функции обращаться в поле выражение и передавать туда свое значение?
|
|||
24
cw014
26.07.13
✎
11:53
|
Функция НомерДомаВЧисло(НомерДома) Экспорт
Результат = ""; НомерДома = СокрЛП(НомерДома); ДлинаНомера = СтрДлина(НомерДома); Для Сч = 1 По ДлинаНомера Цикл ТекСимвол = Сред(НомерДома,Сч,1); Если КодСимвола(ТекСимвол) >= 48 и КодСимвола(ТекСимвол) <= 57 тогда Результат = Результат + ТекСимвол; Иначе Прервать; КонецЕсли; КонецЦикла; Если СтрДлина(Результат) > 0 тогда Возврат Число(Результат); Иначе Возврат 0; КонецЕсли; КонецФункции |
|||
25
KAO111
26.07.13
✎
11:53
|
В СКД:
ПОДСТРОКА(" ",1,10+ДЛИНАСТРОКИ(НомерДома)) + НомерДома Будет нормально сортироваться за счет первых пробелов |
|||
26
KAO111
26.07.13
✎
11:54
|
ПОДСТРОКА(" ",1,10-ДЛИНАСТРОКИ(НомерДома)) + НомерДома
|
|||
27
cw014
26.07.13
✎
11:55
|
(25)(26) Математик, уважаю... Только вместо пробелов наверное лучше "0" поставить
|
|||
28
Капитан О
26.07.13
✎
11:57
|
опля! длина строки появилась? давно?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |