простенькая задача в запросе сложить две строки. Как? #512628


#0 by крутойкодер
Выразить(НоменклатураВСписании.РазмерТовара.Ширина Как Строка ) + "х" + Выразить(НоменклатураВСписании.РазмерТовара.Глубина Как Строка ) что бы получилась строка "100х20" или "100х40" никогда не приходилось а щас надо
#1 by John83
по-моему в запросе никак
#2 by Megas
Никак =) Правдо смешно... Вот строки можно , а если число преобразовать в строку то нельзя =)
#3 by крутойкодер
тогда пойдем другим путем как вычеркнуть среднее измерение из трех измерений "100х78х40" "100х58х40" "80х78х40" "80х58х40" четыре значения должны превратиться в два "100х40" и "80х40" В ЗАПРОСЕ
#4 by Megas
хз... если все числа были б одинаковой(известной) длины выбрать выразить("100х78х40" как строка ) + ПОДСТРОКА("100х78х40", 7, 3)
#5 by крутойкодер
я специально написал что строки разные
#6 by Megas
А так смелый заголовок =) "простенькая задача"   Нендавно MySQL ковырял, так там всё есть, и объявления переменной с последующими арифметическими действиями с ней, и нахождение в строке и вычисление длины строки... прям слюной истёк =)
#7 by крутойкодер
да блин если бы не в запросе я бы с шашкой на коне ;)
#8 by Megas
Могу предложить. ВЫгрузить запрос по НоменклатураВСписании.РазмерТовара и поля ширина грубина в ТЗ Обработать Тез в ВременнуюТаблицу И в запрос ... вот такой вот финт =)
#9 by DJ Anthon
а до фиксированной ширины довести никак? ограничивая разумными пределами....
#10 by МихаилМ
насколько я помню. решение через выгрузку во временную таблицу с полями varchar. но задача скорее всего  изначально неверно поставлена в связи с болезью 1с ников патать данные и их представление.
#11 by NcSteel
Ширина  и глубину сделай строковой .
#12 by Mendel_UA
ВЫРАЗИТЬ("значение" КАК Строка)
#13 by NcSteel
Ха ?
#14 by Mendel_UA
протупил, ссори.
#15 by Lamer1C
сделать дубль строк с шириной и длиной в таком виде ПРЕДСТАВЛЕНИЕ(<Выражение>)
#16 by крутойкодер
в запросе сделал представление для полей а потом в вычисляемых полях добавил Ширина + "х" +Глубина взлетело ;)
#17 by Mendel_UA
СКД немного не совсем чистый запрос. :) А я уже запрос написать успел.)))
#18 by Speshuric
"ВЫРАЗИТЬ" не предназначено для преобразования типов, а лишь для выделения простого типа из составного. Решить вопрос преобразования чисел в строки можно следующими способами: 1. Преобразовывать на стороне 1С. Дёшево и сердито. Но не запросом. 2. Загнать нужные числа во временную таблицу, индексировать её и соединяться с ней. Подходит, когда чисел не до фига - примерно до 10000. Потом возникает проблема скорости передачи этих 10000 на сервер, плохих планов запросов и т.п. 3. Сделать таблицу с соответствем цифр и символов цифр и написать соответствующее выражение, правда выражение будет очень громоздким и для каждой длины числа своё. Это способ для маньяков и для тренировки - для реальных задач лучше его не использовать. В любом случае следует помнить, что есть национальные форматы чисел (в т.ч. неразрывный пробел для отделения тысяч и запятая вместо десятичной точки)
#19 by Mendel_UA
- я сделал третий вариант, чисто для тренировки. До трех знаков. Чисто для тренировки. Только без таблицы. До трех знаков, но дальше одинаково все. Как я понял из ТЗ изменять конфигурацию нельзя. Пару кусков кода: В результате три часа мучений, и десятки килобайт запроса, и оно работает :)
#20 by Speshuric
>>но дальше одинаково все Это до тех пор, пока нет отрицательных и дробных - ага :) Я же говорю - хорошая задачка, если рассматривать как задачку, но не для практического использвания. Для практического использования часто лучше хранить представление (в том виде, который удобен).
#21 by Mendel_UA
Отрицательные и дробные тоже однотипно на самом деле. Я ведь округлял через выразить как число(10,0), оно мне округляет по правилам округления а не отбрасыванием дробной части... тоже еще тот вопросик :) Задачка действительно хороша как задача, но не более. Но и не менее. Специально решение целиком не выложил, вдруг надо будет экзамен делать на соображалку :)
#22 by Dem1urg
Напрямую в запросе - никак. В СКД через пользовательские или вычисляемые поля.
#23 by Mendel_UA
Почему никак? Теоретически можно, но на практике такое решение слишком прожорливо. Разбираем число по циферкам и склеиваем каждую циферку. Длинно, но работает.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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