Имя: Пароль:
1C
1С v8
Регистр Накопления По дням из Временной Таблицы
,
0 spiller26
 
29.10.12
10:10
Создаю временную таблицу по дням, передаю в основной запрос, но все равно выдает мне обороты по тем дням, по которым были движки.

Процедура СформироватьОтчет()
   Перем МенВрТаб;
   
   ТаблицаДата = Новый ТаблицаЗначений;
   ТаблицаДата.Колонки.Добавить("ДатаДень",Новый ОписаниеТипов("Дата"),,);
   СледующийДень = ДатаН;
   //
   Пока СледующийДень < ДатаК Цикл
       Стр=ТаблицаДата.Добавить();
       Стр.ДатаДень = СледующийДень;
       СледующийДень = СледующийДень + 60 * 60 * 24; //
   КонецЦикла;
   //создание временной таблицы
   МенВрТаб = Новый МенеджерВременныхТаблиц;
   ЗапросДат = Новый Запрос;
   ЗапросДат.МенеджерВременныхТаблиц = МенВрТаб;
   ЗапросДат.Текст = "
   |ВЫБРАТЬ
   | ТЗДата.ДатаДень
   |ПОМЕСТИТЬ ВыбДатаПериод // результат запроса помещается во временную таблицу ВыбДатаПериод
   |ИЗ
   | &ТЗДата КАК ТЗДата";
   ЗапросДат.УстановитьПараметр("ТЗДата", ТаблицаДата);
   ЗапросДат.Выполнить();
   //основной запрос
   Запрос1 = Новый Запрос;
   Запрос1.МенеджерВременныхТаблиц = МенВрТаб;
   Запрос1.Текст = "ВЫБРАТЬ
                   |    ДвиженияДенежныхСредствОбороты.Период,
                   |    ДвиженияДенежныхСредствОбороты.Организация КАК Организация,
                   |    ДвиженияДенежныхСредствОбороты.БанковскийСчетКасса КАК БанковскийСчетКасса,
                   |    СУММА(ДвиженияДенежныхСредствОбороты.СуммаОборот) КАК СуммаОборот,
                   |    ДвиженияДенежныхСредствОбороты.ПриходРасход,
                   |    ДвиженияДенежныхСредствОбороты.ДоговорКонтрагента.ВидВзаиморасчетов КАК ВидыВзаиморасчетовДоговора,
                   |    ДвиженияДенежныхСредствОбороты.СтатьяДвиженияДенежныхСредств КАК СтатьяДДС,
                   |    ВыбДатаПериод.ДатаДень
                   |ИЗ
                   |    ВыбДатаПериод КАК ВыбДатаПериод
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДвиженияДенежныхСредств.Обороты(&НачалоПериода, &КонецПериода, День, ) КАК ДвиженияДенежныхСредствОбороты
                   |        ПО ВыбДатаПериод.ДатаДень = ДвиженияДенежныхСредствОбороты.Период
                   |ГДЕ
                   |    ДвиженияДенежныхСредствОбороты.Организация = &Организация
                   |    И ДвиженияДенежныхСредствОбороты.ПриходРасход = &ПриходРасход
                   |    И ДвиженияДенежныхСредствОбороты.БанковскийСчетКасса В(&СписокБК)
                   |    И ДвиженияДенежныхСредствОбороты.СтатьяДвиженияДенежныхСредств В(&СписокСтатейДДС)
                   |    И ДвиженияДенежныхСредствОбороты.ДоговорКонтрагента.ВидВзаиморасчетов В(&СписокВидовВзаиморасчетов)
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    ДвиженияДенежныхСредствОбороты.Период,
                   |    ДвиженияДенежныхСредствОбороты.Организация,
                   |    ДвиженияДенежныхСредствОбороты.БанковскийСчетКасса,
                   |    ДвиженияДенежныхСредствОбороты.ПриходРасход,
                   |    ДвиженияДенежныхСредствОбороты.ДоговорКонтрагента.ВидВзаиморасчетов,
                   |    ДвиженияДенежныхСредствОбороты.СтатьяДвиженияДенежныхСредств,
                   |    ВыбДатаПериод.ДатаДень
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    Организация,
                   |    БанковскийСчетКасса,
                   |    ДвиженияДенежныхСредствОбороты.СтатьяДвиженияДенежныхСредств,
                   |    ДвиженияДенежныхСредствОбороты.Период";
   //Установка параметров запроса
   Запрос1.УстановитьПараметр("НачалоПериода",    ДатаН);                //Дата
   Запрос1.УстановитьПараметр("КонецПериода",    КонецДня(ДатаК));    //Дата
   Запрос1.УстановитьПараметр("Организация",    Организация);        //Организация
   Запрос1.УстановитьПараметр("ПриходРасход",    ПриходРасход);        //Виды движений приход/расход
   Запрос1.УстановитьПараметр("СписокБК",    СписокБК);                //Банковский счет, Кассы
   Запрос1.УстановитьПараметр("СписокВидовВзаиморасчетов",    СписокВидовВзаиморасчетов);     //Виды взаиморасчетов
   Запрос1.УстановитьПараметр("СписокСтатейДДС",    СписокСтатейДДС);     //Статьи движения денежных средств
   Результат = Запрос1.Выполнить();
   ТЗВывод = Результат.Выгрузить(); //выгружаем запрос
   ВыводНаФорму(); //вывод    
КонецПроцедуры
1 Cube
 
29.10.12
10:11
"ЛЕВОЕ СОЕДИНЕНИЕ" замени на "ПОЛНОЕ СОЕДИНЕНИЕ"
2 spiller26
 
29.10.12
10:13
(1) пропускает всё равно
3 spiller26
 
29.10.12
10:14
Индекс    Период    ПриходРасход    СтатьяДДС    ДатаДень
0    02.07.2012 0:00:00    Приход    Оплата от покупателя    02.07.2012 0:00:00
1    03.07.2012 0:00:00    Приход    Оплата от покупателя    03.07.2012 0:00:00
2    04.07.2012 0:00:00    Приход    Оплата от покупателя    04.07.2012 0:00:00
3    05.07.2012 0:00:00    Приход    Оплата от покупателя    05.07.2012 0:00:00
4    06.07.2012 0:00:00    Приход    Оплата от покупателя    06.07.2012 0:00:00
5    09.07.2012 0:00:00    Приход    Оплата от покупателя    09.07.2012 0:00:00
6    10.07.2012 0:00:00    Приход    Оплата от покупателя    10.07.2012 0:00:00
7    11.07.2012 0:00:00    Приход    Оплата от покупателя    11.07.2012 0:00:00
8    12.07.2012 0:00:00    Приход    Оплата от покупателя    12.07.2012 0:00:00
9    13.07.2012 0:00:00    Приход    Оплата от покупателя    13.07.2012 0:00:00
10    16.07.2012 0:00:00    Приход    Оплата от покупателя    16.07.2012 0:00:00
11    17.07.2012 0:00:00    Приход    Оплата от покупателя    17.07.2012 0:00:00
12    18.07.2012 0:00:00    Приход    Оплата от покупателя    18.07.2012 0:00:00
13    19.07.2012 0:00:00    Приход    Оплата от покупателя    19.07.2012 0:00:00
14    20.07.2012 0:00:00    Приход    Оплата от покупателя    20.07.2012 0:00:00
15    23.07.2012 0:00:00    Приход    Оплата от покупателя    23.07.2012 0:00:00
16    24.07.2012 0:00:00    Приход    Оплата от покупателя    24.07.2012 0:00:00
17    25.07.2012 0:00:00    Приход    Оплата от покупателя    25.07.2012 0:00:00
18    26.07.2012 0:00:00    Приход    Оплата от покупателя    26.07.2012 0:00:00
19    27.07.2012 0:00:00    Приход    Оплата от покупателя    27.07.2012 0:00:00
20    30.07.2012 0:00:00    Приход    Оплата от покупателя    30.07.2012 0:00:00
21    31.07.2012 0:00:00    Приход    Оплата от покупателя
4 Cube
 
29.10.12
10:15
(2) Потому что у тебя есть конструкция ГДЕ - она всё режет после (1)
5 butterbean
 
29.10.12
10:16
(0) замени ГДЕ на И
6 spiller26
 
29.10.12
10:19
(5) Тогда условие не выполняется
7 PCcomCat
 
29.10.12
10:26
В левом соединении в скобках укажи условие по ПриходРасход, а из где убери, т.к. твоё условие срабатывает для результата объединения.
8 PCcomCat
 
29.10.12
10:27
+(7) Точнее, все свои ГДЕ в скобки как отбор для регистра конкретно.
9 butterbean
 
29.10.12
10:28
большинство из этих условий вообще надо запихнуть в параметры вирт. талицы
10 spiller26
 
29.10.12
10:47
(8) запихныл в параметры ВТ "ДвиженияДенежныхСредств" помогло

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