Как сложить две колонки в одну, если тип колонок строка? #325308


#0 by mc_jet
У меня есть две колонки с "кол-во 1" и "кол-во 2", необходимо, чтобы в результате запросы было одно поле "кол-во 1 из кол-во 2". Т.е. я через ПРЕДСТАВЛЕНИЕ получаю кол-во 1 тип строка, а вот сложить строки не получается. Помогите, пожалуйста.
#1 by Повелитель
Че изобритаем? ИЗ    Справочник.Банки КАК Банки
#2 by Defender aka LINN
И не выйдет :)
#3 by ZolotarevAA
И как, работает?
#4 by mc_jet
т.е. мне не получить "8 / 10". нужно кол-во из числа превратить в строку, а потом сложить.
#5 by Ануфрий
Работает, видимо в новых платформах так можно... раньше у меня такое не выходило, потому решил проверить.
#6 by Повелитель
Просто у него сам вопрос кривой Число со строкой в запросе сложить нельзя!!!
#7 by Defender aka LINN
Работает :) Тебе что именно в непонятно? :)
#8 by ZolotarevAA
Не знаю, в чем кривизна вопроса, но число со строкой в одном поле запроса у меня совместить не удается. На каком релизе платформы работает?
#9 by ЗлобнийМальчик
кому то удалось заставить 1с сложить число со строкой??? Восхитительно. Нельзя из числа получить строку нормальными методами. Можно конечно создать справочник с реквизитами от 0 до миллиона и их строковыми представлениями и с ним соединять....
#10 by Повелитель
В уже писал что строка + число не будет работать. Ты еще метод не запатентовал? Можно конечно создать справочник с реквизитами от 0 до миллиона и их строковыми представлениями и с ним соединять.... Можно тогда я запатентую?
#11 by Terv
бумагоморатели ... что мешает перевести из строки в число прямо в запросе?
#12 by ЗлобнийМальчик
патентуй. Тока я же написал - это не нормальный метод. Но если очень сильно хочется....
#13 by ОператорПК
как? раскажи.
#14 by Defender aka LINN
Продемостируй.
#15 by Bahmet
а чо Выразить(ХУК как Строка) не подойдет?
#16 by Terv
вот пример для 3х значного числа: строку "35" замените на свое поле - ВЫБРАТЬ
#17 by ZolotarevAA
Уважаемые специалисты, вместо разведения демагогий просьба продемонстрировать рабочий текст запроса с удивительными преобразованиями специально для чайников типа меня. Чтобы решить вопрос враз и навсегда :)
#18 by Terv
см.  )))
#19 by Terv
+ еще один вариант, попроще )) ВЫБРАТЬ   ВЫБОР
#20 by ЗлобнийМальчик
тогда мой способ лучше)))
#21 by ОператорПК
а хто сказал что число целое?
#22 by Terv
а хто сказал, что не целое? :)
#23 by ОператорПК
понятно из контекста в (0,) что количество может быть не целым + оно  не ограничено числом 999....
#24 by Terv
задача перевода числа из строки, всегда является нетривиальной... допустим перевод строки "152абвга" в число : -в 7.7 Число("152абвга") = 152 -в 8.1 Число("152абвга") - будет ошибка периода исполнения
#25 by Terv
+ да и какая религия запрещает тебе доработать что бы учитывала и отрицательные и дробные значения ?
#26 by ОператорПК
через попытку надо делать + не факт что  Число("152абвга") = 152 - есть верное решение
#27 by ОператорПК
попробуй сам, потом посмотрим каких размероф текст запроса будет
#28 by Terv
кхе... а ты хотел большой и чистой любви и что бы задешево? я где то в утверждал, что запрос будет маленький?
#29 by ОператорПК
всех обозвал бумагоморателями - а сам выдал креатифф на 2 листа, не универсального метода (а скорее часный случай) , которого ожидали после  ....
#30 by ЗлобнийМальчик
я, кстати, продолжаю настаивать на том, что вариант с созданием индексированного справочника для дробной и целой части - это куда меньшее зло, чем написание  такого вида запросов. Ибо, допустим, поиск по справочнику из 1000000000 элементов займёт всего 30 операций - а количество операций (и длина) аналогичного по эффективности запроса не поддается моему воображению
#31 by Terv
можно сделать универсальным )) только зачем? >всех обозвал бумагоморателями а кто тут развернул дискуссию, что это невозможно?
#32 by Terv
ну ка.. попробуй создай справочник... не изменяя конфу. слабо?
#33 by ЗлобнийМальчик
слабо)))) но ради такого дела))))
#34 by Terv
+ а ну да, можно создать временную таблицу
#35 by mc_jet
Уточню вопрос: Существует регистр сведений в нем два ресурса "кол-во 1" тип число, длина 3, точность 0, неотрицательное и "кол-во 2" тип число, длина 3, точность 0, неотрицательное. Хочу получить из запроса одно поле "кол-во 1 / кол-во 2" (например, 6 / 10, 15 / 20).
#36 by mc_jet
1С:8.0
#37 by ОператорПК
"можно сделать универсальным )) только зачем"  - задачи из время от времени бывают. "а кто тут развернул дискуссию, что это невозможно" - невозможно "нормальным" способом, не путем пербора строки на все возможные входжения.
#38 by ОператорПК
мега жесть...
#39 by Фокусник
какая нужда заставила получить "6 / 10", "15 / 20" именно в запросе, а не при обходе результата, при выводе и т.д.?
#40 by NewNick
Помоему проблема была получить строку из числа что бы потом соединить ;)
#41 by NewNick
Запрос = Новый Запрос(" ВЫБРАТЬ "+ВЗапросеИзЧислаСтроку("РС.Количество1",15,2,"")+"+""/""+"+ВЗапросеИзЧислаСтроку("РС.Количество2",15,2,"")+" КАК Стр из РегистрСведений.НашЛюбимыйРегистр КАК РС");
#42 by mc_jet
Если бы результат я обходил перед помещением его в таблицу, я вопрос не задавал. Я результат просто выгружаю в табличное поле..
#43 by mc_jet
Написано, конечно, круто, но у меня не заработало, наверно у меня с руками что-нибудь, вот ответ ВЗапросеИзЧислаСтроку(6,3,0) ВЫБОР КОГДА 6 < 100 ТОГДА "" КОГДА 6 < 10 ТОГДА "" если я правильно рассчитал, будет всегда 0
#44 by NewNick
исправленная функция (учитывет отрицательные числа)
#45 by NewNick
Ну так что мешает проверить ?))
#46 by mc_jet
не работает вот одна строка из ответа функции: КОГДА ВЫРАЗИТЬ(( ВЫБОР КОГДА 6<0 ТОГДА -6 ИНАЧЕ 6 КОНЕЦ -0.5-10*ВЫРАЗИТЬ(( ВЫБОР КОГДА 6<0 ТОГДА -6 ИНАЧЕ 6 КОНЕЦ -5)/10 КАК ЧИСЛО(15, 0)))/1 КАК ЧИСЛО(15, 0))=6 Тогда "6" ВЫБОР КОГДА 6<0 ТОГДА -6 ИНАЧЕ 6 КОНЕЦ ------ это ------ 6 ВЫРАЗИТЬ(( ВЫБОР КОГДА 6<0 ТОГДА -6 ИНАЧЕ 6 КОНЕЦ -5)/10 КАК ЧИСЛО(15, 0)) ------ ВЫРАЗИТЬ((6-5)/10 КАК ЧИСЛО(15, 0)) -------- это --------- 0 ВЫРАЗИТЬ(( ВЫБОР КОГДА 6<0 ТОГДА -6 ИНАЧЕ 6 КОНЕЦ -0.5-10*ВЫРАЗИТЬ(( ВЫБОР КОГДА 6<0 ТОГДА -6 ИНАЧЕ 6 КОНЕЦ -5)/10 КАК ЧИСЛО(15, 0)))/1 КАК ЧИСЛО(15, 0)) ------- ВЫРАЗИТЬ((6-0.5-10*0)/1 КАК ЧИСЛО(15, 0)) -------- это ------ 0 этот 0 получаем во всех строках проверил просто взял функцию и вызываю ее ВЗапросеИзЧислаСтроку(6,3,0) что я не так делаю???
#47 by NewNick
ВЫРАЗИТЬ((6-0.5-10*0)/1 КАК ЧИСЛО(15, 0)) -------- это ------ 0 очень странно что это 0 у меня это 6 ;) шас в 8.0 посмотрю
#48 by NewNick
в 8.0 файловой в консоли выбрать ВЫРАЗИТЬ((6-0.5-10*0)/1 КАК ЧИСЛО(15, 0)) как стр результат 6
#49 by mc_jet
согласен ответ 6 я ступил
#50 by NewNick
так 45 работает или нет ?)) в РС работает моя функция ?))
#51 by mc_jet
НЕТ не работает всегда выдает 0
#52 by NewNick
забавно ... делаем новую обработку в модуль обработки впихиваем открываем в предприятии. что оно написало ? у меня Полученная строка : 6
#53 by mc_jet
а у меня 0 запихал без изменения в модуль обработки причем, ВЗапросеИзЧислаСтроку("6",3,0) "6" - в данном случаи строка, а в действительности это число, даже с учетом, что эска умеет сама преобразовывать я проверил и так ВЗапросеИзЧислаСтроку(6,3,0), но увы, результат ноль
#54 by NewNick
ппц мистика. если ВЫРАЗИТЬ((6-0.5-10*0)/1 КАК ЧИСЛО(15, 0)) дает 6 то должно сработать "6". какая платформа ? кто нить из форумчан если не влом протестити пример из плиз. я через 2 часа у клиента на серверных вариантах 8.0 и 8.1 проверю.(MSSQL) насчет """6"" в данном случае строка" - в тексте запроса оно не строка, а обычное число 6.
#55 by mc_jet
1С:Предприятие 8.0 (8.0.16.2)
#56 by NewNick
на 8.0.14 тоже кстати 0. на 8.0.18 было 6 ;) ша разберусь
#57 by NewNick
фокус в том что 8.0.18(минимально проверенная версия) округляет в запросе по арифмитическим правилам а 8.0.14 просто берет целое
#58 by NewNick
нет не в этом дело выбрать ВЫБОР КОГДА ВЫРАЗИТЬ(( ВЫБОР КОГДА 6<0 ТОГДА -6 ИНАЧЕ 6 КОНЕЦ -0.5-10*ВЫРАЗИТЬ(( ВЫБОР КОГДА 6<0 ТОГДА -6 ИНАЧЕ 6 КОНЕЦ -5)/10 КАК ЧИСЛО(15, 0)))/1 КАК ЧИСЛО(1, 0))=6 Тогда "6" ИНАЧЕ "лажа" в ранних версиях не работает зато выбрать ВЫБОР КОГДА ВЫРАЗИТЬ(( ВЫБОР КОГДА 6<0 ТОГДА -6 ИНАЧЕ 6 КОНЕЦ -0.5-10*ВЫРАЗИТЬ(( ВЫБОР КОГДА 6<0 ТОГДА -6 ИНАЧЕ 6 КОНЕЦ -5)/10 КАК ЧИСЛО(15, 0)))/1 КАК ЧИСЛО(1, 0))-6=0 Тогда "6" ИНАЧЕ "лажа" работает. шас выложу исправленную функцию
#59 by NewNick
#60 by mc_jet
Пытаюсь запихнуть в нормальный запрос...
#61 by mc_jet
Спасибо, NewNick, но ошибка уже другая. Пишу так: Запрос = Новый Запрос; Выдает ошибку при выполнении: {ВнешняяОбработка.s}: Ошибка при вызове метода контекста (Выполнить): Ошибка выполнения запроса "Ошибка при выполнении операции над данными: Microsoft OLE DB Provider for SQL Server: Arithmetic overflow error converting numeric to data type numeric. " по причине: {ВнешняяОбработка.s}: Ошибка при вызове метода контекста (Выполнить): Ошибка выполнения запроса "Ошибка при выполнении операции над данными: Microsoft OLE DB Provider for SQL Server: Arithmetic overflow error converting numeric to data type numeric. " по причине: Ошибка выполнения запроса "Ошибка при выполнении операции над данными: Microsoft OLE DB Provider for SQL Server: Arithmetic overflow error converting numeric to data type numeric. " Вот такие пироги.
#62 by hhhh
сделай 4 колонки рядом: "Кол-во" 1 "из кол-ва" 2
#63 by mc_jet
- колонок в итоговой таблице куча, поэтому и хочется запихать в одну
#64 by NewNick
слаб оказался мсскуль ;) попзже если время будет соптимизирую. там вобшем можно просче выражения слепить.
#65 by NewNick
мускуль наверно не причем. попробуй на периодах. и замени в функции "как число(1,0)" на "как число(15,0)" но функцию я все равно попозже соптимизирую ;)
#66 by NewNick
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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