8.х Макет с группировками!

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Romik, 4 дек 2008.

  1. TopicStarter Overlay
    Romik
    Offline

    Romik Опытный в 1С

    Регистрация:
    27 июн 2008
    Сообщения:
    238
    Симпатии:
    0
    Баллы:
    26
    Всё таки кто нибудь приведёт пример как вывести данные в макет с группировкой.
    То есть, к примеру...Накладная - Грууппировка раскрывается - Её заказ (ы) и тд. :unsure:
  2. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    т.е. те заказы, на основании которыч была создана накладная... ??? Так.. ??
    Накладную то можно сделать на одном заказе?? Или у вас как то подругому???
  3. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    например вот так

    Код:
    ВЫБРАТЬ
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДокументРасчетовСКонтрагентом.Ответственный КАК Пользователь,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.Контрагент КАК Контрагент,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДоговорКонтрагента КАК Договор,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДокументРасчетовСКонтрагентом КАК Документ,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток КАК НачальныйОстаток,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовПриход КАК Приход,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовРасход КАК Расход,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК КонечныйОстаток
    ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.ОстаткиИОбороты КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты
    
    СГРУППИРОВАТЬ ПО
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДокументРасчетовСКонтрагентом.Ответственный,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.Контрагент,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДоговорКонтрагента,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.ДокументРасчетовСКонтрагентом,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовПриход,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовРасход,
    ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток
    
    УПОРЯДОЧИТЬ ПО
    Пользователь,
    Документ,
    Контрагент,
    Договор
    ИТОГИ
    СУММА(НачальныйОстаток),
    СУММА(Приход),
    СУММА(Расход),
    СУММА(КонечныйОстаток)
    ПО
    ОБЩИЕ,
    Пользователь,
    Контрагент,
    Договор
    
    
  4. TopicStarter Overlay
    Romik
    Offline

    Romik Опытный в 1С

    Регистрация:
    27 июн 2008
    Сообщения:
    238
    Симпатии:
    0
    Баллы:
    26
    Спасибо,сейчас посмотрю:)
    Да под реализцией нужно вывести все заказы которые "влелись" в эту накладную!
    В одной наклданой может быть как один заказ там и много....
  5. TopicStarter Overlay
    Romik
    Offline

    Romik Опытный в 1С

    Регистрация:
    27 июн 2008
    Сообщения:
    238
    Симпатии:
    0
    Баллы:
    26
    Не совсем понятно как эту структуру в макет загнать!
    И как структурировать макет,чтобы были группировки!
  6. TopicStarter Overlay
    Romik
    Offline

    Romik Опытный в 1С

    Регистрация:
    27 июн 2008
    Сообщения:
    238
    Симпатии:
    0
    Баллы:
    26
    В запросе делаю выборку лога

    ВЫБРАТЬ
    | ЛогСклеивания.ДатаРН,
    | ЛогСклеивания.НомерРН,
    | ЛогСклеивания.Контрагент,
    | ЛогСклеивания.МенеджерРН,
    | ЛогСклеивания.ДатаЗаказа,
    | ЛогСклеивания.НомерЗаказа,
    | ЛогСклеивания.МенеджерЗаказа
    |ИЗ
    | РегистрСведений.ЛогСклеивания КАК ЛогСклеивания");

    Теперь мне нужно всё это закинуть в макет!
    Макет имеет вид:
    Накладная - ниже заказы которые входят в накладную и тд....
  7. x_under
    Offline

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

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Посмотри вот это
    Пример
    Код:
    	ТабДок.НачатьАвтогруппировкуСтрок();
    
    ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    ВыборкаОбщийИтог.Следующий();		// Общий итог
    ОбластьОбщийИтог.Параметры.Заполнить(ВыборкаОбщийИтог);
    ТабДок.Вывести(ОбластьОбщийИтог, ВыборкаОбщийИтог.Уровень());
    
    ВыборкаРегистратор = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Пока ВыборкаРегистратор.Следующий() Цикл
    ОбластьРегистратор.Параметры.Заполнить(ВыборкаРегистратор);
    ТабДок.Вывести(ОбластьРегистратор, ВыборкаРегистратор.Уровень());  // уровень и есть группировка
    
    ВыборкаЗаказПокупателя = ВыборкаРегистратор.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Пока ВыборкаЗаказПокупателя.Следующий() Цикл
    ОбластьЗаказПокупателя.Параметры.Заполнить(ВыборкаЗаказПокупателя);
    ТабДок.Вывести(ОбластьЗаказПокупателя, ВыборкаЗаказПокупателя.Уровень());
    
    ВыборкаНоменклатура = ВыборкаЗаказПокупателя.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Пока ВыборкаНоменклатура.Следующий() Цикл
    ОбластьНоменклатура.Параметры.Заполнить(ВыборкаНоменклатура);
    ТабДок.Вывести(ОбластьНоменклатура, ВыборкаНоменклатура.Уровень());
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    
  8. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    Ключевые моменты тут
    ТабДок.НачатьАвтогруппировкуСтрок();
    посмотри еще в helpe Уровень() интересная штука.. можешь потом разворачивать + и -
    ТабДок.ЗакончитьАвтогруппировкуСтрок();
  9. TopicStarter Overlay
    Romik
    Offline

    Romik Опытный в 1С

    Регистрация:
    27 июн 2008
    Сообщения:
    238
    Симпатии:
    0
    Баллы:
    26
    Ага,этот уровень мне и нужен!
    Сделал..выводит только первый уровень...а как сделать подуровни..То есть под каждую наклданую чтобы был + и при его расскрытии выходили заказы,котороые входят в эту накладную ?

    Код:
     Пока Выборка.Следующий() Цикл
    ОбработкаПрерыванияПользователя();
    
    ОбластьДаты.Параметры.Реализация  				= Выборка.НомерРН;
    ОбластьДаты.Параметры.Контрагент  				= Выборка.Контрагент;
    ОбластьДаты.Параметры.ТорговыйПредставитель     = Выборка.МенеджерРН;
    
    ТаблДок.Вывести(ОбластьДаты, ВыборкаРегистратор.Уровень());  // уровень и есть группировка
    
    ВыборкаЗаказПокупателя = ВыборкаРегистратор.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Пока ВыборкаЗаказПокупателя.Следующий() Цикл
    
    ОбластьЗаказа.Параметры.Заказ 						    =  Выборка.НомерЗаказа;
    ОбластьЗаказа.Параметры.Контрагент						=  Выборка.Контрагент;
    ОбластьЗаказа.Параметры.ТорговыйПредставительЗаказ 		=  Выборка.МенеджерЗаказа;
    
    ТаблДок.Вывести(ОбластьЗаказа, ВыборкаЗаказПокупателя.Уровень());
    
    КонецЦикла;
    КонецЦикла;
    
    
  10. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    Уровень можно и самому ставить числом...
    1-ый ТаблДок.Вывести(ОбластьДаты, 0)
    2-ой ТаблДок.Вывести(ОбластьДаты, 1)
    и т.д.
  11. TopicStarter Overlay
    Romik
    Offline

    Romik Опытный в 1С

    Регистрация:
    27 июн 2008
    Сообщения:
    238
    Симпатии:
    0
    Баллы:
    26
    У меня почему-то данные 2-ого цикла вообще не выводятся..группируется только первый цикл и всё....
  12. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    Ребят, разрешите вклиниться.
    А что мешает воспользоваться системой компоновки данных?

    Это раз.
    Дальше.
    Если же нет желания копаться с этим монстром(на самом деле офигенная вещь-все отчеты пишу на СКД),
    то ваш запрос должен выглядеть так:
    Код:
    ТаблДок.НачатьАвтогруппировкуСтрок();
    Пока Выборка.Следующий() Цикл
    ОбработкаПрерыванияПользователя();
    ОбластьДаты.Параметры.Реализация                  = Выборка.НомерРН;
    ОбластьДаты.Параметры.Контрагент                  = Выборка.Контрагент;
    ОбластьДаты.Параметры.ТорговыйПредставитель     = Выборка.МенеджерРН;
    
    ТаблДок.Вывести(ОбластьДаты, ВыборкаРегистратор.Уровень());  // уровень и есть группировка
    
    ВыборкаЗаказПокупателя = ВыборкаРегистратор.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Пока ВыборкаЗаказПокупателя.Следующий() Цикл
    
    ОбластьЗаказа.Параметры.Заказ                             =  Выборка.НомерЗаказа;
    ОбластьЗаказа.Параметры.Контрагент                        =  Выборка.Контрагент;
    ОбластьЗаказа.Параметры.ТорговыйПредставительЗаказ         =  Выборка.МенеджерЗаказа;
    
    ТаблДок.Вывести(ОбластьЗаказа, ВыборкаЗаказПокупателя.Уровень());
    
    КонецЦикла;
    КонецЦикла;
    ТаблДок.ЗакончитьАвтогруппировкуСтрок();
    
    
  13. TopicStarter Overlay
    Romik
    Offline

    Romik Опытный в 1С

    Регистрация:
    27 июн 2008
    Сообщения:
    238
    Симпатии:
    0
    Баллы:
    26
    Выводи только первый цмкл и просто в список..второй вообще не выводит ни как!
    Можето дело в макете?
    Прикрепил полный код!


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

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    так у тебя группировки нет
  15. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    А где у тебя группировка в запросе? По каким группировкам в результате запроса ты ходишь? У тебя их нет!
    Ща скину пример обработки группировками. И, реально, купи книженцию "Разработка сложных отчетов 1 1С.." по СКД. 240 деревом
    и будет тебе счастье с автоматическими группировками.
  16. TopicStarter Overlay
    Romik
    Offline

    Romik Опытный в 1С

    Регистрация:
    27 июн 2008
    Сообщения:
    238
    Симпатии:
    0
    Баллы:
    26
    Блин затупил по страшному:)
    Куда их вставлять то надо эти группировки>?
  17. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    Посмотри во вложении.

    Вложения:

  18. TopicStarter Overlay
    Romik
    Offline

    Romik Опытный в 1С

    Регистрация:
    27 июн 2008
    Сообщения:
    238
    Симпатии:
    0
    Баллы:
    26
    Прикрепи ещё разик..говори,что архив повреждён!

    Скачал!
  19. TopicStarter Overlay
    Romik
    Offline

    Romik Опытный в 1С

    Регистрация:
    27 июн 2008
    Сообщения:
    238
    Симпатии:
    0
    Баллы:
    26
    Так?

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

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    Дружище. Вся соль в запросе. Тебе надо в тексте запроса сделать группировку и итоги.
    Посмотри мой запрос.

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

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