Имя: Пароль:
1C
1C 7.7
v7: как ускорить загрузку в тз формы
0 zladenuw
 
13.09.12
03:00
База = СоздатьОбъект("OLEDBData");
   Соединение = "Provider=VFPOLEDB.1;Data Source=" + КаталогИБ() + ";Mode=ReadWrite;User ID="+"kirill"+";Password="+"1"+";Collating Sequence=MACHINE";
   Рез = База.Соединение(Соединение);
   Запрос = База.СоздатьКоманду();
   Если Рез = 1 Тогда
       Сообщить(ТекущееВремя());
       ТекВремя = ТекущееВремя();
       //RS = СоздатьОбъект("ODBCRecordset");
       ТекстЗапроса = "
       |SELECT
       |      Спр.Code as Код,
       |      Спр.Descr as Наименование
       |FROM
       |      $Справочник.Контрагенты as Спр";
       
       
       ТЗ.Загрузить(Запрос.ВыполнитьИнструкцию(ТекстЗапроса));
1 КонецЦикла
 
13.09.12
03:51
А табличное поле?
2 zladenuw
 
13.09.12
04:12
в обработке ?
3 КонецЦикла
 
13.09.12
06:10
(2) А что?
Основное время на загрузку всей таблицы уходит, а так при необходимости можно будет прокручивать
Цель такой могучей задачи не знаю... поэтому что могу - советую
4 zladenuw
 
13.09.12
06:13
по строчно добавлять и все ? загрузить тупит
5 КонецЦикла
 
13.09.12
06:15
Можно использовать классы или самому написать
Просто будет табличное поле, имитирующее форму списка справочника
Выборка всех элементов вообще не нужна тут
6 zladenuw
 
13.09.12
06:16
это как пример. возможны отборы, сортировки и т.д. все будет по коду
7 zladenuw
 
13.09.12
06:17
типа так.Не выходит OLEDBData , справочники(н)реквизиты(к)
но там еще без отборов. пока только мля чтение... и то траблы на каждом ходу :(
8 КонецЦикла
 
13.09.12
06:27
Садись изучать документацию
Есть хороший класс прямой запрос, искать на 1cpp.ru
9 zladenuw
 
13.09.12
06:30
хм. тут вопрос по загрузке. я и так читаю и походу спрашиваю
10 Mikeware
 
13.09.12
07:17
Используй совет (8)
11 zladenuw
 
13.09.12
07:18
и что. читает то быстро. а вот отображение на форме, долговато.
12 zladenuw
 
13.09.12
07:19
100к элементов за доли секунды без отборов. а вот загрузка на форму умирает
13 Mikeware
 
13.09.12
07:21
(12) похоже, главный тормоз в этом процессе - это ты....
намекну - табличное поле не грузит все в таблицу, отображаемую на форме, а показывает по мере необходимости...
14 zladenuw
 
13.09.12
07:34
ну динамического чтение нету в 7. как тогда быть ? нужно всю тз загрузить.
15 zladenuw
 
13.09.12
07:35
(13) и все таки закономерность. чем синее полоска. тем больше критики к ТС
16 Светлый Гений
 
13.09.12
08:06
(0) Попробуй Запрос.ВыполнитьИнструкцию(ТекстЗапроса,ТЗ)
17 zladenuw
 
13.09.12
08:08
(16) спс
18 Светлый Гений
 
13.09.12
08:08
(17)помогло?
19 zladenuw
 
13.09.12
08:08
хотя читал ....
ВыполнитьИнструкцию(Текст, ТЗ = "", ОчищатьТЗ = ""), которая возвращает результат работы запроса, переданного в параметре Текст в таблицу значений
20 Светлый Гений
 
13.09.12
08:09
(19) когда передаешь параметром, работает быстрее
21 zladenuw
 
13.09.12
08:09
вроде да. сейчас не до этого. тут проблема (7)
22 Ёпрст
 
13.09.12
08:55
(14) как это нету ?
:))

используй табличное поле и поставщиком для него - прямой запрос.
23 Ёпрст
 
13.09.12
08:56
и если что, ТЗ.Загрузить - это самый медленный штатный способ при работе с ТЗ.
24 Nirvana
 
13.09.12
09:43
(11) Таблица значений на форме видимая?
25 МуМу
 
13.09.12
10:38
(24) +1
Ошибка? Это не ошибка, это системная функция.