Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
11 мая 2024, 03:52

Вывести табличную часть

Автор Space_minus, 20 июн 2016, 11:11

0 Пользователей и 1 гость просматривают эту тему.

Space_minus

Суть в том что табличная часть выводится 2 раза(по колличеству студентов) и в разные формы.
нужно помочь поправить, что бы студенты выводились списком и в одном  макете


Функция ПечатьПриказОЗачисленииНаКурсы(МассивОбъектов,ОбъектыПечати)
ТабДок = Новый ТабличныйДокумент;
ТабДок.АвтоМасштаб = Истина;
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    ТабДок.КоличествоЭкземпляров = 1;


Запрос = Новый Запрос;
Запрос.Текст =

          "ВЫБРАТЬ
          | ПриказОДвиженииКонтингента.Номер КАК НомерПриказа,
          | ПриказОДвиженииКонтингента.Дата КАК ДатаПриказа,
          | ПриказОДвиженииКонтингента.УчебнаяГруппа.Наименование КАК УчГрНаименование,
          | ПриказОДвиженииКонтингента.УчебнаяГруппа.Дата_Поступления КАК УчГрДатаПоступления,
          | ПриказОДвиженииКонтингента.УчебнаяГруппа.ДатаОкончанияОбучения КАК УчГрДатаОкончанияОбучения,
          | ПриказОДвиженииКонтингента.УчебнаяГруппа.Специальность.Полное_Название_Образовательной_Программы КАК ОбразовательнаяПрограмма,
          | ПриказОДвиженииКонтингентаСписокСтудентов.НомерСтроки КАК НомерСтроки,
          | ПриказОДвиженииКонтингентаСписокСтудентов.Студент КАК Студент
          |ИЗ
          | Документ.ПриказОДвиженииКонтингента КАК ПриказОДвиженииКонтингента
          | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриказОДвиженииКонтингента.СписокСтудентов КАК ПриказОДвиженииКонтингентаСписокСтудентов
          | ПО ПриказОДвиженииКонтингента.Ссылка = ПриказОДвиженииКонтингентаСписокСтудентов.Ссылка
          |ГДЕ
          | ПриказОДвиженииКонтингента.Ссылка В(&Ссылка)";


Запрос.УстановитьПараметр("Ссылка",МассивОбъектов);
РезультатЗапроса = Запрос.Выполнить().Выбрать();


Пока РезультатЗапроса.Следующий() Цикл

Макет = ПолучитьМакет("ПриказОЗачисленииНаКурсы");
НомерСтрокиНачало = ТабДок.ВысотаТаблицы + 1;

ОбластьМакета=макет.ПолучитьОбласть("Шапка");
ОбластьМакета.Параметры.Заполнить(РезультатЗапроса);
ТабДок.Вывести(ОбластьМакета);

ОбластьМакета = Макет.ПолучитьОбласть("Абзац1");
ОбластьМакета.Параметры.Абзац1 = "           В соответствии с положением об оказании платных образовательных услуг утвержденного 02.09.2013 и на основании заключенных договоров на оказание платных образовательных услуг, приказываю:";
ТабДок.Вывести(ОбластьМакета);

ОбластьМакета = Макет.ПолучитьОбласть("Абзац2");
ОбластьМакета.Параметры.Абзац2 = "           Зачислить в группу № "+РезультатЗапроса.УчГрНаименование+" (период обучения с "+Формат(РезультатЗапроса.УчГрДатаПоступления,"ДФ=dd.MM.yyyy")+" по "+Формат(РезультатЗапроса.УчГрДатаОкончанияОбучения,"ДФ=dd.MM.yyyy")+") по образовательной программе профессиональной подготовки "+РезультатЗапроса.ОбразовательнаяПрограмма+" следующих слушателей:";
ТабДок.Вывести(ОбластьМакета);

ОбластьМакета=макет.ПолучитьОбласть("СписокСтудентов");
ОбластьМакета.Параметры.Заполнить(РезультатЗапроса);
ТабДок.Вывести(ОбластьМакета);


ОбластьМакета=макет.ПолучитьОбласть("Подвал");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=макет.ПолучитьОбласть("Оборот");

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

//

КонецЦикла;

Возврат ТабДок;

КонецФункции // ПриказОЗачисленииНаКурсы()



Я кажется не правильно построил цикл. :(

LexaK

вам надо формирование и вывод областей Шапка и подвал вывести за рамки цикла! всего делов-то.   
если помогло нажмите: Спасибо!

Space_minus

Цитата: LexaK от 20 июн 2016, 11:15
вам надо формирование и вывод областей Шапка и подвал вывести за рамки цикла! всего делов-то.

Я все вынес за рамки цикла кроме вывода списка студентов (Табличной части)! Все хорошо, но перестали параметры выводится в шапке :(
вот что получилось:



&НаСервере
Функция ПечатьПриказОЗачисленииНаКурсы(МассивОбъектов,ОбъектыПечати)
ТабДок = Новый ТабличныйДокумент;
ТабДок.АвтоМасштаб = Истина;
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    ТабДок.КоличествоЭкземпляров = 1;


Запрос = Новый Запрос;
Запрос.Текст =

          "ВЫБРАТЬ
          | ПриказОДвиженииКонтингента.Номер КАК НомерПриказа,
          | ПриказОДвиженииКонтингента.Дата КАК ДатаПриказа,
          | ПриказОДвиженииКонтингента.УчебнаяГруппа.Наименование КАК УчГрНаименование,
          | ПриказОДвиженииКонтингента.УчебнаяГруппа.Дата_Поступления КАК УчГрДатаПоступления,
          | ПриказОДвиженииКонтингента.УчебнаяГруппа.ДатаОкончанияОбучения КАК УчГрДатаОкончанияОбучения,
          | ПриказОДвиженииКонтингента.УчебнаяГруппа.Специальность.Полное_Название_Образовательной_Программы КАК ОбразовательнаяПрограмма,
          | ПриказОДвиженииКонтингентаСписокСтудентов.НомерСтроки КАК НомерСтроки,
          | ПриказОДвиженииКонтингентаСписокСтудентов.Студент КАК Студент
          |ИЗ
          | Документ.ПриказОДвиженииКонтингента КАК ПриказОДвиженииКонтингента
          | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриказОДвиженииКонтингента.СписокСтудентов КАК ПриказОДвиженииКонтингентаСписокСтудентов
          | ПО ПриказОДвиженииКонтингента.Ссылка = ПриказОДвиженииКонтингентаСписокСтудентов.Ссылка
          |ГДЕ
          | ПриказОДвиженииКонтингента.Ссылка В(&Ссылка)";


Запрос.УстановитьПараметр("Ссылка",МассивОбъектов);
РезультатЗапроса = Запрос.Выполнить().Выбрать();



Макет = ПолучитьМакет("ПриказОЗачисленииНаКурсы");
НомерСтрокиНачало = ТабДок.ВысотаТаблицы + 1;

ОбластьМакета=макет.ПолучитьОбласть("Шапка");
ОбластьМакета.Параметры.Заполнить(РезультатЗапроса);
ТабДок.Вывести(ОбластьМакета);

ОбластьМакета = Макет.ПолучитьОбласть("Абзац1");
    ОбластьМакета.Параметры.Абзац1 = "           В соответствии с положением об оказании платных образовательных услуг утвержденного 02.09.2013 и на основании заключенных договоров на оказание платных образовательных услуг, приказываю:";
    ТабДок.Вывести(ОбластьМакета);

    ОбластьМакета = Макет.ПолучитьОбласть("Абзац2");
   ОбластьМакета.Параметры.Абзац2 = "           Зачислить в группу № "+РезультатЗапроса.УчГрНаименование+" (период обучения с "+Формат(РезультатЗапроса.УчГрДатаПоступления,"ДФ=dd.MM.yyyy")+" по "+Формат(РезультатЗапроса.УчГрДатаОкончанияОбучения,"ДФ=dd.MM.yyyy")+") по образовательной программе профессиональной подготовки "+РезультатЗапроса.ОбразовательнаяПрограмма+" следующих слушателей:";
     ТабДок.Вывести(ОбластьМакета);


Пока РезультатЗапроса.Следующий() Цикл

ОбластьМакета=макет.ПолучитьОбласть("СписокСтудентов");
ОбластьМакета.Параметры.Заполнить(РезультатЗапроса);
ТабДок.Вывести(ОбластьМакета);

     КонецЦикла;

ОбластьМакета=макет.ПолучитьОбласть("Подвал");
ТабДок.Вывести(ОбластьМакета);
ОбластьМакета=макет.ПолучитьОбласть("Оборот");
ТабДок.Вывести(ОбластьМакета);

Возврат ТабДок;

КонецФункции // ПриказОЗачисленииНаКурсы()



LexaK

а книжки читать кто будет?

доделайте ваш код так, там правда пяток проверок не хватает, ну это уже задачка на сообразительность

        ОбластьМакета=макет.ПолучитьОбласть("Шапка");
        РезультатЗапроса.Следующий(); //получаем данные, первая строка результата запроса
        ОбластьМакета.Параметры.Заполнить(РезультатЗапроса);
        РезультатЗапроса.Сбросить(); //возвращаем выборку в начальное состояние, для цикла
        ТабДок.Вывести(ОбластьМакета);


Конечно коряво как-то, я бы все это по другому написал,
ну да ладно, каждый пишет как может.
если помогло нажмите: Спасибо!

Space_minus

При много благодарен :))
Добавлено: 21 июн 2016, 05:49



ОбластьМакета = Макет.ПолучитьОбласть("Абзац2");
ОбластьМакета.Параметры.Абзац2 = "           Зачислить в группу № "+РезультатЗапроса.УчГрНаименование+" (период обучения с "+Формат(РезультатЗапроса.УчГрДатаПоступления,"ДФ=dd.MM.yyyy")+" по "+Формат(РезультатЗапроса.УчГрДатаОкончанияОбучения,"ДФ=dd.MM.yyyy")+") по образовательной программе профессиональной подготовки "+РезультатЗапроса.ОбразовательнаяПрограмма+" следующих слушателей:";
ТабДок.Вывести(ОбластьМакета);


Мне еще один нужен Ваш совет, параметры которые на макете мы заполнили, а параметры "+РезультатЗапроса.УчГрНаименование+" в коде каким образом заполнить?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск