Имя: Пароль:
1C
1С v8
Проблема с Запросом...Хелп...
0 Новый87
 
16.02.15
10:58
Есть запрос по нескольким регистрам...:
ТекстЗапроса = "ВЫБРАТЬ
                   |    ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
                   |    ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
                   |    ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК НачальныйОстаток,
                   |    ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход КАК Приход,
                   |    ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход КАК Расход,
                   |    ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КонечныйОстаток,
                   |    ЕСТЬNULL(ТоварыВРезервеНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0) КАК Резерв,
                   |    ЕСТЬNULL(ТоварыКПолучениюНаСкладыОстаткиИОбороты.КоличествоКонечныйОстаток, 0) КАК КПолучению,
                   |    ЕСТЬNULL(ТоварыКПередачеСоСкладовОстаткиИОбороты.КоличествоКонечныйОстаток, 0) КАК КПередаче,
                   |    ЕСТЬNULL(ЗаказыПоставщикамОстаткиИОбороты.КоличествоКонечныйОстаток, 0) КАК УПоставщиков,
                   |    ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0) - ЕСТЬNULL(ТоварыВРезервеНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0) - ЕСТЬNULL(ТоварыКПередачеСоСкладовОстаткиИОбороты.КоличествоКонечныйОстаток, 0) КАК СвободныйОстаток,
                   |    ЕСТЬNULL(ЗаказыПокупателейОстатки.КоличествоОстаток, 0)  КАК ОсталосьОбеспечить
                   |{ВЫБРАТЬ
                   |    Номенклатура.*,
                   |    Склад.*,
                   |    НачальныйОстаток,
                   |    Приход,
                   |    Расход,
                   |    КонечныйОстаток,
                   |    Резерв,
                   |    КПолучению,
                   |    КПередаче,
                   |    УПоставщиков,
                   |    СвободныйОстаток,
                   |    ОсталосьОбеспечить}
                   |ИЗ
                   |    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Авто, , ) КАК ТоварыНаСкладахОстаткиИОбороты
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПолучениюНаСклады.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Авто, , ) КАК ТоварыКПолучениюНаСкладыОстаткиИОбороты
                   |        ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ТоварыКПолучениюНаСкладыОстаткиИОбороты.Номенклатура
                   |            И ТоварыНаСкладахОстаткиИОбороты.Склад = ТоварыКПолучениюНаСкладыОстаткиИОбороты.Склад
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКПередачеСоСкладов.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Авто, , ) КАК ТоварыКПередачеСоСкладовОстаткиИОбороты
                   |        ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ТоварыКПередачеСоСкладовОстаткиИОбороты.Номенклатура
                   |            И ТоварыНаСкладахОстаткиИОбороты.Склад = ТоварыКПередачеСоСкладовОстаткиИОбороты.Склад
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Авто, , ) КАК ЗаказыПоставщикамОстаткиИОбороты
                   |        ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ЗаказыПоставщикамОстаткиИОбороты.Номенклатура
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РазмещениеЗаказовПокупателей.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Авто, , ) КАК РазмещениеЗаказовПокупателейОстаткиИОбороты
                   |        ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = РазмещениеЗаказовПокупателейОстаткиИОбороты.Номенклатура
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Авто, , ) КАК ТоварыВРезервеНаСкладахОстаткиИОбороты
                   |        ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ТоварыВРезервеНаСкладахОстаткиИОбороты.Номенклатура
                   |            И ТоварыНаСкладахОстаткиИОбороты.Склад = ТоварыВРезервеНаСкладахОстаткиИОбороты.Склад
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаКон {(&ДатаКон)}) КАК ЗаказыПокупателейОстатки
                   |        ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ЗаказыПокупателейОстатки.Номенклатура
                   |{ГДЕ
                   |    ТоварыНаСкладахОстаткиИОбороты.Номенклатура.*,
                   |    ТоварыНаСкладахОстаткиИОбороты.Склад.*}
                   |{УПОРЯДОЧИТЬ ПО
                   |    Номенклатура.*}
                   |ИТОГИ
                   |    СУММА(НачальныйОстаток),
                   |    СУММА(Приход),
                   |    СУММА(Расход),
                   |    СУММА(КонечныйОстаток),
                   |    СУММА(Резерв),
                   |    СУММА(КПолучению),
                   |    СУММА(КПередаче),
                   |    СУММА(УПоставщиков),
                   |    СУММА(СвободныйОстаток),
                   |    СУММА(ОсталосьОбеспечить)
                   |ПО
                   |    ОБЩИЕ,
                   |    Номенклатура ИЕРАРХИЯ
                   |{ИТОГИ ПО
                   |    Номенклатура.*,
                   |    Склад.*}
                   |АВТОУПОРЯДОЧИВАНИЕ";    
Проблема в том, что сумма в осталось обеспечить близко не та... умноженная на некоторое число...Добрые люди подскажите где я ошибся?!
1 Alexaha
 
16.02.15
11:05
(0) из ТоварыНаСкладахОстаткиИОбороты ты выбираешь 2 измерения (номенклатура и склад) а свзяываешься с ЗаказыПокупателейОстатки только по номенклатуре в результате получаешь несколько строк остатков по заказам соответствии с количеством складов
2 Ёпрст
 
гуру
16.02.15
11:06
периодичность не авто поставь
3 torgm
 
16.02.15
11:09
(0) насколько правомерны здесь  соединения?
Вполне возможны ситуации когда товаров нет на складах, а в заказах покупателей и заказах поставщикам есть....
4 Новый87
 
16.02.15
11:15
(1) Но для ТоварыВРезервеНаСкладахОстаткиИОбороты ведь не мешает то что нет склада, суммы верные получает!
5 Новый87
 
16.02.15
11:20
(2) Поигрался с периодичностью...у вычисляемого поля СвободныйОстаток сумма ушла((
6 Новый87
 
16.02.15
11:23
(3) Если я правильно понимаю ЛЕВОЕ СОЕДИНЕНИЕ добавит только там значение где есть совпадение по номенклатуре(и складу) в остальных случаях не должно?!
7 Alexaha
 
16.02.15
11:30
(4) с резеровами у тебя связь по двум полям
8 Новый87
 
16.02.15
11:32
(7) Изменяюсь...промазал...ЗаказыПоставщикамОстаткиИОбороты
9 hhhh
 
16.02.15
11:47
(8) уже ведь выяснили ведь. Для каждого склада у вас пишет полный резерв. Поэтому он будет умножен на количество складов в итоге. Так же и другие соединения у вас, которые только по номенклатуре.
10 rabbidX
 
16.02.15
11:58
В итогах для Сумма обеспечить вместо Сумма поставь Максимум
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn