Добрый день! Я начинающий программист. Пытаюсь создать печатную форму, в которой области будут подключаться по условию. Для того, чтобы не плодить кучу параметров, так как они почти в каждой области одинаковые решил прописать их сразу и по условию подключать область. Проблема заключается в том, что не происходит заполнение области. Выводится на печать только текст без параметров, однако если условие о подключении следующей области поставить после параметров, всё работает. Подскажите, пожалуйста, где ошибка. В типовых видел, что условия о подключении областей идут друг за другом списком и всё работает
Если Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Зачисление Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Зачисление");
ОбластьМакета.Параметры.Заголовок = Запрос.Заголовок;
ОбластьМакета.Параметры.Формулировка = Запрос.Формулировка;
ОбластьМакета.Параметры.ТекущийГод = СтрЗаменить(Год(ТекущаяДата()), символы.нпп,"");
ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Восстановление Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Восстановление");
ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.ВосстановлениеИзАкадемическогоОтпуска И Запрос.Причина = Перечисления.ПричиныДвиженияКонтингента.УходЗаРебенкомДо1_5лет Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ВосстановлениеИзОтпускаРебёнок");
ОбластьМакета.Параметры.Дата = Формат(Запрос.Дата,"ДЛФ = ДД");
ЗаполнитьСтудентов = Запрос.СписокСтудентов.Выбрать();
Пока ЗаполнитьСтудентов.Следующий() Цикл
ОбластьМакета.Параметры.ФИОСтудента = ЗаполнитьСтудентов.СтудентФизЛицоФИОВинительныйПадеж;
Если ЗаполнитьСтудентов.СтудентФизЛицоПол = Перечисления.ПолФизическогоЛица.Женский Тогда
ОбластьМакета.Параметры.Пол = "её";
Иначе ОбластьМакета.Параметры.Пол = "его";
КонецЕсли;
КонецЦикла;
ОбластьМакета.Параметры.НомерГруппы = Запрос.УчебнаяГруппа;
ОбластьМакета.Параметры.Курс = Запрос.Курс;
Если Запрос.УчебнаяГруппаПрограммаСПОБазовоеОбразование = Перечисления.ОбразовательныеУровни.ОсновноеОбщее Тогда
ОбластьМакета.Параметры.ПолученноеОбразование = "основого общего образования";
Иначе ОбластьМакета.Параметры.ПолученноеОбразование = "среднего общего образования";
КонецЕсли;
ОбластьМакета.Параметры.Специальность = Запрос.УчебнаяГруппаСпециальность;
Если Запрос.УчебнаяГруппаФормаОбучения = Перечисления.ФормыОбучения.Очная Тогда
ОбластьМакета.Параметры.ФормаОбучения = "очную";
Иначе ОбластьМакета.Параметры.ФормаОбучения = "заочную";
КонецЕсли;
Если Запрос.УчебнаяГруппаОсновнойВидФинансирования = Перечисления.ВидыФинансирования.Бюджетное Тогда
ОбластьМакета.Параметры.ВидФинансирования = "бюджетную";
Иначе ОбластьМакета.Параметры.ВидФинансирования ="платную";
КонецЕсли;
Если Запрос.Списком = Истина Тогда
СписокСтудентов = Макет.ПолучитьОбласть("СписокСтудентов");
ЗаполнитьСтудентов = Запрос.СписокСтудентов.Выбрать();
Пока ЗаполнитьСтудентов.Следующий() Цикл
СписокСтудентов.Параметры.Номер = ЗаполнитьСтудентов.НомерСтроки;
СписокСтудентов.Параметры.СтудентФИО = ЗаполнитьСтудентов.Студент;
ТабличныйДокумент.Вывести(СписокСтудентов);
КонецЦикла;
ТабличныйДокумент.Вывести(СписокСтудентов);
КонецЕсли;
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЦикла;
Возврат ТабличныйДокумент;
ПоказатьПо теме из базы знаний
- Универсальный механизм для создания любой печатной формы в 1С Предприятии 8.
- Создание внешних печатных форм под управляемым приложением с нуля
- Вывод различных табличных документов в один ("склеивание" печатных форм)
- Полезный код для программистов 1С (часть 3). Подготовка печатных форм + подсистема Управление печатью (БСП)
- Infostart PrintWizard - создание и редактирование печатных форм в 1С 8.3
Найденные решения
Вот ваш кусок кода переведенный в заполнение из структуры
СтруктураОбласти = Новый Структура;
СтруктураОбласти.Вставить("Заголовок", Запрос.Заголовок);
СтруктураОбласти.Вставить("Формулировка", Запрос.Формулировка);
СтруктураОбласти.Вставить("ТекущийГод", СтрЗаменить(Год(ТекущаяДата()), символы.нпп,""));
СтруктураОбласти.Вставить("Дата", Формат(Запрос.Дата,"ДЛФ = ДД"));
СтруктураОбласти.Вставить("НомерГруппы", Запрос.УчебнаяГруппа);
СтруктураОбласти.Вставить("Курс", Запрос.Курс);
Если Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Зачисление Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Зачисление");
ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Восстановление Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Восстановление");
ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.ВосстановлениеИзАкадемическогоОтпуска И Запрос.Причина = Перечисления.ПричиныДвиженияКонтингента.УходЗаРебенкомДо1_5лет Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ВосстановлениеИзОтпускаРебёнок");
ЗаполнитьСтудентов = Запрос.СписокСтудентов.Выбрать();
// Вот тут не уверен в правильности вашего кода, так как парамерт или в текущей реализации будет все перезатерто последней выборкой, если ее несколько.
Пока ЗаполнитьСтудентов.Следующий() Цикл
СтруктураОбласти.Вставить("ФИОСтудента", ЗаполнитьСтудентов.СтудентФизЛицоФИОВинительныйПадеж);
Если ЗаполнитьСтудентов.СтудентФизЛицоПол = Перечисления.ПолФизическогоЛица.Женский Тогда
СтруктураОбласти.Вставить("Пол", "её");
Иначе
СтруктураОбласти.Вставить("Пол", "его");
КонецЕсли;
КонецЦикла;
Если Запрос.УчебнаяГруппаПрограммаСПОБазовоеОбразование = Перечисления.ОбразовательныеУровни.ОсновноеОбщее Тогда
СтруктураОбласти.Вставить("ПолученноеОбразование","основого общего образования");
Иначе
СтруктураОбласти.Вставить("ПолученноеОбразование","среднего общего образования");
КонецЕсли;
СтруктураОбласти.Вставить("Специальность",Запрос.УчебнаяГруппаСпециальность);
Если Запрос.УчебнаяГруппаФормаОбучения = Перечисления.ФормыОбучения.Очная Тогда
СтруктураОбласти.Вставить("ФормаОбучения", "очную");
Иначе
СтруктураОбласти.Вставить("ФормаОбучения", "заочную");
КонецЕсли;
Если Запрос.УчебнаяГруппаОсновнойВидФинансирования = Перечисления.ВидыФинансирования.Бюджетное Тогда
СтруктураОбласти.Вставить("ВидФинансирования","бюджетную");
Иначе
СтруктураОбласти.Вставить("ВидФинансирования","бюджетную");
КонецЕсли;
Если Запрос.Списком = Истина Тогда
СписокСтудентов = Макет.ПолучитьОбласть("СписокСтудентов");
ЗаполнитьСтудентов = Запрос.СписокСтудентов.Выбрать();
Пока ЗаполнитьСтудентов.Следующий() Цикл
СписокСтудентов.Параметры.Номер = ЗаполнитьСтудентов.НомерСтроки;
СписокСтудентов.Параметры.СтудентФИО = ЗаполнитьСтудентов.Студент;
ТабличныйДокумент.Вывести(СписокСтудентов);
КонецЦикла;
ТабличныйДокумент.Вывести(СписокСтудентов);
КонецЕсли;
КонецЕсли;
// Вывод Ваших всех параметров
областьМакета.Параметры.Заполнить(СтруктураОбласти);
ТабличныйДокумент.Вывести(ОбластьМакета);
ПоказатьСтруктураОбласти.Вставить("Заголовок", Запрос.Заголовок);
СтруктураОбласти.Вставить("Формулировка", Запрос.Формулировка);
СтруктураОбласти.Вставить("ТекущийГод", СтрЗаменить(Год(ТекущаяДата()), символы.нпп,""));
СтруктураОбласти.Вставить("Дата", Формат(Запрос.Дата,"ДЛФ = ДД"));
СтруктураОбласти.Вставить("НомерГруппы", Запрос.УчебнаяГруппа);
СтруктураОбласти.Вставить("Курс", Запрос.Курс);
Если Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Зачисление Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Зачисление");
ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Восстановление Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Восстановление");
ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.ВосстановлениеИзАкадемическогоОтпуска И Запрос.Причина = Перечисления.ПричиныДвиженияКонтингента.УходЗаРебенкомДо1_5лет Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ВосстановлениеИзОтпускаРебёнок");
ЗаполнитьСтудентов = Запрос.СписокСтудентов.Выбрать();
// Вот тут не уверен в правильности вашего кода, так как парамерт или в текущей реализации будет все перезатерто последней выборкой, если ее несколько.
Пока ЗаполнитьСтудентов.Следующий() Цикл
СтруктураОбласти.Вставить("ФИОСтудента", ЗаполнитьСтудентов.СтудентФизЛицоФИОВинительныйПадеж);
Если ЗаполнитьСтудентов.СтудентФизЛицоПол = Перечисления.ПолФизическогоЛица.Женский Тогда
СтруктураОбласти.Вставить("Пол", "её");
Иначе
СтруктураОбласти.Вставить("Пол", "его");
КонецЕсли;
КонецЦикла;
Если Запрос.УчебнаяГруппаПрограммаСПОБазовоеОбразование = Перечисления.ОбразовательныеУровни.ОсновноеОбщее Тогда
СтруктураОбласти.Вставить("ПолученноеОбразование","основого общего образования");
Иначе
СтруктураОбласти.Вставить("ПолученноеОбразование","среднего общего образования");
КонецЕсли;
СтруктураОбласти.Вставить("Специальность",Запрос.УчебнаяГруппаСпециальность);
Если Запрос.УчебнаяГруппаФормаОбучения = Перечисления.ФормыОбучения.Очная Тогда
СтруктураОбласти.Вставить("ФормаОбучения", "очную");
Иначе
СтруктураОбласти.Вставить("ФормаОбучения", "заочную");
КонецЕсли;
Если Запрос.УчебнаяГруппаОсновнойВидФинансирования = Перечисления.ВидыФинансирования.Бюджетное Тогда
СтруктураОбласти.Вставить("ВидФинансирования","бюджетную");
Иначе
СтруктураОбласти.Вставить("ВидФинансирования","бюджетную");
КонецЕсли;
Если Запрос.Списком = Истина Тогда
СписокСтудентов = Макет.ПолучитьОбласть("СписокСтудентов");
ЗаполнитьСтудентов = Запрос.СписокСтудентов.Выбрать();
Пока ЗаполнитьСтудентов.Следующий() Цикл
СписокСтудентов.Параметры.Номер = ЗаполнитьСтудентов.НомерСтроки;
СписокСтудентов.Параметры.СтудентФИО = ЗаполнитьСтудентов.Студент;
ТабличныйДокумент.Вывести(СписокСтудентов);
КонецЦикла;
ТабличныйДокумент.Вывести(СписокСтудентов);
КонецЕсли;
КонецЕсли;
// Вывод Ваших всех параметров
областьМакета.Параметры.Заполнить(СтруктураОбласти);
ТабличныйДокумент.Вывести(ОбластьМакета);
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Восстановление Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Восстановление");
ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.ВосстановлениеИзАкадемическогоОтпуска И Запрос.Причина = Перечисления.ПричиныДвиженияКонтингента.УходЗаРебенкомДо1_5лет Тогда
Где заполнение области Восстановление:?
(4) То есть получается после каждого ИначеЕсли надо выводить параметры для области? Если одинаковые, то в последующих Иначе Если подхватятся с тех, что выше? Просто думал, что платформа сначала подхватывает условие о выводе области и потом идёт его заполнять, игнорируя остальное.
Поменяй код на этот
Если Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Зачисление Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Зачисление");
ОбластьМакета.Параметры.Заголовок = Запрос.Заголовок;
ОбластьМакета.Параметры.Формулировка = Запрос.Формулировка;
ОбластьМакета.Параметры.ТекущийГод = СтрЗаменить(Год(ТекущаяДата()), символы.нпп,"");
ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Восстановление Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Восстановление");
ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.ВосстановлениеИзАкадемическогоОтпуска И Запрос.Причина = Перечисления.ПричиныДвиженияКонтингента.УходЗаРебенкомДо1_5лет Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ВосстановлениеИзОтпускаРебёнок");
КонецЕсли;
ОбластьМакета.Параметры.Дата = Формат(Запрос.Дата,"ДЛФ = ДД");
ЗаполнитьСтудентов = Запрос.СписокСтудентов.Выбрать();
Пока ЗаполнитьСтудентов.Следующий() Цикл
ОбластьМакета.Параметры.ФИОСтудента = ЗаполнитьСтудентов.СтудентФизЛицоФИОВинительныйПадеж;
Если ЗаполнитьСтудентов.СтудентФизЛицоПол = Перечисления.ПолФизическогоЛица.Женский Тогда
ОбластьМакета.Параметры.Пол = "её";
Иначе ОбластьМакета.Параметры.Пол = "его";
КонецЕсли;
КонецЦикла;
ОбластьМакета.Параметры.НомерГруппы = Запрос.УчебнаяГруппа;
ОбластьМакета.Параметры.Курс = Запрос.Курс;
Если Запрос.УчебнаяГруппаПрограммаСПОБазовоеОбразование = Перечисления.ОбразовательныеУровни.ОсновноеОбщее Тогда
ОбластьМакета.Параметры.ПолученноеОбразование = "основого общего образования";
Иначе ОбластьМакета.Параметры.ПолученноеОбразование = "среднего общего образования";
КонецЕсли;
ОбластьМакета.Параметры.Специальность = Запрос.УчебнаяГруппаСпециальность;
Если Запрос.УчебнаяГруппаФормаОбучения = Перечисления.ФормыОбучения.Очная Тогда
ОбластьМакета.Параметры.ФормаОбучения = "очную";
Иначе ОбластьМакета.Параметры.ФормаОбучения = "заочную";
КонецЕсли;
Если Запрос.УчебнаяГруппаОсновнойВидФинансирования = Перечисления.ВидыФинансирования.Бюджетное Тогда
ОбластьМакета.Параметры.ВидФинансирования = "бюджетную";
Иначе ОбластьМакета.Параметры.ВидФинансирования ="платную";
КонецЕсли;
Если Запрос.Списком = Истина Тогда
СписокСтудентов = Макет.ПолучитьОбласть("СписокСтудентов");
ЗаполнитьСтудентов = Запрос.СписокСтудентов.Выбрать();
Пока ЗаполнитьСтудентов.Следующий() Цикл
СписокСтудентов.Параметры.Номер = ЗаполнитьСтудентов.НомерСтроки;
СписокСтудентов.Параметры.СтудентФИО = ЗаполнитьСтудентов.Студент;
ТабличныйДокумент.Вывести(СписокСтудентов);
КонецЦикла;
ТабличныйДокумент.Вывести(СписокСтудентов);
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЦикла;
Возврат ТабличныйДокумент;
Показать
(9) Попробуй так
Если Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Зачисление Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Зачисление");
ОбластьМакета.Параметры.Заголовок = Запрос.Заголовок;
ОбластьМакета.Параметры.Формулировка = Запрос.Формулировка;
ОбластьМакета.Параметры.ТекущийГод = СтрЗаменить(Год(ТекущаяДата()), символы.нпп,"");
Иначе
ОбластьПолучена = Истина;
Если Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Восстановление Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Восстановление");
ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.ВосстановлениеИзАкадемическогоОтпуска И Запрос.Причина = Перечисления.ПричиныДвиженияКонтингента.УходЗаРебенкомДо1_5лет Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ВосстановлениеИзОтпускаРебёнок");
Иначе
ОбластьПолучена = Ложь;
КонецЕсли;
Если ОбластьПолучена Тогда
ОбластьМакета.Параметры.Дата = Формат(Запрос.Дата,"ДЛФ = ДД");
ЗаполнитьСтудентов = Запрос.СписокСтудентов.Выбрать();
Пока ЗаполнитьСтудентов.Следующий() Цикл
ОбластьМакета.Параметры.ФИОСтудента = ЗаполнитьСтудентов.СтудентФизЛицоФИОВинительныйПадеж;
Если ЗаполнитьСтудентов.СтудентФизЛицоПол = Перечисления.ПолФизическогоЛица.Женский Тогда
ОбластьМакета.Параметры.Пол = "её";
Иначе ОбластьМакета.Параметры.Пол = "его";
КонецЕсли;
КонецЦикла;
ОбластьМакета.Параметры.НомерГруппы = Запрос.УчебнаяГруппа;
ОбластьМакета.Параметры.Курс = Запрос.Курс;
Если Запрос.УчебнаяГруппаПрограммаСПОБазовоеОбразование = Перечисления.ОбразовательныеУровни.ОсновноеОбщее Тогда
ОбластьМакета.Параметры.ПолученноеОбразование = "основого общего образования";
Иначе ОбластьМакета.Параметры.ПолученноеОбразование = "среднего общего образования";
КонецЕсли;
ОбластьМакета.Параметры.Специальность = Запрос.УчебнаяГруппаСпециальность;
Если Запрос.УчебнаяГруппаФормаОбучения = Перечисления.ФормыОбучения.Очная Тогда
ОбластьМакета.Параметры.ФормаОбучения = "очную";
Иначе ОбластьМакета.Параметры.ФормаОбучения = "заочную";
КонецЕсли;
Если Запрос.УчебнаяГруппаОсновнойВидФинансирования = Перечисления.ВидыФинансирования.Бюджетное Тогда
ОбластьМакета.Параметры.ВидФинансирования = "бюджетную";
Иначе ОбластьМакета.Параметры.ВидФинансирования ="платную";
КонецЕсли;
Если Запрос.Списком = Истина Тогда
СписокСтудентов = Макет.ПолучитьОбласть("СписокСтудентов");
ЗаполнитьСтудентов = Запрос.СписокСтудентов.Выбрать();
Пока ЗаполнитьСтудентов.Следующий() Цикл
СписокСтудентов.Параметры.Номер = ЗаполнитьСтудентов.НомерСтроки;
СписокСтудентов.Параметры.СтудентФИО = ЗаполнитьСтудентов.Студент;
ТабличныйДокумент.Вывести(СписокСтудентов);
КонецЦикла;
ТабличныйДокумент.Вывести(СписокСтудентов);
КонецЕсли;
КонецЕсли;
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьМакета);
Показать
(11)Дам бесплатный совет, не заполняйте таким способом параметры, сначала создайте структуру, и заполните ее, ключи структуры ,это имена параметров в области, значение и так понятно,
И уже после после когда получите область просто делаете
Во первых никогда не получите ошибок при заполнении, да и проще чем писать одно и тоже сто раз. да и области можно уменьшить
в ваше случае например
Надеюсь понятно, а то лень все печатать
И уже после после когда получите область просто делаете
областьМакета.Параметры.Заполнить(СтруктураПараметров)
Во первых никогда не получите ошибок при заполнении, да и проще чем писать одно и тоже сто раз. да и области можно уменьшить
в ваше случае например
ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Восстановление ИЛИ
(Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.ВосстановлениеИзАкадемическогоОтпуска И Запрос.Причина = Перечисления.ПричиныДвиженияКонтингента.УходЗаРебенкомДо1_5лет Тогда
Заполняем структурупараметрами
.....
а в конце
Если Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Восстановление Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Восстановление");
ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.ВосстановлениеИзАкадемическогоОтпуска И Запрос.Причина = Перечисления.ПричиныДвиженияКонтингента.УходЗаРебенкомДо1_5лет Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ВосстановлениеИзОтпускаРебёнок");
КонецЕсли;
областьМакета.Параметры.Заполнить(СтруктураПараметров);
ПоказатьНадеюсь понятно, а то лень все печатать
(11) Вот на каких строках ругается, туда впишите условие "Если Запрос.ВидПриказа <> Перечисления.ВидыПриказовДвиженияКонтингента.Зачисление Тогда ... КонецЕсли"
Или воспользуйтесь советом
(14)
Или воспользуйтесь советом
(14)
Дам бесплатный совет, не заполняйте таким способом параметры, сначала создайте структуру, и заполните ее, ключи структуры ,это имена параметров в области, значение и так понятно,
И уже после после когда получите область просто делаете
И уже после после когда получите область просто делаете
Вот ваш кусок кода переведенный в заполнение из структуры
СтруктураОбласти = Новый Структура;
СтруктураОбласти.Вставить("Заголовок", Запрос.Заголовок);
СтруктураОбласти.Вставить("Формулировка", Запрос.Формулировка);
СтруктураОбласти.Вставить("ТекущийГод", СтрЗаменить(Год(ТекущаяДата()), символы.нпп,""));
СтруктураОбласти.Вставить("Дата", Формат(Запрос.Дата,"ДЛФ = ДД"));
СтруктураОбласти.Вставить("НомерГруппы", Запрос.УчебнаяГруппа);
СтруктураОбласти.Вставить("Курс", Запрос.Курс);
Если Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Зачисление Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Зачисление");
ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Восстановление Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Восстановление");
ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.ВосстановлениеИзАкадемическогоОтпуска И Запрос.Причина = Перечисления.ПричиныДвиженияКонтингента.УходЗаРебенкомДо1_5лет Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ВосстановлениеИзОтпускаРебёнок");
ЗаполнитьСтудентов = Запрос.СписокСтудентов.Выбрать();
// Вот тут не уверен в правильности вашего кода, так как парамерт или в текущей реализации будет все перезатерто последней выборкой, если ее несколько.
Пока ЗаполнитьСтудентов.Следующий() Цикл
СтруктураОбласти.Вставить("ФИОСтудента", ЗаполнитьСтудентов.СтудентФизЛицоФИОВинительныйПадеж);
Если ЗаполнитьСтудентов.СтудентФизЛицоПол = Перечисления.ПолФизическогоЛица.Женский Тогда
СтруктураОбласти.Вставить("Пол", "её");
Иначе
СтруктураОбласти.Вставить("Пол", "его");
КонецЕсли;
КонецЦикла;
Если Запрос.УчебнаяГруппаПрограммаСПОБазовоеОбразование = Перечисления.ОбразовательныеУровни.ОсновноеОбщее Тогда
СтруктураОбласти.Вставить("ПолученноеОбразование","основого общего образования");
Иначе
СтруктураОбласти.Вставить("ПолученноеОбразование","среднего общего образования");
КонецЕсли;
СтруктураОбласти.Вставить("Специальность",Запрос.УчебнаяГруппаСпециальность);
Если Запрос.УчебнаяГруппаФормаОбучения = Перечисления.ФормыОбучения.Очная Тогда
СтруктураОбласти.Вставить("ФормаОбучения", "очную");
Иначе
СтруктураОбласти.Вставить("ФормаОбучения", "заочную");
КонецЕсли;
Если Запрос.УчебнаяГруппаОсновнойВидФинансирования = Перечисления.ВидыФинансирования.Бюджетное Тогда
СтруктураОбласти.Вставить("ВидФинансирования","бюджетную");
Иначе
СтруктураОбласти.Вставить("ВидФинансирования","бюджетную");
КонецЕсли;
Если Запрос.Списком = Истина Тогда
СписокСтудентов = Макет.ПолучитьОбласть("СписокСтудентов");
ЗаполнитьСтудентов = Запрос.СписокСтудентов.Выбрать();
Пока ЗаполнитьСтудентов.Следующий() Цикл
СписокСтудентов.Параметры.Номер = ЗаполнитьСтудентов.НомерСтроки;
СписокСтудентов.Параметры.СтудентФИО = ЗаполнитьСтудентов.Студент;
ТабличныйДокумент.Вывести(СписокСтудентов);
КонецЦикла;
ТабличныйДокумент.Вывести(СписокСтудентов);
КонецЕсли;
КонецЕсли;
// Вывод Ваших всех параметров
областьМакета.Параметры.Заполнить(СтруктураОбласти);
ТабличныйДокумент.Вывести(ОбластьМакета);
ПоказатьСтруктураОбласти.Вставить("Заголовок", Запрос.Заголовок);
СтруктураОбласти.Вставить("Формулировка", Запрос.Формулировка);
СтруктураОбласти.Вставить("ТекущийГод", СтрЗаменить(Год(ТекущаяДата()), символы.нпп,""));
СтруктураОбласти.Вставить("Дата", Формат(Запрос.Дата,"ДЛФ = ДД"));
СтруктураОбласти.Вставить("НомерГруппы", Запрос.УчебнаяГруппа);
СтруктураОбласти.Вставить("Курс", Запрос.Курс);
Если Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Зачисление Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Зачисление");
ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.Восстановление Тогда
ОбластьМакета = Макет.ПолучитьОбласть("Восстановление");
ИначеЕсли Запрос.ВидПриказа = Перечисления.ВидыПриказовДвиженияКонтингента.ВосстановлениеИзАкадемическогоОтпуска И Запрос.Причина = Перечисления.ПричиныДвиженияКонтингента.УходЗаРебенкомДо1_5лет Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ВосстановлениеИзОтпускаРебёнок");
ЗаполнитьСтудентов = Запрос.СписокСтудентов.Выбрать();
// Вот тут не уверен в правильности вашего кода, так как парамерт или в текущей реализации будет все перезатерто последней выборкой, если ее несколько.
Пока ЗаполнитьСтудентов.Следующий() Цикл
СтруктураОбласти.Вставить("ФИОСтудента", ЗаполнитьСтудентов.СтудентФизЛицоФИОВинительныйПадеж);
Если ЗаполнитьСтудентов.СтудентФизЛицоПол = Перечисления.ПолФизическогоЛица.Женский Тогда
СтруктураОбласти.Вставить("Пол", "её");
Иначе
СтруктураОбласти.Вставить("Пол", "его");
КонецЕсли;
КонецЦикла;
Если Запрос.УчебнаяГруппаПрограммаСПОБазовоеОбразование = Перечисления.ОбразовательныеУровни.ОсновноеОбщее Тогда
СтруктураОбласти.Вставить("ПолученноеОбразование","основого общего образования");
Иначе
СтруктураОбласти.Вставить("ПолученноеОбразование","среднего общего образования");
КонецЕсли;
СтруктураОбласти.Вставить("Специальность",Запрос.УчебнаяГруппаСпециальность);
Если Запрос.УчебнаяГруппаФормаОбучения = Перечисления.ФормыОбучения.Очная Тогда
СтруктураОбласти.Вставить("ФормаОбучения", "очную");
Иначе
СтруктураОбласти.Вставить("ФормаОбучения", "заочную");
КонецЕсли;
Если Запрос.УчебнаяГруппаОсновнойВидФинансирования = Перечисления.ВидыФинансирования.Бюджетное Тогда
СтруктураОбласти.Вставить("ВидФинансирования","бюджетную");
Иначе
СтруктураОбласти.Вставить("ВидФинансирования","бюджетную");
КонецЕсли;
Если Запрос.Списком = Истина Тогда
СписокСтудентов = Макет.ПолучитьОбласть("СписокСтудентов");
ЗаполнитьСтудентов = Запрос.СписокСтудентов.Выбрать();
Пока ЗаполнитьСтудентов.Следующий() Цикл
СписокСтудентов.Параметры.Номер = ЗаполнитьСтудентов.НомерСтроки;
СписокСтудентов.Параметры.СтудентФИО = ЗаполнитьСтудентов.Студент;
ТабличныйДокумент.Вывести(СписокСтудентов);
КонецЦикла;
ТабличныйДокумент.Вывести(СписокСтудентов);
КонецЕсли;
КонецЕсли;
// Вывод Ваших всех параметров
областьМакета.Параметры.Заполнить(СтруктураОбласти);
ТабличныйДокумент.Вывести(ОбластьМакета);
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот