Имя: Пароль:
1C
1С v8
Число в строковом представлении, преобразование в число
0 Злопчинский
 
09.10.20
14:30
Строка представления числа, например СтрокаЧисла "11 580", глде пробел - хз, то ли пробел, то ли НП, что-то что штатно 8-ка сует
1. РеквизитСТипомЧисло = СтрокаЧисла;
- в РеквизитСТипомЧисло - какое значение будет
2. ПеременнаяЧтоТо = Число(СтрокаЧисла);
- в ПеременнаяЧтоТо - какое значение будет (думаю аналогично как п.1 будет)

?
1 Волшебник
 
09.10.20
14:31
Восьмёрка добавляет Символы.НПП
2 ДенисЧ
 
09.10.20
14:33
Формат() придумали для трусов!
3 polosov
 
09.10.20
14:44
(0) А = Формат(РеквизитСТипомЧисло, "ЧГ=0");
4 Ботаник Гарден Меран
 
09.10.20
15:00
(Новый ОписаниеТипов("Число")).ПривестиЗначение(СтрЗаменить(ЧислоСтрокой,Символы.НПП,""))
5 acht
 
09.10.20
15:07
(0) В обоих случаях - число 11580

Глобальный контекст (Global context)
    Число (Number)
Синтаксис:
    Число(<Значение>)
...
Описание:
    Преобразует полученный параметр в значение типа Число.
Значение типа Строка преобразуется в число в том случае, если параметр является строковым представлением литерала численного типа. При этом строковое представление анализируется как с учетом региональных установок информационной базы, так и без их учета. В противном случае будет выдано сообщение об ошибке выполнения функции.
6 Злопчинский
 
09.10.20
15:50
(5) когда только появилась в-ка, и было уже не 8.0, а вполне нормальное - я тупо залез в какую-то демо базу и тупоу увидел что представление чисел никак нахер не связано с глобальными региональными устанвоками ОС. точно как 77. это была одна из прчин почему я послал 8-ку нхер. я ожидал от нее  более интеллекта..
7 Rovan
 
гуру
09.10.20
16:11
Между строками и числами в 1С есть такое различие - двойной плюс:
6++7 можно делать, а "6"++"7" нельзя !
8 polosov
 
09.10.20
16:15
(7) Наверное потому, что не бывает положительных и отрицательных строк?
9 RomanYS
 
09.10.20
16:16
(7) Вставил в табло - работают оба варианта
10 acht
 
09.10.20
16:17
(6)  > глобальными региональными устанвоками ОС
Это, кагбе, совсем не то же самое, что "региональные установки информационной базы"
11 Ненавижу 1С
 
гуру
09.10.20
16:33
12 Злопчинский
 
09.10.20
18:09
(10) Мне как пользователю - абсолютно похрен. я ожидаю что продвинутый продукт из коробки будет нормально и ожидаемо работать, Почему б! эксель  берет десятичный разделитель из ОС, а 1С - нет?
13 hhhh
 
09.10.20
18:15
(12) пробелов в строке быть не должно. Убирайте, если она их увидит, пошлет вас куда подальше.
14 b_ru
 
09.10.20
18:53
(12) Потому что эксель однопользовательский. А серверной восьмерке из какой ОС прикажешь брать разделитель? Из ОС сервера, ОС клиента или ОС программиста?
15 Василий Алибабаевич
 
09.10.20
19:08
(14) "серверной восьмерке из какой ОС прикажешь брать разделитель?"
ГЫ. Из окружения клиента. Как это принято в профессиональных системах.
16 hhhh
 
09.10.20
20:15
(15) ГЫ. Из окружения клиента не получится. Потому что у двух разных пользователей разные окружения. Один пользователь запишет число строкой в базу, а другой пользователь читает со своего окружения, и у него получается хрень.


но вообще-то 1с нормально обрабатывает десятичный разделитель. Она принимает и точку и запятую.
17 b_ru
 
09.10.20
20:18
(15) Какого именно из сотни подключенных клиентов?
P.S. В профессиональных системах™ вопрос разделителя решен очень просто. Разделитель разрядов равен пустоте. Зачем 1С выпендрились и использовали неразрывный пробел - вопрос, конечно, интересный. Но из настроек системы определенно нельзя было его брать. Потому что это ненормально, когда &НаКлиенте
А = 1000 + "";

&НаСервере
Б = 1000 + "";

Сообщить(А = Б); //ложь
18 Злопчинский
 
10.10.20
03:10
(13) в (5) - с вами не согласны...
19 palsergeich
 
10.10.20
03:21
ОписаниеТипов = новый описаниеТипов("Число")
ОписаниеТипов.ПривестиЗначение(Строка)
Попробуй так, в отличии от метода Число - в таком виде не будет исключений. если не может привести - будет пустое значение типа, в твоем случае 0
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший