```python
class CellNameGenerator:
    def __init__(self):
        self.column_mapping = {i: chr(65 + i) for i in range(26)}

    def cell_name(self, row: int, column: int) -> str:
        if not (0 <= row < 1000 and 0 <= column < 26):
            raise ValueError("Invalid row or column index")
        return f"{self.column_mapping[column]}{row + 1}"

    def grid_cells(self, rows: int, columns: int) -> list:
        if not (rows > 0 and columns > 0):
            raise ValueError("Grid size must be positive")
        return [self.cell_name(i, j) for i in range(rows) for j in range(columns)]
```