Проверил. Ошибка всё же происходит из-за того, что после выполнения блока для всех гарнизонов итератор начинает перебирать созданные им за это время массивы с информацией о войсках; этим и объясняется ошибка invalid parameter type: object name must be string (а оно не string, а table)