Здравствуйте, учусь программировать в 1С и пытаюсь реализовать следующий механизм:
В документе при установке даты начала и даты конца в ТЗ появляются новые колонки с названием месяцев попавших в период.
Как добавлять колонки я разобрался, а вот как сделать правильный цикл и выбрать названия месяцев попавших в период не получается. Подскажите пожалуйста как можно реализовать данный функционал.
P.S. Для примера поставили дату начала 1 января 2018 - дата конца 3 марта 2018 : добавились колонки Январь, Февраль, Март.
---
```1c
    НачалоИнтервала = некаяДата;
    КонецИнтервала = некаядата;
    МассивМесяцев = Новый Массив;
    Для Итератор=0 по 11 Цикл
    МесяцКонец = ДобавитьМесяц(НачалоМесяца(НачалоИнтервала),Итератор);
    Если МесяцКонец>КонецИнтервала тогда
    прервать;
    КонецЕсли;
    МассивМесяцев.Добавить(Формат(МесяцКонец,"ДФ=ММММ"));
    КонецЦикла;
```

примерно так
на выходе в МассивМесяцев у тебя должен быть список месяцев
---
измени

```1c
    МассивМесяцев.Добавить(Формат(МесяцКонец,"ДФ=ММММ"));
    Сообщить(МассивМесяцев);

    НазваниеКолонки=Формат(МассивМесяцев, "ДФ=MMMM");
```

на

```1c
    //МассивМесяцев.Добавить(Формат(МесяцКонец,"ДФ=ММММ"));
    //Сообщить(МассивМесяцев);

    НазваниеКолонки=Формат(МесяцКонец,"ДФ=ММММ");
```

ты неправильно массив используешь. Тебе нужно само значение а не массив. В массив я помещал, для примера. А ты в самом цикле добавляешь свои реквизиты
---
наименование месяца буквами по дате можно получить функцией формат Формат(Дата, "ДФ=MMMM");
по периоду,
делаешь цикл, от 1 до 12
в цикле используешь функцию ДобавитьМесяц
к НачалоМесяца начала интервала и количество итераций.
и проверяешь, не достигло ли значение даты конца. Если достигло то прервать.
---
Добавление и наименование колонок смог реализовать так:

```1c
    НазваниеКолонки=Формат(ТекущаяДата(), "ДФ=MMMM");
    НовыйРеквизит = Новый Массив;
    НовыйРеквизит.Добавить(Новый РеквизитФормы(НазваниеКолонки, Новый ОписаниеТипов("Число"), "ПрозводственныеПланы", НазваниеКолонки, Истина));
    ИзменитьРеквизиты(НовыйРеквизит);

    НоваяКолонка = Элементы.Добавить(НазваниеКолонки, Тип("ПолеФормы"), Элементы.ПрозводственныеПланы);
    НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;
    НоваяКолонка.ПутьКДанным = "ПрозводственныеПланы."+НазваниеКолонки;
```

Но про цикл если честно не понимаю как это реализовать в коде.
---
```1c
    НачалоИнтервала = некаяДата;
    КонецИнтервала = некаядата;
    МассивМесяцев = Новый Массив;
    Для Итератор=0 по 11 Цикл
    МесяцКонец = ДобавитьМесяц(НачалоМесяца(НачалоИнтервала),Итератор);
    Если МесяцКонец>КонецИнтервала тогда
    прервать;
    КонецЕсли;
    МассивМесяцев.Добавить(Формат(МесяцКонец,"ДФ=ММММ"));
    КонецЦикла;
```

примерно так
на выходе в МассивМесяцев у тебя должен быть список месяцев
---
НачалоИнтервала = некаяДата; КонецИнтервала = некаядата; МассивМесяцев = Новый Массив; Для Итератор=0 по 11 Цикл МесяцКонец = ДобавитьМесяц(НачалоМесяца(НачалоИнтервала),Итератор); Если МесяцКонец>КонецИнтервала тогда прервать; КонецЕсли; МассивМесяцев.Добавить(Формат(МесяцКонец,"ДФ=ММММ")); КонецЦикла;

Спасибо, буду разбираться как это все работает, только подскажите пожалуйста почему итератор по 11?
---
почему итератор по 11
Ну если к январю добавить 11 - то должен получится декабр , а больше нам и не нужно
---
Понял)
---
Если можно, то еще вопрос, попытался запустить при изменении начальной даты через сервер:

```1c
    НачалоИнтервала = Объект.НачалоПериода;
    КонецИнтервала = Объект.КонецПериода;
    МассивМесяцев = Новый Массив;
    Для Итератор=0 по 11 Цикл
    МесяцКонец = ДобавитьМесяц(НачалоМесяца(НачалоИнтервала),Итератор);
    Если МесяцКонец>КонецИнтервала тогда
    прервать;
    КонецЕсли;
    МассивМесяцев.Добавить(Формат(МесяцКонец,"ДФ=ММММ"));
    Сообщить(МассивМесяцев);

    НазваниеКолонки=Формат(МассивМесяцев, "ДФ=MMMM");
    НовыйРеквизит = Новый Массив;
    НовыйРеквизит.Добавить(Новый РеквизитФормы(НазваниеКолонки, Новый ОписаниеТипов("Число"), "ПрозводственныеПланы", НазваниеКолонки, Истина));
    ИзменитьРеквизиты(НовыйРеквизит);

    НоваяКолонка = Элементы.Добавить(НазваниеКолонки, Тип("ПолеФормы"), Элементы.ПрозводственныеПланы);
    НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;
    НоваяКолонка.ПутьКДанным = "ПрозводственныеПланы."+НазваниеКолонки;
    КонецЦикла;
```

Ругается:

{Документ.ПроизводственныеПланы.Форма.ПроизводственныеПланы.Форма(57)}: Ошибка при вызове метода контекста (ИзменитьРеквизиты)
 ИзменитьРеквизиты(НовыйРеквизит);
по причине:
Неуникальное имя реквизита. Имя: "Массив"
---
измени

```1c
    МассивМесяцев.Добавить(Формат(МесяцКонец,"ДФ=ММММ"));
    Сообщить(МассивМесяцев);

    НазваниеКолонки=Формат(МассивМесяцев, "ДФ=MMMM");
```

на

```1c
    //МассивМесяцев.Добавить(Формат(МесяцКонец,"ДФ=ММММ"));
    //Сообщить(МассивМесяцев);

    НазваниеКолонки=Формат(МесяцКонец,"ДФ=ММММ");
```

ты неправильно массив используешь. Тебе нужно само значение а не массив. В массив я помещал, для примера. А ты в самом цикле добавляешь свои реквизиты