Имя: Пароль:
1C
1С v8
Вывести колонки в ручном отчете
0 D_Sergeevich
 
13.09.13
11:55
Приветствую.
Нужен отчет типа такого http://i57.fastpic.ru/big/2013/0912/a2/162b2850f5e752ee63775dcb4904bfa2.png

Нарисовал макет http://i60.fastpic.ru/big/2013/0913/7b/06c4c7ce12b3203a78c1c6ea8f74427b.png
Для наглядности результат запроса http://i59.fastpic.ru/big/2013/0913/bd/e7338732d12ea57e08794f4cf8a519bd.png

Помогите разобраться что где когда вставлять и выводить

Процедура СформироватьОтчет(НачалоПериода, КонецПериода, Валюта)
   Макет = Отчеты.ГлавнаяКнига.ПолучитьМакет("Книга");
   ОблШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
   ОблДанные = Макет.ПолучитьОбласть("Данные");
   ОблСчет = Макет.ПолучитьОбласть("ШапкаТаблицы|Счет");
   ОблИтоги = Макет.ПолучитьОбласть("Итоги");
   ОблСальдо = Макет.ПолучитьОбласть("Сальдо");
   ТабДок.Очистить();
  
   ТабДок.Вывести(ОблШапкаТаблицы);

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

   Запрос.УстановитьПараметр("Валюта", Валюта);
   Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
   Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);

   Результат = Запрос.Выполнить();

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

   ВыборкаОбщийИтог.Следующий();      // Общий итог

   // Вставить обработку выборки ВыборкаОбщийИтог

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

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

      Пока ВыборкаСчетКод.Следующий() Цикл
         // Вставить обработку выборки ВыборкаСчетКод
      
         ВыборкаДетальныеЗаписи = ВыборкаСчетКод.Выбрать();

         Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            // Вставить обработку выборки ВыборкаДетальныеЗаписи
            
         КонецЦикла;
      КонецЦикла;
   КонецЦикла;
КонецПроцедуры
1 D_Sergeevich
 
13.09.13
12:27
Up
2 Любопытная
 
13.09.13
12:52
А чего период везде NULL?
Не, я так не напишу, надо руками щупать.
3 cw014
 
13.09.13
12:54
Ты бы картинки побольше бы сделал, а то открываются нагруженные женщинами сайты...

Номер Ж/О - +100500
4 D_Sergeevich
 
13.09.13
12:57
(2) Период не NULL, это где ненужно итогов там NULL
(3) Там на картинку просто нужно кликать, дэбильный хост по напихивал рекламы, больше им не буду пользоваться.
Номер Ж/О - это номер журнального ордера ))
5 Любопытная
 
13.09.13
12:58
Вот, вроде представила:
обходишь группировку по СчетКод, на каждую строку добавляешь колонку, заполняешь итоги, идешь внутрь до детальных записей, пишешь строки по месяцам. Если я правильно поняла, что у тебя в детальных записях
6 D_Sergeevich
 
13.09.13
13:13
Блин не выходит, все вперемешку как то. Вообще может есть где нибудь пример присоединения колонок?