Добрый день!
Загружаю Excel без использования Excel.
На сервере использую конструкцию
ТаблДок = Новый ТабличныйДокумент ;
ТаблДок.Прочитать(ВремяФайлСервер);
Формат ячеек в Excel установлен денежный, я не могу его поменять.
В самих ячейках Excel содержатся значения с округлением более двух знаков после запятой, но на экране пользователь видит только два знака.
В нижней части документа есть итоговая сумма. Она не совсем корректна, так как в ячейке с денежным форматом учитывает более двух знаков после запятой при суммировании. Но я не могу этого изменить.
При этом мне необходимо сверить эту итоговую сумму с суммой тех позиций, которые я загрузила.
Но в области табличного документа я не могу получить value, как при работе через com-объект Excel. Или я просто не нашла как. Там есть только текст, такой, как его видит пользователь в документе, всегда с двумя знаками после запятой.
Как мне правильно сверить итоговую сумму того, что я загрузила, и того, что в формуле документа?
Погрешность плохой вариант, т.к. в документе может быть большое число строк.
(3)
А табличный документ легко трансформируется в таблицу значений через построитель запроса.
пример загрузки и вывода в табличный документ и таблицу значений.
Рабочий код занимает несколько строк:
//Вывод в табличный документ
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.Прочитать(Файл, СпособЧтенияЗначенийТабличногоДокумента.Значение);
//вывод в таблицу значений
ПЗ = Новый ПостроительЗапроса;
ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличныйДокумент.Область());
ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
ПЗ.ЗаполнитьНастройки();
ПЗ.Выполнить();
ТаблицаЗначений = ПЗ.Результат.Выгрузить()
Показать
P.S. При выводе в таблицу значений через построитель запроса, названия колонок в источнике данных должны быть первой строкой, иначе построитель не сможет получить и преобразовать их в колонки таблицы значений и выдаст ошибку.
(6) По-моему, должны подгрузиться значения с реальным количеством знаков после запятой, после чего разработчик сам решает что с этим делать.
А на самом деле проблему эту не решить. Это явный косяк в изначальных данных. И в итоге итоговой суммой придется пожертвовать и пересчитать заново именно в денежном выражении. С этим надо смириться. Тогда и извращаться с загрузкой нет смысла - надо просто загружать именно денежные значения.
И исправлять шаблон экселя. Если исправить эксель невозможно (эт документ от контрагентов) - то бухгалтерия не должна принимать его к учету. Все просто.
Благодарю всех! Самый первый комментарий с конструкцией Прочитать(<ИмяФайла>, <СпособЧтенияЗначений>) помог мне прочитать Значение, а не только текст, где есть все знаки после запятой. Выгружать или нет в таблицу значений уже дело второе, на входе сложная таблица с объединенными ячейками, наименования колонок не в первой строке.
Про обсуждение с контрагентами формата документа мы подумаем.