Добрый день! Я начинающий программист. Пытаюсь создать печатную форму, в которой области будут подключаться по условию. Для того, чтобы не плодить кучу параметров, так как они почти в каждой области одинаковые решил прописать их сразу и по условию подключать область. Проблема заключается в том, что не происходит заполнение области. Выводится на печать только текст без параметров, однако если условие о подключении следующей области поставить после параметров, всё работает. Подскажите, пожалуйста, где ошибка. В типовых видел, что условия о подключении областей идут друг за другом списком и всё работает

```1c
    Если Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Зачисление Тогда
    ОбластьМакета = Макет.ПолучитьОбласть("Зачисление");
    ОбластьМакета.Параметры.Заголовок = Запрос.Заголовок;
    ОбластьМакета.Параметры.Формулировка = Запрос.Формулировка;
    ОбластьМакета.Параметры.ТекущийГод = СтрЗаменить(Год(ТекущаяДата()), символы.нпп,");

    ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Восстановление Тогда
    ОбластьМакета = Макет.ПолучитьОбласть("Восстановление");
    ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.ВосстановлениеИзАкадемическогоОтпуска И Запрос.Причина = Перечисления.ПричиныДвиженияКонтингента.УходЗаРебенкомДо1_5лет Тогда
    ОбластьМакета = Макет.ПолучитьОбласть("ВосстановлениеИзОтпускаРебёнок");

    ОбластьМакета.Параметры.Дата = Формат(Запрос.Дата,"ДЛФ = ДД");
    ЗаполнитьСтудентов = Запрос.СписокСтудентов.Выбрать();
    Пока ЗаполнитьСтудентов.Следующий() Цикл
    ОбластьМакета.Параметры.ФИОСтудента = ЗаполнитьСтудентов.СтудентФизЛицоФИОВинительныйПадеж;
    Если ЗаполнитьСтудентов.СтудентФизЛицоПол = Перечисления.ПолФизическогоЛица.Женский Тогда
    ОбластьМакета.Параметры.Пол = "её";
    Иначе ОбластьМакета.Параметры.Пол = "его";
    КонецЕсли;
    КонецЦикла;
    ОбластьМакета.Параметры.НомерГруппы = Запрос.УчебнаяГруппа;
    ОбластьМакета.Параметры.Курс = Запрос.Курс;
    Если Запрос.УчебнаяГруппаПрограммаСПОБазовоеОбразование = Перечисления.ОбразовательныеУровни.ОсновноеОбщее Тогда
    ОбластьМакета.Параметры.ПолученноеОбразование = "основого общего образования";
    Иначе ОбластьМакета.Параметры.ПолученноеОбразование = "среднего общего образования";
    КонецЕсли;
    ОбластьМакета.Параметры.Специальность = Запрос.УчебнаяГруппаСпециальность;
    Если Запрос.УчебнаяГруппаФормаОбучения = Перечисления.ФормыОбучения.Очная Тогда
    ОбластьМакета.Параметры.ФормаОбучения = "очную";
    Иначе ОбластьМакета.Параметры.ФормаОбучения = "заочную";
    КонецЕсли;
    Если Запрос.УчебнаяГруппаОсновнойВидФинансирования = Перечисления.ВидыФинансирования.Бюджетное Тогда
    ОбластьМакета.Параметры.ВидФинансирования = "бюджетную";
    Иначе ОбластьМакета.Параметры.ВидФинансирования ="платную";
    КонецЕсли;

    Если Запрос.Списком = Истина Тогда
    СписокСтудентов = Макет.ПолучитьОбласть("СписокСтудентов");
    ЗаполнитьСтудентов = Запрос.СписокСтудентов.Выбрать();
    Пока ЗаполнитьСтудентов.Следующий() Цикл
    СписокСтудентов.Параметры.Номер = ЗаполнитьСтудентов.НомерСтроки;
    СписокСтудентов.Параметры.СтудентФИО = ЗаполнитьСтудентов.Студент;
    ТабличныйДокумент.Вывести(СписокСтудентов);
    КонецЦикла;

    ТабличныйДокумент.Вывести(СписокСтудентов);
    КонецЕсли;

    КонецЕсли;
    ТабличныйДокумент.Вывести(ОбластьМакета);

    КонецЦикла;

    Возврат ТабличныйДокумент;
```
---
Вот ваш кусок кода переведенный в заполнение из структуры
---
```1c
    ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Восстановление Тогда
    ОбластьМакета = Макет.ПолучитьОбласть("Восстановление");
    ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.ВосстановлениеИзАкадемическогоОтпуска И Запрос.Причина = Перечисления.ПричиныДвиженияКонтингента.УходЗаРебенкомДо1_5лет Тогда
```

Где заполнение области Восстановление:?
---
Там дальше идёт ОбластьМакета.Параметры и вот в них она заполняется. Если убираю ИначеЕсли про следующую область, всё начинает работать
---
Вам правильно задали вопрос:

```1c
    Если Условие Тогда
    Область =
    ИначеЕсли Условие Тогда
    Область =
    Область.параметры =
    КонецЕсли
```

Т.е. для области восстановление у Вас нет заполнение параметров
---
Так оно идет после ИначеЕсли и никак не попадает в твою область.
---
То есть получается после каждого ИначеЕсли надо выводить параметры для области? Если одинаковые, то в последующих Иначе Если подхватятся с тех, что выше? Просто думал, что платформа сначала подхватывает условие о выводе области и потом идёт его заполнять, игнорируя остальное.
---
Вы должны заполнить параметры и выводить область
---
Поменяй код на этот

```1c
    Если Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Зачисление Тогда
    ОбластьМакета = Макет.ПолучитьОбласть("Зачисление");
    ОбластьМакета.Параметры.Заголовок = Запрос.Заголовок;
    ОбластьМакета.Параметры.Формулировка = Запрос.Формулировка;
    ОбластьМакета.Параметры.ТекущийГод = СтрЗаменить(Год(ТекущаяДата()), символы.нпп,");

    ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Восстановление Тогда
    ОбластьМакета = Макет.ПолучитьОбласть("Восстановление");
    ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.ВосстановлениеИзАкадемическогоОтпуска И Запрос.Причина = Перечисления.ПричиныДвиженияКонтингента.УходЗаРебенкомДо1_5лет Тогда
    ОбластьМакета = Макет.ПолучитьОбласть("ВосстановлениеИзОтпускаРебёнок");

    КонецЕсли;

    ОбластьМакета.Параметры.Дата = Формат(Запрос.Дата,"ДЛФ = ДД");
    ЗаполнитьСтудентов = Запрос.СписокСтудентов.Выбрать();
    Пока ЗаполнитьСтудентов.Следующий() Цикл
    ОбластьМакета.Параметры.ФИОСтудента = ЗаполнитьСтудентов.СтудентФизЛицоФИОВинительныйПадеж;
    Если ЗаполнитьСтудентов.СтудентФизЛицоПол = Перечисления.ПолФизическогоЛица.Женский Тогда
    ОбластьМакета.Параметры.Пол = "её";
    Иначе ОбластьМакета.Параметры.Пол = "его";
    КонецЕсли;
    КонецЦикла;
    ОбластьМакета.Параметры.НомерГруппы = Запрос.УчебнаяГруппа;
    ОбластьМакета.Параметры.Курс = Запрос.Курс;
    Если Запрос.УчебнаяГруппаПрограммаСПОБазовоеОбразование = Перечисления.ОбразовательныеУровни.ОсновноеОбщее Тогда
    ОбластьМакета.Параметры.ПолученноеОбразование = "основого общего образования";
    Иначе ОбластьМакета.Параметры.ПолученноеОбразование = "среднего общего образования";
    КонецЕсли;
    ОбластьМакета.Параметры.Специальность = Запрос.УчебнаяГруппаСпециальность;
    Если Запрос.УчебнаяГруппаФормаОбучения = Перечисления.ФормыОбучения.Очная Тогда
    ОбластьМакета.Параметры.ФормаОбучения = "очную";
    Иначе ОбластьМакета.Параметры.ФормаОбучения = "заочную";
    КонецЕсли;
    Если Запрос.УчебнаяГруппаОсновнойВидФинансирования = Перечисления.ВидыФинансирования.Бюджетное Тогда
    ОбластьМакета.Параметры.ВидФинансирования = "бюджетную";
    Иначе ОбластьМакета.Параметры.ВидФинансирования ="платную";
    КонецЕсли;

    Если Запрос.Списком = Истина Тогда
    СписокСтудентов = Макет.ПолучитьОбласть("СписокСтудентов");
    ЗаполнитьСтудентов = Запрос.СписокСтудентов.Выбрать();
    Пока ЗаполнитьСтудентов.Следующий() Цикл
    СписокСтудентов.Параметры.Номер = ЗаполнитьСтудентов.НомерСтроки;
    СписокСтудентов.Параметры.СтудентФИО = ЗаполнитьСтудентов.Студент;
    ТабличныйДокумент.Вывести(СписокСтудентов);
    КонецЦикла;

    ТабличныйДокумент.Вывести(СписокСтудентов);
    КонецЕсли;

    ТабличныйДокумент.Вывести(ОбластьМакета);

    КонецЦикла;

    Возврат ТабличныйДокумент;
```
---
Две последние области из примера стали заполняться, но первая, которая Зачисление, теперь ругается, что ей неизвестны параметры, которые находятся в двух других областях
---
Попробуй так

```1c
    Если Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Зачисление Тогда

    ОбластьМакета = Макет.ПолучитьОбласть("Зачисление");
    ОбластьМакета.Параметры.Заголовок = Запрос.Заголовок;
    ОбластьМакета.Параметры.Формулировка = Запрос.Формулировка;
    ОбластьМакета.Параметры.ТекущийГод = СтрЗаменить(Год(ТекущаяДата()), символы.нпп,");

    Иначе

    ОбластьПолучена = Истина;
    Если Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Восстановление Тогда
    ОбластьМакета = Макет.ПолучитьОбласть("Восстановление");
    ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.ВосстановлениеИзАкадемическогоОтпуска И Запрос.Причина = Перечисления.ПричиныДвиженияКонтингента.УходЗаРебенкомДо1_5лет Тогда
    ОбластьМакета = Макет.ПолучитьОбласть("ВосстановлениеИзОтпускаРебёнок");
    Иначе
    ОбластьПолучена = Ложь;
    КонецЕсли;

    Если ОбластьПолучена Тогда

    ОбластьМакета.Параметры.Дата = Формат(Запрос.Дата,"ДЛФ = ДД");
    ЗаполнитьСтудентов = Запрос.СписокСтудентов.Выбрать();
    Пока ЗаполнитьСтудентов.Следующий() Цикл
    ОбластьМакета.Параметры.ФИОСтудента = ЗаполнитьСтудентов.СтудентФизЛицоФИОВинительныйПадеж;
    Если ЗаполнитьСтудентов.СтудентФизЛицоПол = Перечисления.ПолФизическогоЛица.Женский Тогда
    ОбластьМакета.Параметры.Пол = "её";
    Иначе ОбластьМакета.Параметры.Пол = "его";
    КонецЕсли;
    КонецЦикла;

    ОбластьМакета.Параметры.НомерГруппы = Запрос.УчебнаяГруппа;
    ОбластьМакета.Параметры.Курс = Запрос.Курс;

    Если Запрос.УчебнаяГруппаПрограммаСПОБазовоеОбразование = Перечисления.ОбразовательныеУровни.ОсновноеОбщее Тогда
    ОбластьМакета.Параметры.ПолученноеОбразование = "основого общего образования";
    Иначе ОбластьМакета.Параметры.ПолученноеОбразование = "среднего общего образования";
    КонецЕсли;

    ОбластьМакета.Параметры.Специальность = Запрос.УчебнаяГруппаСпециальность;

    Если Запрос.УчебнаяГруппаФормаОбучения = Перечисления.ФормыОбучения.Очная Тогда
    ОбластьМакета.Параметры.ФормаОбучения = "очную";
    Иначе ОбластьМакета.Параметры.ФормаОбучения = "заочную";
    КонецЕсли;

    Если Запрос.УчебнаяГруппаОсновнойВидФинансирования = Перечисления.ВидыФинансирования.Бюджетное Тогда
    ОбластьМакета.Параметры.ВидФинансирования = "бюджетную";
    Иначе ОбластьМакета.Параметры.ВидФинансирования ="платную";
    КонецЕсли;

    Если Запрос.Списком = Истина Тогда
    СписокСтудентов = Макет.ПолучитьОбласть("СписокСтудентов");
    ЗаполнитьСтудентов = Запрос.СписокСтудентов.Выбрать();
    Пока ЗаполнитьСтудентов.Следующий() Цикл
    СписокСтудентов.Параметры.Номер = ЗаполнитьСтудентов.НомерСтроки;
    СписокСтудентов.Параметры.СтудентФИО = ЗаполнитьСтудентов.Студент;
    ТабличныйДокумент.Вывести(СписокСтудентов);
    КонецЦикла;

    ТабличныйДокумент.Вывести(СписокСтудентов);
    КонецЕсли;

    КонецЕсли;

    КонецЕсли;

    ТабличныйДокумент.Вывести(ОбластьМакета);
```
---
Так не ругается, но Зачисление теперь почему-то вообще не выводится
---
Выводится не заполненной или в принципе не выводится?
---
в принципе не выводится
---
Дам бесплатный совет, не заполняйте таким способом параметры, сначала создайте структуру, и заполните ее, ключи структуры ,это имена параметров в области, значение и так понятно,
И уже после после когда получите область просто делаете
```1c
    областьМакета.Параметры.Заполнить(СтруктураПараметров)
```

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

```1c
    ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Восстановление ИЛИ

    (Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.ВосстановлениеИзАкадемическогоОтпуска И Запрос.Причина = Перечисления.ПричиныДвиженияКонтингента.УходЗаРебенкомДо1_5лет Тогда
    Заполняем структурупараметрами
    .....
    а в конце
    Если Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Восстановление Тогда
    ОбластьМакета = Макет.ПолучитьОбласть("Восстановление");
    ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.ВосстановлениеИзАкадемическогоОтпуска И Запрос.Причина = Перечисления.ПричиныДвиженияКонтингента.УходЗаРебенкомДо1_5лет Тогда
    ОбластьМакета = Макет.ПолучитьОбласть("ВосстановлениеИзОтпускаРебёнок");
    КонецЕсли;
    областьМакета.Параметры.Заполнить(СтруктураПараметров);
```

Надеюсь понятно, а то лень все печатать
---
Вот на каких строках ругается, туда впишите условие "Если Запрос.ВидПриказа <> Перечисления.ВидыПриказовДвиженияКонтингента.Зачисление Тогда ... КонецЕсли"

Или воспользуйтесь советом

(14) Дам бесплатный совет, не заполняйте таким способом параметры, сначала создайте структуру, и заполните ее, ключи структуры ,это имена параметров в области, значение и так понятно,
И уже после после когда получите область просто делаете
---
Вот ваш кусок кода переведенный в заполнение из структуры
---
Всем большое спасибо за помощь, благодаря вам разобрался!