Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Сложная ситуация с пробельными символами в 1С.

Сложная ситуация с пробельными символами в 1С.
Я
   maker1992
 
09.02.18 - 13:07
Здравствуйте.

Платформа 1С 8.3. Есть код, считывающий данные из Excel-файла.
В ячейке экселя данные - 67104848 (Числовой формат: общий).

Код в 1С:

СокрЛП(ОкноЕксел.Cells(Й, 2).Value));

Выдает результат: 67 104 848.
Но пробелы здесь не являются пробелами. Я сохранил эту строку в блокнот, открыл ХЕКС редактором - этот пробел имеет код а0 - LF - перенос строки.

Мне нужно убрать пробелы, как быть?
 
 
   Малыш Джон
 
1 - 09.02.18 - 13:08
СтрЗаменить
   Базис
 
2 - 09.02.18 - 13:08
НБСП или Симв(160) заменяй на "".
   Lexey_
 
3 - 09.02.18 - 13:10
(0) зачем ХЕКС редактором, есть же КодСимвола()?
   Rema Dan
 
4 - 09.02.18 - 13:10
(0) СокрЛП(Формат(ОкноЕксел.Cells(Й, 2).Value, "ЧН=; ЧГ="));
   Ненавижу 1С
 
5 - 09.02.18 - 13:10
Формат(ОкноЕксел.Cells(Й, 2).Value, "ЧГ=0")
   бомболюк
 
6 - 09.02.18 - 13:10
перенос строки - это 0x0a
   maker1992
 
7 - 09.02.18 - 13:12
Сработало:

СтрЗаменить(СокрЛП(ОкноЕксел.Cells(Й, 2).Value), Символы.НПП, "")
   Fram
 
8 - 09.02.18 - 13:13
(4) СокрЛП это контрольный в голову?
   Ненавижу 1С
 
9 - 09.02.18 - 13:14
(0) особенно порадовала функция СокрЛП, примененная к числу
   Rema Dan
 
10 - 09.02.18 - 13:17
(8) Вполне возможно, что этот же код применяется не только для строчек с числами, но и обычных строчек. Если убрать СокрЛП, то изменится разбор таких строчек.
 
 Рекламное место пустует
   maker1992
 
11 - 09.02.18 - 13:17
(8) Дак она сама приводит число к строке
   mehfk
 
12 - 09.02.18 - 13:18
(9) Если трудностей нет, их нужно создать, а потом мужественно преодолеть.
   Скиурус
 
13 - 09.02.18 - 13:26
ОкноЕксел.Cells(Й, 2).Value может приводиться к разным типам (формат ячейки Экселя никак на это свойство не влияет, формат влияет только на отображение в самом Экселе). Это механизм маршаллинга, заложенный в платформе COM, от 1С он никак не зависит. Обычно значения ячеек Экселя приводятся к строке, но могут и к числу. На это может влиять то, что записано в этом столбце в нескольких верхних ячейках.

В данном случае, кстати, значение привелось именно к числу, что мы увидим дальше.

Функция СокрЛП всегда возращает строку, она приводит свой аргумент к строке (такое преобразование в языке 1С определено для любого типа данных). При этом число к строке приводится с учетом разделителя разрядов. В 1С для этого используется символ неразрывного пробела, который отбивает группы по 3 цифры, что ты и наблюдаешь.

Если нужно получить строковое представление числа, то в 1С есть функция формат(). Ее использовать логически правильнее, чем СтрЗаменить Символы.НПП.

Перед отображением чего-либо нестрокового пользователю в 1С обычно используют формат, в котором задают настройки и для числа и для даты и для булевых переменных.

К чему я эту простыню накатал? А х.з., наверное для того, чтобы показать, что в 1С ситуация с пробельными символами вполне нормальная. Примерно такая же, как во всей Вселенной.
   maker1992
 
14 - 09.02.18 - 13:28
(13) Понял. Спасибо.

Список тем форума
Рекламное место пустует  Рекламное место пустует
Миста — веселый ресурс со своими эксклюзивными тараканами Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует