Имя: Пароль:
1C
1С v8
Создание печатной формы документа из 4-х запросов
0 oqjawa
 
14.05.17
15:04
Можно ли при создании одной печатной формы использовать 4 разный запроса? выводить его в поля созданы в макете и так 4 раза

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

Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();


//    Запрос2 = Новый Запрос;
//    Запрос2.Текст =
//    "ВЫБРАТЬ
//    |    Выхода_на_практику.Вид_практики,
//    |    Выхода_на_практику.Группа,
//    |    Выхода_на_практику.Дата,
//    |    Выхода_на_практику.Дата_конца_практики,
//    |    Выхода_на_практику.Дата_начала_практики,
//    |    Выхода_на_практику.ДатаИзданияПриказа,
//    |    Выхода_на_практику.Курс,
//    |    Выхода_на_практику.Номер,
//    |    Выхода_на_практику.НомерПриказа,
//    |    Выхода_на_практику.Специальность,
//    |    Выхода_на_практику.Студенты.(
//    |    НомерСтроки,
//    |    ФИО_студента,
//    |    Место_прохождения_практики,
//    |    Договор,
//    |    База,
//    |    Основа_обучения
//    |    )
//    |ИЗ
//    |    Документ.Выхода_на_практику КАК Выхода_на_практику
//    |ГДЕ
//    |    Выхода_на_практику.Ссылка В(&Ссылка)
//    |    И Выхода_на_практику.Студенты.Основа_обучения = Значение(Перечисление.Основа_обучения.платник)
//    | И Выхода_на_практику.Студенты.База = Значение(Перечисление.База_классов.классов_11)";
//    
//    Запрос2.Параметры.Вставить("Ссылка", Ссылка);
//    Выборка1 = Запрос2.Выполнить().Выбрать();
1 Lexey_
 
14.05.17
15:10
(0) да хоть 5
2 oqjawa
 
14.05.17
15:21
Есть документ "Выхода_на_практику" в нём есть табличная часть "Студенты", мне необходимо создать печатную форму из четырёх таблиц:
- в первую таблицу попадут студенты у которых база классов 9 + учатся на бюджетке
- во вторую таблицу попадут студенты у которых база классов 9 + учатся на платном
- в третью таблицу попадут студенты у которых база классов 11 + учатся на бюджетке
- в четвёртую таблицу попадут студенты у которых база классов 11 + учатся на платном

Для каждого я написал запрос.. но соединить в месте не получается, не понимаю, что не так.. на что ругается

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

    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтудентыШапка = Макет.ПолучитьОбласть("СтудентыШапка");
    ОбластьСтуденты = Макет.ПолучитьОбласть("Студенты");
    ОбластьШапка1 = Макет.ПолучитьОбласть("Шапка1");
    ОбластьСтудентыШапка1 = Макет.ПолучитьОбласть("СтудентыШапка1");
    ОбластьСтуденты1 = Макет.ПолучитьОбласть("Студенты1");
    ТабДок.Очистить();

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

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

    
        

        ВставлятьРазделительСтраниц = Истина;
    КонецЦикла;
    
            
    //}}
КонецПроцедуры




Ошибка : Значение не является значением объектного типа (Выбрать)

{Документ.Выхода_на_практику.МодульМенеджера(99)}: Значение не является значением объектного типа (Выбрать)
  ВыборкаСтуденты2 = Выборка1.Студенты.Выбрать();
3 Lexey_
 
14.05.17
15:25
(2) забыл Выборка1.Следующий()
4 oqjawa
 
14.05.17
15:37
Спасибо вам, что отвечаете мне.. я и не надеялся что хоть кто-то откликнется..


Забыл Выборка1.Следующий
а где я забыл? я не вижу.. ориентировался на первый запрос.. он выводит.. второй адаптировал но видимо криво


    Запрос.Параметры.Вставить("Ссылка", Ссылка);
    Выборка = Запрос.Выполнить().Выбрать();

///...

ВыборкаСтуденты = Выборка.Студенты.Выбрать();
        Пока ВыборкаСтуденты.Следующий() Цикл
            ОбластьСтуденты.Параметры.Заполнить(ВыборкаСтуденты);
            ТабДок.Вывести(ОбластьСтуденты, ВыборкаСтуденты.Уровень());
        КонецЦикла;



второй запрос:
Запрос2.Параметры.Вставить("Ссылка", Ссылка);
    Выборка1 = Запрос2.Выполнить().Выбрать();
///....
ВыборкаСтуденты2 = Выборка1.Студенты.Выбрать();
        Пока ВыборкаСтуденты2.Следующий() Цикл
            ОбластьСтуденты.Параметры.Заполнить(ВыборкаСтуденты2);
            ТабДок.Вывести(ОбластьСтуденты, ВыборкаСтуденты2.Уровень());
        КонецЦикла;
5 torgm
 
14.05.17
15:38
(2)  можно в один запрос с итогами организовать
6 oqjawa
 
14.05.17
15:40
тут скриншоты можно присылать??
7 torgm
 
14.05.17
15:54
(6)  ссылку на скриншот
8 oqjawa
 
14.05.17
15:56
9 Lexey_
 
14.05.17
16:20
(4) перед строкой, на которой возникает ошибка
10 oqjawa
 
14.05.17
16:27
СПАСИБО ОГРОМНОЕ)))!! Спасибо)) а как тут благодарность свою выражают люди)?