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

Работа с не фиксированным количеством колонок и строк в макете

Автор Ayria, 08 янв 2011, 14:03

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

Ayria

Здравствуйте, помогите мне пожалуйста вот с такой проблемой. Мне нужно получить отчет в таком виде как на первой картинке. В этом отчете не фиксированное количество колонки "Номер группы", а также не фиксированное количество строк. Надо что бы выводила сразу с учетом строки и столбца.


Я пробовала работать с двумя макетами где у 1 брала в область столбцы, а у 2 брала строки, что получилось на рис.2

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

cska-fanat-kz

Все ваши данные хранятся в справочнике? Че то как то кудряво...
Тут больше напрашивается что нибудь вроде регистра сведений:
Измерения - Преподаватель, Дисциплина, НомерГруппы
Ресурс - КоличествоЧасов

Приведенный запрос - очень много выбрано лишних полей.

Лекция, Лабораторные работы, Экзамен и т.д. - надо собрать в отдельный справочник что то вроде ВидыНагрузки.
Другой вопрос что на картинке 1 они не используются ;)
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Ayria

на картинке 1 это показаны сумма  Лекция, Лабораторные работы, Экзамен и т.д.

Ayria

по каждой группе показана сумма Лекция, Лабораторные работы, Экзамен и т.д.
если использовать регистры то нужно это все оформлять в документ,
а можно с задачей справиться как нибудь др путем?

progmikon

По поводу справочника, полностью согласен с cska-fanat-kz. Сваливать все в кучу на уровне справочника - не очень хорошая идея.
А по поводу самого Вашего вопроса: вам нужно в 1С сделать такой же отчет, как на рисунке 1?

Тогда приводите полный код вашего отчета, запроса здесь мало. Запрос по сути - это ваши данные, а вот то, как вы их выводите, вот это и есть самое важное.

cska-fanat-kz

Передумал.

2 подчиненных друг другу справочника
1: УчебныйПлан
Реквизиты: Преподаватель и НомерГруппы
2: ПараметрыНагрузки (на название фантазии не хватает ;) )
Реквизиты: Дисциплина, ВидНагрузки и КоличествоЧасов

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

УПОРЯДОЧИТЬ ПО
   Преподаватель,
   Группа

А дальше настройки отчета в виде ТАБЛИЦЫ
в строки - Преподавателя и Дисциплину
в колонки - НомерГруппы
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Ayria

в 2 справочника складывать информацию не удобна потому что записей очень много будет, этот учебный план составляет около 1500 записей, и все это в одном более удобно потому что нагрузка прописывается не по одному реквизиту кол-во часов а по
   |    УчебныеПланы.Лекции КАК Лекции,
                          |    УчебныеПланы.ЛабораторныеРаботы1 КАК ЛабораторныеРаботы1,
                          |    УчебныеПланы.ЛабораторныеРаботы2 КАК ЛабораторныеРаботы2,
                          |    УчебныеПланы.Экзамен КАК Экзамен,
                          |    УчебныеПланы.Консультации КАК Консультации,
                          |    УчебныеПланы.КурсоваяРабота КАК КурсоваяРабота,
                          |    УчебныеПланы.ПроверкаКурсовых КАК ПроверкаКурсовых,

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

Ayria

а вот код как я пока пробовала выводить

  ТабДок=Новый ТабличныйДокумент;
Макет=Отчеты.СводнаяТаблицаНагрузки.ПолучитьМакет("Нагрузка");
Макет1=Отчеты.СводнаяТаблицаНагрузки.ПолучитьМакет("Нагрузка1");

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

// работа с макетом 2
ОбластьДан=Макет1.ПолучитьОбласть("Данные");
ОбластьШ=Макет1.ПолучитьОбласть("Шапка");



Отд=ЭлементыФормы.Отделение.Значение;
Фин=ЭлементыФормы.Финансирование.Значение;
Уров=ЭлементыФормы.УровеньОбразования.Значение;

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

ВыборкаОбщие = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаОбщие.Следующий() Цикл
ОбластьДан.Параметры.ФИО=ВыборкаОбщие.ПолноеФИО;


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

     ОбластьД.Параметры.Группа=ВыборкаФ.НомерГруппы;
 
  ТабДок.Вывести(ОбластьД);

 
 

 
    КонецЦикла;
КонецЦикла;
КонецЦикла;
ТабДок.Вывести(ОбластьИ);





ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Ложь;
ТабДок.ОтображатьЗаголовки = Ложь;
ТабДок.Показать();
 
                         





cska-fanat-kz

Цитата: Ayria от 09 янв 2011, 08:49
в 2 справочника складывать информацию не удобна потому что записей очень много будет, этот учебный план составляет около 1500 записей, и все это в одном более удобно потому что нагрузка прописывается не по одному реквизиту кол-во часов а по
  |    УчебныеПланы.Лекции КАК Лекции,
                         |    УчебныеПланы.ЛабораторныеРаботы1 КАК ЛабораторныеРаботы1,
                         |    УчебныеПланы.ЛабораторныеРаботы2 КАК ЛабораторныеРаботы2,
                         |    УчебныеПланы.Экзамен КАК Экзамен,
                         |    УчебныеПланы.Консультации КАК Консультации,
                         |    УчебныеПланы.КурсоваяРабота КАК КурсоваяРабота,
                         |    УчебныеПланы.ПроверкаКурсовых КАК ПроверкаКурсовых,

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


2 справочника - это структура хранения ваших данных.
А вот как все это вводить - это другой вопрос. Придется настроить форму элемента справочника УчебныйПлан например. Но это уже совсем другая история...

Не пойму, чем отличается ваше:
...
Дисциплина = История;
Лекции = 10; //я правильно понимаю что тип всех этих полей - Число и подразумевается количество часов?
ЛабораторныеРаботы1 = 10;
ЛабораторныеРаботы2 = 10;
Экзамен = 10;
Консультации = 10;
КурсоваяРабота = 10;
ПроверкаКурсовых  = 10;

от моего:
Дисциплина = "История"; //здесь не строка а элемент справочника Дисциплины
ВидНагрузки = "Лекции"; //здесь конечно не строка а элемент справочника ВидыНагрузки
КоличествоЧасов = 10;
Дисциплина = "История";
ВидНагрузки = "ЛабораторныеРаботы1";
КоличествоЧасов = 10;
Дисциплина = История;
ВидНагрузки = "ЛабораторныеРаботы2";
КоличествоЧасов = 10;
Дисциплина = История;
ВидНагрузки = "Консультации";
КоличествоЧасов = 10;... и т.д.

Вопрос на засыпку: если появится еще один вид нагрузки (ЛабораторнаяРабота3) что будете делать в вашем случае? И что - в моем? ;)
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

cska-fanat-kz

Отчет делаете через СистемуКомпоновкиДанных в виде ТАБЛИЦЫ и будет вам счастье.
Все сделаете одной мышкой...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

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

Рейтинг@Mail.ru

Поиск