Имя: Пароль:
1C
 
Проблема с отчетом и скд
0 Mezijas
 
19.02.20
08:31
Добрый день, есть отчет который собирает товары с оприходований и списаний. Запрос отрабатывает корректно, но после скд на 2 последних строках получаются неадекватные цифры
( на форуме новенький, извиняюсь, если не правильно пишу :) )
[url=https://radikal.ru][img]https://d.radikal.ru/d24/2002/2f/3cc61a2a07e6.png[/img][/url]
Когда убираешь детальные записи и формируешь отчет в разрезе документов и хоз операций мы видим "это"
[url=https://radikal.ru][img]https://d.radikal.ru/d02/2002/40/7252dea73b5f.png[/img][/url]
Структура отчета: [url=https://radikal.ru][img]https://c.radikal.ru/c38/2002/4b/3775dd3d3056.png[/img][/url]

Сумма приход и расход рассчитываются через вычисляемые поля: [url=https://radikal.ru/big/eel94ahh8gwio][img]https://b.radikal.ru/b09/2002/09/05b428351db3t.jpg[/img][/url]

Из того , что пробовал:
- Пробовал перенести вычисление суммы прихода и расхода в сам запрос и брать уже эти поля
- игрался с настройками отчета, убирал из выбранных полей "номенклатура" которая и не используется.
- убирал "детальные записи" в структуре отчета

"Либо я дурак, либо лыжи не едут", может кто сталкивался с подобным?
тестировал на платформах 8.3.10.2580 и 8.3.16.1148
Конфигурация Розница 1.0 ( если важно :) )
1 Mezijas
 
19.02.20
08:33
2 toypaul
 
гуру
19.02.20
08:35
два набора?
3 toypaul
 
гуру
19.02.20
08:36
короче картинки набора(ов) с запросами
4 toypaul
 
гуру
19.02.20
08:38
и не надо обрезать картинки результата. не понятно какие поля неверно считаются
5 toypaul
 
гуру
19.02.20
08:41
все поля количества заключить в ЕстьNULL. ЦенаМагазина тоже заключить в ЕстьNULL
6 Mezijas
 
19.02.20
08:42
(2) 1 набор данных
https://c.radikal.ru/c17/2002/56/a6938b69fdea.png
Запрос сам тоже скинутЬ? Думал под спойлер засунуть, но чет не вижу, чтобы так можно было сделать...
Не обрезанные результаты:
https://a.radikal.ru/a32/2002/88/8b8f302b21e4.png
https://b.radikal.ru/b12/2002/08/e91da532f664.png (суммы корректные)
7 Mezijas
 
19.02.20
08:48
Сам запрос:

ВЫБРАТЬ
    ЕСТЬNULL(МАКСИМУМ(ОприходованиеДо.Дата), &ПустаяДата) КАК ПериодДо
ПОМЕСТИТЬ ПериодОприхДо
ИЗ
    Документ.ОприходованиеТоваров КАК ОприходованиеДо
ГДЕ
    ОприходованиеДо.ДокументОснование = &ДокументПрошлойИнвентаризации
    И ОприходованиеДо.ДокументОснование.Дата < &ДатаТекущейИнвентаризации
    И ОприходованиеДо.Проведен
    И ОприходованиеДо.ДокументОснование.Проведен
    И ОприходованиеДо.Магазин = &Магазин
;

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

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

СГРУППИРОВАТЬ ПО
    ОприходованиеТоваровТовары.Номенклатура,
    ОприходованиеТоваровТовары.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЕСТЬNULL(МАКСИМУМ(СписаниеДо.Дата), &ПустаяДата) КАК ПериодДо
ПОМЕСТИТЬ ПериодСписДо
ИЗ
    Документ.СписаниеТоваров КАК СписаниеДо
ГДЕ
    СписаниеДо.ДокументОснование = &ДокументПрошлойИнвентаризации
    И СписаниеДо.ДокументОснование.Дата < &ДатаТекущейИнвентаризации
    И СписаниеДо.Проведен
    И СписаниеДо.ДокументОснование.Проведен
    И СписаниеДо.Магазин = &Магазин
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Списание.Дата КАК Период
ПОМЕСТИТЬ ПериодСпис
ИЗ
    Документ.СписаниеТоваров КАК Списание
ГДЕ
    Списание.ДокументОснование = &Ссылка
    И Списание.Проведен
;

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

СГРУППИРОВАТЬ ПО
    СписаниеТоваровТовары.Номенклатура,
    СписаниеТоваровТовары.Ссылка
;

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

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

ВЫБРАТЬ
    СписДо.Номенклатура,
    0,
    СписДо.Количество,
    СписДо.Ссылка,
    СписДо.Ссылка.ХозяйственнаяОперация
ИЗ
    СписДо КАК СписДо
;

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

СГРУППИРОВАТЬ ПО
    Итог.Номенклатура,
    Итог.Номенклатура.УИД,
    Итог.Ссылка,
    Итог.СсылкаХозяйственнаяОперация
8 toypaul
 
гуру
19.02.20
08:49
зайти в Роль у поля Номенклатура и поставить галку "Обязательное"
9 toypaul
 
гуру
19.02.20
08:52
вот это не понятно что за поле  Итог.Номенклатура.УИД
прям обязательно по нему группировать?
10 Mezijas
 
19.02.20
08:52
(8) о_0, помогло, спасибо, похоже надо топать пересматривать курс по скд
11 Mezijas
 
19.02.20
08:53
(9) отчет изначально разрабатывался не мной, приходится воевать с тем, что имеем
12 toypaul
 
гуру
19.02.20
08:54
НоменклатураУИД тоже на всякий случай поставить Обязательное