Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Чтение файла Excel средствами 1С

Чтение файла Excel средствами 1С
Я
   Franchiser
 
06.11.18 - 13:36
Читаю файл эксель средставми 1С так:
ТабличныйДокумент.Прочитать(ИмяФайлаСервер,СпособЧтенияЗначенийТабличногоДокумента.Текст);

При этом некоторые суммы, присутствующие в файле читаются неверно.
Например: 8733,00 читается как 8732,99 и это при том, что указано свойство СпособЧтенияЗначенийТабличногоДокумента.Текст.
Понимаю, что есть проблемы передачи значий через Ком, но как текст должно же читаться нормально.

Как сделать, так чтобы суммы читались корректно, не меняя файл?
Причем, если открыть файл эксель через 1С, аналогично суммы меняются на +-0,01 руб
 
 
   Dmitry1c
 
1 - 06.11.18 - 13:37
(0) возможно в экселе формат (округление) выставлен, а на самом деле значение числа 8732,99
   Franchiser
 
2 - 06.11.18 - 13:39
(1) да в экселе стоит формат "число, 2 знака". Если поставить 4 знака, то можно округлить. Но что сделать чтобы файл читать не меняя разраядность?
   Tatitutu
 
3 - 06.11.18 - 14:05
(2)  выбирай:

- перед загрузкой привести EXCEL к нужному виду
- есть Text , а есть Value  у ячейки
- добавить округления до нужного тебе разряда
- позвать специалиста
   Franchiser
 
4 - 06.11.18 - 14:25
"добавить округления до нужного тебе разряда" это что значит?
Стоит формат "число, 2 знака". Почему этого не достаточно?
Самое интересное создал новый файл, скопировал в него сумму из старого, сделал еще такие же суммы. Те суммы которые сам вписал нормально читаются, скопированные нет. Если зайти в ячейку и нажать enter то все суммы нормально читаются.
   Maniac
 
5 - 06.11.18 - 14:28
Сделай табл поле 1С и попобуй через буфер вставить. Будет тоже баг?
   Maniac
 
6 - 06.11.18 - 14:29
Ну если такие паранормальные явления (я не пользуюсь типовым чтением) то сходу бы предложил в 1С округлять методом.
   Maniac
 
7 - 06.11.18 - 14:29
Перечитываешь табл док и округляешь что нужно.
   Franchiser
 
8 - 06.11.18 - 14:32
(6) не понял, что округлять. Читаю как текст, там уже стоит число 8732,99;  если округлить да 2 знаков, то и останется 8732,99. А если предлагается убрать округление в Эксель, то что писать, ставить формат "Общий" ?
   Maniac
 
9 - 06.11.18 - 14:33
(8) кодом 1С округлить после того как ты считал
   Franchiser
 
10 - 06.11.18 - 14:33
(9) Как отличить 8732,99 от числа 8733 тогда? Мне же нужно округлить до сотых.
 
 Рекламное место пустует
   Franchiser
 
11 - 06.11.18 - 14:35
(5) через буфер нормально вставляет
   Maniac
 
12 - 06.11.18 - 14:35
до целых округляй да и все.
   Franchiser
 
13 - 06.11.18 - 14:37
(12) до целых не могу, в файле суммы с копейками, копейки нужны.
   Franchiser
 
14 - 06.11.18 - 16:09
Вообщем проверил, такое чтение работает адекватнее:
    
ТабличныйДокумент.Прочитать(ИмяФайлаСервер,СпособЧтенияЗначенийТабличногоДокумента.значение);

Тут уже можно округлять...
   Cyberhawk
 
15 - 06.11.18 - 20:48
Если xlsx, то читать нужно xml-файл внутри zip-архива
   Franchiser
 
16 - 06.11.18 - 22:04
(15) это зачем, ещё один способ чтения xlsx через xml?
   Franchiser
 
17 - 06.11.18 - 22:14
(15)
Файл sheets1 такого содержимого:

  <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"; xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">;
  <dimension ref="A2:B4" />
- <sheetViews>
- <sheetView tabSelected="1" workbookViewId="0">
  <selection activeCell="D3" sqref="D3" />
  </sheetView>
  </sheetViews>
  <sheetFormatPr defaultRowHeight="15" />
- <sheetData>
- <row r="2" spans="1:2">
- <c r="A2" t="s">
  <v>0</v>
  </c>
- <c r="B2" s="1">
  <v>8733</v>
  </c>
  </row>
- <row r="3" spans="1:2">
- <c r="B3" s="1">
  <v>8733</v>
  </c>
  </row>
- <row r="4" spans="1:2">
- <c r="B4" s="1">
  <v>8732.9999999999982</v>
  </c>
  </row>
  </sheetData>
  <pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3" />
  <pageSetup paperSize="9" orientation="portrait" r:id="rId1" />
  </worksheet>
   Maniac
 
18 - 06.11.18 - 22:16
Я не знаю дождусь ли когда либо, чтобы в 1С были методы что если книга, чтобы возвращался массив табличных документов (разных)

И чтобы 1С также могла сохранять в эксель книги чтобы можно было на разных листах пихать разные табл доки.
   Maniac
 
19 - 06.11.18 - 22:17
Походу никогда этого не будет
   Franchiser
 
20 - 06.11.18 - 22:19
Есть ли какой-то тэг в котором хранится отдельно текстовое представление от значения?
   Franchiser
 
21 - 06.11.18 - 22:21
(18) так сейчас так и есть, с какой то версии платформы каждый лист это отдельный табличный документ, раньше все листы считывались на 1 лист с разными областями
   Fram
 
22 - 06.11.18 - 22:21
(19) дык сохранение уже реализовано вроде?
   Franchiser
 
23 - 06.11.18 - 22:25
Сохранение есть, с удалением формул
   Maniac
 
24 - 06.11.18 - 22:26
(22) многолистовое? да ну? когда появилось?
Вы уверены?
   Maniac
 
25 - 06.11.18 - 22:26
те я могу взять кучу табл доков и впихнуть в один эксель и там они будут в разных листах книги?
   Maniac
 
26 - 06.11.18 - 22:27
и все это встроенной 1С?
   Maniac
 
27 - 06.11.18 - 22:34
Нету ни записи ни чтения.
   Franchiser
 
28 - 06.11.18 - 22:41
(27) можешь взять много листовой файл и получить на выходе много табдоков
   Franchiser
 
29 - 06.11.18 - 22:43
   Franchiser
 
30 - 06.11.18 - 22:47
На платформе 8.3.10 появилась возможность считывания данных с отдельных листов книги EXCEL.
Данная возможность доступна как в интерактивном режиме, так и из встроенного языка.
Реализована поддержка вставки из буфера обмена областей, скопированных из Microsoft Excel и OpenOffice Calc.
Реализация импорта из EXCEL на встроенном языке стала возможна в результате нововведений в функционал объекта "ТабличныйДокумент":
Для метода "Прочитать" объекта "ТабличныйДокумент" реализован параметр "СпособЧтенияЗначений" (Новое системное перечисление "СпособЧтенияЗначенийТабличногоДокумента").
   Franchiser
 
31 - 06.11.18 - 22:51
(24) ну что, глобальное обновление мегапрайса будет?)
   Maniac
 
32 - 06.11.18 - 23:02
завтра прочитаю. заранее спасибо если это так. конечно будет. но с замерами. и придется слишком много тестить разного.
   Cyberhawk
 
33 - 07.11.18 - 13:14
(16) Универсально, кроссплатформенно, стильно, модно
 
 
   Franchiser
 
34 - 07.11.18 - 13:18
(33) почему при ком-подключении к EXCEl есть свойство value и text, а в приведенном файле sheets1 нет поля text, только value ?
   Cyberhawk
 
35 - 07.11.18 - 13:37
(34) Пришли файлик в почту и напиши, о какой ячейке речь
   Вафель
 
36 - 07.11.18 - 13:39
(34) может текст рассчитывает сам ексель? в зависимости от языковых настроек системы?
   Franchiser
 
37 - 07.11.18 - 14:01
(35) отправил
   Franchiser
 
38 - 07.11.18 - 14:03
(36) я так понимаю в некоторых случаях текст выносится в отдельный файл, но не всегда
   Cyberhawk
 
39 - 07.11.18 - 14:21
(37) Ответ: потому что таков формат хранения
   Мыш
 
40 - 07.11.18 - 14:28
Причина: Программа Microsoft Excel была разработана на основе спецификации IEEE 754 относительно хранения и вычисления чисел с плавающей точкой.
https://support.microsoft.com/ru-ru/help/78113/floating-point-arithmetic-may-give-inaccurate-results-in-excel
   Cyberhawk
 
41 - 07.11.18 - 14:36
Пересохраненине файла с флагом Set precision as displayed спасет тебя
   Cyberhawk
 
42 - 07.11.18 - 14:37
А, ну вон выше Мыш почти то же самое написал
   Franchiser
 
43 - 07.11.18 - 14:42
(41) Помогло "Задать точность как на экране" в параметрах
   Cyberhawk
 
44 - 07.11.18 - 14:45
Хз зачем ты мне это пишешь
   Fram
 
45 - 08.11.18 - 01:47


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует