8.х Работа с макетами....

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем VIPOS, 5 ноя 2012.

  1. TopicStarter Overlay
    VIPOS
    Offline

    VIPOS Опытный в 1С

    Регистрация:
    12 сен 2012
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    29
    Люди добрые подскажите пож как вывести два макета одновремено.
    Суть в следующем.... создаю отчет по движению рабочей силы, в первом макете выводится список принятых на работу, во втором уволеных,

    Код:
    ТабДок = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Принятые");
    ОбластьМакета= Макет.ПолучитьОбласть("Заголовок");
    Макет.Вывести(ОбластьМакета);
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | РаботникиОрганизаций.Сотрудник.Представление КАК СотрудникПредставление,
    | РаботникиОрганизаций.Сотрудник.Код КАК СотрудникКод,
    | РаботникиОрганизаций.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
    | ПРЕДСТАВЛЕНИЕ(РаботникиОрганизаций.ПодразделениеОрганизации),
    | РаботникиОрганизаций.Должность КАК Должность,
    | ПРЕДСТАВЛЕНИЕ(РаботникиОрганизаций.Должность),
    | РаботникиОрганизаций.ДатаПриема КАК ДатаПриема,
    | РаботникиОрганизаций.Сотрудник.Физлицо.СтраховойНомерПФР КАК СотрудникФизлицоСтраховойНомерПФР,
    | ГОД(&ДатаОтчета) - ГОД(РаботникиОрганизаций.Сотрудник.Физлицо.ДатаРождения) КАК Поле1,
    | г_ОплатаТруда.Разряд КАК Разряд,
    | г_ОплатаТруда.Категория КАК Категория,
    | г_КонтрактыДоговора.КодВидаДоговора.Ссылка КАК КодВидаДоговораСсылка
    |ИЗ
    | РегистрСведений.г_КонтрактыДоговора КАК г_КонтрактыДоговора
    |  ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
    |   ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.г_ОплатаТруда КАК г_ОплатаТруда
    |   ПО (г_ОплатаТруда.Сотрудник = РаботникиОрганизаций.Сотрудник)
    |  ПО г_КонтрактыДоговора.Сотрудник = РаботникиОрганизаций.Сотрудник
    |ГДЕ
    | РаботникиОрганизаций.ДатаПриема МЕЖДУ &Начало И &Окончание
    |
    |УПОРЯДОЧИТЬ ПО
    | СотрудникКод,
    | СотрудникПредставление,
    | Должность,
    | СотрудникФизлицоСтраховойНомерПФР,
    | Поле1,
    | Разряд,
    | Категория,
    | ДатаПриема,
    | КодВидаДоговораСсылка
    |ИТОГИ ПО
    | ПодразделениеОрганизации";
    Запрос.УстановитьПараметр("ДатаОтчета", ДатаОтчета);
    Запрос.УстановитьПараметр("Начало", Начало);
    Запрос.УстановитьПараметр("Окончание", Окончание);
    Результат = Запрос.Выполнить();
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьПодразделениеОрганизации = Макет.ПолучитьОбласть("ПодразделениеОрганизации");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    ВыборкаПодразделениеОрганизации = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаПодразделениеОрганизации.Следующий() Цикл
    ОбластьПодразделениеОрганизации.Параметры.Заполнить(ВыборкаПодразделениеОрганизации);
    ТабДок.Вывести(ОбластьПодразделениеОрганизации, ВыборкаПодразделениеОрганизации.Уровень());
    ВыборкаДетальныеЗаписи = ВыборкаПодразделениеОрганизации.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
    ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    КонецЦикла;
    КонецЦикла;
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
    ТабДок.Показать(Истина);
    ///////////////////////////////////////////////////////
    ТабДок2= Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Отчет1");
    Запрос1 = Новый Запрос;
    Запрос1.Текст =
    "ВЫБРАТЬ
    | г_УвольнениеРаботника.Сотрудник.Код,
    | РаботникиОрганизаций.Сотрудник.Представление КАК Сотрудник,
    | ПриемНаРаботуВОрганизациюРаботникиОрганизации.Должность.Представление КАК Должность,
    | г_ОплатаТруда.Сотрудник.Физлицо.СтраховойНомерПФР КАК Личныйномер,
    | ГОД(&ДатаОтчета) - ГОД(РаботникиОрганизаций.Сотрудник.Физлицо.ДатаРождения) КАК Возраст,
    | РаботникиОрганизаций.ПодразделениеОрганизации.Представление КАК Подразделение,
    | г_ОплатаТруда.Разряд,
    | г_ОплатаТруда.Категория,
    | ПриемНаРаботуВОрганизациюРаботникиОрганизации.ДатаПриема,
    | РаботникиОрганизаций.ДатаУвольнения КАК Датаувольнения,
    | г_УвольнениеРаботника.ПричинаУвольнения,
    | ПриемНаРаботуВОрганизациюРаботникиОрганизации.Физлицо.Код
    |ИЗ
    | РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций
    |  ПОЛНОЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуВОрганизацию.РаботникиОрганизации КАК ПриемНаРаботуВОрганизациюРаботникиОрганизации
    |  ПО РаботникиОрганизаций.Сотрудник = ПриемНаРаботуВОрганизациюРаботникиОрганизации.Сотрудник
    |  ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.г_ОплатаТруда КАК г_ОплатаТруда
    |  ПО РаботникиОрганизаций.Сотрудник = г_ОплатаТруда.Сотрудник
    |  ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.г_УвольнениеРаботника КАК г_УвольнениеРаботника
    |  ПО РаботникиОрганизаций.Сотрудник = г_УвольнениеРаботника.Сотрудник
    |ГДЕ
    | РаботникиОрганизаций.ДатаУвольнения МЕЖДУ &Начало И &Окончание
    |ИТОГИ ПО
    | Подразделение";
    Запрос1.УстановитьПараметр("ДатаОтчета", ДатаОтчета);
    Запрос1.УстановитьПараметр("Начало", Начало);
    Запрос1.УстановитьПараметр("Окончание", Окончание);
    Результат = Запрос1.Выполнить();
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьПодразделение = Макет.ПолучитьОбласть("Подразделение");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    ВыборкаПодразделение = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаПодразделение.Следующий() Цикл
    ОбластьПодразделение.Параметры.Заполнить(ВыборкаПодразделение);
    ТабДок.Вывести(ОбластьПодразделение, ВыборкаПодразделение.Уровень());
    ВыборкаДетальныеЗаписи = ВыборкаПодразделение.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
    ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    КонецЦикла;
    КонецЦикла;
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ТабДок.Вывести(ОбластьПодвалТаблицы);
    ТабДок.Вывести(ОбластьПодвал);
    
    Оу! Сори за флуд! простите за мою невнимательность.... сам немного затупил=(((( нашел ошибку=)))
  2. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Код:
    ТабДок.Очистить();
    Эта?
  3. TopicStarter Overlay
    VIPOS
    Offline

    VIPOS Опытный в 1С

    Регистрация:
    12 сен 2012
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    29
    Не совсем=))) я просто в первом и втором запросе использовал переменную табдок,
    и соответственно сперва заполнялись данными из первого запроса, потом очистка, потом второй запрос=))

Поделиться этой страницей