|
Почему не работает функция Выразить( .... как строка(3)) в запросе для числ.знач | ☑ | ||
---|---|---|---|---|
0
AlexandrV
17.12.15
✎
10:56
|
Почему не правильно работает функция Выразить( .... как строка(3)) в запросе для числового значения
Выдает пустую строку Если поставить Представить() то получаю значение, но негде его в группировке использовать не могу и не могу взять из него часть строки Как получить из числового параметра в запросе строку нужной длинны, так что бы его дальше можно было использовать? |
|||
1
ДенисЧ
17.12.15
✎
10:58
|
В запросе - никак.
|
|||
2
GROOVY
17.12.15
✎
10:58
|
Никак.
|
|||
3
itlikbez
17.12.15
✎
11:01
|
(0) В принципе - можно, но это будет изврат редкостный.
Используешь остаток от деления и ПОДСТРОКА(). |
|||
4
PCcomCat
17.12.15
✎
11:02
|
Хорошо подумай, зачем тебе именно так. Соглашусь с мнением большинства, что подобного рода требования - это ошибка проектирования. Попробуй найти другой вариант, учитывая, что первый вариант не реализуем - он точно есть.
|
|||
5
AlexandrV
17.12.15
✎
11:09
|
(4) сам запрос довольно большой и если не удастся получить этот кусок строки (его дальше надо сравнивать с другими строками и потом объединять, если не удастся придется переписывать весь алгоритм в модуль)
|
|||
6
AlexandrV
17.12.15
✎
11:10
|
(0) единственный метод я сам вижу это выгрузить все в таблицу в программе обработать и потом в запрос по новой забросить
|
|||
7
PCcomCat
17.12.15
✎
11:12
|
(5) Иногда проще переписать кусок запроса, чем вставлять костыли.
|
|||
8
Посмотрим
17.12.15
✎
11:14
|
Заполнить всевозможные числовые значения (если они конечны) в ТЗ (колонка1,колонка2 - 3,14,"3,14") и засунуть в запрос, ну и левым к ТЗ
|
|||
9
PCcomCat
17.12.15
✎
11:15
|
А для чего нужно число в строку, если не секрет?
|
|||
10
itlikbez
17.12.15
✎
11:34
|
Для трехзначных чисел будет работать что-то типа:
|
|||
11
mikecool
17.12.15
✎
11:38
|
а что такое Представить() в языке запросов?
|
|||
12
mikecool
17.12.15
✎
11:38
|
+11 не нашел в списке функций
|
|||
13
GROOVY
17.12.15
✎
11:39
|
(11) Ты даже не Представляешь()
Думаю ТС ошибся с Представление() |
|||
14
mikecool
17.12.15
✎
11:40
|
(13) я уж подумал - может это 8.3.7 на лыжах дошла )
|
|||
15
Ildarovich
17.12.15
✎
12:43
|
(0) Если очень хочется, то можно!
Вот статья: Выразить число как строку и дату как строку в запросе http://catalog.mista.ru/public/331805/ . Для трехзначного числа выражение будет не слишком сложным: ПОДСТРОКА("0123456789", СЕКУНДА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), СЕКУНДА, &Число * 0.06)) / 6 + 1, 1)
|
|||
16
AlexandrV
17.12.15
✎
12:50
|
(15) число может быть трехзначным, а этот вариант работает только для числа
|
|||
17
AlexandrV
17.12.15
✎
12:51
|
(16)+ только для одной цифры
|
|||
18
itlikbez
17.12.15
✎
13:06
|
(17) Для любого трехзначного числа работает.
|
|||
19
AlexandrV
17.12.15
✎
14:03
|
Все реализовал
ВЫБРАТЬ ВложенныйЗапрос.Объект, МАКСИМУМ(ВложенныйЗапрос.Значение) КАК Значение ИЗ (ВЫБРАТЬ ВложенныйЗапрос1.Объект КАК Объект, ПОДСТРОКА("0123456789", ВложенныйЗапрос1.ПерваяЦифра + 1, 1) + ПОДСТРОКА("0123456789", ВложенныйЗапрос1.ВтораяЦифра + 1, 1) + ПОДСТРОКА("0123456789", ВложенныйЗапрос1.ТретьяЦифра + 1, 1) КАК Значение ИЗ (ВЫБРАТЬ ВложенныйЗапрос.Объект КАК Объект, ВЫРАЗИТЬ(ВложенныйЗапрос.Значение / 100 КАК ЧИСЛО(1, 0)) КАК ПерваяЦифра, (ВЫРАЗИТЬ(ВложенныйЗапрос.Значение / 10 КАК ЧИСЛО(2, 0))) - (ВЫРАЗИТЬ(ВложенныйЗапрос.Значение / 100 КАК ЧИСЛО(1, 0))) * 10 КАК ВтораяЦифра, ВложенныйЗапрос.Значение - (ВЫРАЗИТЬ(ВложенныйЗапрос.Значение / 10 КАК ЧИСЛО(2, 0))) * 10 КАК ТретьяЦифра, ВложенныйЗапрос.Значение КАК Значение ИЗ (ВЫБРАТЬ ЗначенияСвойствОбъектов.Объект КАК Объект, ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Значение КАК ЧИСЛО(3, 0)) КАК Значение ИЗ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ГДЕ ЗначенияСвойствОбъектов.Свойство.Код = "Оф086 ") КАК ВложенныйЗапрос) КАК ВложенныйЗапрос1) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Объект |
|||
20
itlikbez
17.12.15
✎
14:07
|
(19) У тебя остаток от деления считается неправильно. Ты не учел, что ВЫРАЗИТЬ() округляет по правилам округления, а не отбрасывает дробную часть.
|
|||
21
itlikbez
17.12.15
✎
14:08
|
+(20) Вариант из (15) лучше.
|
|||
22
AlexandrV
17.12.15
✎
14:09
|
(20) в системе настраивается как округлять
|
|||
23
itlikbez
17.12.15
✎
14:12
|
(22) Каким образом?
|
|||
24
AlexandrV
17.12.15
✎
14:28
|
(23) поправил запрос
ВЫБРАТЬ ВложенныйЗапрос.Объект, МАКСИМУМ(ВложенныйЗапрос.Значение) КАК Значение ИЗ (ВЫБРАТЬ ВложенныйЗапрос1.Объект КАК Объект, ПОДСТРОКА("0123456789", ВложенныйЗапрос1.ПерваяЦифра + 1, 1) + ПОДСТРОКА("0123456789", ВложенныйЗапрос1.ВтораяЦифра + 1, 1) + ПОДСТРОКА("0123456789", ВложенныйЗапрос1.ТретьяЦифра + 1, 1) КАК Значение ИЗ (ВЫБРАТЬ ВложенныйЗапрос.Объект КАК Объект, ВЫРАЗИТЬ(ВложенныйЗапрос.Значение / 100 - 0.5 КАК ЧИСЛО(1, 0)) КАК ПерваяЦифра, (ВЫРАЗИТЬ(ВложенныйЗапрос.Значение / 10 - 0.5 КАК ЧИСЛО(2, 0))) - (ВЫРАЗИТЬ(ВложенныйЗапрос.Значение / 100 - 0.5 КАК ЧИСЛО(1, 0))) * 10 КАК ВтораяЦифра, ВложенныйЗапрос.Значение - (ВЫРАЗИТЬ(ВложенныйЗапрос.Значение / 10 - 0.5 КАК ЧИСЛО(2, 0))) * 10 КАК ТретьяЦифра, ВложенныйЗапрос.Значение КАК Значение ИЗ (ВЫБРАТЬ ЗначенияСвойствОбъектов.Объект КАК Объект, ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Значение КАК ЧИСЛО(3, 0)) КАК Значение ИЗ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ГДЕ ЗначенияСвойствОбъектов.Свойство.Код = "Оф086 ") КАК ВложенныйЗапрос) КАК ВложенныйЗапрос1) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Объект |
|||
25
itlikbez
17.12.15
✎
14:59
|
(24) Должно работать.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |