Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
02 окт 2022, 11:54

Некорректно отрабатывает запрос

Автор Sleytor, 14 сен 2022, 10:08

0 Пользователей и 1 гость просматривают эту тему.

Sleytor

добрый день! Люди, помогите найти ошибку
Ситуация с запросом следующая некорректно отображается остаток , например фактический остаток 1 запрос выводит 4, факт 3 запрос выводит 12.
ВЫБРАТЬ РАЗРЕШЕННЫЕ
   ЦеныНоменклатурыСрезПоследних.Цена КАК Цена1,
   ЦеныНоменклатурыСрезПоследних.Номенклатура.Ссылка КАК НоменклатураСС,
   0 КАК Цена2,
   0 КАК Цена3,
   0 КАК Цена4
ПОМЕСТИТЬ Цена1С
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ГДЕ
   ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен1
   И ЦеныНоменклатурыСрезПоследних.Номенклатура = &Номенклатура

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   0,
   ЦеныНоменклатурыСрезПоследних.Номенклатура,
   ЦеныНоменклатурыСрезПоследних.Цена,
   0,
   0
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ГДЕ
   ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен2
   И ЦеныНоменклатурыСрезПоследних.Номенклатура = &Номенклатура

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   0,
   ЦеныНоменклатурыСрезПоследних.Номенклатура,
   0,
   ЦеныНоменклатурыСрезПоследних.Цена,
   0
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ГДЕ
   ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен3
   И ЦеныНоменклатурыСрезПоследних.Номенклатура = &Номенклатура

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   0,
   ЦеныНоменклатурыСрезПоследних.Номенклатура,
   0,
   0,
   ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ГДЕ
   ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен4
   И ЦеныНоменклатурыСрезПоследних.Номенклатура = &Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТоварыНаСкладахОстатки.КоличествоОстаток,
   ТоварыНаСкладахОстатки.Номенклатура КАК НоменклатураСС,
   0 КАК КоличествоОстаток2,
   0 КАК КоличествоОстаток3
ПОМЕСТИТЬ Ост
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
ГДЕ
   ТоварыНаСкладахОстатки.Склад = &Склад
   И ТоварыНаСкладахОстатки.Номенклатура = &Номенклатура

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   0,
   ТоварыНаСкладахОстатки.Номенклатура,
   ТоварыНаСкладахОстатки.КоличествоОстаток,
   0
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
ГДЕ
   ТоварыНаСкладахОстатки.Склад = &Склад2
   И ТоварыНаСкладахОстатки.Номенклатура = &Номенклатура

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   0,
   ТоварыНаСкладахОстатки.Номенклатура,
   0,
   ТоварыНаСкладахОстатки.КоличествоОстаток
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
ГДЕ
   ТоварыНаСкладахОстатки.Склад = &Склад3
   И ТоварыНаСкладахОстатки.Номенклатура = &Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   СУММА(Ост.КоличествоОстаток) КАК КоличествоОстаток,
   СУММА(Цена1С.Цена1) КАК Цена1,
   СУММА(Цена1С.Цена2) КАК Цена2,
   СУММА(Цена1С.Цена4) КАК Цена4,
   СУММА(Ост.КоличествоОстаток2) КАК КоличествоОстаток2,
   СУММА(Ост.КоличествоОстаток3) КАК КоличествоОстаток3,
   СУММА(Цена1С.Цена3) КАК Цена3,
   ЕСТЬNULL(Ост.НоменклатураСС, Цена1С.НоменклатураСС) КАК Поле1
ИЗ
   Ост КАК Ост
      ПОЛНОЕ СОЕДИНЕНИЕ Цена1С КАК Цена1С
      ПО Ост.НоменклатураСС = Цена1С.НоменклатураСС

СГРУППИРОВАТЬ ПО
   ЕСТЬNULL(Ост.НоменклатураСС, Цена1С.НоменклатураСС)

LexaK

просто неверно запрос написан, попробуйте убрать все ваши объединения
вместо них используйте Левые соединения, перепишите запрос что бы он занимал всего 20 строчек

не надо стараться напихать в запрос кучу "правильных" команд
в надежде на то что они там сами разберутся как вам выдать правильный результат!
если помогло нажмите: Спасибо!

LexaK

LexaK, что-то странное получается, но все же, посмотрите этот запрос
Выбрать
спр.ссылка как Номенклатура,
Минимум(РегЦена1.Цена) как Цена1,
Минимум(РегЦена2.Цена) как Цена2,
Минимум(РегЦена3.Цена) как Цена3,
Минимум(РегЦена4.Цена) как Цена4,
Минимум(РегОст1.КоличествоОстаток) как Количество1,
Минимум(РегОст2.КоличествоОстаток) как Количество2,
Минимум(РегОст3.КоличествоОстаток) как Количество3
Из
    Справочник.Номенклатура спр,
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(,Номенклатура = &Номенклатура и ТипЦен = &ТипЦен1) КАК РегЦена1,
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(,Номенклатура = &Номенклатура и ТипЦен = &ТипЦен2) КАК РегЦена2,
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(,Номенклатура = &Номенклатура и ТипЦен = &ТипЦен3) КАК РегЦена3,
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(,Номенклатура = &Номенклатура и ТипЦен = &ТипЦен4) КАК РегЦена4,
РегистрНакопления.ТоварыНаСкладах.Остатки(,Номенклатура = &Номенклатура и Склад = &Склад1) КАК РегОст1,
РегистрНакопления.ТоварыНаСкладах.Остатки(,Номенклатура = &Номенклатура и Склад = &Склад2) КАК РегОст2,
РегистрНакопления.ТоварыНаСкладах.Остатки(,Номенклатура = &Номенклатура и Склад = &Склад3) КАК РегОст3
ГДЕ
спр.ссылка = &Номенклатура
сгруппировать по
спр.Ссылка
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск