Имя: Пароль:
1C
1С v8
Проблема с выводом отчета.
0 FuriKuri
 
16.09.12
12:55
Доброго всем дня. Такая вот проблема. Пытаюсь вывести отчет о движениях и остатках объектов проката. Отчет строится руками (Так надо). Макет отчета выглядит примерно так.

Шапка
Ур2 - Склад                             Приход   Расход   остаток
Ур3 - ПредОбъектыПроката  
Ур4 -  Документ              НачОстаток Приход   Расход   Остаток  


Вот собственно код:


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

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

ОбластьЗаголовка = Макет.ПолучитьОбласть("Шапка");
ОбластьЗаголовка.Параметры.Заголовок = "Остатки и движения объектов проката";
ТабДок.Вывести(ОбластьЗаголовка);

//Предприятие
ОбластьПодзаголовок = Макет.ПолучитьОбласть("Ур1");
ТабДок.Вывести(ОбластьПодзаголовок);
ОбластьСклада = Макет.ПолучитьОбласть("Ур2");
ОбластьОбъект = Макет.ПолучитьОбласть("Ур3");
ОбластьДок = Макет.ПолучитьОбласть("Ур4");


Результат = Запрос.Выполнить();
ТабДок.НачатьАвтогруппировкуСтрок();
ВыборкаГруппа=Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией,"Склад");
Пока ВыборкаГруппа.Следующий() Цикл
ОбластьСклада.Параметры.Заполнить(ВыборкаГруппа);
ТабДок.Вывести(ОбластьСклада,ВыборкаГруппа.Уровень());
ВыборкаДетали = ВыборкаГруппа.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"ПредОбъектыПроката",);

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




Все Выводится. Но, нет данных по приходам и расходам у клиентов, и в последнем столбике с конечным остатком не правильно выщитывается итог по складу, хотя итог по приходу и расходу правильный. В чем моя ошибка?
1 sanja26
 
16.09.12
13:01
|    ОстаткиОбъектовПрокатаПредприятияОстаткиИОбороты.Склад КАК Склад,

с клиентом объединяешь
2 FuriKuri
 
16.09.12
13:03
Ну регистры схожи, думал заработет.
3 sanja26
 
16.09.12
13:06
склад и клиент схожи? все равно, что номенклатура и физические лица
4 FuriKuri
 
16.09.12
13:07
Я имел ввиду по структуре... Тогда как мне с вытащить инфу по ним?
5 FuriKuri
 
16.09.12
13:47
Никто не подскажет?
6 sanja26
 
16.09.12
13:55
по реквизитам регистратора надо наверно связывать
7 sanja26
 
16.09.12
14:08
регистратор второго запроса, там склад, думаю, должен быть
8 FuriKuri
 
16.09.12
15:28
Тоесть Объекты и клиентов за NULLивать а связывать только пе регистратору?
9 sanja26
 
16.09.12
15:34
даже с 1с иногда думать надо)