Получаем с екселя число разделением как убрать разделение на группы

1. user734952 15.03.24 17:29 Сейчас в теме
Добрый день! Получаем с екселя число разделением как убрать разделение на группы
Формат(ТекущееЗначение4,"ЧГ=") и Формат(ТекущееЗначение4,"ЧГ=0") не помогло
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 76 15.03.24 18:07 Сейчас в теме
(1)ТекущееЗначение при этом строка или число?
3. user734952 15.03.24 18:20 Сейчас в теме
(2) Число выглядит так в отчете екселевском 37 146,00 и когда 1с переменной присваивается это число то 1С переменная почему то пусто. Можно конечно попросить клиента в екселе убрать разряды, и тогда все работает без преобразование в формат, но это лишнее движение для клиента.
НоваяСтрока.Комиссия = ТекущееЗначение4; так в 1С и вот результат в прикрепленном скане, пусто выводит
Прикрепленные файлы:
4. nomad_irk 76 15.03.24 18:28 Сейчас в теме
(3)Вы эксель каким образом читаете?
Исходя из ваших слов, делаю вывод, что как текст.
5. user734952 15.03.24 18:30 Сейчас в теме
(4) Попытка
COMОбъект = Новый COMОбъект("Excel.Application");
Workbook = COMОбъект.Workbooks.Open(ИмяФайла);
ExcelЛист = COMОбъект.Sheets(1);
ActiveCell = COMОбъект.ActiveCell.SpecialCells(11);
RowCount = ActiveCell.Row;
ColumnCount = ActiveCell.Column;

//Получим количество строк и колонок.
//В разных версиях Excel получаются по-разному, поэтому сначала определим версию Excel
Версия = Лев(COMОбъект.Version,Найти(COMОбъект.Version,".")-1);
Если Версия = "8" тогда
ФайлСтрок = COMОбъект.Cells.CurrentRegion.Rows.Count;
ФайлКолонок = Макс(COMОбъект.Cells.CurrentRegion.Columns.Count, 13);
Иначе
ФайлСтрок = COMОбъект.Cells(1,1).SpecialCells(11).Row;
ФайлКолонок = COMОбъект.Cells(1,1).SpecialCells(11).Column;
Конецесли;

Для НС = 6 по ФайлСтрок Цикл // НС указываем с какой строки начинать обработку

Состояние("Файл "+Строка(ИмяФайла)+": Обрабатывается первый лист "+Строка(Формат(?(ФайлСтрок=0,0,((100*НС)/ФайлСтрок)),"ЧЦ=3; ЧДЦ=0"))+" %");

ОбработкаПрерыванияПользователя(); //указав данный оператор, цикл можно прервать в любой момент нажатие ctrl+break
ТекущееЗначение1 = COMОбъект.Cells(НС, 1).Text;
ТекущееЗначение2 = COMОбъект.Cells(НС, 3).Text;
ТекущееЗначение3 = COMОбъект.Cells(НС, 9).Text;
ТекущееЗначение4 = COMОбъект.Cells(НС, 11).Text;
ТекущееЗначение5 = COMОбъект.Cells(НС, 13).Text;
ЗаполнитьТабличнуюЧастьТовары(ТекущееЗначение1,ТекущееЗначение2,ТекущееЗначение3,ТекущееЗначение4,ТекущееЗначение5);
КонецЦикла;

WorkBook.Close();
Исключение
COMОбъект.Quit();
COMОбъект = 0;
СообщениеОбОшибке = НСтр("ru = 'Не удалось прочитать данные из файла. Подробности: '")
+ КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
ВызватьИсключение СообщениеОбОшибке;

КонецПопытки;
8. nomad_irk 76 15.03.24 18:32 Сейчас в теме
(5)
......
ТекущееЗначение1 = COMОбъект.Cells(НС, 1).Text
.....

Святая корова.....

что мешает сделать?
ТекущееЗначение1 = COMОбъект.Cells(НС, 1).Value


Более того, можно использовать Range, вместо Cells и читать сразу ВСЕ нужные значения, но это уже домашнее здание
user734952; +1 Ответить
9. starjevschik 15.03.24 18:32 Сейчас в теме
(5) раз это через СОМ, то можно получать не текст, а значение,

ТекущееЗначение4 = COMОбъект.Cells(НС, 11).Value;
user734952; +1 Ответить
6. starjevschik 15.03.24 18:31 Сейчас в теме
Замени неразрывные пробелы на ""... получаешь как строку, пробелы убираешь, преобразуешь в число.
Можно еще в Екселе формат ячейки поменять перед чтением значения или всего файла. Но это как-то чрезмерно изысканно, на мой взгляд.
7. user734952 15.03.24 18:32 Сейчас в теме
10. user734952 15.03.24 18:38 Сейчас в теме
Все сработало, спасибо!!!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот