Помогите плиз с запросом, вывожу продажи и тут же остатки. Почему-то остатки выводятся кардинально неверно. Не могу понять где ошибся.
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток,
| ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК ОстатокРезерв,
| ПродажиОбороты.ДокументПродажи,
| ПродажиОбороты.Контрагент,
| ПродажиОбороты.КоличествоОборот КАК КоличествоОборот,
| ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот,
| ПродажиОбороты.СтоимостьБезСкидокОборот КАК СтоимостьБезСкидокОборот,
| ПродажиОбороты.НДСОборот КАК НДСОборот,
| ПродажиОбороты.КоличествоОборот * ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ПродажиОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоЕдиницОтчетов,
| ПродажиОбороты.КоличествоОборот * ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоличествоБазовыхЕдиниц,
| ВЫБОР
| КОГДА ПродажиОбороты.СтоимостьБезСкидокОборот = 0
| ТОГДА 0
| ИНАЧЕ (ПродажиОбороты.СтоимостьБезСкидокОборот - ПродажиОбороты.СтоимостьОборот) / ПродажиОбороты.СтоимостьБезСкидокОборот * 100
| КОНЕЦ КАК ПроцентСкидки,
| ПродажиОбороты.СтоимостьБезСкидокОборот - ПродажиОбороты.СтоимостьОборот КАК СуммаСкидки,
| ПродажиОбороты.Номенклатура,
| ПродажиОбороты.СтоимостьОборот / ПродажиОбороты.КоличествоОборот КАК Цена,
| ПродажиОбороты.Период КАК Период,
| НАЧАЛОПЕРИОДА(ПродажиОбороты.Период, НЕДЕЛЯ) КАК ПериодНеделя,
| ПродажиОбороты.СтоимостьБезСкидокОборот / ПродажиОбороты.КоличествоОборот КАК ЦенаБезСкидок
|{ВЫБРАТЬ
| Остаток,
| ОстатокРезерв,
| ДокументПродажи.*,
| Контрагент.*,
| КоличествоОборот,
| СтоимостьОборот,
| СтоимостьБезСкидокОборот,
| НДСОборот,
| КоличествоЕдиницОтчетов,
| КоличествоБазовыхЕдиниц,
| ПроцентСкидки,
| СуммаСкидки,
| Номенклатура.*,
| Цена,
| Период КАК Период,
| ПериодНеделя,
| ЦенаБезСкидок}
|ИЗ
| РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, Регистратор, ) КАК ПродажиОбороты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКон, ) КАК ТоварыНаСкладахОстатки
| ПО ПродажиОбороты.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ДатаКон, ) КАК ТоварыВРезервеНаСкладахОстатки
| ПО ПродажиОбороты.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура
|ГДЕ
| ПродажиОбороты.КоличествоОборот <> 0
|{ГДЕ
| ТоварыНаСкладахОстатки.Номенклатура.*,
| ТоварыНаСкладахОстатки.КоличествоОстаток,
| ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток,
| ПродажиОбороты.ДокументПродажи.*,
| ПродажиОбороты.Контрагент.*,
| ПродажиОбороты.КоличествоОборот,
| ПродажиОбороты.СтоимостьОборот,
| ПродажиОбороты.СтоимостьБезСкидокОборот,
| ПродажиОбороты.НДСОборот,
| (ПродажиОбороты.КоличествоОборот * ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ПродажиОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент) КАК КоличествоЕдиницОтчетов,
| (ПродажиОбороты.КоличествоОборот * ПродажиОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) КАК КоличествоБазовыхЕд,
| (ВЫБОР
| КОГДА ПродажиОбороты.СтоимостьБезСкидокОборот = 0
| ТОГДА 0
| ИНАЧЕ (ПродажиОбороты.СтоимостьБезСкидокОборот - ПродажиОбороты.СтоимостьОборот) / ПродажиОбороты.СтоимостьБезСкидокОборот * 100
| КОНЕЦ) КАК ПроцентСкидки,
| (ПродажиОбороты.СтоимостьБезСкидокОборот - ПродажиОбороты.СтоимостьОборот) КАК СуммаСкидки,
| ПродажиОбороты.Номенклатура.*,
| ПродажиОбороты.ЗаказПокупателя.*,
| ПродажиОбороты.Подразделение.*,
| ПродажиОбороты.Организация.*,
| (ПродажиОбороты.СтоимостьОборот / ПродажиОбороты.КоличествоОборот) КАК Цена,
| ПродажиОбороты.Период КАК Период,
| НАЧАЛОПЕРИОДА(ПродажиОбороты.Период, НЕДЕЛЯ) КАК ПериодНеделя,
| (ПродажиОбороты.СтоимостьБезСкидокОборот / ПродажиОбороты.КоличествоОборот) КАК ЦенаБезСкидок}
|{УПОРЯДОЧИТЬ ПО
| Контрагент.*,
| Номенклатура.*,
| ДокументПродажи.*,
| Период,
| ПериодНеделя,
| ПродажиОбороты.Организация.*}
|ИТОГИ
| СУММА(Остаток),
| СУММА(ОстатокРезерв),
| СУММА(КоличествоОборот),
| СУММА(СтоимостьОборот),
| СУММА(СтоимостьБезСкидокОборот),
| СУММА(НДСОборот),
| СУММА(КоличествоЕдиницОтчетов),
| СУММА(КоличествоБазовыхЕдиниц),
| МАКСИМУМ(ПроцентСкидки),
| СУММА(СуммаСкидки),
| СУММА(Цена),
| СУММА(ЦенаБезСкидок)
|ПО
| ОБЩИЕ
|{ИТОГИ ПО
| ДокументПродажи.*,
| Контрагент.*,
| Период,
| ПериодНеделя,
| Номенклатура.*}
|АВТОУПОРЯДОЧИВАНИЕ";
ПоказатьПо теме из базы знаний
- История оптимизации одного большого запроса средствами MSSQL Profiler и 1С
- Неоплаченные долги при распределении оплаты по правилу ФИФО одним запросом и намного быстрее, чем Вы думали
- Консоль запросов к базе Oracle для 1С, без использования специализированных программ
- Оптимизатор запроса. Часть первая
- Как читать чужой код? Часть 3. Разбор и доработка запросов
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Во первых начинайте делать запросы в Консоли запросов - это позволит оперативно их менять и быстро видеть результат изменения (в разы быстрее)
Во вторых для обсуждения ошибок длинные запросы не удобны - никому не охота читать океаны текста...
И в третьих не соединяйте Виртуальные таблицы напрямик - сначала сделайте выборку как минимум основной виртуальной таблицы во временную, этим вы как минимум получите метод анализировать на каком этапе запроса у вас пурга...
Во вторых для обсуждения ошибок длинные запросы не удобны - никому не охота читать океаны текста...
И в третьих не соединяйте Виртуальные таблицы напрямик - сначала сделайте выборку как минимум основной виртуальной таблицы во временную, этим вы как минимум получите метод анализировать на каком этапе запроса у вас пурга...
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот