Как избежать кучи вызовов события ПриВыводеСтроки() ? #167489


#0 by alien1C
Суть проблемы: На форме есть два табличных поля (данные - 2 тз)... На основании активизированной строки первого таб поля формируется свой набор строк 2-й тз для 2-го таб поля... Также есть обработчик активизации строки для 2-го таб поля... после завершения обработки события ПриАктивизацииСтроки происходит вызов обработчика ПриВыводеСтроки... Получается, что таб поля выводятся по нескольку раз подряд, на что, естественно, затрачивается время и, как следствие, "залипание" картинки... как можно программно "отказаться" от лишних вызовов обработчика ПриВыводеСтроки ?
#1 by Vozhd
Если в ПриВыводеСтроки не происходит обращения к базе данных, то не стоит заморачиваться этой проблемой. Если же обращение к базе происходит, то имеет смысл убрать это обращение к базе в другой обработчик, например, в ПриПолученииДанных
#2 by alien1C
в том-то и дело, что обращения к бд не происходит... я просто задаю (в зав-ти от параметров двух таблиц) оформление ячеек, причем определенных и это оформление меняется только при АктивизацииСтроки первого или второго таб поля...
#3 by Волшебник
Для тебя не должно быть проблемой многократный вызов ПриВыводеСтроки.
#4 by alien1C
Задача такая: в первом табличном поле выводится номенклатура с различными типами цен (по колонкам)... Количество типов цен не ограничено (эти колонки формируются динамически в программе)... Во втором таб поле выводятся серии номенклатуры, причем на каждую серию выводится своя цена (из регистра)... Получается, что я щелкаю на строке 1-го таб поля и получаю список серий во втором таб. поле... Далее пользователь выбирает определенную серию и цена этой серии сравнивается с ценами номенклатуры в первом таб. поле (ищется макс. цена), а затем эту макс. цену нужно выделить жирным шрифтов и эта цена может быть как в первом таб. поле, так и во втором... далее пользователь щелкает на другой серии или номенклатуре и получает другую макс. цену или новый список серий и опять макс цена выделяется, но при этом старая макс. цена должна вывестись обычным шрифтом... вот здесь и всплыла проблема: в обработчике ПриВыводеСтроки я смотрю, какая у меня была предыдущая цена - Структура(ТабПоле, НомСтроки, НомЯчейки), делаю ее простым шрифтом и там же в обработчике новую макс цену выделяю жирным... Поэтому программа по 6 раз перерисовывает одну и ту же таблицу (4200) строк (только первое таб. поле)... как можно этого избежать или по-другому написать мой алгоритм?
#5 by Волшебник
Кешируй
#6 by alien1C
я запоминаю обе тз для поиска макс. цены... но вывод строк все равно ведь происходит, т.к. я по-любому вызываю обработчики событий вывода и активизации строки...
#7 by Волшебник
Обработчики ПриВыводеСтроки должны работать очень быстро, почти мгновенно
#8 by alien1C
это так, но у меня нет другого выхода, как запоминать предыдущее положение макс. цены в обработчике при АктивизацииСтроки и я сравниваю при выводе строки данные выводимой строки и запомненной и в зав-ти от этого вывожу строку тем или другим шрифтом... при неоднократном вызове ПриВыводеСтроки подряд (имею ввиду сначала для одного таб поля, потом для того же, но в другом месте кода, неявный вызов, и т.д.) нужные мне строки просто выводятся шрифтом по умолчанию, если я программно не установил шрифт в ПриВыводеСтроки... а шрифт устанавливается только один раз...
#9 by alien1C
Эх, спасибо...
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С