Имя: Пароль:
1C
1C 7.7
v7: Временно отключить обновление формы
,
0 mistеr
 
14.06.12
09:30
На форме есть ТЗ, я программно ее заполняю. как на время заполнения отключить перерисовку формы?
1 andrewks
 
14.06.12
09:32
никак. заполняй во временной ТЗ, а потом качни на форму разом
2 1Сергей
 
14.06.12
09:33
Зачем?
3 Ёпрст
 
14.06.12
09:36
(2) сильно мелькает при заполнении
4 vcv
 
14.06.12
09:40
FormEx, ЗапретитьОбновлениеОкна
5 vcv
 
14.06.12
09:41
+(4) Но если процесс заполнения прервать по Esc, будет красиво. Так что (1) надёжней.
6 Kavar
 
14.06.12
09:42
(0) Я видимость тз отключаю на время заполнения.
(2) Время заполнения сокращается существенно.
7 dk
 
14.06.12
09:44
(6) +1
Форма.ТЗ.Видимость(0);
// Заполняем ТЗ
Форма.ТЗ.Видимость(1);
8 mistеr
 
14.06.12
09:44
(1) Пример можно? Подозреваю, что "качни на форму" будет то же самое.

(4) Спасибо, но хотелось бы штатными средствами.
9 andrewks
 
14.06.12
09:45
+(1) если ты вдруг не понял, что значит "качни на форму разом", то:


Если ВремТЗ.КоличествоСтрок()>0 Тогда
       ТабНаФорме.КоличествоСтрок(ВремТЗ.КоличествоСтрок());
       ТабНаФорме.Заполнить(ВремТЗ);
   Иначе
       ТабНаФорме.УдалитьСтроки();
   КонецЕсли;
10 1Сергей
 
14.06.12
09:47
(9) это не ускорит на больших ТЗ
11 andrewks
 
14.06.12
09:47
(10) ускорит. проверено. ТабНаФорме.Заполнить(ВремТЗ); выполняется в одном "такте" между обновлениями формы
12 ЧеловекДуши
 
14.06.12
09:48
(0)Эх, что вы все время лепите данные в тоже ТЗ, что на форме :)
Пиши в ТЗ, созданное через СоздатьОбъект, и будет тебе счастье :)
13 ЧеловекДуши
 
14.06.12
09:51
(8)Пример:

ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка() //Добавляем колонки
// Далее заполняем ТЗ, как угодно или получаем из запроса :)
//Потом
ТЗ.Выгрузить(ТЗ_НаФорме);
Для шш1 = 1 по ТЗ_НаФорме.КоличествоКолонок() Цикл
Колонка = ТЗ_НаФорме.ПолучитьПараметрыКолонки();
//В цикле делаешь разукрашку съехавших сума колонок и скрываешь,
//то что ненужно знать пользователю...
14 mistеr
 
14.06.12
09:57
(6)(7) Попробовал. 10 секунд против 23. Неплохо, хоть и не очень красиво.
Сейчас попробую (1).
15 mistеr
 
14.06.12
10:23
(1)(12) 7-8 секунд на заполнение и мгновенно (меньше секунды) отрабатывает метод Выгрузить() или Заполнить().

Интересно, что метод Загрузить() отрабатывает ощутимо медленнее, порядка трех секунд.
16 mistеr
 
14.06.12
10:35
Попутно еще вопрос. Если ТЗ - элемент диалога передать в процедуру как параметр, то там становятся недоступными методы Видимость, Доступность и т.д. Это можно как-то решить? В процедуре манипулировать элементом диалога.
17 1Сергей
 
14.06.12
10:42
(16) процедура в том же модуле? почему бы не обращаться к ТЗ напрямую?
18 1Сергей
 
14.06.12
10:43
(17)+ Если в другом, то передавай контекст
19 mistеr
 
14.06.12
10:52
(17) В том же. Чтобы обрабатывать разные элементы. Повторное использование кода.
(18) Как?
20 andrewks
 
14.06.12
10:55
Форма.ПолучитьАтрибут()
21 1Сергей
 
14.06.12
10:57
(19) ну, тогда можно передавать идентификатор Элемента Формы. Что-то типа такого:


Процедура Отобразить(ИдентЭлементаДиалога)
   ЭлементФормы = Форма.ПолучитьАтрибут(ИдентЭлементаДиалога);
   ЭлементФормы.Видимость(1);
   ЭлементФормы.Доступность(1);
КонецПроцедуры


Отобразить("ТаблицаЗначенийНаФорме");
22 mistеr
 
14.06.12
11:06
(20)(21) Спасибо, работает.