|
Сложная ситуация с пробельными символами в 1С. | ☑ | ||
---|---|---|---|---|
0
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
Базис
naïve
09.02.18
✎
13:08
|
НБСП или Симв(160) заменяй на "".
|
|||
3
Lexey_
09.02.18
✎
13:10
|
(0) зачем ХЕКС редактором, есть же КодСимвола()?
|
|||
4
Rema Dan
09.02.18
✎
13:10
|
(0) СокрЛП(Формат(ОкноЕксел.Cells(Й, 2).Value, "ЧН=; ЧГ="));
|
|||
5
Ненавижу 1С
гуру
09.02.18
✎
13:10
|
Формат(ОкноЕксел.Cells(Й, 2).Value, "ЧГ=0")
|
|||
6
бомболюк
09.02.18
✎
13:10
|
перенос строки - это 0x0a
|
|||
7
maker1992
09.02.18
✎
13:12
|
Сработало:
СтрЗаменить(СокрЛП(ОкноЕксел.Cells(Й, 2).Value), Символы.НПП, "") |
|||
8
Fram
09.02.18
✎
13:13
|
(4) СокрЛП это контрольный в голову?
|
|||
9
Ненавижу 1С
гуру
09.02.18
✎
13:14
|
(0) особенно порадовала функция СокрЛП, примененная к числу
|
|||
10
Rema Dan
09.02.18
✎
13:17
|
(8) Вполне возможно, что этот же код применяется не только для строчек с числами, но и обычных строчек. Если убрать СокрЛП, то изменится разбор таких строчек.
|
|||
11
maker1992
09.02.18
✎
13:17
|
(8) Дак она сама приводит число к строке
|
|||
12
mehfk
09.02.18
✎
13:18
|
(9) Если трудностей нет, их нужно создать, а потом мужественно преодолеть.
|
|||
13
Скиурус
09.02.18
✎
13:26
|
ОкноЕксел.Cells(Й, 2).Value может приводиться к разным типам (формат ячейки Экселя никак на это свойство не влияет, формат влияет только на отображение в самом Экселе). Это механизм маршаллинга, заложенный в платформе COM, от 1С он никак не зависит. Обычно значения ячеек Экселя приводятся к строке, но могут и к числу. На это может влиять то, что записано в этом столбце в нескольких верхних ячейках.
В данном случае, кстати, значение привелось именно к числу, что мы увидим дальше. Функция СокрЛП всегда возращает строку, она приводит свой аргумент к строке (такое преобразование в языке 1С определено для любого типа данных). При этом число к строке приводится с учетом разделителя разрядов. В 1С для этого используется символ неразрывного пробела, который отбивает группы по 3 цифры, что ты и наблюдаешь. Если нужно получить строковое представление числа, то в 1С есть функция формат(). Ее использовать логически правильнее, чем СтрЗаменить Символы.НПП. Перед отображением чего-либо нестрокового пользователю в 1С обычно используют формат, в котором задают настройки и для числа и для даты и для булевых переменных. К чему я эту простыню накатал? А х.з., наверное для того, чтобы показать, что в 1С ситуация с пробельными символами вполне нормальная. Примерно такая же, как во всей Вселенной. |
|||
14
maker1992
09.02.18
✎
13:28
|
(13) Понял. Спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |