Имя: Пароль:
1C
1С v8
ПриВыводеСтроки - вешается комп и 1с
0 Нуф-Нуф
 
11.11.11
12:01
табличное поле в 3 колонки и в несколько строк
если добавляю в процедуре ПриВыводеСтроки обработчик в котором меняю отображаемый текст в строке и меняю значение в таблице значений:


   //    ОформлениеСтроки.Ячейки.СерияНоменклатуры.Текст = ""+ДанныеСтроки.СерияНоменклатуры.Номер+" "+Формат(ДанныеСтроки.СерияНоменклатуры.Дата,"ДФ=dd.MM.yyyy");

   //ДанныеСтроки.НомерСтроки    =  ДанныеСтроки.Владелец().Индекс(ДанныеСтроки)+1;


то работа вешается наглухо, начинаются дикие тормоза вплоть до того как 1с не закрою.

кто сталкивался?
1 Maxus43
 
11.11.11
12:02
//ДанныеСтроки.НомерСтроки    =  ДанныеСтроки.Владелец().Индекс(ДанныеСтроки)+1;
вот это зачем?
2 Axel2009
 
11.11.11
12:02
вывод строки зацикливается?
3 Живой Ископаемый
 
11.11.11
12:02
и этот человек называл копрокодом короткое имя переменной....
4 Нуф-Нуф
 
11.11.11
12:03
мне нужна нумерация строк в табличном поле

(2) эээ походу точно.
так как меняю таблицу значений - он снова ее пытается вывести?
5 Maxus43
 
11.11.11
12:03
(4) номер тоже оформлением строки делай
6 Нуф-Нуф
 
11.11.11
12:03
(3) посыпаю голову пеплом... скопировал сей код с форума (кстати этого)
7 Нуф-Нуф
 
11.11.11
12:03
(5) ну да, так и сделаю. спасибо
8 Нуф-Нуф
 
11.11.11
12:04
(3) а короткое имя переменной - это копрокод
9 guitar_player
 
11.11.11
12:31
(8) пробелы в коде хоть поставь...
10 hhhh
 
11.11.11
12:35
(8) ну вот эта фигня

ДанныеСтроки.СерияНоменклатуры.Номер

это запрос в цикле. Хоть понимаешь? Обычно за такое сразу расстреливают.
11 Нуф-Нуф
 
11.11.11
12:36
(10) о каком цикле идет речь?
12 acsent
 
11.11.11
12:38
(10) Если справочник состоит из пары полей, то ваще фигня
13 Поручик
 
11.11.11
12:40
(11) Процедура ПриВыводеСтроки вызывается фактически в цикле при отображении списка.

И вообще ПриВыводеСтроки используют только лохи педальные. Пацаны ПриПолучении данных.
14 Нуф-Нуф
 
11.11.11
12:44
(13) при получении данных ты предлагаешь обрабатывать всю табчасть?
15 Нуф-Нуф
 
11.11.11
12:44
т.е. офомление всех строк?
16 Нуф-Нуф
 
11.11.11
12:45
ктстати, выдержка из СП

ТабличноеПоле.ПриПолученииДанных (TableBox.OnDataGet)

Возникает при получении данных табличным полем, после обработки событий ПриВыводеСтроки.
17 Михаил Козлов
 
11.11.11
12:49
Еще заметил (не знаю, прав ли), что ПриВыводеСтроки вызывается несколько раз. Похоже, что для каждой колонки, но до конца не разобрался.
18 Нуф-Нуф
 
11.11.11
12:49
ну где желающие поспорить?
19 hhhh
 
11.11.11
12:57
(17) при установке отбора вызывается. Поэтому если при открытии формы устанавливаешь отбор, то вызывается четко 2 раза для каждой строки.
20 Axel2009
 
11.11.11
13:14
(16) да никто не спорит. вопрос в том, что ДанныеСтроки.СерияНоменклатуры.Номер вызывается для каждой строки. а если в получении данных делать, тогда можешь получить для всех серий номера и присвоить
21 Maxus43
 
11.11.11
13:15
ПриВыводеСтроки вызывается при перерисовке строк в ТЧ, даже если размер окна поменяете - вывовется, чего гадать то
22 Axel2009
 
11.11.11
13:15
(19)+а еще если переключился между окнами, то при выводе строки вызывается еще раз =) в общем если в отладчике бацнуть бряк при выводе строки, то будет рекурсия
23 Михаил Козлов
 
11.11.11
13:22
(17) Видимо этот эффект был на старой платформе (может еще 8.0). Сейчас не заметил.
Еще полезно завести кэш для уже выведенных строк, чтобы при скроллинге туда-сюда не лазить за данными.