Имя: Пароль:
1C
1С v8
Как преобразовать число в строку без пробелов
0 Samir
 
20.11.15
11:45
Я понимаю глупейший вопрос, но не выходит каменный цветок
Имеем Число=1 023,54
Делаем согласно логике СтрЗаменить(Число," ","");
Получаем строку "1 023,54"
СтрЗаменить не прокатило, пробовал и СтрЗаменить(Строка(Число)," ","");

Что не так?
1 asady
 
20.11.15
11:45
(0) там не пробем а НПП
2 asady
 
20.11.15
11:46
(1)+ там не пробел а НПП

решений много:

1. Формат()
2.  СтрЗаменить(Строка(Число),Символы.НПП,"");
3. XMLстрока()
3 Samir
 
20.11.15
11:48
(2) Ну трындец.
Никогда такого не было и вот опять (Черномырдин)
4 almar
 
20.11.15
11:52
Нуралиев недавно говорил, что в отрасли 1С сейчас работают примерно 300 тысяч человек. Интересно, сколько из них стали жертвами неразрывного пробела?
5 ДенисЧ
 
20.11.15
11:54
(4) приблизительно 146%
6 Stim
 
20.11.15
11:54
(4) у них на 300 000 сотрудников - 10 000 психологов, половина из которых работает с жертвами НПП
7 rs_trade
 
20.11.15
11:57
кури формат, е-мае
8 The_SpecialOne
 
20.11.15
11:59
капец, "ЧГ=" же придумали для этого
9 rs_trade
 
20.11.15
12:03
вообще 1с-овцы конечно чудаки полные с этим НПП в числе. это же какой извращенной логикой надо обладать что бы запилить такое.
10 olegves
 
20.11.15
12:14
(0) xmlСтрока(Твоечисло)
11 kiruha
 
20.11.15
12:30
(0)
1С :
Формат(ЧислоКакое,"ЧГ=0 ")
12 Stim
 
20.11.15
12:32
(2) забыл про еще один вариант
13 Гёдза
 
20.11.15
12:33
(9) +100500
14 kiruha
 
20.11.15
12:52
(12)
Какой ?
15 Мимохожий Однако
 
20.11.15
13:00
(14)Он же ясно сказал : "забыл"
16 Stim
 
20.11.15
13:06
(14) (15) региональные установки ИБ
17 cw014
 
20.11.15
13:06
Формат(ЧСЛ, "ЧГ=")
18 kiruha
 
20.11.15
13:09
(16)
Это чревато - вычеркиваем
19 cw014
 
20.11.15
13:09
Даже лучше так
Формат(ЧСЛ, "ЧН=0; ЧГ=")
20 Фокусник
 
20.11.15
13:15
(9), (13) Я наверное банальность напишу, но НПП нужен для того, чтобы перенос строки (если ему случится быть на этом строковом представлении числа) автоматически НЕ происходил по середине числа... тогда как на пробеле такой перенос произойдет...
21 rs_trade
 
20.11.15
14:09
(20) на кой черт этот пробел в коде? вот о чем речь. это чисто фишка для вывода на экран. программист почему должен каждый раз какую нить выгрузку форматировать что бы число к нормальному виду привести?
22 Web00001
 
20.11.15
14:13
(21)А что должно происходить? Выгрузка должна сама форматироваться когда на файл с ней программист посмотрит? Может быть программист будет форматировать вывод в удобном виде?
23 rs_trade
 
20.11.15
14:18
(22) я удивлен что кому то еще это надо объяснять. если я выгружаю число 9999, я хочу выгружать число 9999, а не 9 999. это полная тупость оперировать в системе числами с красивым удобным представлением.
24 Пикчер
 
20.11.15
14:20
(9) чудные те, у кого половина числа на новую строку переносится. Все верно они сделали
25 Гёдза
 
20.11.15
14:21
(24) проблема не в том что там НПП, а что вообще по умолчанию в строку так переводится.
Ни в одном языке такого нет. В том числе и в 77 не было
26 Пикчер
 
20.11.15
14:31
(25) строка здесь именно форматированное представление. Если тебе нужна выгрузка чисел в текст пользуй
Xmlстрока
Значениевстрокувнутр
Значениевфайл
И тд
27 Фокусник
 
20.11.15
16:42
(23) "если я выгружаю число 9999"

а "я удивлен что кому то еще это надо объяснять", если "программист" выгружает ЧИСЛО в СТРОКУ, не задумывается о неявном преобразовании типов и что-то после этого хочет от "системы"... ;)

1С число в строку преобразует в том формате, который удобен для просмотра чисел (и поэтому с НПП). А если вам нужно выгрузить в каком-то ОСОБОМ формате, обеспечьте этот формат самостоятельно. А то одному пробелы мешают, другому вместо точки запятая нужна, третьему вообще нужно без дробной части... 1С вам ВСЕМ угодить должна при "неявном преобразовании формата"? ;)
28 rs_trade
 
20.11.15
16:46
(26) форматировать надо когда выводишь числа, а не когда в коде ими оперируешь.
29 rs_trade
 
20.11.15
16:55
(27) < 1С число в строку преобразует в том формате, который удобен для просмотра чисел

кому удобен? спорный вопрос. компании 1С? только если так.

и при выгрузке действительно происходит "не явное" преобразование. вместо одно числа 9999, я получаю два числа 9 и 999. и это поведение по умолчанию. очень удобно.
30 Гёдза
 
20.11.15
17:00
(26) Что пользовать я знаю. Но зачем по умолчанию так сделали?
31 Гёдза
 
20.11.15
17:01
(30) Повторюсь. Никто кроме 1с8 так не делает. НИКТО
32 Fragster
 
гуру
20.11.15
17:09
(31) ну да, в дельфи обычно стреляют себе в ногу с разделителем дробной части...
33 Fragster
 
гуру
20.11.15
17:10
ну и да - при выгрузке типизированных данных, например xml через xdto - никаких проблем.
34 DexterMorgan
 
20.11.15
17:11
СериализаторXDTO.ЗаписатьXDTO(ТвоеЧисло).ЛексическоеЗначение
35 novichok79
 
20.11.15
17:14
Формат(Чсл, "ЧН=0; ЧГ=")
36 DexterMorgan
 
20.11.15
17:16
(35) баян
37 mehfk
 
20.11.15
17:19
(25) +100500 в эту фичу вступают все, кто на 7.7 обходился без нее.
38 rs_trade
 
20.11.15
17:23
C НайтиПоНаименованию кстати мне кажется такая же не логичность.

Почему метод по умолчанию ищет по like? Я же прошу найти по  вполне конкретному наименованию, а не найти по вхождению или КакоеТоПохожееНаименование.

Плюс нагрузка на систему не обоснованная.

Поиск по like должен флагом включаться, а не выключаться.

Хоть ветку отдельную заводи по логике платформы.
39 Fragster
 
гуру
20.11.15
17:24
(38) потому что collation у тебя в базе ci
40 rs_trade
 
20.11.15
17:25
(39) и? не понял связи.
41 Fragster
 
гуру
20.11.15
17:42
42 Fragster
 
гуру
20.11.15
17:44
43 Пикчер
 
20.11.15
17:47
(31) не пойму чем xmlстрока не устраивает
44 mehfk
 
20.11.15
17:50
(41) Он говорит почему по-умолчанию сделан LIKE НаименованиеДляПоиска%, а не = НаименованиеДляПоиска ?
45 Рэйв
 
20.11.15
17:52
(44)like без % или других масок- не имеет смысла.
46 mehfk
 
20.11.15
17:55
(45) Ты плохо прочитал (44).
47 Рэйв
 
20.11.15
17:56
(46)Я не очень понял чем ты недоволен.
48 mehfk
 
20.11.15
17:58
Зачем НайтиПоНаименованию без дополнительных флагов транслируется в
LIKE НаименованиеДляПоиска%

а не в

= НаименованиеДляПоиска

Теперь понятно?
49 rs_trade
 
20.11.15
18:01
пятница вечер. все уже бухие похоже.
50 Рэйв
 
20.11.15
18:01
(48)Строка понятна . Ищет по вхождению. что тебе то не понятно?
51 Рэйв
 
20.11.15
18:01
(49)Не надо обобщать.Я всего пару пива выпил....Может поэтому с трудом понимаю ТС:-)
52 rs_trade
 
20.11.15
18:02
(51) ну тогда понятно почему ты отвечаешь на другие вопросы. которые здесь не озвучены.
53 mehfk
 
20.11.15
18:03
(50) Забей. Не порти себе отдых.
54 Рэйв
 
20.11.15
18:04
(52) например?
55 Рэйв
 
20.11.15
18:05
(53) ты прав:-)
56 mehfk
 
20.11.15
18:11
к = Справочники.Номенклатура.НайтиПоНаименованию("строкаипятьпробелов     ", Истина);

exec sp_executesql N'SELECT
T1._IDRRef
FROM _Reference70 T1 WITH(NOLOCK)
WHERE T1._Description = P1', N'P1 nvarchar(4000)', N'строкаипятьпробелов     '

против

к = Справочники.Номенклатура.НайтиПоНаименованию("строкаипятьпробелов     ");
exec sp_executesql N'SELECT
T1._IDRRef
FROM _Reference70 T1 WITH(NOLOCK)
WHERE T1._Description LIKE P1 ESCAPE ''\''', N'P1 nvarchar(4000)', N'строкаипятьпробелов%'
57 DexterMorgan
 
20.11.15
18:14
фрагстер тоже бухой походу
58 DexterMorgan
 
20.11.15
18:17
кароче я тоже щeтаю что в НайтиПоНаименованию второй параметр должен быть по умолчанию Истина
59 mehfk
 
20.11.15
18:18
(58) Замути в менеджере справочника свою функцию с похожим названием и пользуй ее.
60 DexterMorgan
 
20.11.15
18:19
(59) я хочу типовую
61 mehfk
 
20.11.15
18:19
типа НайтиПоНаименованиюИмениDexterMorgan :)
62 DexterMorgan
 
20.11.15
18:21
(61) проще второй параметр явно указать =)
63 Ювелир
 
20.11.15
18:38
(0) Простите за шутку. Уважаемый Samir грабли у входа нашел. ))) Они там всю жизнь стояли. (0) По существу, можно через функцию формат убирать эти НПП.
64 Рэйв
 
20.11.15
18:40
(60)Типовая тебя не хочет...Какая драма!:-)
65 JDizel
 
20.11.15
19:02
(0) Здесь все варианты преобразования числа в строку:

http://1-sys.ru/index.php/Как_в_1C_преобразовать_число_в_строку_без_пробелов
66 JDizel
 
20.11.15
19:03
(0) Здесь все варианты преобразования числа в строку:
http://1-sys.ru/index.php/Как_в_1C_преобразовать_число_в_строку_без_пробелов
67 Рэйв
 
20.11.15
19:04
(65)Я бы не ходил на месте общественности..
68 mehfk
 
20.11.15
19:04
(66) Яндекс не будет индекировать твое г0вн0, глупый спамер.
69 Рэйв
 
20.11.15
19:04
(66) А обработки деления на 0 у вас там нет случайно
70 JDizel
 
20.11.15
19:04
(67) косяк, но не мой... :)
71 Рэйв
 
20.11.15
19:05
а где наши бравые модеры? Почему организм (66) еще живет?
72 JDizel
 
20.11.15
19:06
(71) а срач на три страницы лучше по твоему?
73 Рэйв
 
20.11.15
19:08
(72)Да нет. Тебя по правилам должны были выкорчевать сразу.
Просто модеры судя по всему вообще мышей не ловят...Они больше озабочены своей славой и неприкосновенностью...А как придет тать так их и нет //kznm
74 Рэйв
 
20.11.15
19:08
...лять
75 mehfk
 
20.11.15
19:09
Написать в 1с что-ли по поводу использованию "1С" в доменном имени? Сомневаюсь что до понедельника домен доживет.
76 Рэйв
 
20.11.15
19:09
это не нарушение пункта.Это констатация факта.
77 Рэйв
 
20.11.15
19:09
а то еще забанят идиоты...
78 Фокусник
 
20.11.15
22:36
(29) каких ещё "два числа"? Это ОДНА строка... ;)
Удобно смотреть большие числа, пользователю. Сравни непонятное 7777888999 и очевидное 7 777 888 999 ;)
79 Zamestas
 
20.11.15
22:51
(0) Собирай из строки другую строку до тех пор, пока символы строки есть числа. Символы, числами не являющимися, исследуй на предмет разделителя дробей, и не являющимися оными игнорируй до явления символа разделителя дробей либо окончания строки. Ибо сказано не может быть других разделителей дробей, кроме первого.