Нужен цикл для заполнения матрицы по спирали, начало с первой строки. Количество строк и колонок задается пользователем, сам не силен в таких темах(
---
условия выхода поставь после каждого цикла
---
как вариант с одним циклом:

```1c
    КоличествоКолонок = 6;
    КоличествоСтрок = 5;
    Матрица = Новый Массив(КоличествоКолонок, КоличествоСтрок);
    ТекСтрока = 0;
    ТекКолонка = 0;
    Х = 1;
    У = 0;
    С = 0;
    Позиции = КоличествоСтрок;
    КоличествоЭлементовМассива = КоличествоКолонок*КоличествоСтрок;
    к = 0;
    Пока к < КоличествоЭлементовМассива Цикл
    к = к +1;
    Матрица[ТекКолонка][ТекСтрока] = к;
    Позиции = Позиции-1;
    Если Позиции <= 0 Тогда
    Позиции = КоличествоСтрок * (С %2) + КоличествоКолонок * ((С+1)%2) - (С/2 - 1) - 2;
    т = Х;
    Х = -У;
    У = т;
    С = С + 1;
    КонецЕсли;
    ТекСтрока = ТекСтрока + Х;
    ТекКолонка = ТекКолонка + У;
    КонецЦикла;
```
---
Работает. Этот вариант красивее.
Но автор ветки вряд-ли поймет это:

```1c
    Позиции = КоличествоСтрок * (С %2) + КоличествоКолонок * ((С+1)%2) - (С/2 - 1) - 2;
```
---
Здесь не один цикл. Чувствую их целых 5.
---
Есть варианты с чего начать?
---
Ну. На вскидку. Обход по счётчику с шагом

```1c
    Шаг =5;
    Для Сч =0 по Тз.Количество()-1 Цикл
    //Бла бла бла
    Сч = Сч+Шаг ;
    КонецЦикла;
```
---
```1c
    &НаКлиенте
    Процедура Команда1(Команда)
    ВсегоСтолбцов = 5;
    ВсегоСтолбцов1 = 5;
    ВсегоСтрок = 4;
    ВсегоСтрок1 = 4;

    НачСтолбец = 1;
    начстрока = 1;

    м = Новый массив(ВсегоСтолбцов+1,ВсегоСтрок+1);
    сч = 1;
    //Внешний цикл
    Пока Истина Цикл

    //строка от начала до конца
    Для стл = НачСтолбец По ВсегоСтолбцов Цикл
    м[стл][НачСтрока] = сч;
    сч = сч + 1;
    КонецЦикла;
    начстрока = начстрока + 1;

    //столбец от начала до конца
    Для стр = НачСтрока По ВсегоСтрок Цикл
    м[ВсегоСтолбцов][стр] = сч;
    сч = сч + 1;
    КонецЦикла;
    ВсегоСтолбцов = ВсегоСтолбцов - 1;

    //строка обратно
    стл = ВсегоСтолбцов;
    Пока стл >= НачСтолбец Цикл
    м[стл][ВсегоСтрок] = сч;
    стл = стл-1;
    сч = сч + 1;
    КонецЦикла;
    ВсегоСтрок = ВсегоСтрок - 1;

    //столбец обратно
    стр = ВсегоСтрок;
    Пока стр >= НачСтрока Цикл
    м[НачСтолбец][стр] = сч;
    стр = стр-1;
    сч = сч + 1;
    КонецЦикла;
    НачСтолбец = НачСтолбец + 1;

    Если НачСтолбец >= ВсегоСтолбцов И начстрока >= ВсегоСтрок Тогда
    Прервать;
    КонецЕсли;
    КонецЦикла;

    //Вывод результата
    Для к = 1 По ВсегоСтрок1 Цикл
    Стр = ";
    Для н = 1 По ВсегоСтолбцов1 Цикл
    Стр = Стр + Строка(м[н][к]) + ",";
    КонецЦикла;
    Сообщить(стр);
    КонецЦикла;
    КонецПроцедуры
```
---
Это почти работает, но есть расклад при котором количество строк и столбцов могут быть разными
и тогда он не выводит корректно, например так

```1c
    1,2,3,4,
    20,21,22,5,
    19,32,23,6,
    18,33,37,7,
    38,34,36,8,
    16,35,26,9,
    15,28,27,10,
    14,13,12,11,
```
---
Результат:
1,2,3,4,5,
14,15,16,17,6,
13,20,19,18,7,
12,11,10,9,8,
---
Заполнял змейкой с увеличением на 1 по спирали матрицу 5х4
Массив в 1С начинается с 0, но я хотел чтобы все считалось с единицы. Поэтому во всех строках массива столбец[0] будет пустым.
---
Пока обновляется, все-равно заняться нечем было )))
---
У меня примерно так получается,

```1c
    НачСтолбец = 1;
    НачСтрока = 1;
    ВсегоСтолбцов1 = Строк-1;
    ВсегоСтрок1 = Столбцов-1;
    сч = 1;
    //Внешний цикл
    Пока Истина Цикл

    //строка от начала до конца
    Для стл = НачСтолбец По Столбцов Цикл
    ТЗ[стл][Строк] = сч;
    сч = сч + 1;
    КонецЦикла;
    НачСтрока = НачСтрока + 1;

    //столбец от начала до конца
    Для стр = НачСтрока По Строк Цикл
    ТЗ[Столбцов][стр] = сч;
    сч = сч + 1;
    КонецЦикла;
    Столбцов = Столбцов - 1;

    //строка обратно
    стл = Столбцов;
    Пока стл >= НачСтолбец Цикл
    ТЗ[стл][Строк] = сч;
    стл = стл-1;
    сч = сч + 1;
    КонецЦикла;
    Строк = Строк - 1;

    //столбец обратно
    стр = Строк;
    Пока стр >= НачСтрока Цикл
    ТЗ[НачСтолбец][стр] = сч;
    стр = стр-1;
    сч = сч + 1;
    КонецЦикла;
    НачСтолбец = НачСтолбец + 1;

    Если НачСтолбец >= Столбцов И НачСтрока >= Строк Тогда
    //Прервать;
    КонецЕсли;
    КонецЦикла;

    //Вывод результата
    Для к = 1 По ВсегоСтрок1 Цикл
    Стр = ";
    Для н = 1 По ВсегоСтолбцов1 Цикл
    Стр = Стр + Строка(ТЗ[н][к]) + ",";
    КонецЦикла;
    Сообщить(стр);
    КонецЦикла;
```

Строк и столбцов задаются пользователем, но выдает ошибку {ВнешняяОбработка.NewMassiv.Форма.Форма.Форма(526)}: Индекс находится за границами массива
           ТЗ[стл][Строк] = сч;
---
условия выхода поставь после каждого цикла