|
Чтение CSV (Платформа 8.3) | ☑ | ||
---|---|---|---|---|
0
V67070
29.05.18
✎
18:05
|
Добрый день.
Подскажите, как ускорить чтение текстового файла в клиент-серверном режиме. Если БД файловая, то чтение относительно быстро. Если Клиент-Сервер то утомительно долго. &НаКлиенте Процедура РазобратьCSV() Текст = Новый ЧтениеТекста(ФайлCSV, КодировкаТекста.ANSI); Для СтрокаCSV = 1 По КоличествоСтрок Цикл ... Строка = Текст.ПрочитатьСтроку(); ... КонецЦикла КонецПроцедуры. Вот это работает утомительно долго. Можно в не файловом режиме, сделать побыстрее? С Уважением. |
|||
1
Вафель
29.05.18
✎
18:05
|
оледб
|
|||
2
RomanYS
29.05.18
✎
18:10
|
(0) Расшифруйте, пожалуйста, "утомительно долго". Размер файла, число строк, время чтения
|
|||
3
V67070
29.05.18
✎
18:13
|
5мб, 29 тыс строк, больше часа.
|
|||
4
Вафель
29.05.18
✎
18:14
|
случайно не по сети файл читаешь?
|
|||
5
RomanYS
29.05.18
✎
18:14
|
(3) Нереально. Замеры 1С подтверждают, что тормозит именно эта строка?
|
|||
6
Вафель
29.05.18
✎
18:14
|
может дело не в чтении, а в создании элементов?
как рзбиваешь строку на поля? |
|||
7
craxx
29.05.18
✎
18:14
|
(4) подозреваю что каждый раз дергает сервер
|
|||
8
RomanYS
29.05.18
✎
18:15
|
(4) даже по модему быстрее будет)
|
|||
9
RomanYS
29.05.18
✎
18:15
|
(7) вот это более вероятно
|
|||
10
RomanYS
29.05.18
✎
18:17
|
(9) перечитал (0), там 100% (7). Показывай весь код
|
|||
11
V67070
29.05.18
✎
18:22
|
(6) обычная процедура из типовых.
разложить..вмассив замеры сделаю, поглядеть на чем тормозит. код простейший,преобразовать строки к нужному типу и запись в таблицу значений для дальнейшей обработки. из екселя за пару минут читает, но ексель ставить не хотят, приходится с текстом возиться. |
|||
12
craxx
29.05.18
✎
18:23
|
(11) передай файл на сервер и там обрабатывай
либо в массив структур, который потом на сервер и в тз |
|||
13
RomanYS
29.05.18
✎
18:24
|
(11) у тебя в цикле вызов сервера и это ппц.
Или избавляйся от него, или переноси весь цикл сервер (возможно вместе с файлом) |
|||
14
V67070
29.05.18
✎
18:29
|
так и сделаю.
|
|||
15
Franchiser
гуру
29.05.18
✎
18:29
|
(11) тормозит не на чтении, а на чем то другом, например, типизации. Кешируй ссылки.
|
|||
16
craxx
29.05.18
✎
18:33
|
(15) тормозит на вызове сервера
|
|||
17
Franchiser
гуру
29.05.18
✎
18:38
|
(16) понятно, какого .... ты читаешь на клиенте... Передавай на сервер файл и далее из временного читай
|
|||
18
V67070
30.05.18
✎
06:52
|
Передал на сервер, всё получилось, быстро читает/обрабатывает.
еще вопросик можно? Как сделать на сервере какую нибудь индикацию выполнения загрузки файла/обработки строк. Если гонять оповещения с клиента/на сервер о процессе обработки,опять замедление будет, есть какие нибудь методы индикацию на сервере сделать? С Уважением. |
|||
19
Cool_Profi
30.05.18
✎
06:56
|
(18) Кому ты на сервере показывать состояние собираешься?
|
|||
20
MiralievRustam
30.05.18
✎
07:37
|
Процедура РазобратьCSV()
Текст = Новый ЧтениеТекста(ФайлCSV, КодировкаТекста.ANSI); СтрокаCSV = ""; Пока СтрокаCSV <> Неопределено Цикл ... Строка = Текст.ПрочитатьСтроку(); ... КонецЦикла Думаю так лучше Нафига читать сперва КолВо строк а потом Еще и прочитать строку? когда можно обойтись одним |
|||
21
MiralievRustam
30.05.18
✎
08:06
|
+(20) ну а вообще более подробнее напишите размер файла, где лежит файл
|
|||
22
Сияющий в темноте
30.05.18
✎
09:30
|
Пока серверный код работает,клиент ждет от него ответа,чтобы отпустить клиента,чтение можно засунуть в фоновое задание,тогда периодически можно сохранять статус в базу,а клиентом заходить и брать этот статус,но тогда,покп клиент за статусом не сходит,он не узнает,что файл прочитали.
|
|||
23
бомболюк
30.05.18
✎
09:36
|
(1) +1
способы типа (20) не годятся, так как может присутствовать закавыченная строка с разделителем строк внутри. |
|||
24
MiralievRustam
30.05.18
✎
20:58
|
(23) так поэтому я и спрашиваю что в файле каков размер файла
|
|||
25
Fram
30.05.18
✎
21:12
|
(24) тему поперек что ли читаешь. первое предложение в (18) прочитай
|
|||
26
MiralievRustam
30.05.18
✎
21:31
|
(25) )))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |