Имя: Пароль:
1C
1С v8
Запрос, регистр накопления, правильно задать период
0 lg2marvel
 
22.08.16
15:20
Добрый день, нужен запрос в регистр накопления, есть следующее:

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

    ЗапросПоДеньгам.УстановитьПараметр("ДатаОтчетаНачало", Шапка.Дата);
    ЗапросПоДеньгам.УстановитьПараметр("ДатаОтчетаКонец", Шапка.Дата);
    ЗапросПоДеньгам.УстановитьПараметр("ДСклад", Шапка.Склад);
    ЗапросПоДеньгам.УстановитьПараметр("ДСКасса", ТекКасса);

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

    ОткрытьЗначение(Результат.Выгрузить(ОбходРезультатаЗапроса.Прямой));

Результат - ноль. Если оставляю РегистрНакопления.ДвиженияДенежныхСредств.Обороты КАК ДвиженияДенежныхСредствОбороты, то выводит правильный остаток на конец, а как правильно сделать остаток на конкретную дату?
1 Горогуля
 
22.08.16
15:21
убери отбор по правой таблице
2 Горогуля
 
22.08.16
15:22
и декартово произведение тоже убери
3 Горогуля
 
22.08.16
15:23
и вообще нарисуй запрос с нуля. медленно и неторопливо
4 lg2marvel
 
22.08.16
15:24
(2) Результат тотже - ноль

    |    ВЫБРАТЬ
    |        Склады.Ссылка КАК Склад,
    |        ДвиженияДенежныхСредствОбороты.СуммаОборот,
    |        Кассы.Ссылка Как Касса
    |    ИЗ
    |        Справочник.Склады КАК Склады
    |            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ТорговыеОбъекты КАК ТорговыеОбъекты
    |            ПО Склады.ТорговыйОбъект = ТорговыеОбъекты.Ссылка,
    |        РегистрНакопления.ДвиженияДенежныхСредств.Обороты(&ДатаОтчетаНачало, &ДатаОтчетаКонец, Авто, ) КАК ДвиженияДенежныхСредствОбороты
//    |        РегистрНакопления.ДвиженияДенежныхСредств.Обороты КАК ДвиженияДенежныхСредствОбороты
    |            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Кассы КАК Кассы
    |            ПО ДвиженияДенежныхСредствОбороты.БанковскийСчетКасса = Кассы.Ссылка
//    |    ГДЕ (Склады.Ссылка = &ДСклад) И (Кассы.Ссылка = &ДСКасса)
    |    СГРУППИРОВАТЬ ПО
    |    Склады.Ссылка,
    |    Кассы.Ссылка,
    |    ДвиженияДенежныхСредствОбороты.СуммаОборот
    |";
5 vicof
 
22.08.16
15:32
Началопериода, конецпериода
6 Горогуля
 
22.08.16
15:33
(4) теперь переходи к (2) и (3)
7 lg2marvel
 
22.08.16
15:42
Переписал запрос:

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

    ЗапросПоДеньгам.УстановитьПараметр("ДатаОтчетаНачало", Шапка.Дата);
    ЗапросПоДеньгам.УстановитьПараметр("ДатаОтчетаКонец", Шапка.Дата);
    ЗапросПоДеньгам.УстановитьПараметр("ДСКасса", ТекКасса);

Результат тот же
8 Горогуля
 
22.08.16
15:43
даже конструктор такое выплюнет
9 lg2marvel
 
22.08.16
15:43
(7) Чуть неправильный

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

    ЗапросПоДеньгам.УстановитьПараметр("ДатаОтчетаНачало", Шапка.Дата);
    ЗапросПоДеньгам.УстановитьПараметр("ДатаОтчетаКонец", Шапка.Дата);
    ЗапросПоДеньгам.УстановитьПараметр("ДСКасса", ТекКасса);
10 lg2marvel
 
22.08.16
15:43
(8) Он и выплевывает, но отбор по датам не работает :-(
11 Горогуля
 
22.08.16
15:45
выбрать поместить НужныеКассы;
выбрать из НужныеКассы левое движения
12 vicof
 
22.08.16
15:50
-Доктор, меня никто не слушает
-Следующий
13 hhhh
 
22.08.16
15:51
(10)     ЗапросПоДеньгам.УстановитьПараметр("ДатаОтчетаНачало", Шапка.Дата);
    ЗапросПоДеньгам.УстановитьПараметр("ДатаОтчетаКонец", Шапка.Дата);

так вам за период в одну секунду надо? Может в эту секунду и не было оборота?
14 lg2marvel
 
22.08.16
15:56
(13) На конец дня
15 Горогуля
 
22.08.16
15:56
(14) а по коду не скажешь
16 hhhh
 
22.08.16
15:57
(14) оборот на конец? как это понять?
17 Горогуля
 
22.08.16
15:59
18 lg2marvel
 
22.08.16
16:03
(16) Остаток на конец
19 Горогуля
 
22.08.16
16:05
(18) для этого в запросе обязательно нужно что-то про остатки
20 hhhh
 
22.08.16
16:08
(19) ДвиженияДенежныхСредств - оборотный регистр
21 lg2marvel
 
22.08.16
16:10
Всем спасибо

    ЗапросПоДеньгам.Текст =    "
    |    ВЫБРАТЬ
    |        ДвиженияДенежныхСредствОбороты.СуммаОстаток
//    |        ДвиженияДенежныхСредствОбороты.БанковскийСчетКасса
    |    ИЗ
//    |        РегистрНакопления.ДвиженияДенежныхСредств.Обороты( &ДатаОтчетаНачало, &ДатаОтчетаКонец,) КАК ДвиженияДенежныхСредствОбороты
    |        РегистрНакопления.ДенежныеСредства.Остатки(&ДатаОтчетаКонец) КАК ДвиженияДенежныхСредствОбороты
    |
    |    ГДЕ (ДвиженияДенежныхСредствОбороты.БанковскийСчетКасса = &ДСКасса)
    |    СГРУППИРОВАТЬ ПО
//    |    ДвиженияДенежныхСредствОбороты.БанковскийСчетКасса,
    |    ДвиженияДенежныхСредствОбороты.СуммаОстаток
    |";
22 Горогуля
 
22.08.16
16:10
отлично! тогда остатки не нужны
23 Горогуля
 
22.08.16
16:10
он уже и регистр сменил
24 hhhh
 
22.08.16
16:16
(21) остаки всегда на начало бывают. на конец не прокатит у вас
25 lg2marvel
 
23.08.16
09:09
(24) Спасибо, в данном случае это не принципиально, но набудущее учту.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой