Имя: Пароль:
1C
1С v8
Преобразование строки "110" в число "110"
, ,
0 oqjawa
 
26.11.18
10:30
Здравствуйте,
есть запрос

ВЫБРАТЬ
    Сотрудники.Наименование КАК Наименование,
    Сотрудники.Реквизит1 КАК Реквизит1
ИЗ
    Справочник.Сотрудники КАК Сотрудники

/////////////////////////
Сотрудники.Реквизит1 = Строка, но в этот реквизит заносят только цифры, мне необходимо сделать сортировку по полю Реквизит1 но чтобы сортировка была как у числа а не как у строки..
Каким образом возможно это реализовать?
1 Вафель
 
26.11.18
10:33
изменить у реквизита
2 Волшебник
 
26.11.18
10:33
заведи числовой Реквизит2
3 Волшебник
 
26.11.18
10:34
Все числа приведи к одной длине, например, "1" к "000001"
4 oqjawa
 
26.11.18
10:35
Немогу, конфигурация типовая, добавить доп реквизит можно не внося изменения но придется данные перекидывать с одного реквизита на другой, а это тоже работа
5 oqjawa
 
26.11.18
10:36
про числа интересно, а возможно это сделать прям в запросе?
6 Вафель
 
26.11.18
10:36
если это доп реквизит, то новый можно не заводить, а просто сменить тип и перезаписать данные
7 oqjawa
 
26.11.18
10:37
это не доп реквизит
8 Вафель
 
26.11.18
10:38
тогда нули дописывай
9 catena
 
26.11.18
10:38
(5)Можно. Но тебе не понравится.
10 oqjawa
 
26.11.18
10:39
(9) и почему же мне не понравится?
11 oqjawa
 
26.11.18
10:40
(8) вот это как раз мне и не понравится))
12 impulse9
 
26.11.18
10:41
13 lodger
 
26.11.18
10:42
согласно СП в запросе нет преобразования типов. есть только приведение, но это не ваш случай.
14 catena
 
26.11.18
10:43
(10)Расскажи потом свои впечатления от (12)
15 oqjawa
 
26.11.18
10:43
(12) спасибо, что-то аппетит пропал, я видел этот пост, и к моему сожалению мало что переживал там
16 oqjawa
 
26.11.18
10:43
а вам как?
17 Aleksey
 
26.11.18
10:44
(13) т.е. выразить как число не поможет?
18 catena
 
26.11.18
10:44
(16)А мы не сортируем строки как числа))
19 oqjawa
 
26.11.18
10:46
(10) и это преобразование строк в таблицу, но хороший вариант (3) может кто знает куда идти))
20 oqjawa
 
26.11.18
10:48
(16), хорошо я тоже не хочу сортировать строки как числа,
но что мне делать если разработчики используют строковый тип данных, как мне на печать вывести данные по порядку, чтобы было
1
5
10
11
110
120


а не
1
5
10
110
11
120
21 oqjawa
 
26.11.18
10:49
как это называется, вроде "Лидирующие нули"?
22 catena
 
26.11.18
10:49
(20)Дописать лидирующие нули
23 иубиповец
 
26.11.18
10:49
Или 3, или выгрузить в тз, создать колонку типа число, пройтись по всем элементам в новую колонку внести число, тз как параметр передать в запрос обратно и с ней дальше работать.
24 catena
 
26.11.18
10:49
(19)В смысле, код дать? Еще и пальцы за тебя загнуть?

к = Прав("00000000000000"+к,ДлинаРеквизита)
25 lodger
 
26.11.18
10:49
(20) сортировать постобработкой. после запроса.
26 lodger
 
26.11.18
10:52
или как в (23), делать многоэтапный запрос.
1) сформировать запрос, дополнить полем с 0, выполнить запрос.
2) выгрузить в ТЗ, заполнить нолики числами, сортировать ТЗ
3) сформировать запрос с использованием ТЗ. работать дальше.
27 Конструктор1С
 
26.11.18
11:02
ВЫРАЗИТЬ(Сотрудники.Реквизит1 КАК ЧИСЛО(10,0))
не?
28 oqjawa
 
26.11.18
11:06
(27) Ошибка - не совместимые типы "ВЫРАЗИТЬ", нельзя выражать строку числом, типы должны быть одинаковые как я понял
29 catena
 
26.11.18
11:11
(27)У нас тут, конечно, сплошные тролли, но не на столько же))
30 Мандалай
 
26.11.18
11:22
Подстрока может помочь, но только если ты знаешь итоговую длину строки заранее.
31 МихаилМ
 
26.11.18
12:31
(0)
разбейте Вашу задачу на подзадачи
1) "узнать длину строки в запросе" - поиском по форуму
+ "убрать лидирующие нули в запросе"

2) Подстрока("000000000000000000000000"+Реквизит1,24+ДлинаСтрокиБезЛидирующихНулей-ДлинаРеквизита )

естественно "000000000000000000000000" и 24 и ДлинаРеквизита  нужно заменить в тексте запроса на ресчетные
32 Fragster
 
гуру
26.11.18
12:37
уже (4) бы сделал