За оформление ячеек отвечают две процедуры, которые реагируют на события табличного поля:
ПриВыводеСтроки и ПриПолученииДанных. Но первая из них вызывается столько раз сколько строк прорисовывается и выполняется после события ПриПолученииДанных. Вторая - выполняется всего раз при прокрутке табличного поля (на строку, на страницу, в начало/конец).
Но есть такое безобразие: если пользователь производит поиск по колонке то платформа ведет себя так, как будто во время поиска перелистываются все страницы для отображения на форме в списке, хотя этого фактически не происходит, пока не будет найдено искомое значение. И все это время происходят события ПриПолученииДанных и ПриВыводеСтроки, со всеми вытекающими негативными последствиями. То есть: срабатывает событие ПриПолученииДанных столько раз сколько типа_страниц перелисталось до искомой строки, и каждый раз после этого срабатывает событие ПриВыводеСтроки столько раз сколько типа_строк помещается в типа_страницу.
Но! Есть такое событие формы ОбновлениеОтображения. Вот оно-то и происходит каждый раз когда на форме что-то реально меняется. И есть метод формы Обновить().
ОбновлениеОтображения выполняется после того как будет найдено значение (или произойдет смещение поля на строку, на страницу, в начало/конец) и ТабличноеПоле обновится. Нам остается запретить запросы, заполнения и раскраски ячеек пока не произойдет изменение на форме. Затем разрешить и запросить обновить форму. После чего снова установить флаг запрета. Код из процедуры события ПриПолученииДанных выполнится всего один раз, как нам и надо было. Примерный код:
Перем СтопЗапрос
//Изначальный
//код
//модуля
//формы
Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
Если СтопЗапрос Тогда
Возврат;
КонецЕсли;
//Запросы к данным
//Заполнение ячеек
//Раскраска ячеек
СтопЗапрос = Истина;
КонецПроцедуры
Процедура ОбновлениеОтображения()
СтопЗапрос = Ложь;
ЭтаФорма.Обновить();
КонецПроцедуры
СтопЗапрос = Истина;
P.S. в процедуре события ПриВыводеСтроки не стоит выполнять что-либо ресурсоемкое. Максимум раскраска строк или ячеек в зависимости от значения реквизитов Ссылки. И не использовать ее вообще, если предполагается использование процедуры события ПриПолученииДанных.