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

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

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

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

Тут уже можно округлять...
15 Cyberhawk
 
06.11.18
20:48
Если xlsx, то читать нужно xml-файл внутри zip-архива
16 Franchiser
 
naïve
06.11.18
22:04
(15) это зачем, ещё один способ чтения xlsx через xml?
17 Franchiser
 
naïve
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>
18 Maniac
 
06.11.18
22:16
Я не знаю дождусь ли когда либо, чтобы в 1С были методы что если книга, чтобы возвращался массив табличных документов (разных)

И чтобы 1С также могла сохранять в эксель книги чтобы можно было на разных листах пихать разные табл доки.
19 Maniac
 
06.11.18
22:17
Походу никогда этого не будет
20 Franchiser
 
naïve
06.11.18
22:19
Есть ли какой-то тэг в котором хранится отдельно текстовое представление от значения?
21 Franchiser
 
naïve
06.11.18
22:21
(18) так сейчас так и есть, с какой то версии платформы каждый лист это отдельный табличный документ, раньше все листы считывались на 1 лист с разными областями
22 Fram
 
06.11.18
22:21
(19) дык сохранение уже реализовано вроде?
23 Franchiser
 
naïve
06.11.18
22:25
Сохранение есть, с удалением формул
24 Maniac
 
06.11.18
22:26
(22) многолистовое? да ну? когда появилось?
Вы уверены?
25 Maniac
 
06.11.18
22:26
те я могу взять кучу табл доков и впихнуть в один эксель и там они будут в разных листах книги?
26 Maniac
 
06.11.18
22:27
и все это встроенной 1С?
27 Maniac
 
06.11.18
22:34
Нету ни записи ни чтения.
28 Franchiser
 
naïve
06.11.18
22:41
(27) можешь взять много листовой файл и получить на выходе много табдоков
29 Franchiser
 
naïve
06.11.18
22:43
Начиная с 8.3.10
http://catalog.mista.ru/public/341855/
30 Franchiser
 
naïve
06.11.18
22:47
На платформе 8.3.10 появилась возможность считывания данных с отдельных листов книги EXCEL.
Данная возможность доступна как в интерактивном режиме, так и из встроенного языка.
Реализована поддержка вставки из буфера обмена областей, скопированных из Microsoft Excel и OpenOffice Calc.
Реализация импорта из EXCEL на встроенном языке стала возможна в результате нововведений в функционал объекта "ТабличныйДокумент":
Для метода "Прочитать" объекта "ТабличныйДокумент" реализован параметр "СпособЧтенияЗначений" (Новое системное перечисление "СпособЧтенияЗначенийТабличногоДокумента").
31 Franchiser
 
naïve
06.11.18
22:51
(24) ну что, глобальное обновление мегапрайса будет?)
32 Maniac
 
06.11.18
23:02
завтра прочитаю. заранее спасибо если это так. конечно будет. но с замерами. и придется слишком много тестить разного.
33 Cyberhawk
 
07.11.18
13:14
(16) Универсально, кроссплатформенно, стильно, модно
34 Franchiser
 
naïve
07.11.18
13:18
(33) почему при ком-подключении к EXCEl есть свойство value и text, а в приведенном файле sheets1 нет поля text, только value ?
35 Cyberhawk
 
07.11.18
13:37
(34) Пришли файлик в почту и напиши, о какой ячейке речь
36 Вафель
 
07.11.18
13:39
(34) может текст рассчитывает сам ексель? в зависимости от языковых настроек системы?
37 Franchiser
 
naïve
07.11.18
14:01
(35) отправил
38 Franchiser
 
naïve
07.11.18
14:03
(36) я так понимаю в некоторых случаях текст выносится в отдельный файл, но не всегда
39 Cyberhawk
 
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
41 Cyberhawk
 
07.11.18
14:36
Пересохраненине файла с флагом Set precision as displayed спасет тебя
42 Cyberhawk
 
07.11.18
14:37
А, ну вон выше Мыш почти то же самое написал
43 Franchiser
 
naïve
07.11.18
14:42
(41) Помогло "Задать точность как на экране" в параметрах
44 Cyberhawk
 
07.11.18
14:45
Хз зачем ты мне это пишешь
45 Fram
 
08.11.18
01:47