Имя: Пароль:
1C
1С v8
Как представить числовое выражение в виде строки в запросе
0 Lepochkin
 
01.09.11
11:38
ВЫРАЗИТЬ(ВложенныйЗапрос.КоличествоМесяцев КАК строка) ругается на несовместимые типы, если писать "как число", то все ок

Подскажи ка правильно сделать?
1 Ненавижу 1С
 
гуру
01.09.11
11:40
(0) а зачем?
2 Wobland
 
01.09.11
11:41
выбор когда количество=1 тогда "адын" иначе...
3 lxs
 
01.09.11
11:41
(1) +1
4 Irbis
 
01.09.11
11:42
Поищи по форуму преобразование типов в запросе
5 Господин ПЖ
 
01.09.11
11:42
(0) правильно - никак
6 mzelensky
 
01.09.11
11:43
(2) и так от минус бесконечности до плюс бесконечности :)
7 mzelensky
 
01.09.11
11:44
(1) (3) сам порой сталкивался - иногда НАДО!
8 Ненавижу 1С
 
гуру
01.09.11
11:44
(7) ну давай, рассказывай, делись уже
9 lxs
 
01.09.11
11:46
10 lxs
 
01.09.11
11:46
Научитесь поиском пользоваться
11 Lepochkin
 
01.09.11
11:49
(9)А читать уметь не надо??? Написано же в (0) Как ЧИСЛО работает, нужно Как СТРОКА
12 Lepochkin
 
01.09.11
11:49
(7)Как победил???
13 Wobland
 
01.09.11
11:50
(11) ВЫРАЗИТЬ(<Число> КАК ЧИСЛО)?
14 catena
 
01.09.11
11:51
//Функция создает выражения для представления числа в виде строки в запросе.
Функция ВЗапросеИзЧислаСтроку(ИмяПоля,ДлинаЦел,ДлинаДробь,ЛидирующийСимвол="") Экспорт
   Запрос = Новый Запрос("ВЫБРАТЬ ВЫРАЗИТЬ(0.5 КАК ЧИСЛО (15,0)) КАК Проверка");
   РЗ = Запрос.Выполнить().Выбрать();
   РЗ.Следующий();
   ЗапросОкругляетПоАрифметическимПравилам = Рз.Проверка = 1;
   
   Ткст = "ВЫБОР КОГДА "+ИмяПоля+"<0 Тогда ""-"" ИНАЧЕ """" КОНЕЦ " + Символы.ПС;
   ИмяПоляАбс = " ВЫБОР КОГДА "+ИмяПоля+"<0 ТОГДА -"+ИмяПоля+" ИНАЧЕ "+ИмяПоля+" КОНЕЦ ";
   Парам = Pow(10,ДлинаЦел-1);
   Для Бегим = 1 По ДлинаЦел+ДлинаДробь цикл
       Ткст = Ткст + ?(Бегим = ДлинаЦел+1,"+"".""+","+");
       Ткст = Ткст + " ВЫБОР " + Символы.ПС +
       ?(Бегим<ДлинаЦел," КОГДА " + ИмяПоляАбс + " < " +Формат(Парам,"ЧРД=.; ЧГ=")+" ТОГДА """+ЛидирующийСимвол+""" " + Символы.ПС,"");
       Для Цифирка = 0 По 9 Цикл
           Ткст = Ткст + " КОГДА "+ИмяПоляАбс+"-"+Формат(Парам*10,"ЧРД=.; ЧГ=")+"*ВЫРАЗИТЬ(("+ИмяПоляАбс+?(ЗапросОкругляетПоАрифметическимПравилам,"-"+Формат(Парам*5,"ЧРД=.; ЧГ="),"")+")/"+Формат(Парам*10,"ЧРД=.; ЧГ=")+" КАК ЧИСЛО(15, 0))"+" >= "+Формат((9-Цифирка)*Парам,"ЧН=0; ЧРД=.; ЧГ=")+" ТОГДА """+Формат(9-Цифирка,"ЧН=0; ЧРД=.; ЧГ=")+""" " + Символы.ПС;
       КонецЦикла;
       Ткст = Ткст + " ИНАЧЕ ""0"""+Символы.ПС+" Конец " + Символы.ПС;
       Парам = Парам/10;
   КонецЦикла;
       
   Возврат Ткст;
   //Запрос = Новый Запрос(" ВЫБРАТЬ ""Полученная строка : ""+"+ВЗапросеИзЧислаСтроку(ИмяПоля2,ДлинаЦел2,ДлинаДробь2)+" КАК Стр ");
   //РЗ = Запрос.Выполнить().Выбрать();
   //пока РЗ.Следующий() цикл
   //    Сообщить(РЗ.СТр);
   //конеццикла;

КонецФункции


(c)Не помню, где-то тут брала.
15 lxs
 
01.09.11
11:53
(11) Вот и почитай! Написано, что нет в запросе преобразования типов
16 Wobland
 
01.09.11
11:54
(15) Приведение типа в языке запросов © СП
17 mzelensky
 
01.09.11
12:19
(12) нормально никак, приходилось через задницу обрабатывать...
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн