Имя: Пароль:
1C
1С v8
Непонятно работает обработчик "ПриВыводеСтроки"
0 mzelensky
 
06.09.11
12:06
Всем доброго!

Имеется обработка, на ее форме лежит табличная часть (ТЧ). У этой ТЧ установлен обработчик "ПриВыводеСтроки". На сколько я знаю, этот обработчик срабатывает в момент перерисовки ТЧ. СП :

ТабличноеПоле (TableBox)
ПриВыводеСтроки (OnRowOutput)
Синтаксис:
ПриВыводеСтроки(<Оформление строки>, <Данные строки>)
Параметры:
<Оформление строки>
Тип: ОформлениеСтроки. Содержит оформление строки (шрифт, цвет) и коллекцию оформлений ячеек.
<Данные строки>
Данные выводимой строки. Параметр соответствует свойству ТекущиеДанные для выводимой строки.
Описание:
Возникает при выводе строки в табличном поле. В процедуре-обработчике события допускается изменение оформления как строки в целом, так и каждой ячейке в отдельности.

Т.е., как я понимаю - вывели в ТЧ 50 строк (из них видимых ток 20), обработчик вызовится 20 раз и остановится. крутнешь колесико, вызовится еще 20 раз и т.д.

теперь вопрос - почему обработчик может вызываться ПОСТОЯННО, т.е. вывода в тч нет, никаких действий не произвожу, а обработчик крутится постоянно.
1 Шапокляк
 
06.09.11
12:08
Например, если в процессе своей работы он что-то перезаписывает в строках. Происходит перерисовка, опять срабатывает и так до бесконечности
2 mzelensky
 
06.09.11
12:09
(1) т.е. если я в этом обработчике меняю какие-то данные, то это вызывает новую перерисовку и она получается уходит в рекурсию?!
3 Wobland
 
06.09.11
12:17
(2) а почему бы и нет (хотя, хз)? данные в таком странном месте менять - это ж додуматься ещё надо
4 mzelensky
 
06.09.11
12:25
(3) ничего странного! И кстати в типовых механизмах сделано именно так! Если откроешь стандартный подбор номенклатуры в УТ (10.3), то увидишь ,что ОСТАТКИ номенклатуры рассчитываются не сразу для ВСЕГО, а именно для тех позиций, которые выведены пользователю на экран!

Я же делаю в этом обработчике заполнение ЦЕНЫ номенклатуры, т.к. рассчитывать ее постоянно для 20 строк гораздо более быстрее чем сразу для нескольких десятков-сотен!
5 Фокусник
 
06.09.11
12:36
(4) Не тупи: вывести текст (как это сделано в подборе) и ПОМЕНЯТЬ данные (приводит к повторному получению данных - выводу строки и т.д. рекурсия) - разные вещи.
6 mzelensky
 
06.09.11
13:08
(5) +100 верно!

А я чет и забыл про "УстановитьТекст" - с ним перерисовка не вызывается
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой