Имя: Пароль:
1C
 
Как в запросе отобрать число как строку?
0 Михаил Анянов
 
24.12.09
09:43
Как реализовать к примеру если какое-то поле числовое, преобразовать его сразу в строку?
1 Михаил Анянов
 
24.12.09
09:44
В запросе, чтобы далее можно было использовать оператор ПОДОБНО
2 Михаил Анянов
 
24.12.09
09:45
Нужно что-то вроде Строка(Таблица.Поле1)
3 mikecool
 
24.12.09
09:51
(0) в запросе - никак
4 mikecool
 
24.12.09
09:51
+3 или извращаться с выбором, варианты уже были
5 Defender aka LINN
 
24.12.09
09:52
Еще один...
6 mikecool
 
24.12.09
09:52
(5) ты уж поконткретнее :)
7 EasyRider
 
24.12.09
09:54
Представление(Таблица.Поле1)
8 mikecool
 
24.12.09
09:58
(7) а к представлению можно функции применять?
9 anatoly
 
24.12.09
09:59
можно ВЫРАЗИТЬ КАК СТРОКА
(синтаксис точно не помню, посмотри в помощнике)
10 EasyRider
 
24.12.09
09:59
(8)да
(9)Выразить не пойдет - это для составного типа
11 Широкий
 
24.12.09
10:01
(10) Не обязательно для составного.. но согласен что не подойдет
12 EasyRider
 
24.12.09
10:02
(11)А для какого еще,кроме составного?
13 mikecool
 
24.12.09
10:03
(10) чета не работает
выбрать Представление(123)
где Представление(123) подобно &Параметр
грит неверные параметры Подобно
где <<>>Представление(123) подобно &Параметр
14 mikecool
 
24.12.09
10:03
+13 научи , как
15 EasyRider
 
24.12.09
10:06
(13)В условия нельзя.Я думал ты имеешь ввиду под функцией например: Представление(124/2)
16 mikecool
 
24.12.09
10:08
(15) дык, топик читай внимательно и не сей несбыточную мечту
17 EasyRider
 
24.12.09
10:12
(16)Хочет числовое поле преобразовать в строку.Я так и понял
18 EasyRider
 
24.12.09
10:13
а...про подобно не дочитал...
19 also
 
24.12.09
10:15
(16)
Функция ВЗапросеИзЧислаСтроку(ИмяПоля,ДлинаЦел,ДлинаДробь,ЛидирующийСимвол="")
   Запрос = Новый Запрос("ВЫБРАТЬ ВЫРАЗИТЬ(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)+" КАК Стр ");
РЗ = Запрос.Выполнить().Выбрать();
пока РЗ.Следующий() цикл
Сообщить(РЗ.СТр);
конеццикла;


взято отсюда v8: Сложение в запросе ВложенныЗапрос.Цена + "*". Может я хочу невозможного?
20 EasyRider
 
24.12.09
10:17
(16)Вот так кстати работает:

   ВЫБРАТЬ
   ПРЕДСТАВЛЕНИЕ(Номенклатура.Код) как код,
   Номенклатура.Наименование
ИЗ
   Справочник.Номенклатура КАК Номенклатура
   где            
   код подобно &Код
21 Defender aka LINN
 
24.12.09
10:23
(20) Уж сколько раз твердили дя... миру. Представление() в запросе - НЕ СТРОКА. НЕ СТРОКА, хоть как ты не пыжься и не тычь мне в результаты запроса. НЕ СТРОКА.
22 EasyRider
 
24.12.09
10:24
(21)Чего раскричался?А что там?
23 EasyRider
 
24.12.09
10:25
+(22)Запрос-то так работает?
24 Defender aka LINN
 
24.12.09
10:27
(22) Представление. В документации все написано, но никто ж себя не утруждает чтением.
25 EasyRider
 
24.12.09
10:29
(24)Но запрос из (20) работает?Сравнивать со строкой дает?
26 MoneG
 
24.12.09
10:31
(25) дает, дает.. РезультатЗапроса дает, а не сам запрос.
27 EasyRider
 
24.12.09
10:31
(24)Функция ПРЕДСТАВЛЕНИЕ
Данная функция предназначена для получения строкового представления значения произвольного типа.

Параметр функции – выражение любого типа.

Возвращаемое значение – представление значения, тип Строка.

Результат работы функции не может быть использован внутри других функций, за исключением функции ПРЕДСТАВЛЕНИЕ.
28 НЕА123
 
24.12.09
10:34
странно, но (20) работает, и сравнивать дает... хоть и не строка.
29 Рэйв
 
24.12.09
10:35
(27)Последний абзац прочитай внимательно.
подобно- это как раз функция
30 DUDE
 
24.12.09
10:35
выдержка из описания встроенного языка, раздел выражения языка запросов:
"Функция ПРЕДСТАВЛЕНИЕ
Данная функция предназначена для получения строкового представления значения произвольного типа.

Параметр функции – выражение любого типа.

Возвращаемое значение – представление значения, тип Строка.

Результат работы функции не может быть использован внутри других функций, за исключением функции ПРЕДСТАВЛЕНИЕ
".
31 EasyRider
 
24.12.09
10:36
(29)И? Функция...с типом Строка
32 mikecool
 
24.12.09
10:36
(28) потому что Номенклатура.Код тип строка?
33 EasyRider
 
24.12.09
10:36
(32)Нет
34 НЕА123
 
24.12.09
10:38
(29)
ты спутал... это оператор.
35 MoneG
 
24.12.09
10:38
(33) что "нет"? Ты псевдоним адекватный (уникальный) задай.
36 EasyRider
 
24.12.09
10:39
(35)Жесть...
37 mikecool
 
24.12.09
10:39
(33) что "Нет"? в 20 идет в подобно не Представление, а Номенклатура.Код
38 Михаил Анянов
 
24.12.09
10:39
(5) кто тут?
39 EasyRider
 
24.12.09
10:39
(35)    ВЫБРАТЬ
   ПРЕДСТАВЛЕНИЕ(Номенклатура.КодЧ) как код,
   Номенклатура.Ссылка
ИЗ
   Справочник.Номенклатура КАК Номенклатура
   где            
   код подобно &Код
40 DUDE
 
24.12.09
10:40
(29) +1. Но с другой стороны и в (24) ответ не особо корректный, думаю, на вопрос "А что там?" стоило ответить не тупо "Представление", а более понятно и развернута - "само по себе это - функция, а результат ее выполнения - строка".
41 MoneG
 
24.12.09
10:41
(39) чтобы ты понял, запусти вот это (ведь то же самое):

ВЫБРАТЬ ИСТИНА
ИЗ
   Справочник.Номенклатура КАК Номенклатура
   где
   ПРЕДСТАВЛЕНИЕ(Номенклатура.КодЧ) подобно &Код
42 mikecool
 
24.12.09
10:41
(39) нет такого поля КодЧ
43 mikecool
 
24.12.09
10:42
ВЫБРАТЬ
   ПРЕДСТАВЛЕНИЕ(Номенклатура.Код) как кодЧ,
   Номенклатура.Ссылка
ИЗ
   Справочник.Номенклатура КАК Номенклатура
   где            
   кодЧ подобно &Код
и так не находит поля КодЧ
44 EasyRider
 
24.12.09
10:42
(35)Ах ты ж!Был неправ!Если псевдоним другой указаьб,то не работает...
45 EasyRider
 
24.12.09
10:42
(41)Да-да,понял
46 MoneG
 
24.12.09
10:43
(0) по теме: пока только 1 "действующий" вариант - (16)
добавлю еще v8: Дата в строку в запросе..
47 НЕА123
 
24.12.09
10:44
(35)+1
(37)+1
48 Михаил Анянов
 
24.12.09
10:44
Вобщем ПРЕДСТАВЛЕНИЕ - то что нужно мне было, спасибо огромное :)
49 EasyRider
 
24.12.09
10:45
Спорили,спорили,я наконец-то понял,что был неправ и на тебе...
50 mikecool
 
24.12.09
10:45
(48) и как ты решишь свою задачу?
51 Рэйв
 
24.12.09
10:48
(34)Почему ошибся? Функция. Возвращает значение булево
52 DUDE
 
24.12.09
10:51
(51) И по документации идет "Функция ПРЕДСТАВЛЕНИЕ блаблабла".
53 Михаил Анянов
 
24.12.09
10:54
Делаю
ВЫБРАТЬ
   ПРЕДСТАВЛЕНИЕ(Номенклатура.Код) как кодЧ,
   Номенклатура.Ссылка
ИЗ
   Справочник.Номенклатура КАК Номенклатура
   где            
   кодЧ подобно &Код

а он пишет что поле кодЧ не найдено :(
54 mikecool
 
24.12.09
10:55
(53) прочитай уже всю ветку
55 Рэйв
 
24.12.09
10:55
(52)Я про ПОДОБНО :-)
56 DUDE
 
24.12.09
10:56
(55) эээмм тада ой :) прошу прощения)
57 Rebelx
 
24.12.09
10:58
58 Михаил Анянов
 
24.12.09
11:04
ВЫБРАТЬ
   Обороты.Субконто1 КАК Подразделение,
   ВЫБОР
       КОГДА Обороты.Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОбщепроизводственныеРасходы)
           ТОГДА Обороты.Субконто3
       ИНАЧЕ Обороты.Субконто2
   КОНЕЦ КАК СтатьяЗатрат,
   СУММА(Обороты.СуммаОборотДт) КАК Сумма,
   Обороты.Период КАК Период,
   эсПорядокСтатейЗатрат.Порядок КАК Порядок
ИЗ
   РегистрСведений.эсПорядокСтатейЗатрат КАК эсПорядокСтатейЗатрат
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(
               ,
               ,
               Месяц,
               Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОбщепроизводственныеРасходы)
                   ИЛИ Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОбщехозяйственныеРасходы),
               ,
               ,
               ,
               ) КАК Обороты
       ПО (ВЫБОР
               КОГДА Обороты.Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОбщепроизводственныеРасходы)
                   ТОГДА Обороты.Субконто3
               ИНАЧЕ Обороты.Субконто2
           КОНЕЦ = эсПорядокСтатейЗатрат.СЗ)

СГРУППИРОВАТЬ ПО
   Обороты.Период,
   Обороты.Субконто1,
   эсПорядокСтатейЗатрат.Порядок,
   ВЫБОР
       КОГДА Обороты.Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОбщепроизводственныеРасходы)
           ТОГДА Обороты.Субконто3
       ИНАЧЕ Обороты.Субконто2
   КОНЕЦ

УПОРЯДОЧИТЬ ПО
   Порядок,
   СтатьяЗатрат,
   Период,
   Подразделение
59 НЕА123
 
24.12.09
11:04
(51)
(52)
в (29) речь идет про ПОДОБНО. ПОДОБНО - это логический оператор.
60 Михаил Анянов
 
24.12.09
11:06
Вот мой "кривой" запрос, в справочнике просто несколько статей затрат с одним наименованием (ссылки разные), как мне отобрать (сгруппировать может) по наименованию именно
61 НЕА123
 
24.12.09
11:07
(59)+
хотя... какая разница...
один крен с ПРЕДСТАВЛЕНИЕ() не работает.
62 Михаил Анянов
 
24.12.09
11:07
Бухгалтерия кривая, подстраиваться приходится самому, бухгалтер ничего менять не хочет
63 hhhh
 
24.12.09
11:08
(62) а какая связь тут с числами? Наименование - это ведь строка.
64 Михаил Анянов
 
24.12.09
11:09
РегистрСведений.эсПорядокСтатейЗатрат - самодельный - ставлю соответствие статей затрат (реальных в базе) - их наименованию (нужно создать свою иерархию)
65 Михаил Анянов
 
24.12.09
11:12
Если я делаю в отборе везде субконто_.Наименование, соединение не работает :-/
66 hhhh
 
24.12.09
11:17
(65) но числа то там откуда взялись? Сделай везде строки.
67 Михаил Анянов
 
24.12.09
11:21
Простите, невыспался, сделал Наименование, вместо = в соединении прописал ПОДОБНО, запутался я уже просто