Ковырялся в коде справочника товаров и попробовал проанализировать работу формы списка в отладчике, по замеру производительности. Результат немного шокировал — самым тугим местом оказались вызовы методов Выбран() для текущего элемента справочника, немного менее тормознуто происходит обращение к реквизиту через точку, примерно также медлено — к константе через точку.
Вот как я провел эксперимент: выбрал одну функцию, вначале которой производится проверка текущего элемента методом Выбран(), включаю замер, открываю список товаров, выключаю замер, результат
0,005021 мсек
Теперь переписываю код с использованием метода ПустоеЗначение(), то-же действие, замер, результат
0,000132 мсек
Есть разница? Если сравнивать проценты времени выполнения от общего времени работы модуля, то получим в первом случае 12% а во втором только 0,41%.
Обращения к реквизитам через точку исправляются еще проще, нужно просто внимательно проверить те, которые уже есть на форме и обращаться к ним непосредственно, а не как к атрибутам. С константами помогают, например, глобальные переменные, т.е. если значение константы используется в глобальных функциях или в функциях по каждой строке списка и вызывается часто, то имеет смысл присвоить значение константы глобальной переменной и везде использовать ее вместо этой константы.
Еще одно слабое место — периодические реквизиты. В моем случае были переписаны обращения к значениям через Получить() на простое обращение к атрибуту после применения к справочнику метода ИспользоватьДату(). Это значит, что если раньше было указано
Цена=Тов.Цена1.Получить(Дата1);
то теперь при открытии формы, а потом и при каждом изменении переменной Дата1 вызывается метод ИспользоватьДату(Дата1), а код переписан в виде:
Цена=Тов.Цена1;
Такие пироги. Вот уж, что называется — век живи, век учись.
PS В Простом учете все указанные оптимизации проведены в версии 45.5