8.х Макет

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем qwertyu, 2 дек 2011.

  1. TopicStarter Overlay
    qwertyu
    Offline

    qwertyu Опытный в 1С

    Регистрация:
    11 ноя 2011
    Сообщения:
    609
    Симпатии:
    0
    Баллы:
    26
    Добрый день!
    Помогите пожалуйста разобраться, как вывести отчет с иерархией по складам?
    Я написал такой код, но выводится все не правильно.

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

    Вложения:

  2. Максим
    Offline

    Максим Опытный в 1С

    Регистрация:
    28 фев 2008
    Сообщения:
    688
    Симпатии:
    8
    Баллы:
    29
    Я думаю, что стоит использовать, все-таки итоги (Тип итогов -Элементы и иерархия), а не группировку
  3. TopicStarter Overlay
    qwertyu
    Offline

    qwertyu Опытный в 1С

    Регистрация:
    11 ноя 2011
    Сообщения:
    609
    Симпатии:
    0
    Баллы:
    26
    Лано, попробуем!
  4. TopicStarter Overlay
    qwertyu
    Offline

    qwertyu Опытный в 1С

    Регистрация:
    11 ноя 2011
    Сообщения:
    609
    Симпатии:
    0
    Баллы:
    26
    А как в макете сделать Область ОбщиеИтоги, как она должна выглядеть?
  5. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Ну, также как и область "Заголовок" и другие области.
  6. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    P.s. На мой взгляд лучше сделать отчет на СКД. Все таки механизм более функциональный. Там и макет настроите какой надо. Да и с иерархией проблем не будет. Вообще можно сделать необходимый Вам отчет без программирования.
  7. n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.358
    Симпатии:
    5
    Баллы:
    29
    Итог вычисли в цикле, но самый оптимальный вариант вычислить в запросе.
    Код:
    Итого=0;
    Итого = Итого+ Сумма;
    Область.Параметры.Итого = Итого;
    
    
    
    
  8. TopicStarter Overlay
    qwertyu
    Offline

    qwertyu Опытный в 1С

    Регистрация:
    11 ноя 2011
    Сообщения:
    609
    Симпатии:
    0
    Баллы:
    26
    Подскажите пожалуйста, что в этой таблице ПодвалТаблицы и ОбщиеИтоги и Детали?

    Вложения:

  9. TopicStarter Overlay
    qwertyu
    Offline

    qwertyu Опытный в 1С

    Регистрация:
    11 ноя 2011
    Сообщения:
    609
    Симпатии:
    0
    Баллы:
    26
    Как в СУММА закинуть не один параметр?
    Так?
    СУММА(пер1, пер2, пер3,...,перN)
  10. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Выбираете не параметр, а шаблон. И пишите что-то типа того: Сумма([пер1],[пер2],[пер3],...,[перN])

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