Немного смущает то, что в цикле по иерархиям каждый раз выполняется
X++:
dimAttrValueGroup.setConnection(userConnection);
dimAttrLevelValue.setConnection(userConnection);
да еще и курсор dimAttrValueGroup при первом проходе селектится в дефолтном соединении.
Попробуйте вынести эти две строчки перед циклом, и select делать для отдельной переменной (только надо не забыть при нахождении записи скопировать ее RecId в dimAttrValueGroup, она дальше используется)
И еще, попробуйте добавить
X++:
userConnection = null;
после
X++:
userConnection.finalize();
кстати, у вас описка там (userConnection со скобками)?