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

Отчет

Автор Madikoshka, 17 мар 2017, 07:21

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

Madikoshka

В Заголовке макета отчета выводит Кафедру. Мне надо рядом вывести подразделение. К каждой кафедре привязаны подразделения. Помогите, прошу! Ниже есть скрин отчета, макета, и спр кафедры

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

Jackshi

Если это поле, ВыбЦиклокрупа.Кафедра, хранит ссылку на Кафедра, и Подразделение привязан с Кафедрой как реквизит Кафедры, то это поле кода:
ОбластьЗаголовок.Параметры.Кафедра = ВыбЦиклокрупа.Кафедра;
нужно заменить на это:
ОбластьЗаголовок.Параметры.Кафедра = ""+ВыбЦиклокрупа.Кафедра.Наименование+" - "+ВыбЦиклокрупа.Кафедра.ПодразделенияОрганизации.Наименование;

Madikoshka

Большое спасибо! Желаю вам всего самого наилучшего!:ooifh::ooifh:

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

Рейтинг@Mail.ru

Поиск