Имя: Пароль:
1C
1С v8
Глючит отбор СКД
0 sdemon72
 
20.04.17
12:32
Здравствуйте!
Имеем отчет на СКД со следующим запросом:

ВЫБРАТЬ
    ОстаткиВсе.Номенклатура КАК Номенклатура,
    СУММА(ОстаткиВсе.КоличествоУчет) КАК КоличествоУчет
ИЗ
    (ВЫБРАТЬ
        ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
        ТоварыНаСкладахОстатки.ВНаличииОстаток КАК КоличествоУчет
    ИЗ
        РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК ТоварыНаСкладахОстатки
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        ТоварыНаСкладахДвижения.Номенклатура,
        ВЫБОР
            КОГДА ТоварыНаСкладахДвижения.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
                ТОГДА -ТоварыНаСкладахДвижения.ВНаличии
            ИНАЧЕ ТоварыНаСкладахДвижения.ВНаличии
        КОНЕЦ
    ИЗ
        РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладахДвижения
    ГДЕ
        ТоварыНаСкладахДвижения.Регистратор.ДокументОснование = &Ссылка) КАК ОстаткиВсе

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

В СКД Настроен отбор по номенклатуре, который почему-то не работает - вываливается вся номенклатура в отчет.

Проверялось на разных версиях платформы. Куда копать?
1 DrShad
 
20.04.17
12:39
и где отбор?
2 azernot
 
20.04.17
12:47
1. Снять галочку "Автозаполнение" в СКД
2. Корректно заполнить вкладку "Компоновка данных" во всех частях запроса, особенно обратить внимаение на параметры виртуальных таблиц.
3. Выложить сюда запрос со всеми фигурными скобками.
4. Получить конструктивную критику
5. Исправить все недочёты
6. Профит!
3 sidalexsandr
 
20.04.17
12:53
(0) Попробуй задай отбор по номенклатуре в запросе
4 Mort
 
20.04.17
12:53
Как вариант отбор затирается пользовательской настройкой.
5 sdemon72
 
20.04.17
14:25
(2) Спасибо за совет! А можете подсказать толковый мануал по заполнению вкладки "Компоновка данных"?
6 sdemon72
 
20.04.17
14:40
О, вроде взлетело! azernot, еще раз спасибо за помощь!
Выкладываю запрос на конструктивную критику (полный вариант, изначально был сокращенный)

ВЫБРАТЬ
    ОстаткиСвернуто.Номенклатура КАК Номенклатура,
    ОстаткиСвернуто.Качество КАК Качество,
    ЕСТЬNULL(Цены.Цена, 0) КАК Цена,
    ОстаткиСвернуто.КоличествоУчет КАК КоличествоУчет,
    ОстаткиСвернуто.КоличествоУчет * ЕСТЬNULL(Цены.Цена, 0) КАК СуммаУчет,
    ОстаткиСвернуто.Количество КАК Количество,
    ОстаткиСвернуто.Количество * ЕСТЬNULL(Цены.Цена, 0) КАК Сумма
{ВЫБРАТЬ
    Номенклатура.*,
    Качество.*}
ИЗ
    (ВЫБРАТЬ
        ОстаткиВсе.Номенклатура КАК Номенклатура,
        ОстаткиВсе.Качество КАК Качество,
        СУММА(ОстаткиВсе.КоличествоУчет) КАК КоличествоУчет,
        СУММА(ОстаткиВсе.Количество) КАК Количество
    ИЗ
        (ВЫБРАТЬ
            ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
            ВЫБОР
                КОГДА ТоварыНаСкладахОстатки.Качество = ЗНАЧЕНИЕ(Справочник.Качество.ПустаяСсылка)
                    ТОГДА ЗНАЧЕНИЕ(Справочник.Качество.Новый)
                ИНАЧЕ ТоварыНаСкладахОстатки.Качество
            КОНЕЦ КАК Качество,
            ТоварыНаСкладахОстатки.ВНаличииОстаток КАК КоличествоУчет,
            ВЫБОР
                КОГДА &ЗаполнитьФакт = ИСТИНА
                    ТОГДА ТоварыНаСкладахОстатки.ВНаличииОстаток
                ИНАЧЕ 0
            КОНЕЦ КАК Количество
        {ВЫБРАТЬ
            Номенклатура.*,
            Качество.*,
            КоличествоУчет,
            Количество}
        ИЗ
            РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОстатков, Склад = &Склад {(Номенклатура), (Качество)}) КАК ТоварыНаСкладахОстатки
        
        ОБЪЕДИНИТЬ ВСЕ
        
        ВЫБРАТЬ
            ТоварыНаСкладахДвижения.Номенклатура,
            ВЫБОР
                КОГДА ТоварыНаСкладахДвижения.Качество = ЗНАЧЕНИЕ(Справочник.Качество.ПустаяСсылка)
                    ТОГДА ЗНАЧЕНИЕ(Справочник.Качество.Новый)
                ИНАЧЕ ТоварыНаСкладахДвижения.Качество
            КОНЕЦ,
            ВЫБОР
                КОГДА ТоварыНаСкладахДвижения.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
                    ТОГДА -ТоварыНаСкладахДвижения.ВНаличии
                ИНАЧЕ ТоварыНаСкладахДвижения.ВНаличии
            КОНЕЦ,
            0
        ИЗ
            РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладахДвижения
        ГДЕ
            ТоварыНаСкладахДвижения.Регистратор.ДокументОснование = &Ссылка
            И ТоварыНаСкладахДвижения.Регистратор ССЫЛКА Документ.ОрдерНаОтражениеРезультатовПересчетовТоваров
            И ТоварыНаСкладахДвижения.Регистратор.ДокументОснование.Ссылка ЕСТЬ НЕ NULL
            И ТоварыНаСкладахДвижения.Период < &ДатаОстатков
        {ГДЕ
            ТоварыНаСкладахДвижения.Номенклатура.*,
            (ВЫБОР
                    КОГДА ТоварыНаСкладахДвижения.Качество = ЗНАЧЕНИЕ(Справочник.Качество.ПустаяСсылка)
                        ТОГДА ЗНАЧЕНИЕ(Справочник.Качество.Новый)
                    ИНАЧЕ ТоварыНаСкладахДвижения.Качество
                КОНЕЦ).* КАК Качество}
        
        ОБЪЕДИНИТЬ ВСЕ
        
        ВЫБРАТЬ
            ТоварыКОформлениюИзлишковНедостачОстатки.Номенклатура,
            ВЫБОР
                КОГДА ТоварыКОформлениюИзлишковНедостачОстатки.Качество = ЗНАЧЕНИЕ(Справочник.Качество.ПустаяСсылка)
                    ТОГДА ЗНАЧЕНИЕ(Справочник.Качество.Новый)
                ИНАЧЕ ТоварыКОформлениюИзлишковНедостачОстатки.Качество
            КОНЕЦ,
            0,
            ВЫБОР
                КОГДА &ЗаполнитьПредФакт
                    ТОГДА ТоварыКОформлениюИзлишковНедостачОстатки.КОформлениюОрдеровОстаток
                ИНАЧЕ 0
            КОНЕЦ
        ИЗ
            РегистрНакопления.ТоварыКОформлениюИзлишковНедостач.Остатки(&ДатаОстатков, Склад = &Склад {(Номенклатура), (Качество)}) КАК ТоварыКОформлениюИзлишковНедостачОстатки
        
        ОБЪЕДИНИТЬ ВСЕ
        
        ВЫБРАТЬ
            НоменклатураСправочник.Ссылка,
            ЗНАЧЕНИЕ(Справочник.Качество.Новый),
            0,
            0
        ИЗ
            Справочник.Номенклатура КАК НоменклатураСправочник
        ГДЕ
            НЕ НоменклатураСправочник.ЭтоГруппа
        {ГДЕ
            НоменклатураСправочник.Ссылка.* КАК Номенклатура,
            (ЗНАЧЕНИЕ(Справочник.Качество.Новый)).* КАК Качество}) КАК ОстаткиВсе
    
    СГРУППИРОВАТЬ ПО
        ОстаткиВсе.Номенклатура,
        ОстаткиВсе.Качество) КАК ОстаткиСвернуто
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
            МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена * ЦеныНоменклатурыСрезПоследних.Упаковка.Коэффициент) КАК Цена
        ИЗ
            РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаОстатков, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
        
        СГРУППИРОВАТЬ ПО
            ЦеныНоменклатурыСрезПоследних.Номенклатура) КАК Цены
        ПО ОстаткиСвернуто.Номенклатура = Цены.Номенклатура

Автозаполнение СКД не отключал, все остальные вкладки СКД (кроме последней) - пустые, отбор по номенклатуре и количеству (ненулевые)
7 sdemon72
 
20.04.17
14:40
Все время хочу спросить, а в каких тегах на этом форуме делать код красиво?
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс