| Регистрация Правила Главная форума Поиск |
| 0
- 08.11.2016 - 13:47
|
Некорректное преобразование строки в число при импорте из Excel Ячейка = ВходExcel.Cells(НомерСтр, 5); ЗначЯч= "" + СокрЛП(Ячейка.Text);//длина Длина=Число(ЗначЯч); Сообщить("Длина: "+ ЗначЯч + "/" + Длина); ЗначЯч - число в текстовом формате, в 1С передается Длина - переменная, в которую передается преобразованное явным образом из текстового формата число, иногда оказывается равным 0 (Иногда - то есть обычно все работает корректно. Но иногда - описываемый случай. Не понятно) | | |
| 1
- 08.11.2016 - 14:04
| пример Сообщить("Длина: "+ ЗначЯч + "/" + Длина) когда Длина = 0 в студию... | | |
| 2
- 08.11.2016 - 14:05
| http://my-files.ru/fsxerw xls-файл с описанной ошибкой. Колонка Длина | | |
| 3
- 08.11.2016 - 14:06
| Цитата:
| | |
| 4
- 08.11.2016 - 14:07
| Цитата:
Разве не чудеса? | | |
| 5
- 08.11.2016 - 14:09
| В числе есть символ(160)? | | |
| 6
- 08.11.2016 - 14:11
| поставь точку останова в Длина=Число(ЗначЯч); и внимательно посмотри на ЗначЯч. м.б. оно выглядит как "1 200" | | |
| 7
- 08.11.2016 - 14:15
|
(2,3) копипаст из окна сообщений сюда... | | |
| 8
- 08.11.2016 - 14:18
| Длина: 25/25 Длина: 608 /608 Длина: 540/0 Длина: 960/0 Первые две строчки - это я вписал значения вручную. Они, как я и рассказывал сразу, преобразуются корректно | | |
| 9
- 08.11.2016 - 14:24
| Длина: 960/0 - между ":" и "960" - Два пробела | | |
| 10
- 08.11.2016 - 14:28
| Вот, что я сделал. Обработка с текстом и результатом, в котором хотелось бы разобраться. Откройте в обработке xls файл, ссылку на котрый я дал выше, и убедитесь в справедливости того, про что я рассказал http://my-files.ru/7iq8la | | |
| 11
- 08.11.2016 - 14:31
| Откуда там могут взяться пробелы, когда используется СокрЛП? Один пробел. Потому что - Сообщить("Длина: "+ ЗначЯч + "/" + Длина); | | |
| 12
- 08.11.2016 - 14:39
|
СокрЛП(Ячейка.Text) = " 719" Число(СтрЗаменить(ЗначЯч,Симв(160),"")) = 719 ЗначЯч = " 719" | | |
| 13
- 08.11.2016 - 14:40
| СокрЛП(Ячейка.Text) = " 719" Что видно между первой скобкой и цифрой 7???? Пробелы бывают разные. Делай как в 12. Отредактировано GariPortman; 08.11.2016 в 14:42. Причина: .... | | |
| 14
- 08.11.2016 - 14:43
| (0) Открой для себя .value | | |
| 15
- 08.11.2016 - 14:44
|
(11) оттуда... формируйте xls прально и все будет корректно там в xls везде идет неразрывный пробел перед числами (код 160) | | |
| 16
- 08.11.2016 - 14:46
| Value первоначально и было. Посоветовали попробовать Text. С Value та же ошибка | | |
| 17
- 08.11.2016 - 14:48
| Цитата:
Что значит формируйте ПРАВИЛЬНО? И что за "неразрывный пробел"? Разве СокрЛП() не должен убирать всякого рода пробелы? | | |
| 18
- 08.11.2016 - 14:51
| https://yandex.ru/yandsearch?&clid=2...D0%BB%22&lr=39 Уже ж на пальцах показали. | | |
| 19
- 08.11.2016 - 14:53
|
(17) "Разве СокрЛП() не должен убирать всякого рода пробелы?" Нет для затравочки: ... стр = "_"; Для к=1 По СтрДлина(ЗначЯч) Цикл стр = стр + КодСимв(Сред(ЗначЯч,к,1)) + "_"; КонецЦикла; Сообщить("Длина: "+ ЗначЯч + "/" + Длина+" коды "+стр); дальше в жкк и гугель... | | |
| 20
- 08.11.2016 - 15:02
| Цитата:
Воспользовался советом Число(СтрЗаменить(ЗначЯч,Симв(160),"")) А почему и при использовании в Excel формата ячеек Числовой, то же этот самый "неразрывный пробел" себя проявлял? Пробел - это разве не аттрибут тектсового представления? | | |
| 21
- 08.11.2016 - 15:03
| Сокрлп например прекрасно убирает разделитель строк по концам строки | | |
| 22
- 08.11.2016 - 15:11
|
господя... желтая страна этих самых валюе + локализация + разделитель тысяч + точность на экране... | | |
| 23
- 08.11.2016 - 15:12
| не ругайтесь, пишите понятно. value - приводило к той же самой ошибке, что и text | | |
| 24
- 08.11.2016 - 15:14
| О чем вы? СокрЛП я использовал и этого оказывалось недостаточно | | |
| 25
- 08.11.2016 - 15:21
|
22-Helen1986 > Разделитель триад, прошу прощение за занудство ;) А про "локализацию" -вовремя. Тут (сабж) в чем непонимание: в механизме обмена через СОМ-соединение. И в том, что это соединение вовсе не обязано знать о тонкостях внутренних форматов разных утилит. И о цвете страны тоже ;) | | |
| 26
- 08.11.2016 - 15:23
| (25) совершенно верно, разделитель не тысяч, а триад | | |
| 27
- 08.11.2016 - 15:27
| 23-Skeave > Если какой-то болван загнал в ячейку заместо числа текст, визуально не отличимый от отображения числа, то при чем здесь "1С"? Та же самая беда приключится, если будешь читать не 1С, а, к примеру, WSH. | | |
| 28
- 08.11.2016 - 15:31
|
(20) формат ячеек эхеля это аля функция формат() одноэса - представление значения... если образно) | | |
| 29
- 08.11.2016 - 15:32
| СокрЛП() - убирает пробелы спереди и сзади значения. Согласно документации 1С. Для того эта функция и предназначена. Чтоб использовать ее в случаях "визуально не отличимых..". То, что она убирает не все пробелы, а только их часть - конечно, это ошибка 1С. | | |
| 30
- 08.11.2016 - 15:38
|
29-Skeave > Во-первых, СокрЛП убирает только первые и оконечные пробелы. Во-вторых, не трогает пробелы внутри текста. И наконец, разделитель триад - не пробел. | | |
| 31
- 08.11.2016 - 15:40
| Так ведь речь и идет именно о первых и последних пробелах. Разделитель триад - т.н. "неразрывный пробел" - это все-таки пробел, как следует из его названия. И здесь - никаких триад никто не делил. | | |
| 32
- 08.11.2016 - 15:42
| Кстати. Как думаете, как пользователи вообще умудрились использовать эти самые "неразрывные.."? "Shift+пробел" нужно специально нажать, чтоб получилась эта фигня. Вряд ли в обсуждаемом случае можно вести речь о сознательной злонамеренности. Непонятно. Как эти пробелы могли получиться "случайно"? | | |
| 33
- 08.11.2016 - 15:45
|
(32) например, копипастом с сайта... там этисамые   часто обитают)) | | |
| 34
- 08.11.2016 - 16:05
|
32-Skeave > Нет, не специально:в Excel отображение настраивается. По дефолту - как в установках Windows (потому и не рекомендуется винигред из по разному локализованных ПО). И потому Excel не рекомендован для обмена. Нигде в типовых решениях он не используется. Но разрешен для особо упёртых: легче дать, чем отговорить. P.S. "пробел" и "неразрывный пробел" - это разные символы. Так же "молоко" от коровы, и "молоко" от негашеной извести, хоть и выглядит одинаково, все-таки отличаются по вкусу. Предлагаю поверить не проверяя. | | |
| 35
- 08.11.2016 - 16:23
| Цитата:
| | |
| 36
- 08.11.2016 - 16:25
| Цитата:
| | |
| 37
- 08.11.2016 - 16:34
| называйте не пробелом, а просто невидимым символом ) что тут спорить, такие символы встречаются и надо просто это принять как снег, дождь, солнце | | |
| 38
- 08.11.2016 - 17:06
| Цитата:
И этот твой дурацкий неразрывный пробел тоже. Можно "очищать" текст поиском первого символа-цифры, Пока СтрДлина(ЗначЯч)>0 Цикл Если Найти(Лев(ЗначЯч,1),"0123456789")=0 Тогда ЗначЯч=Сред(ЗначЯч,2); Иначе Длина=0+ЗначЯч; Прервать; КонецЕсли; КонецЦикла; или удалением конкретного символа ЗначЯч=СтрЗаменить(ЗначЯч,Симв(160),""); , но лучше - найти паразита, который в настройках Excel установил этот символ в качестве разделителя триад и прибить ... | | |
| 39
- 08.11.2016 - 17:27
|
Да о чем разговор... Аффтар еще с датами не сталкивался ;) Все, кто связывался с "обменом 1С с Excel-ем" отлично знают о ненадежности этой связки. Усугубленной тем, что ввод в Excel осуществляется ручками. Без каких-либо формальных соглашений. Где вместо нулевого значения вполне можно словить знак <-> ("прочерк" по мнению барышни). Короче говоря, "обмен 1С с Excel" неизбежно обрастает кучей вспомогательных функций типа ОпределитьТипЗначения(выражение), ПривестиИзПредставленияКНормальномуВиду() и т.п. | |
Интернет-форум Краснодарского края и Краснодара |