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

Вывести 2 табличной части на ПФ документа

Автор Space_minus, 02 авг 2016, 10:44

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

Space_minus

Подскажите как исправить ошибку:

{Документ.ЗаявкаВГИБДД.МодульМенеджера(310)}: Ошибка при вызове метода контекста (ВыполнитьПакет)
Результат = Запрос.ВыполнитьПакет();
по причине:
{(9, 24)}: Не задано значение параметра "МассивОбъектов"
ЗаявкаВГИБДД.Ссылка В(<<?>>&МассивОбъектов)


Код ПФ:

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

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

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

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

Результат = Запрос.ВыполнитьПакет();
РезультатЗапроса = Результат[0].Выбрать();
ВыборкаМастера = Результат[1].Выбрать();
ВыборкаПреподаватели = Результат[2].Выбрать();

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

    ОбластьМакета = Макет.ПолучитьОбласть("Абзац1");
    РезультатЗапроса.Следующий();
    ОбластьМакета.Параметры.Абзац1 = "        Прошу Вас зарегистрировать группу № "+РезультатЗапроса.Группа+" категории «"+РезультатЗапроса.Категория+"»  колличестве "+РезультатЗапроса.Студент+"";
    РезультатЗапроса.Сбросить();
    ТабДок.Вывести(ОбластьМакета);
   
    ОбластьМакета = Макет.ПолучитьОбласть("Адрес");
    ОбластьМакета.Параметры.Заполнить(РезультатЗапроса);
    ТабДок.Вывести(ОбластьМакета);
   
    ОбластьМакета = Макет.ПолучитьОбласть("Занятия");
    РезультатЗапроса.Следующий();
    ОбластьМакета.Параметры.Заполнить(РезультатЗапроса);
    РезультатЗапроса.Сбросить();
    ТабДок.Вывести(ОбластьМакета);
   
    ОбластьМакета=макет.ПолучитьОбласть("Преподователи");
  ОбластьМакета.Параметры.Заполнить(РезультатЗапроса);
    ТабДок.Вывести(ОбластьМакета);
   
    ОбластьМакета=макет.ПолучитьОбласть("СписокПреподователей");
    ОбластьМакета.Параметры.Заполнить(ВыборкаПреподаватели);
    ТабДок.Вывести(ОбластьМакета);
   
    ОбластьМакета = Макет.ПолучитьОбласть("Мастера");
    ОбластьМакета.Параметры.Заполнить(РезультатЗапроса);
    ТабДок.Вывести(ОбластьМакета);
   
    ОбластьМакета=макет.ПолучитьОбласть("СписокМастеров");
    ОбластьМакета.Параметры.Заполнить(ВыборкаМастера);
    ТабДок.Вывести(ОбластьМакета);
   
    ОбластьМакета = Макет.ПолучитьОбласть("Приказ");
    РезультатЗапроса.Следующий();
    ОбластьМакета.Параметры.Заполнить(РезультатЗапроса);
    ТабДок.Вывести(ОбластьМакета);
   
    ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
    ОбластьМакета.Параметры.Заполнить(РезультатЗапроса);
    ТабДок.Вывести(ОбластьМакета);
 
Возврат ТабДок;
КонецФункции //Заявка


Добавлено: 09 авг 2016, 05:17


Как я понял еще можно сделать через временные таблицы <_< 
нужно основной  поместить во временную таблицу (МенеджерВременныхТаблиц) и второй и третий всунуть в один запрос и в нем жобавить эту временную таблицу

cska-fanat-kz

вместо
Цитата: Space_minus от 09 авг 2016, 04:49Запрос.УстановитьПараметр("Ссылка",МассивОбъектов);

Запрос.УстановитьПараметр("МассивОбъектов",МассивОбъектов);
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

cska-fanat-kz

ЗЫ правда этот вариант - не совсем то, что вам посоветовала Klyacksa...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Klyacksa

От того, что вы отдельно присвоили три текста запроса, они сами собой не выполнились и во временные таблицы не сложились.
Можно и сразу объединением, все в одну таблицу запихать, и потом кодом разгребать эту кашу. Вопрос зачем. Получите три готовых результата, и ничего разбираться в них не надо.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Теги:

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

Рейтинг@Mail.ru

Поиск