Как уже в запросе объединить число и строку?

1. Denis Kolebakin (thorben) 17 22.03.12 12:06 Сейчас в теме
Как уже в запросе объединить ДопустимоеЧислоДнейЗадолженности (число) с со строкой «дней», т.е. чтобы сразу в таблице уже выдавалось "30 дней".
ДопустимоеЧислоДнейЗадолженности + « дней» не проходит.
Ответы
2. Алексей Бобылкин (alex_bob) 214 22.03.12 12:11 Сейчас в теме
ВЫРАЗИТЬ(ДопустимоеЧислоДнейЗадолженности КАК СТРОКА(3)) + " дней"
3. Sergey Dikov (DikovSV) 7 22.03.12 12:11 Сейчас в теме
(1) thorben,
У механизма запросов 1С проблема с преобразованием типов
4. Denis Kolebakin (thorben) 17 22.03.12 12:16 Сейчас в теме
(2) alex_bob,
Так я уже пробовал. Программа ругается и пишет, что "Несовместимые типы..." Она дает приобразовать число только в число, а в строку нет.
5. Максим Серебр (Maximus993) 22.03.12 12:20 Сейчас в теме
Число в строку можно преобразовать в строку через Представление(значение), однако прибавить к результату строку все равно не получится.
6. Антон Чарушкин (hulio) 24 22.03.12 12:21 Сейчас в теме
(2) на 8.2.15.294 такое выражение не работает.
Не понимает язык запросов такие преобразования ...
7. Denis Kolebakin (thorben) 17 22.03.12 12:23 Сейчас в теме
Понятно. Буду тогда результат запроса дорабатывать.
8. Дмитрий Звягинцев (Cerberdm) 20 22.03.12 13:35 Сейчас в теме
вариант с разбитием на два запроса предлагать?
9. Denis Kolebakin (thorben) 17 22.03.12 13:41 Сейчас в теме
10. Дмитрий Звягинцев (Cerberdm) 20 22.03.12 13:43 Сейчас в теме
(9) thorben, дважды выполнить запрос будет медленнее, чем выполнить его один раз и обработать результат? )
11. Дмитрий Звягинцев (Cerberdm) 20 22.03.12 13:45 Сейчас в теме
(9) thorben, Хотя, честно говоря, сам в таких случаях обрабатывал результат запроса... )
12. Denis Kolebakin (thorben) 17 22.03.12 13:48 Сейчас в теме
(11) Cerberdm,
просто я уже сделал обработку результата и теперь переделывать не хочется.
13. andrewks 1201 22.03.12 20:51 Сейчас в теме
вы будете смеяться, но это возможно. пакетный запросы, временные таблицы и соединения спасут мир
14. Sergey Dikov (DikovSV) 7 23.03.12 07:47 Сейчас в теме
(13) andrewks, есть рабочий пример?
15. andrewks 1201 23.03.12 22:46 Сейчас в теме
(14) вот, даже круче, чем в сабже

select
 2012 as DwnBound
,2015 as UpBound 
into InputTable 
union select 2000,2005 union select 2024,2032 union select 1997,1999

;

select
 0 as num
,"0" as numstr
into digits
union select 1,"1" union select 2,"2" union select 3,"3" union select 4,"4" union select 5,"5"
union select 6,"6" union select 7,"7" union select 8,"8" union select 9,"9"

;

select
 digits1.num+10*digits2.num+100*digits3.num+1000*digits4.num as num
,digits4.numstr+digits3.numstr+digits2.numstr+digits1.numstr as numstr
into numbers
from
 digits as digits1
,digits as digits2
,digits as digits3
,digits as digits4
index by num

;

select
 "период с "+numbers1.numstr+" по "+numbers2.numstr+" год" as BoundPresent
from
 InputTable
inner join
 numbers as numbers1
on (InputTable.DwnBound=numbers1.num)
inner join
 numbers as numbers2
on (InputTable.UpBound=numbers2.num)

...Показать Скрыть
16. Алексей Бобылкин (alex_bob) 214 24.03.12 09:32 Сейчас в теме
(15) Нда. Печально это всё выглядит. Не хотел бы я сопровождать такой код. Особенно если его еще засунуть в СКД.
Уж лучше обработать результат.
17. andrewks 1201 24.03.12 15:05 Сейчас в теме
(16) каков вопрос - таков и ответ. и пока 1с не сделает нормальный каст (а она этого, мне кажется, не сделает), это будет выглядеть именно так. либо отказаться от хотелок и делать по-другому
18. Васильева Нина (n_I_v_a) 27.03.12 08:23 Сейчас в теме
В СКД совершенно спокойно можно соединить поле Представление(ИмяПоля) + "текст" на закладке "Вычисляемые поля", можно написать даже выражение для правильной записи "дней", "дня", "день"
temka_1105; Восьмой; +2 Ответить 1
19. Васильева Нина (n_I_v_a) 27.03.12 14:54 Сейчас в теме
Кстати, в запросе всё прекрасно соединяется, ПРЕДСТАВЛЕНИЕ() +"текст"
20. andrewks 1201 27.03.12 18:03 Сейчас в теме
(19) ню-ню. а проверить прежде, чем советовать, не судьба?
21. Васильева Нина (n_I_v_a) 27.03.12 19:42 Сейчас в теме
Проверено, работает. Может быть понятнее будет на примере:
Текст Набора данных Запрос

ВЫБРАТЬ
Номенклатура.Ссылка,
Номенклатура.Наименование,
ПРЕДСТАВЛЕНИЕ(Номенклатура.Реквизит1) КАК ЭтоБылоЧисло
ИЗ
Справочник.Номенклатура КАК Номенклатура

Текст строки Вычисляемые поля Выражение

ЭтоБылоЧисло + " а это текст"

Всё прекрасно соединяет

А вот про запрос добавила зря. Извиняюсь.
22. Rett Batler (batlerrett) 06.02.13 12:09 Сейчас в теме
Никак, попробуйте 8.3, возможно там заработал метод Выразить
23. andrewks 1201 06.02.13 12:42 Сейчас в теме
(22) batlerrett, с чего бы это он там заработал?
24. Hany (Hany) 06.02.13 12:48 Сейчас в теме
неясно, найден ли вариант решения?

Если это СКД, то такой вопрос вообще не должен ставить в тупик, в (18) ответ.

Если это построитель или отчет со своим макетом - то что мешает добавить поле НазваниеДней как-то так:


...
|" дней" КАК стрНазваниеДней,
...


и выводить его сразу за полем, в котором число ДопустимоеЧислоДнейЗадолженности
25. Сергей Борисов (juntatalor) 56 06.02.13 15:59 Сейчас в теме
Если ДЕЙСТВИТЕЛЬНО необходимо это делать в запросе, можно использовать пакет запросов (т.к. даже в справке по функции ПРЕДСТАВЛЕНИЕ указано, что ее результат нельзя дальше использовать, а ВЫРАЗИТЬ вообще для составных типов):

ВЫБРАТЬ
Справочник1.Поле1 КАК Поле1Число, // Это число
ПРЕДСТАВЛЕНИЕ(Справочник.Поле1) КАК Поле1Строка // Это строка
ПОМЕСТИТЬ ВремТаб
ИЗ Справочник.Справочник1 КАК Справочник1;

ВЫБРАТЬ
ВремТаб.Поле1Строка + " тут нужная строка"
ИЗ ВремТаб КАК ВремТаб
temka_1105; alean; +2 1 Ответить 1
26. Григорий (suggestive) 215 06.08.13 13:07 Сейчас в теме
(25) juntatalor, При использовании временных таблиц все равно ругается и не дает запрос выполнить.
27. h00m (h00m) 16.08.13 15:47 Сейчас в теме
Лично я сделал это коряво (но работает). СКД не вариант (переписывать дольше), а конвертить нужно было всего-навсего номер строки, который у нас ограничен количеством 99.
	ТекстЗапроса = 
	"ВЫБРАТЬ
	|	1 КАК НомерСтроки,
	|	""01"" КАК НомерСтрокиТекст
	|ПОМЕСТИТЬ СоответствиеЧислаСтроке
	|";
	
	
	Для Счетчик = 2 По 99 Цикл
		ТекстЗапроса = ТекстЗапроса + "ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	" + Счетчик + ",
		|	""" + Строка(Формат(Счетчик, "ЧЦ=2; ЧВН=")) + """";
	КонецЦикла;
...Показать Скрыть
28. Сергей Борисов (juntatalor) 56 27.08.13 17:39 Сейчас в теме
(27) h00m, пожалейте голову и глаза того, кто будет после вас это разбирать! Уж лучше не использовать запросы вовсе (если нет технической возможности преобразовать число в строку), чем делать это так.
29. h00m (h00m) 27.08.13 23:53 Сейчас в теме
(28) Это же не запрос в цикле, или какая-то другая ошибка, это вполне адекватный код. Вы не встречали в Бух-ии решение при помощи теории графов?
30. Алексей Молодов (Allexe8.1) 28.08.13 03:22 Сейчас в теме
(29) h00m, а что мешает предварительно ТЗ заполнить и поместить ее во временную таблицу?
31. Pogonii (pogonii) 10.02.14 11:49 Сейчас в теме
Самый лучший вариант . Преобразовать строку в число или число в строку в запросе не получиться.
32. Владислав Двойрин (fnxash) 10.02.14 12:37 Сейчас в теме
(1) thorben, если у тебя скд то в нем делаешь макет для поля, в нем указываешь тип ячейки "шаблон" и к количеству дней добавляешь произвольный текст.
33. Евгений Кривошев (KrivosheevEV) 10.02.14 13:14 Сейчас в теме
А ещё.. а ещё в СКД можно Пользовательские поля использовать.
34. Rett Batler (batlerrett) 11.02.14 09:26 Сейчас в теме
Можно попробовать пользовательское поле уже в режиме пользователя
35. Andrey Kolesnikov (Boneman) 26 11.02.14 12:59 Сейчас в теме
мне кажется топикстартер уже давно решил эту проблему.
АРХЕОЛОГИ )))
36. Елена Пименова (Bukaska) 122 11.02.14 17:50 Сейчас в теме
(35) Boneman, Угу.. подняли старую тему)))
37. Жека (sheff161) 9 11.11.16 10:45 Сейчас в теме
У меня была задача похожего плана в скд один ресурс тип строка "СтатусОплаты" а другой тип число "СуммаОплаты"
сделал так в вычисляемом поле написал: ""+Формат(СтатусОплаты)+Формат(СуммаОплаты)
38. Юрий Михайлов (MIkhailovUA) 24.03.17 01:12 Сейчас в теме
Пример выражения вычисляемого поля: СТРОКА(РЕЗУЛЬТАТ) + " ("
39. Дмитрий Котов (rpgshnik) 7 09.06.17 04:02 Сейчас в теме
(17) угу прошло 5 лет))) вы были правы
Оставьте свое сообщение