Имя: Пароль:
1C
1С v8
Отбор в СКД
,
0 DAVI
 
21.08.14
13:32
Добрый день! Есть отчет на скд(делал не я) по продажам и остаткам товара.
Вот запрос :
ВЫБРАТЬ
    ВложенныйЗапрос.Номенклатура,
    ВложенныйЗапрос.Склад,
    ВложенныйЗапрос.КолПродано КАК КолПродано,
    ВложенныйЗапрос.КолОстаток КАК КолОстаток
ИЗ
    (ВЫБРАТЬ
        Продажи.Номенклатура КАК Номенклатура,
        Продажи.ДокументПродажи.Склад КАК Склад,
        Продажи.Количество КАК КолПродано,
        0 КАК КолОстаток
    ИЗ
        РегистрНакопления.Продажи КАК Продажи
    ГДЕ
        Продажи.ДокументПродажи.Склад = &Склад
        И Продажи.Период МЕЖДУ &НачалоПериода И &КонецПериода
        И Продажи.Номенклатура = &Номенклатура
        И Продажи.ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        ТоварыНаСкладахОстатки.Номенклатура,
        ТоварыНаСкладахОстатки.Склад,
        0,
        ТоварыНаСкладахОстатки.КоличествоОстаток
    ИЗ
        РегистрНакопления.ТоварыНаСкладах.Остатки(&ТекущаяДата, ) КАК ТоварыНаСкладахОстатки) КАК ВложенныйЗапрос

Проблема в том, что в пользовательском режиме чтобы установить отбор по номенклатуре и складу нужно ставить отбор в двух местах. Сначала в настройке самого отчета потом отдельно в группировке номенклатура. Это очень не удобно для пользователя, Подскажите в чем проблема,может запрос неправильный или настройки?
УПП для каз 1.0.23.30
Платформа 8.2.19.102
1 Кир Пластелинин
 
21.08.14
13:37
что то я не понял - для чего отбор по номенклатуре в группировке... и вопрос. почему берется реальная таблица рн "продажи", а не обороты? касательно отборов - прописать на закладке компоновка данных отбор по номенклатуре в параметрах вирт. таблицы и указать ему для каждого рн одинаковый синоним
2 fmrlex
 
21.08.14
13:37
За неиспользование виртуальных таблиц обычно бьют розгами.
3 13_Mult
 
21.08.14
13:42
ещё вложенный запрос убери, объединить и всё.
4 DAVI
 
21.08.14
13:54
Суть такова: Этот отчет должен показывать остатки по выбранным складам и продажи ТОЛЬКО по складу,который прописан в настройках пользователя
5 DAVI
 
21.08.14
13:55
он работает,но только если установишь два отбора,на самом отчете и на группировке
6 DAVI
 
21.08.14
13:58
(1) исправил запрос на вот так


ВЫБРАТЬ
    ВложенныйЗапрос.Номенклатура,
    ВложенныйЗапрос.Склад,
    ВложенныйЗапрос.КолПродано КАК КолПродано,
    ВложенныйЗапрос.КолОстаток КАК КолОстаток
ИЗ
    (ВЫБРАТЬ
        ПродажиОбороты.Номенклатура КАК Номенклатура,
        ПродажиОбороты.ДокументПродажи.Склад КАК Склад,
        ПродажиОбороты.КоличествоОборот КАК КолПродано,
        0 КАК КолОстаток
    ИЗ
        РегистрНакопления.Продажи.Обороты(
                &НачалоПериода,
                &КонецПериода,
                ,
                ДокументПродажи.Склад = &Склад
                    И Номенклатура = &Номенклатура {(ДокументПродажи.Склад = &Склад
                    И Номенклатура = &Номенклатура)}) КАК ПродажиОбороты
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        ТоварыНаСкладахОстатки.Номенклатура,
        ТоварыНаСкладахОстатки.Склад,
        0,
        ТоварыНаСкладахОстатки.КоличествоОстаток
    ИЗ
        РегистрНакопления.ТоварыНаСкладах.Остатки(&ТекущаяДата, {(Номенклатура = &Номенклатура)}) КАК ТоварыНаСкладахОстатки) КАК ВложенныйЗапрос
7 barrgand
 
21.08.14
14:02
(6) Для чего нужен вложенный запрос?
И это зачем:

                ДокументПродажи.Склад = &Склад
                    И Номенклатура = &Номенклатура {(ДокументПродажи.Склад = &Склад
                    И Номенклатура = &Номенклатура)}
8 Кир Пластелинин
 
21.08.14
14:06
о хоспади. так отбор или параметр? РегистрНакопления.ТоварыВЯчейках.Обороты(, , , {(Номенклатура) КАК Номенклатура_Отбор}) - вот пример отбора
9 DAVI
 
21.08.14
14:24
ВЫБРАТЬ
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.ХарактеристикаНоменклатуры,
    ПродажиОбороты.ДокументПродажи.Склад,
    ПродажиОбороты.КоличествоОборот КАК КоличествоПроданного,
    0 КАК КоличествоОстаток
ИЗ
    РегистрНакопления.Продажи.Обороты(, , , {(Номенклатура) КАК Номенклатура_Отбор}) КАК ПродажиОбороты

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

ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура,
    ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры,
    ТоварыНаСкладахОстатки.Склад,
    0,
    ТоварыНаСкладахОстатки.КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(, {(Номенклатура) КАК Номенклатура_Отбор}) КАК ТоварыНаСкладахОстатки
10 DAVI
 
21.08.14
14:24
Так?
11 Кир Пластелинин
 
21.08.14
14:59
ну это скорей мне у Вас нужно спросить - что Вам нужно: отбор или параметр, ибо параметр задается условно "жестко". касательно складов. тут как минимум два разных отбора/параметра нужно, если я правильно понял суть задачи. один - по продажам, другой по остаткам. ну ок. в одной вт прописать Склады_Продажи, в другой вт - Склады_Остатки. и пока не понятно - у пользователя жестко ограничены возможности выбора склада для получения продаж по нему или он может и другой выбрать.
12 DAVI
 
21.08.14
15:07
(11)у пользователя жестко прописан выбор склада для получения продаж. Продажи только свой,остатки любой.
13 DAVI
 
21.08.14
15:11
убрал группировку,теперь как добавить иерархию номенклатуры?
запрос в (9) работает,но показывает продажи и по другому складу. Прог который делал этот отчет получал Основной склад пользователя и прописывал его в параметр Склад. Я так понял нужно делать еще два отбора по Склад_Продажи и Склад_Остатки и при открытии отчета Заполнять отбор Склад_Продажи программно?
14 Кир Пластелинин
 
21.08.14
15:25
(13) если склад для получения продаж жестко прописан у каждого пользователя, то сделать параметром и заполнять при открытии. ну и скрыть этот параметр от пользователя. для остатков - отбор. и да. зачем группировку убрали?)
15 DAVI
 
21.08.14
15:44
(14) а параметр в запросе куда писать?в условиях таблицы ПродажиОбороты? группировку вернул
16 Кир Пластелинин
 
21.08.14
15:52
(15)*сарказм. ну естественно в таблице остатков. нам же продажи нужно ограничить по одному складу.
17 DAVI
 
21.08.14
15:59
(16) Спасибо вам,вроде работает!! еще вопрос можно, на форме отчета создал табличное поле с типом значения ОтборКомпоновкиДанных,заполнить его нужными элементами отбора при открытии?
18 DAVI
 
21.08.14
16:00
(17) как?
19 Кир Пластелинин
 
21.08.14
16:09
(17) эээ. зачем? платформа сама должна заполнить исходя из указанной основной схемы.
20 Crush
 
21.08.14
16:39
(17) Не тип выбирай, а данные у таблиного поля.
Компановщик - настройки - отбор
21 DAVI
 
22.08.14
07:42
(20) я так и сделал,данные Компоновщик - Настройки - Отбор. в конфигураторе табличное поле заполнилось нужными колонками,но в пользовательском режиме при открытии отчета таб поле не заполняется,оно пустое,приходится вручную добавлять новый элемент отбора
22 DAVI
 
22.08.14
08:58
(21)может еще где то галочку не поставил??
23 barrgand
 
22.08.14
09:50
(21) А что там должно быть? Там отображается то, что указано на вкладке Отбор в СКД
24 Crush
 
22.08.14
09:52
В макете в скд в настройках отчета вынеси поля в отбор
25 DAVI
 
22.08.14
10:02
(24) спасибо,заработало. Всем спасибо!