Слушатель дважды добавляется к событиям, это ошибка в Sencha Framework, относящаяся к заблокированному/нормальному древовидной структуре и фиксированная в 5.1.2. Кажется, что слушатель добавляется один раз к объекту-слушателю заблокированной сетки и один раз к объекту-слушателю нормальной сетки, и поскольку обе сетки используют один и тот же объект, этот объект будет содержать слушателя дважды.
Быстрое исправление, кажется, чтобы удалить select
слушателя от слушателя конфигурации и добавить его к одному из только сетках:
Ext.ComponentQuery.query('viewport treepanel[isLocked=true]')[0].on('select', function(treepanel, record, index) {
console.log('select', index);
});