|
Как в запросе число преобразовать к строке? | ☑ | ||
---|---|---|---|---|
0
RomaH
naïve
22.02.12
✎
08:42
|
Надо получить из двух чисел 2012 и 2015 строку типа "2012 - 2015"
|
|||
1
andrewks
22.02.12
✎
08:43
|
выразить
|
|||
2
rsv
22.02.12
✎
08:44
|
(0) Никак. Фукнция Выразить не преобразует числа к строке.
|
|||
3
rsv
22.02.12
✎
08:45
|
+(2) И обратно.
|
|||
4
Песец
22.02.12
✎
08:45
|
||||
5
andrewks
22.02.12
✎
08:46
|
+(1) сорри, попутал. представление, конечно
|
|||
6
Песец
22.02.12
✎
08:58
|
(5) Число будет преобразовано в строку, но как сделать конкатенацию? В языке запросов есть только арифметический оператор "+".
|
|||
7
Ненавижу 1С
гуру
22.02.12
✎
08:59
|
(6) в языке запросов есть конкатенация, а вот преобразования как раз не будет
|
|||
8
Wobland
22.02.12
✎
08:59
|
конкатенацию нужно делать потом. кто скажет, зачем это именно в запросе?
|
|||
9
andrewks
22.02.12
✎
09:01
|
(6) не, ну, если очень надо именно в запросе, то можно сделать и там конкатенацию. через небольшой изврат
|
|||
10
КМ155
22.02.12
✎
09:06
|
(9) через 250 строк Выбор ?
|
|||
11
Песец
22.02.12
✎
09:08
|
(9) Научи, если не влом:
выбрать "вот тут надо получить 2012-2015" из (выбрать 2012 как _2012, 2015 как _2015 ) как числа |
|||
12
andrewks
22.02.12
✎
09:09
|
(10) не, проще :)
(11) ща, с банком закончу, и покажу |
|||
13
Песец
22.02.12
✎
09:10
|
(7) ПРЕДСТАВЛЕНИЕ преобразует число в строку.
Функция ПРЕДСТАВЛЕНИЕ Данная функция предназначена для получения строкового представления значения произвольного типа. (с) ртфм |
|||
14
andrewks
22.02.12
✎
09:13
|
(13) проблема в том, что это преобразование уже идёт на стороне клиента, и в самом запросе ничего не меняет
|
|||
15
luckyluke
22.02.12
✎
09:15
|
(0) можно получить строку через соединение с ВТ, в которой соответствие числа и строки.
|
|||
16
Песец
22.02.12
✎
09:21
|
(14) Ниче не понял. А представление например документа? Или представление числа в строку работает по-другому?
(15) Для получения строки есть функция представление. Требуется соединить две строки. Ждем andrewks. |
|||
17
luckyluke
22.02.12
✎
09:23
|
(16) серьёзно? прям вот так можно сделать конкатенацию двух представлений?
|
|||
18
Maxus43
22.02.12
✎
09:25
|
(16) представления не сложить, ну не работает так
|
|||
19
luckyluke
22.02.12
✎
09:25
|
Во, нашел, вот так я делал:
ВЫБРАТЬ 0 КАК Число, "0" КАК Строка ПОМЕСТИТЬ ВТ_СоответствиеЧиселИСтрок ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1, "1" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2, "2" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3, "3" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4, "4" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5, "5" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6, "6" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7, "7" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8, "8" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9, "9" ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ АдресныйКлассификатор.Наименование КАК Наименование, АдресныйКлассификатор.Сокращение КАК Сокращение, ВТ_СоответствиеЧиселИСтрок.Строка + ВТ_СоответствиеЧиселИСтрок1.Строка КАК ЧислоСтрока ИЗ РегистрСведений.АдресныйКлассификатор КАК АдресныйКлассификатор ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СоответствиеЧиселИСтрок КАК ВТ_СоответствиеЧиселИСтрок ПО (АдресныйКлассификатор.ТипАдресногоЭлемента = 1) И ((ВЫРАЗИТЬ(АдресныйКлассификатор.КодРегионаВКоде / 10 - 0.5 КАК ЧИСЛО(1, 0))) = ВТ_СоответствиеЧиселИСтрок.Число) ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СоответствиеЧиселИСтрок КАК ВТ_СоответствиеЧиселИСтрок1 ПО (АдресныйКлассификатор.ТипАдресногоЭлемента = 1) И (АдресныйКлассификатор.КодРегионаВКоде - (ВЫРАЗИТЬ(АдресныйКлассификатор.КодРегионаВКоде / 10 - 0.5 КАК ЧИСЛО(1, 0))) * 10 = ВТ_СоответствиеЧиселИСтрок1.Число) ГДЕ АдресныйКлассификатор.ТипАдресногоЭлемента = 1 |
|||
20
Maxus43
22.02.12
✎
09:26
|
ПРЕДСТАВЛЕНИЕ(Ссылка) + "АмамбаХарамМамбаРум" - ошибку даст
|
|||
21
НЕА123
22.02.12
✎
09:28
|
(14)
подробнее можно? |
|||
22
Песец
22.02.12
✎
09:28
|
(18) В (7) и (9) утверждают обратное.
(19) Сделай вот это: ВЫБРАТЬ числа._2012 КАК ПервоеЧисло, числа._2015 КАК ВтороеЧисло, "вот тут как-то надо получить 2012-2015" КАК КонкатенацияЧисел ИЗ (ВЫБРАТЬ 2012 КАК _2012, 2015 КАК _2015) КАК числа |
|||
23
asady
22.02.12
✎
09:30
|
90) нафуя?
ясно же что это нужно уже при выводе результата ну так и делай это в процедуре вывода результата |
|||
24
Maxus43
22.02.12
✎
09:30
|
(22) тоже самое утверждают. Что не взлетит
|
|||
25
Maxus43
22.02.12
✎
09:31
|
(24) + не взлетит (13), (20) и ВЫРАЗИТЬ(Число Как Строка)
|
|||
26
Песец
22.02.12
✎
09:37
|
(25) Взлетит представление.
|
|||
27
andrewks
22.02.12
✎
09:37
|
(26) не взлетит
|
|||
28
Песец
22.02.12
✎
09:38
|
(27) Преобразование числа в строку я имел в виду.
|
|||
29
andrewks
22.02.12
✎
09:38
|
ну вот, например, простое преобразование целых положительных чисел в строку:
(заранее прошу прощения, если кому-то режет глаз английский синтаксис, но мне так удобней)
|
|||
30
Maxus43
22.02.12
✎
09:39
|
(26)>(20). У вас нет ошибки?
|
|||
31
StanleyMarsh
22.02.12
✎
09:39
|
(25) - true
ну вы (почти все) ребята сочинять)) |
|||
32
Песец
22.02.12
✎
09:42
|
(29) А зачем это? в строку преобразовать не проблема:
ВЫБРАТЬ представление(числа._2012) КАК ПервоеЧислоСтрокой, числа._2015 КАК ВтороеЧисло, "а как получить 20122015?" КАК КонкатенацияЧисел ИЗ (ВЫБРАТЬ 2012 КАК _2012, 2015 КАК _2015) КАК числа |
|||
33
НЕА123
22.02.12
✎
09:44
|
де юре - среда,
де факто - ПЯТНИЦА! |
|||
34
andrewks
22.02.12
✎
09:45
|
(32) короче, прими за аксиому, что в запросе у тебя происходит СтрЗаменить(ТекстЗапроса,"представление","")
|
|||
35
Песец
22.02.12
✎
09:49
|
(34) Т. е., если у меня в запросе, возвращающем стотыщь элементов справочника написано "представление(СсылкаНаЭлементСправочника)",
то запрос вытащит ссылки, а потом 1С будет стотыщь раз дергать базу чтобы получить представление (а оно может быть наименованием или кодом)??? |
|||
36
andrewks
22.02.12
✎
09:50
|
вот так получается для периодов:
|
|||
37
Maxus43
22.02.12
✎
09:51
|
да если ты просто в запросе выбереш Док.Ссылка - при выводе система полезет за представлением.
Док.Ссылка, представление(Док.Ссылка) - теже йайца только в профиль |
|||
38
andrewks
22.02.12
✎
09:52
|
можно даже так:
"период с "+numbers1.numstr+" по "+numbers2.numstr+" год" as BoundPresent |
|||
39
andrewks
22.02.12
✎
09:53
|
а куда автор пропал?
|
|||
40
Serg_1960
22.02.12
✎
10:03
|
А зачем нам автор? :) Тема вечная как... даже не знаю как что :))
|
|||
41
Serg_1960
22.02.12
✎
10:05
|
||||
42
andrewks
22.02.12
✎
10:06
|
(41) там текст запроса динамический. это неспортивно. а у меня статический
|
|||
43
rsv
22.02.12
✎
10:12
|
Вообщето если замахнулись на CAST , так неплохо бы допиливать его до конца. До полноценного CAST и прочее.
|
|||
44
andrewks
22.02.12
✎
10:13
|
(43) это ж делать надо. проще сказать: не допускается, и всё.
|
|||
45
rsv
22.02.12
✎
10:14
|
(44) Проще сказать : лабайте все на клиенте через Пока Выбрать Если :)
|
|||
46
Песец
22.02.12
✎
10:59
|
(38) Спасибо, правильно ли я понял:
Недокументированная фича оператора "+", в запросе работает как конкатенация при условии, что операнды явно заданы строкой в тексте запроса. |
|||
47
andrewks
22.02.12
✎
11:05
|
(46) ну почему же недокументированная?
Бинарными (арифметическими) операциями являются операции: + | – | * | / Бинарные операции используются для типов ЧИСЛО. Для типа СТРОКА может использоваться бинарная операция +. © справка 1С |
|||
48
НЕА123
22.02.12
✎
11:09
|
(46)
не совсем. проще принять (34). |
|||
49
MikleV
22.02.12
✎
11:13
|
заюзать СКД и не ипать себе моск
|
|||
50
Песец
22.02.12
✎
11:21
|
(48)
Функция ПРЕДСТАВЛЕНИЕ Данная функция предназначена для получения строкового представления значения произвольного типа. Параметр функции – выражение любого типа. Возвращаемое значение – представление значения, тип СТРОКА. Результат работы функции не может быть использован внутри других функций, за исключением функции ПРЕДСТАВЛЕНИЕ. (с) Наверное, проще принять что в запросах есть некий тип "строковое представление" :) |
|||
51
НЕА123
22.02.12
✎
11:47
|
правильно в (14).
т.к. посмотрел запрос SQL в техжурнале. Для справочника это Наименование(в моем случае). Для документа это два поля Номер и Дата. т.е. следует, что строки-то и нет, она формируется потом. кстати, почему-то делается соединение "сам с собой" по ссылке. |
|||
52
НЕА123
22.02.12
✎
11:49
|
+(51)
при Представление() еще и ссылка присутствует. |
|||
53
Maxus43
22.02.12
✎
11:54
|
>>почему-то делается соединение "сам с собой" по ссылке
дык Ссылка.Поле - это уже неявное соединение |
|||
54
Песец
22.02.12
✎
12:03
|
(51) Получается, что запрос добавляет (в зависимости от настроек представления) необходимые дополнительные поля, а окончательно их собирает в строку РезультатЗапроса?
|
|||
55
НЕА123
22.02.12
✎
12:05
|
(53)
запрос с тремя полями Ссылка, Номер, Дата SELECT T1._IDRRef, T1._Number, T1._Date_Time FROM _Document296 T1 запрос с одним полем Представление(ссылка) SELECT T1._IDRRef, T2._Number, T2._Date_Time FROM _Document296 T1 LEFT OUTER JOIN _Document296 T2 ON T1._IDRRef = T2._IDRRef почему так? |
|||
56
НЕА123
22.02.12
✎
12:06
|
(54)
очень похоже на это. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |