Имя: Пароль:
1C
1С v8
Нужна помощь с запросом
0 Metman
 
15.05.12
06:49
Здравствуйте.Почему задваивается начальный остаток?


ВЫБРАТЬ
                     |    ЦеныНоменклатуры.Период КАК ПериодНачало,
                     |    МИНИМУМ(ЦеныНоменклатурыКопия.Период) КАК ПериодКонец,
                     |    ЦеныНоменклатуры.Номенклатура,
                     |    ЦеныНоменклатуры.Цена
                     |ПОМЕСТИТЬ ПредварительнаяВыборка
                     |ИЗ
                     |    РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
                     |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатурыКопия
                     |        ПО ЦеныНоменклатуры.Номенклатура = ЦеныНоменклатурыКопия.Номенклатура
                     |            И ЦеныНоменклатуры.ЕдиницаИзмерения = ЦеныНоменклатурыКопия.ЕдиницаИзмерения
                     |            И ЦеныНоменклатуры.ХарактеристикаНоменклатуры = ЦеныНоменклатурыКопия.ХарактеристикаНоменклатуры
                     |            И ЦеныНоменклатуры.Валюта = ЦеныНоменклатурыКопия.Валюта
                     |            И ЦеныНоменклатуры.ТипЦен = ЦеныНоменклатурыКопия.ТипЦен
                     |            И ЦеныНоменклатуры.Период < ЦеныНоменклатурыКопия.Период
                     |ГДЕ
                     |    ЦеныНоменклатуры.ТипЦен = &ТипЦен
                     |
                     |СГРУППИРОВАТЬ ПО
                     |    ЦеныНоменклатуры.Период,
                     |    ЦеныНоменклатуры.Номенклатура,
                     |    ЦеныНоменклатуры.Цена
                     |;
                     |
                     |////////////////////////////////////////////////////////////////////////////////
                     |ВЫБРАТЬ
                     |    ЦеныПоПериодам.ПериодНачало КАК ПериодНачало,
                     |    КОНЕЦПЕРИОДА(ЕСТЬNULL(ДОБАВИТЬКДАТЕ(ЦеныПоПериодам.ПериодКонец, ДЕНЬ, -1), ДАТАВРЕМЯ(3999, 12, 31)), ДЕНЬ) КАК ПериодКонец,
                     |    ЦеныПоПериодам.Номенклатура КАК Номенклатура,
                     |    ЦеныПоПериодам.Цена
                     |ПОМЕСТИТЬ Цены
                     |ИЗ
                     |    ПредварительнаяВыборка КАК ЦеныПоПериодам
                     |;
                     |
                     |////////////////////////////////////////////////////////////////////////////////
                     |ВЫБРАТЬ РАЗРЕШЕННЫЕ
                     |    NULL КАК Док,
                     |    NULL КАК ДатаДок,
                     |    NULL КАК НомерДок,
                     |    СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток * ЕСТЬNULL(Цены.Цена, 0)) КАК НачОст,
                     |    СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток * ЕСТЬNULL(Цены.Цена, 0)) КАК КонОст,
                     |    СУММА(ВЫБОР
                     |            КОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход - ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход > 0
                     |                ТОГДА (ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход - ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход) * ЕСТЬNULL(Цены.Цена, 0)
                     |            ИНАЧЕ 0
                     |        КОНЕЦ) КАК Приход,
                     |    СУММА(ВЫБОР
                     |            КОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход - ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход > 0
                     |                ТОГДА (ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход - ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход) * ЕСТЬNULL(Цены.Цена, 0)
                     |            ИНАЧЕ 0
                     |        КОНЕЦ) КАК Расход,
                     |    ТоварыНаСкладахОстаткиИОбороты.Регистратор.СуммаДокумента КАК СуммаДокумента
                     |ИЗ
                     |    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&Дата1, &Дата2, Регистратор, , Склад = &Склад) КАК ТоварыНаСкладахОстаткиИОбороты
                     |        ЛЕВОЕ СОЕДИНЕНИЕ Цены КАК Цены
                     |        ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = Цены.Номенклатура
                     |            И ТоварыНаСкладахОстаткиИОбороты.Период >= Цены.ПериодНачало
                     |            И ТоварыНаСкладахОстаткиИОбороты.Период <= Цены.ПериодКонец
                     |
                     |СГРУППИРОВАТЬ ПО
                     |    ТоварыНаСкладахОстаткиИОбороты.Регистратор.СуммаДокумента
                     |;
                     
                     
                     |////////////////////////////////////////////////////////////////////////////////
                     |ВЫБРАТЬ РАЗРЕШЕННЫЕ
                     |    СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток * ЕСТЬNULL(Цены.Цена, 0)) КАК НачОст,
                     |    СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток * ЕСТЬNULL(Цены.Цена, 0)) КАК КонОст,
                     |    СУММА(ВЫБОР
                     |            КОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход - ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход > 0
                     |                ТОГДА (ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход - ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход) * ЕСТЬNULL(Цены.Цена, 0)
                     |            ИНАЧЕ 0
                     |        КОНЕЦ) КАК Приход,
                     |    СУММА(ВЫБОР
                     |            КОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход - ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход > 0
                     |                ТОГДА (ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход - ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход) * ЕСТЬNULL(Цены.Цена, 0)
                     |            ИНАЧЕ 0
                     |        КОНЕЦ) КАК Расход,
                     |    ТоварыНаСкладахОстаткиИОбороты.Период КАК ДатаДок,
                     |    ТоварыНаСкладахОстаткиИОбороты.Регистратор.Номер КАК НомерДок,
                     |    ТоварыНаСкладахОстаткиИОбороты.Регистратор КАК Док,
                     |    ТоварыНаСкладахОстаткиИОбороты.Регистратор.СуммаДокумента КАК СуммаДокумента
                     |ИЗ
                     |    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&Дата1, &Дата2, Регистратор, , Склад = &Склад) КАК ТоварыНаСкладахОстаткиИОбороты
                     |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Цены КАК Цены
                     |        ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = Цены.Номенклатура
                     |            И ТоварыНаСкладахОстаткиИОбороты.Период >= Цены.ПериодНачало
                     |            И ТоварыНаСкладахОстаткиИОбороты.Период <= Цены.ПериодКонец
                     |
                     |СГРУППИРОВАТЬ ПО
                     |    ТоварыНаСкладахОстаткиИОбороты.Период,
                     |    ТоварыНаСкладахОстаткиИОбороты.Регистратор.Номер,
                     |    ТоварыНаСкладахОстаткиИОбороты.Регистратор,
                     |    ТоварыНаСкладахОстаткиИОбороты.Регистратор.СуммаДокумента
                     |
                     |УПОРЯДОЧИТЬ ПО
                     |    ДатаДок";
1 Wobland
 
15.05.12
06:53
почти не глядя: не учитываешь все измерения в соединении
2 АцкийЖипер
 
15.05.12
07:31
А что нужно получить запросом? Цель то какая?
3 Metman
 
15.05.12
07:34
торг-29 для оптовых складов
4 davlen
 
15.05.12
07:44
Кури параметры вирт таблиц РегНакопОстаткиИОбороты МетодДополнения