Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
10 апр 2024, 09:43

Завышение цены номенклатуры в отчете

Автор Nail2010, 24 мая 2011, 05:30

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

Nail2010

Всем доброго дня!

В отчете у меня непонятно почему - выводится цены номенклатуры (из СрезаПоследних) в 2 раза завышенные, причем по некоторым позициям. Текст запроса привожу ниже. Главное, что интересно- в отчете есть результатирующая колонка. которая умножает цену на количество, и считает то она ПРАВИЛЬНО! Например,
               Видеокамера       2шт     4000р(завышенная цена)    Сумма - 4000 (2 х 2000).

У кого нибудь было подобное? Подскажите, в чем причина может быть?

ВЫБРАТЬ РАЗЛИЧНЫЕ
   ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
   МИНИМУМ(ВЫБОР
         КОГДА ХозрасчетныйОстатки.Субконто2.Наименование = "ИП Исаев"
            ТОГДА ХозрасчетныйОстатки.КоличествоОстаток
      КОНЕЦ) КАК КоличествоИсаев,
   МИНИМУМ(ВЫБОР
         КОГДА ХозрасчетныйОстатки.Субконто2.Наименование = "Спектр"
            ТОГДА ХозрасчетныйОстатки.КоличествоОстаток
      КОНЕЦ) КАК КоличествоСпектр,
   СУММА(ВЫБОР
         КОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен.Наименование = "Закупочная"
            ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
      КОНЕЦ) КАК ЦенаЗакупочная,
   СУММА(ВЫБОР
         КОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен.Наименование = "Оптовая"
            ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
      КОНЕЦ) КАК ЦенаОптовая,
   СУММА(ВЫБОР
         КОГДА ХозрасчетныйОстатки.Субконто2.Наименование = "Спектр"
               И ЦеныНоменклатурыСрезПоследних.ТипЦен.Наименование = "Закупочная"
            ТОГДА ХозрасчетныйОстатки.КоличествоОстаток * ЦеныНоменклатурыСрезПоследних.Цена
      КОНЕЦ) КАК СуммаСпектрЗакупочная,
   СУММА(ВЫБОР
         КОГДА ХозрасчетныйОстатки.Субконто2.Наименование = "Спектр"
               И ЦеныНоменклатурыСрезПоследних.ТипЦен.Наименование = "Оптовая"
            ТОГДА ХозрасчетныйОстатки.КоличествоОстаток * ЦеныНоменклатурыСрезПоследних.Цена
      КОНЕЦ) КАК СуммаСпектрОптовая,
   СУММА(ВЫБОР
         КОГДА ХозрасчетныйОстатки.Субконто2.Наименование = "ИП Исаев"
               И ЦеныНоменклатурыСрезПоследних.ТипЦен.Наименование = "Закупочная"
            ТОГДА ХозрасчетныйОстатки.КоличествоОстаток * ЦеныНоменклатурыСрезПоследних.Цена
      КОНЕЦ) КАК СуммаИсаевЗакупочная,
   СУММА(ВЫБОР
         КОГДА ХозрасчетныйОстатки.Субконто2.Наименование = "ИП Исаев"
               И ЦеныНоменклатурыСрезПоследних.ТипЦен.Наименование = "Оптовая"
            ТОГДА ХозрасчетныйОстатки.КоличествоОстаток * ЦеныНоменклатурыСрезПоследних.Цена
      КОНЕЦ) КАК СуммаИсаевОптовая,
   СУММА(ЦеныНоменклатурыСрезПоследних.Цена) КАК Цена
ПОМЕСТИТЬ ТЧ
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, , , ) КАК ХозрасчетныйОстатки
      ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ХозрасчетныйОстатки.Субконто1
ГДЕ
   ХозрасчетныйОстатки.Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ТоварыНаСкладах)
   И ХозрасчетныйОстатки.Субконто1 <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)

СГРУППИРОВАТЬ ПО
   ХозрасчетныйОстатки.Субконто1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТЧ.Номенклатура КАК Номенклатура,
   ТЧ.ЦенаЗакупочная КАК ЦенаЗакупочная,
   ТЧ.ЦенаОптовая КАК ЦенаОптовая,
   ТЧ.КоличествоИсаев КАК КоличествоИсаев,
   ТЧ.КоличествоСпектр КАК КоличествоСпектр,
   ТЧ.СуммаИсаевЗакупочная КАК СуммаИсаевЗакупочная,
   ТЧ.СуммаИсаевОптовая КАК СуммаИсаевОптовая,
   ВЫБОР
      КОГДА ТЧ.СуммаИсаевЗакупочная > 0
         ТОГДА ТЧ.СуммаИсаевОптовая / ТЧ.СуммаИсаевЗакупочная
   КОНЕЦ КАК КоэфициентИсаев,
   ТЧ.СуммаСпектрЗакупочная КАК СуммаСпектрЗакупочная,
   ТЧ.СуммаСпектрОптовая КАК СуммаСпектрОптовая,
   ВЫБОР
      КОГДА ТЧ.СуммаСпектрЗакупочная > 0
         ТОГДА ТЧ.СуммаСпектрОптовая / ТЧ.СуммаСпектрЗакупочная
   КОНЕЦ КАК КоэфициентСпектр
ИЗ
   ТЧ КАК ТЧ

Шурыгин Иван Сергеевич

какую цену завышает?? закупочную или оптовую??? и может надо немного по другому перестроить отчет??? я бы предложил отчет с группировками, сначала фирма, потом тип цен. хотя это лишь предложение:)
===================================
жизнь надо прожить так, чтоб вверху посмотрели.
и сказали "А ну ка повтори"
===================================

Nail2010

Завышает и ту и ту, и еще раз повторюсь, не по всем позициям (конкретно по 6-ти из 15000). Колонки переставлять смысла нет, заказчика все устраивает

Klyacksa

Зачем в строках цены суммирование? Мы же получаем в любом случае, определенное СТАТИЧЕСКОЕ значение, суммирование здесь не нужно. Поставьте максимум, например:
МАКСИМУМ(ВЫБОР
         КОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен.Наименование = "Закупочная"
            ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
      КОНЕЦ) КАК ЦенаЗакупочная,

и так во всех местах.

И согласна с Иваном Сергеевичем, лучше сделать группировками. Проверять наименование в полях - замедляет работу, да и не красиво. Впрочем, переделывать уже наверняка не будете ;)
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Nail2010

Ребята, даже если ставишь значение ресурса Цена МАКСИМУМ, все равно по тем же поцициям цена перехлестывается в 2 раза...

Шурыгин Иван Сергеевич

для начала упрости запрос, убрав в нем много численное ВЫБОР. и сформируй через компановку! две группировки я уже говорил какие, фирма и тип цен. и посмотри внимательно, что у этих позиций не обычного!
===================================
жизнь надо прожить так, чтоб вверху посмотрели.
и сказали "А ну ка повтори"
===================================

Klyacksa

Ну переписывать уже не обязательно, можно оставить и с "выбор когда", не криминально.
Приведите полученный запрос.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Шурыгин Иван Сергеевич

просто убрав условия ВЫБОР и загнав запрос в консоль можно посмотреть между какими конретно строчками идет выбор и поиск максимума... ответ может быть прямо на поверхности
===================================
жизнь надо прожить так, чтоб вверху посмотрели.
и сказали "А ну ка повтори"
===================================

Nail2010

Привожу сапрос еще раз

ВЫБРАТЬ РАЗЛИЧНЫЕ
   ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
   МИНИМУМ(ВЫБОР
         КОГДА ХозрасчетныйОстатки.Субконто2.Наименование = "ИП Исаев"
            ТОГДА ХозрасчетныйОстатки.КоличествоОстаток
      КОНЕЦ) КАК КоличествоИсаев,
   МИНИМУМ(ВЫБОР
         КОГДА ХозрасчетныйОстатки.Субконто2.Наименование = "Спектр"
            ТОГДА ХозрасчетныйОстатки.КоличествоОстаток
      КОНЕЦ) КАК КоличествоСпектр,
   СУММА(ВЫБОР
         КОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен.Наименование = "Закупочная"
            ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
      КОНЕЦ) КАК ЦенаЗакупочная,
   СУММА(ВЫБОР
         КОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен.Наименование = "Оптовая"
            ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
      КОНЕЦ) КАК ЦенаОптовая,
   СУММА(ВЫБОР
         КОГДА ХозрасчетныйОстатки.Субконто2.Наименование = "Спектр"
               И ЦеныНоменклатурыСрезПоследних.ТипЦен.Наименование = "Закупочная"
            ТОГДА ХозрасчетныйОстатки.КоличествоОстаток * ЦеныНоменклатурыСрезПоследних.Цена
      КОНЕЦ) КАК СуммаСпектрЗакупочная,
   СУММА(ВЫБОР
         КОГДА ХозрасчетныйОстатки.Субконто2.Наименование = "Спектр"
               И ЦеныНоменклатурыСрезПоследних.ТипЦен.Наименование = "Оптовая"
            ТОГДА ХозрасчетныйОстатки.КоличествоОстаток * ЦеныНоменклатурыСрезПоследних.Цена
      КОНЕЦ) КАК СуммаСпектрОптовая,
   СУММА(ВЫБОР
         КОГДА ХозрасчетныйОстатки.Субконто2.Наименование = "ИП Исаев"
               И ЦеныНоменклатурыСрезПоследних.ТипЦен.Наименование = "Закупочная"
            ТОГДА ХозрасчетныйОстатки.КоличествоОстаток * ЦеныНоменклатурыСрезПоследних.Цена
      КОНЕЦ) КАК СуммаИсаевЗакупочная,
   СУММА(ВЫБОР
         КОГДА ХозрасчетныйОстатки.Субконто2.Наименование = "ИП Исаев"
               И ЦеныНоменклатурыСрезПоследних.ТипЦен.Наименование = "Оптовая"
            ТОГДА ХозрасчетныйОстатки.КоличествоОстаток * ЦеныНоменклатурыСрезПоследних.Цена
      КОНЕЦ) КАК СуммаИсаевОптовая,
   СУММА(ЦеныНоменклатурыСрезПоследних.Цена) КАК Цена
ПОМЕСТИТЬ ТЧ
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, , , ) КАК ХозрасчетныйОстатки
      ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ХозрасчетныйОстатки.Субконто1
ГДЕ
   ХозрасчетныйОстатки.Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ТоварыНаСкладах)
   И ХозрасчетныйОстатки.Субконто1 <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)

СГРУППИРОВАТЬ ПО
   ХозрасчетныйОстатки.Субконто1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТЧ.Номенклатура КАК Номенклатура,
   ТЧ.ЦенаЗакупочная КАК ЦенаЗакупочная,
   ТЧ.ЦенаОптовая КАК ЦенаОптовая,
   ТЧ.КоличествоИсаев КАК КоличествоИсаев,
   ТЧ.КоличествоСпектр КАК КоличествоСпектр,
   ТЧ.СуммаИсаевЗакупочная КАК СуммаИсаевЗакупочная,
   ТЧ.СуммаИсаевОптовая КАК СуммаИсаевОптовая,
   ВЫБОР
      КОГДА ТЧ.СуммаИсаевЗакупочная > 0
         ТОГДА ТЧ.СуммаИсаевОптовая / ТЧ.СуммаИсаевЗакупочная
   КОНЕЦ КАК КоэфициентИсаев,
   ТЧ.СуммаСпектрЗакупочная КАК СуммаСпектрЗакупочная,
   ТЧ.СуммаСпектрОптовая КАК СуммаСпектрОптовая,
   ВЫБОР
      КОГДА ТЧ.СуммаСпектрЗакупочная > 0
         ТОГДА ТЧ.СуммаСпектрОптовая / ТЧ.СуммаСпектрЗакупочная
   КОНЕЦ КАК КоэфициентСпектр
ИЗ
   ТЧ КАК ТЧ


Nail2010

дело в том что ВЫБОР КОГДА - это необходимое условие заказчика, и все показывает как нужно  -эти колонки вычисляют разные значения, - осталось разобраться только с ценой.

Теги:

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

Рейтинг@Mail.ru

Поиск