Имя: Пароль:
1C
1С v8
Отчет по кассе
0 Rumpil
 
11.06.12
11:08
Добрый день, господа. Я что то запутался с выведением областей макета.
Макет выглядит след. образом

    Приходы                       Расходы

Статья    Сумма                Статья     Сумма

Если выводить область Строки, то одна из частей получается пустой, в результате форма приобретает след. вид:

   Приходы                       Расходы

Статья1    500          
                       Статья2     300
Статья3    600        
                      Статья 4     150

то есть строки друг под другом, а мне нужно привести макет в вид:

 Приходы                       Расходы

Статья1    500            Статья2     300                      
Статья3    600            Статья 4     150
 

Как это можно сделать ? Направьте плиз
1 Живой Ископаемый
 
11.06.12
11:09
нужно не выводить, а присоединять...
либо переписать запрос, но это отдельная не сильно тривиальная задача
2 kible
 
11.06.12
11:10
(0) 2 ТЗ?
3 Rumpil
 
11.06.12
11:15
(1) сорри, а как это присоединять ?
4 Живой Ископаемый
 
11.06.12
11:22
это слишком легко.. раскажи как выводишь
5 Rumpil
 
11.06.12
11:49
(4) вывожу так:


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

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

   ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
   ОбластьСтроки = Макет.ПолучитьОбласть("Строки");
   ОбластьИтогиПодвал = Макет.ПолучитьОбласть("ИтогиПодвал");

   
   ТабДок.Очистить();
   
   ОбластьШапка.Параметры.ДатаКон = ДатаКон;
   
ТабДок.Вывести(ОбластьШапка);
   
   
   
   ВыборкаСтроки = Результат.Выбрать();
   
   ОбСумПри = 0;
   ОбСумРас = 0;
   
   
   Пока ВыборкаСтроки.Следующий() Цикл
       
       Если ВыборкаСтроки.СумРас = 0 Тогда
           
           ОбластьСтроки.Параметры.Ст1 = ВыборкаСтроки.Ст;
           ОбластьСтроки.Параметры.Ком1 = ВыборкаСтроки.Ком;
           Если ВыборкаСтроки.СумПри=0 тогда
               ОбластьСтроки.Параметры.СумПри = "0";
           Иначе
               ОбластьСтроки.Параметры.СумПри = ВыборкаСтроки.СумПри;
           КонецЕсли;
           ОбСумПри=ОбСумПри+ВыборкаСтроки.СумПри;
           
           
           
       КонецЕсли;
       
       Если ВыборкаСтроки.СумПри = 0 Тогда
           
           ОбластьСтроки.Параметры.Ст2 = ВыборкаСтроки.Ст;
           ОбластьСтроки.Параметры.Ком2 = ВыборкаСтроки.Ком;
           Если ВыборкаСтроки.СумРас=0 тогда
               ОбластьСтроки.Параметры.СумРас = "0";
           Иначе
               ОбластьСтроки.Параметры.СумРас = ВыборкаСтроки.СумРас;
           КонецЕсли;
           ОбСумРас=ОбСумРас+ВыборкаСтроки.СумРас;
           СумНач = СумНач + ВыборкаСтроки.СумНач;
           СумКон = СумКон + ВыборкаСтроки.СумКон;

           
       КонецЕсли;

       
       ТабДок.Вывести(ОбластьСтроки);

       
       
   КонецЦикла;
   
   
   ОбластьИтогиПодвал.Параметры.ОбСумПри = ОбСумПри;    
   ОбластьИтогиПодвал.Параметры.ОбСумРас = ОбСумРас;
   

   
   
   
   ТабДок.Вывести(ОбластьИтогиПодвал);
6 Живой Ископаемый
 
11.06.12
11:55
Ну вот посмотри в СП ТабДок.Вывести(ОбластьСтроки);
и поищи рядом Присоединить
7 Живой Ископаемый
 
11.06.12
11:56
стоп, ничего не выйдет.
только переписывать запрос.
8 Rumpil
 
11.06.12
12:02
(7) а как переписывать, просто направь хотя бы ?
9 Живой Ископаемый
 
11.06.12
12:05
ну а что направлять - нужно чтобы у тебя в одной строке был Приход и Расход...
И в общем-то в частном случае, если они чередуются, может ничего специального и делать не придется.. Но если приходов 10, а расходов 20, что будешь делать?
10 Rumpil
 
11.06.12
12:05
(9) как раз таки второй случай у меня (( ладно, спасибо, сейчас буду копаться
11 Живой Ископаемый
 
11.06.12
12:13
Наверное легче всего для понимания сделать так - отдельно запрос по приходу (но так, чтобы для была зарезервирована колонка для суммы расхода, в нее ставим 0 и статью расхода, в нее Null), отдельно запрос по расходу (но так, чтобы для была зарезервирована колонка для суммы прихода, в нее ставим 0 и статью прихода, в нее Null)
оба результата  выгружаем в ТЗ, добавляем колонку НомерСтроки, потом их обе во Временные Таблицы., Третий запрос на полное соединение, соединяем по номеру строки.
В итоге у тебя получается результат типа такого:
1. СтатьяПрихода1, СуммаПрихода1, СтатьяРасхода1, СуммаРасхода1
2. Null, 0, СтатьяРасхода2, СуммаРасхода2
3. Null, 0, СтатьяРасхода3, СуммаРасхода3

или

1. СтатьяПрихода1, СуммаПрихода1, СтатьяРасхода1, СуммаРасхода1
2. СтатьяПрихода2, СуммаПрихода2, Null, 0
3. СтатьяПрихода3, СуммаПрихода3, Null, 0

в зависмости от того, чего больше приходов или расходов
12 Живой Ископаемый
 
11.06.12
12:14
ну и само собой можно запросом.. наверное
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан