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

1. Evgeniia_S 21.11.20 01:05 Сейчас в теме
Добрый день!
Загружаю Excel без использования Excel.
На сервере использую конструкцию
ТаблДок = Новый ТабличныйДокумент ;
ТаблДок.Прочитать(ВремяФайлСервер);

Формат ячеек в Excel установлен денежный, я не могу его поменять.
В самих ячейках Excel содержатся значения с округлением более двух знаков после запятой, но на экране пользователь видит только два знака.
В нижней части документа есть итоговая сумма. Она не совсем корректна, так как в ячейке с денежным форматом учитывает более двух знаков после запятой при суммировании. Но я не могу этого изменить.

При этом мне необходимо сверить эту итоговую сумму с суммой тех позиций, которые я загрузила.
Но в области табличного документа я не могу получить value, как при работе через com-объект Excel. Или я просто не нашла как. Там есть только текст, такой, как его видит пользователь в документе, всегда с двумя знаками после запятой.

Как мне правильно сверить итоговую сумму того, что я загрузила, и того, что в формуле документа?
Погрешность плохой вариант, т.к. в документе может быть большое число строк.
+
Найденные решения
7. spacecraft 21.11.20 09:18 Сейчас в теме
(1)
ТаблДок.Прочитать(ВремяФайлСервер);

Прочитать как значения пробовали?

Прочитать(<ИмяФайла>, <СпособЧтенияЗначений>)
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. spacecraft 21.11.20 09:18 Сейчас в теме
(1)
ТаблДок.Прочитать(ВремяФайлСервер);

Прочитать как значения пробовали?

Прочитать(<ИмяФайла>, <СпособЧтенияЗначений>)
+
2. FatPanzer 21.11.20 01:38 Сейчас в теме
Выгрузить табличный документ в таблицу значений...
+
3. RustIG 1408 21.11.20 06:41 Сейчас в теме
(2)что за совет?! как ТД выгрузить в ТЗ?
+
5. XAKEP 21.11.20 07:26 Сейчас в теме
(3)
А табличный документ легко трансформируется в таблицу значений через построитель запроса.

пример загрузки и вывода в табличный документ и таблицу значений.

Рабочий код занимает несколько строк:

//Вывод в табличный документ

   ТабличныйДокумент = Новый ТабличныйДокумент;

   ТабличныйДокумент.Прочитать(Файл, СпособЧтенияЗначенийТабличногоДокумента.Значение);

//вывод в таблицу значений

   ПЗ = Новый ПостроительЗапроса;

   ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличныйДокумент.Область());

   ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;

   ПЗ.ЗаполнитьНастройки();

   ПЗ.Выполнить();

   ТаблицаЗначений = ПЗ.Результат.Выгрузить()
Показать



P.S. При выводе в таблицу значений через построитель запроса, названия колонок в источнике данных должны быть первой строкой, иначе построитель не сможет получить и преобразовать их в колонки таблицы значений и выдаст ошибку.

https://expert.chistov.pro/public/714988/
+
6. RustIG 1408 21.11.20 08:53 Сейчас в теме
(5) спасибо конечно, но зачем такой коловорот способов*? и как вы решите первоначальную проблему с округлением?

*ТД всегда можно обойти построчно в цикле, и загрузить каждую строку в строку ТЗ.
При этом тип значений в полях будет, я думаю, строковый.
+
8. FatPanzer 21.11.20 10:26 Сейчас в теме
(6) По-моему, должны подгрузиться значения с реальным количеством знаков после запятой, после чего разработчик сам решает что с этим делать.
А на самом деле проблему эту не решить. Это явный косяк в изначальных данных. И в итоге итоговой суммой придется пожертвовать и пересчитать заново именно в денежном выражении. С этим надо смириться. Тогда и извращаться с загрузкой нет смысла - надо просто загружать именно денежные значения.

И исправлять шаблон экселя. Если исправить эксель невозможно (эт документ от контрагентов) - то бухгалтерия не должна принимать его к учету. Все просто.
+
9. RustIG 1408 21.11.20 10:48 Сейчас в теме
(8) хорошо, я согласен с вами, и теперь понятно зачем ТД переводить в ТЗ - чтобы самим итоги посчитать. Ок)
+
10. Evgeniia_S 22.11.20 00:50 Сейчас в теме
Благодарю всех! Самый первый комментарий с конструкцией Прочитать(<ИмяФайла>, <СпособЧтенияЗначений>) помог мне прочитать Значение, а не только текст, где есть все знаки после запятой. Выгружать или нет в таблицу значений уже дело второе, на входе сложная таблица с объединенными ячейками, наименования колонок не в первой строке.

Про обсуждение с контрагентами формата документа мы подумаем.
VIKINGmasterb2; +1
11. AnryMc 849 23.11.20 11:39 Сейчас в теме
В свойствах Excel'а есть замечательная "галочка" в старых версиях называлась "точность как на экране", как в новых не помню...
user797414; +1
Внимание! Тема сдана в архив

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