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


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

Чтение CSV (Платформа 8.3)

Чтение CSV (Платформа 8.3)
Я
   V67070
 
29.05.18 - 18:05
Добрый день.
Подскажите, как ускорить чтение текстового файла в клиент-серверном режиме.
Если БД файловая, то чтение относительно быстро.
Если Клиент-Сервер то утомительно долго.

&НаКлиенте
Процедура РазобратьCSV()
    Текст = Новый ЧтениеТекста(ФайлCSV, КодировкаТекста.ANSI);
    Для СтрокаCSV = 1 По КоличествоСтрок Цикл
        ...
        Строка = Текст.ПрочитатьСтроку();
        ...
        КонецЦикла
КонецПроцедуры.

Вот это работает утомительно долго.
Можно в не файловом режиме, сделать побыстрее?

С Уважением.
 
 
   Вафель
 
1 - 29.05.18 - 18:05
оледб
   RomanYS
 
2 - 29.05.18 - 18:10
(0) Расшифруйте, пожалуйста, "утомительно долго". Размер файла, число строк, время чтения
   V67070
 
3 - 29.05.18 - 18:13
5мб, 29 тыс строк, больше часа.
   Вафель
 
4 - 29.05.18 - 18:14
случайно не по сети файл читаешь?
   RomanYS
 
5 - 29.05.18 - 18:14
(3) Нереально. Замеры 1С подтверждают, что тормозит именно эта строка?
   Вафель
 
6 - 29.05.18 - 18:14
может дело не в чтении, а в создании элементов?
как рзбиваешь строку на поля?
   craxx
 
7 - 29.05.18 - 18:14
(4) подозреваю что каждый раз дергает сервер
   RomanYS
 
8 - 29.05.18 - 18:15
(4) даже по модему быстрее будет)
   RomanYS
 
9 - 29.05.18 - 18:15
(7) вот это более вероятно
   RomanYS
 
10 - 29.05.18 - 18:17
(9) перечитал (0), там 100% (7). Показывай весь код
 
 Рекламное место пустует
   V67070
 
11 - 29.05.18 - 18:22
(6) обычная процедура из типовых.
разложить..вмассив

замеры сделаю, поглядеть на чем тормозит.

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

из екселя за пару минут читает, но ексель ставить не хотят, приходится с текстом возиться.
   craxx
 
12 - 29.05.18 - 18:23
(11) передай файл на сервер и там обрабатывай
либо в массив структур, который потом на сервер и в тз
   RomanYS
 
13 - 29.05.18 - 18:24
(11) у тебя в цикле вызов сервера и это ппц.
Или избавляйся от него, или переноси весь цикл сервер (возможно вместе с файлом)
   V67070
 
14 - 29.05.18 - 18:29
так и сделаю.
   Franchiser
 
15 - 29.05.18 - 18:29
(11) тормозит не на чтении, а на чем то другом, например, типизации. Кешируй ссылки.
   craxx
 
16 - 29.05.18 - 18:33
(15) тормозит на вызове сервера
   Franchiser
 
17 - 29.05.18 - 18:38
(16) понятно, какого .... ты читаешь на клиенте... Передавай на сервер файл и далее из временного читай
   V67070
 
18 - 30.05.18 - 06:52
Передал на сервер, всё получилось, быстро читает/обрабатывает.

еще вопросик можно?

Как сделать на сервере какую нибудь индикацию выполнения загрузки файла/обработки строк.

Если гонять оповещения с клиента/на сервер о процессе обработки,опять замедление будет, есть какие нибудь методы индикацию на сервере сделать?

С Уважением.
   Cool_Profi
 
19 - 30.05.18 - 06:56
(18) Кому ты на сервере показывать состояние собираешься?
   MiralievRustam
 
20 - 30.05.18 - 07:37
Процедура РазобратьCSV()
    Текст = Новый ЧтениеТекста(ФайлCSV, КодировкаТекста.ANSI);
СтрокаCSV = "";
    Пока СтрокаCSV <> Неопределено Цикл
        ...
        Строка = Текст.ПрочитатьСтроку();
        ...
        КонецЦикла
Думаю так лучше 

Нафига читать сперва КолВо строк а потом
Еще и прочитать строку? когда можно обойтись одним
   MiralievRustam
 
21 - 30.05.18 - 08:06
+(20) ну а вообще более подробнее напишите размер файла, где лежит файл
   Сияющий в темноте
 
22 - 30.05.18 - 09:30
Пока серверный код работает,клиент ждет от него ответа,чтобы отпустить клиента,чтение можно засунуть в фоновое задание,тогда периодически можно сохранять статус в базу,а клиентом заходить и брать этот статус,но тогда,покп клиент за статусом не сходит,он не узнает,что файл прочитали.
   бомболюк
 
23 - 30.05.18 - 09:36
(1) +1
способы типа (20) не годятся, так как может присутствовать закавыченная строка с разделителем строк внутри.
   MiralievRustam
 
24 - 30.05.18 - 20:58
(23) так поэтому я и спрашиваю что в файле каков размер файла
   Fram
 
25 - 30.05.18 - 21:12
(24) тему поперек что ли читаешь. первое предложение в (18) прочитай
   MiralievRustam
 
26 - 30.05.18 - 21:31
(25) )))


Список тем форума
Рекламное место пустует  Рекламное место пустует
Закон Брукера: Даже маленькая практика стоит большой теории.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует