Как говорится, возвращаясь к напечатаному
Наконец-то нашел причину падения:
у меня в ТП используется автообновление:
ТабличноеПоле.ТаймаутОбновления = ПериодАвтоОбновления;
и смена фильтров идёт сл. образом:
ТабличноеПоле.ПоставщикДанных = "";
ТекстЗапроса = ТекстЗапроса();
Источник.УстТекстЗапроса(ТекстЗапроса);
Источник.УстКлючПорядка(УточнитьПолеПорядка(ПолеПорядка));
ТабличноеПоле.ПоставщикДанных = Источник;
Источник.УстИдПоле("Документ");
Источник.Обновить(ТекСтрока);
При этом база непрогнозируемо падала
Затем, на ТП от kms глюка почти не наблюдалось
Потом мне пришлось "утяжелить" запрос.
И падения начались снова.
Потратив неск-ко дней я нашёл причину падения.
Вот этот код работает нормально:
ПериодАвтоОбновления = ТабличноеПоле.ТаймаутОбновления;
ТабличноеПоле.ТаймаутОбновления = 0;
ТабличноеПоле.ПоставщикДанных = "";
ТекстЗапроса = ТекстЗапроса();
Источник.УстТекстЗапроса(ТекстЗапроса);
Источник.УстКлючПорядка(УточнитьПолеПорядка(ПолеПорядка));
ТабличноеПоле.ПоставщикДанных = Источник;
Источник.УстИдПоле("Документ");
Источник.Обновить(ТекСтрока);
ТабличноеПоле.ТаймаутОбновления = ПериодАвтоОбновления;
Причина - ТП пытается обновиться, когда источник="", Либо источник обнуляется в тот момент, когда ТП обновляется. Хотя скорее первое, так как при обновлении ТП база "Тормозит" и достучатся до формы нельзя.
Мне кажется, что это скорее баг, чем фича
Давайте это запретим на уровне C-кода.
И ещё:ТП обновляется даже тогда, когда форма с контролом неактивна, и если запрос достаточно "Тяжёлый", то работая в другой форме наблюдаешь "торможение" базы...
Предлагаю реализовать возможность настройки обновления следующим образом:
Параметр "АвтоматическоеОбновлениеАктивнойФормы":1.Не обновлять
2.Только при простое, с заданым интервалом ;
3.Всегда, с заданым интервалом;
Параметр "АвтоматическоеОбновлениеНеактивнойФормы":1.Не обновлять, не обновлять строки ТП при активизации формы;
2.Не обновлять, обновить строки ТП при активизации формы;
3.Только при простое, с заданым интервалом ;
4.Всегда, с заданым интервалом;
Интервал устанавливается тем же параметром, что и раньше. Если зад.интервал 0, обновление не происходит
Для обратной совместимости - по умолчанию параметры равны 3 и 4 соответственно.