![]() |
|
DBF грузится очень долго. | ☑ | ||
---|---|---|---|---|
0
Lex_Liven
01.11.12
✎
11:00
|
Есть DBF файл с некоторой информацией. Нужно загрузить его в 1С (Тонкий клиент). В файле что-то около 3000 строк и 20 полей. Есть как текстовые, так и числовые. Вес - около одного мегабайта.
На слабой машине этот файл может грузиться до 40 минут. Как можно это ускорить? Загрузка идет в реквизит формы типа "ТаблицаЗначений". Другие форматы хранения данных в файле тоже рассматриваются. |
|||
1
Lex_Liven
01.11.12
✎
11:01
|
+(0) Кстати, в реквизит загружаются не все записи, а по некоторым условиям. Остальные пропускаются.
|
|||
2
Нуф-Нуф
01.11.12
✎
11:02
|
где и каким образом происходит чтение файла?
|
|||
3
Maxus43
01.11.12
✎
11:02
|
код показывай
|
|||
4
Lex_Liven
01.11.12
✎
11:06
|
(2) загрузка на клиенте.
код: БД_ОчередиПлатежей.Новый XBASE;
|
|||
5
Lex_Liven
01.11.12
✎
11:06
|
(4) поправка первой строки
БД_ОчередиПлатежей = Новый XBASE; |
|||
6
Maxus43
01.11.12
✎
11:08
|
что говорит замер производительности? где больше тормозит?
|
|||
7
Lex_Liven
01.11.12
✎
11:08
|
Файл одинокий. Я правильно понимаю, что он не индексирован?
Если это поможет, то как сделать индексирование? |
|||
8
Нуф-Нуф
01.11.12
✎
11:08
|
хм. как минимум лучше передавать файл на сервер. и там же заюзать внешние источники данных
|
|||
9
Maxus43
01.11.12
✎
11:10
|
(7) при загрузке на индексы пофиг, ты ще не ищеш в файле ничего
|
|||
10
Леха Дум
01.11.12
✎
11:15
|
файл на сервер отправь
|
|||
11
Lex_Liven
01.11.12
✎
11:15
|
(6) Как ни странно, но на строчке
ИначеЕсли ((НачалоДня(ДатаСервераТК()) - Дата(БД_ОчередиПлатежей.PAY_DATE)) / 86400) > ПериодХраненияПлатежей Тогда ДатаСервераТК - это обращение к функции: &НаСервереБезКонтекста Функция ДатаСервераТК() Возврат ТекущаяДата(); КонецФункции //ДатаСервераТК |
|||
12
Maxus43
01.11.12
✎
11:17
|
(11) да, на серваке заполняй ТЧ
|
|||
13
Lex_Liven
01.11.12
✎
11:18
|
(8)(10)(12) А без этого никак?
|
|||
14
Maxus43
01.11.12
✎
11:20
|
(13) замер тебе сказал где тупит, на сервер гоняет постоянно. Измени условие, 1 раз получи дату, а не в цикле в сервер едь, очевидно же
|
|||
15
Морозов Александр
01.11.12
✎
11:22
|
Получи один раз дату сервера...
|
|||
16
Lex_Liven
01.11.12
✎
11:22
|
Народ, пардон! Это ж надо так ступить!
Вынес до цикла ДатаСравнения=НачалоДня(ДатаСервераТК()); и в проблемной строчке сделал ИначеЕсли ((ДатаСравнения - Дата(БД_ОчередиПлатежей.PAY_DATE)) / 86400) > ПериодХраненияПлатежей Тогда Все! Грузится моментально. Простите дурака. Спасибо, что ткнули носом в замер производительности. |
|||
17
Maxus43
01.11.12
✎
11:23
|
тыкать носом в гамно это мы всегда пожалуста, обращайтесь
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |