Имя: Пароль:
1C
1С v8
СКД добавить параметр
, ,
0 r1000
 
18.11.16
10:14
Запрос.
ВЫБРАТЬ
    СпрНоменклатура.Ссылка КАК Номенклатура,
    СУММА(ЕСТЬNULL(ПродажиОбороты.КоличествоОборот, 0)) КАК ПродажиЗаПериода
ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты({(&НачалоПериода)}, {(&КонецПериода)}, , {(ДокументПродажи.Склад В (&Склады))}) КАК ПродажиОбороты
        ПО СпрНоменклатура.Ссылка = ПродажиОбороты.Номенклатура
{ГДЕ
    (СпрНоменклатура.Ссылка В ИЕРАРХИИ (&СписокНоменклатуры)) КАК Номенклатура}

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

Собственно проблема в том, что &СписокНоменклатуры сам не появляется в параметрах схемы компановки, а склад появляется. Добавил &СписокНоменклатуры ручками, но результат выводиться без отбора по номенклатуре. Как номенклатуру в параметре отобрать ?
1 DrShad
 
18.11.16
10:21
ВЫБОР КОГДА ( 1 В (ВЫБРАТЬ 1 ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Ссылка в (&Стенды))) ТОГДА (Стенд В (&Стенды)) ИНАЧЕ Истина КОНЕЦ

делай на подобии и без фигурных скобок
2 Rokford
 
18.11.16
10:25
Зачем это делать в запросе? это ж СКД. На закладке "Настройки" добавь отбор "в списке".
Нет?
3 r1000
 
18.11.16
10:28
Мне нужно именно чтобы в параметрах. Через отбор не красиво. Пусть пользователь в одном месте все устанавливает.
вопрос закрыт. поменял вот на это и заработало - т.е. убрал псевдоним
{ГДЕ
    (СпрНоменклатура.Ссылка В ИЕРАРХИИ (&СписокНоменклатуры))}
4 Rokford
 
18.11.16
10:32
Так ты можешь отбор в быстрые настройки добавить. Все будет "в одном месте" и параметры, и отборы.
Плюс условие по номенклатуре в таком случае я бы еще в параметры ВТОбороты добавил.
5 r1000
 
18.11.16
10:36
и как тогда должна выглядить вот эта строка ? если хочется условие по номенклатуре добавить в ВТОбороты...

{(Склад В (&Склады))}
6 r1000
 
18.11.16
10:47
что если один из параметров будет не заполнен если использовать "И" - непонятно как отчет отрабатывает...
7 Rokford
 
18.11.16
10:47
Тоже интересно стало :)
8 DrShad
 
18.11.16
10:50
(6) вариант в (1) отрабатывает не заполненные параметры ))) просто его осмыслить надо
9 Jonny_Khomich
 
18.11.16
10:58
(3) ну ты программно заполняй отбор. в чем сложность то?
10 Jonny_Khomich
 
18.11.16
10:59
ОтборыОтчета = Настройки.Отбор.Элементы;
    ДопУслуга = Настройки.ПараметрыДанных.Элементы.Найти("ДопУслуги");
    Если Не ДопУслуга = Неопределено Тогда
        ЕстьОтбор = Ложь;
        Для Каждого ЭлОтбора Из ОтборыОтчета Цикл
            Если ЭлОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДопУслуга") И ЭлОтбора.Использование Тогда
                ДопУслуга.Значение = ЭлОтбора.ПравоеЗначение;
                ЕстьОтбор = Истина;
                Прервать;
            КонецЕсли;
        КонецЦикла;
        Если Не ЕстьОтбор Тогда
            ДопУслуга.Значение = Неопределено;
            ДопУслуга.Использование = Истина;
        КонецЕсли;
    Иначе
        ДопУслуга.Значение = Неопределено;
    КонецЕсли;
11 Rokford
 
18.11.16
11:58
Можно все настроить без программирования. В конструкторе запроса на закладке "компоновка данных" в параметрах виртуальной таблицы указывать не условие, а просто ПЕРЕЧИСЛИТЬ ПОЛЯ, по которым возможно нужен будет отбор. Отборы, как я и писал в (2) нужно добавить на закладке настройки.
12 Rokford
 
18.11.16
12:00
Off на работе миста отвалилась, последнее сообщение писал мобильника, жуть как неудобно
13 DrShad
 
18.11.16
12:02
(11) не известно что за конфа у ТС и есть ли там форма отчета с быстрыми отборами
14 Rokford
 
18.11.16
12:57
Сорри за повтор (миста заработала), сообщение было готово, выкладываю как хотел его видеть.

Разобрался (точнее, в курсах подсмотрел :)).
Можно все настроить без программирования. В конструкторе запроса на закладке "Компоновка данных" в параметрах виртуальной таблицы указывать не условие (как мы привыкли это делать в запросах), а просто ПЕРЕЧИСЛИТЬ ПОЛЯ, по которым возможно нужен будет отбор. Отборы, как я и писал в (2) нужно добавить на закладке настройки.

[url=http://radikal.ru/big/ros7exabnpu5a][img]http://s020.radikal.ru/i710/1611/85/984418e29972t.jpg[/img][/url]

СКД сама поймет что заполнено, что нет и правильно выполнит запрос (проверил не демо базе).

Вот запрос СКД

ВЫБРАТЬ
    СпрНоменклатура.Ссылка КАК Номенклатура,
    ПродажиОбороты.Организация,
    ПродажиОбороты.Контрагент,
    СУММА(ЕСТЬNULL(ПродажиОбороты.КоличествоОборот, 0)) КАК ПродажиЗаПериод
ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты({(&НачалоПериода)}, {(&КонецПериода)}, , {(Номенклатура), (Организация)}) КАК ПродажиОбороты
        ПО (ПродажиОбороты.Номенклатура = СпрНоменклатура.Ссылка)
{ГДЕ
    СпрНоменклатура.Ссылка.*}

СГРУППИРОВАТЬ ПО
    СпрНоменклатура.Ссылка,
    ПродажиОбороты.Организация,
    ПродажиОбороты.Контрагент


А вот что ушло к БД

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

СГРУППИРОВАТЬ ПО
    СпрНоменклатура.Ссылка,
    ПродажиОбороты.Организация,
    ПродажиОбороты.Контрагент
15 Rokford
 
18.11.16
12:58
16 Rokford
 
18.11.16
13:01
(13) Так то оно так. Но если УФ, форму можно вообще не делать, она сгенерится. А для ОФ есть шаблон отчета. Это и унификация отчетов и для программиста только вставить СКД - все само отобразится.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший