|   |   | 
| 
 | СКД: как не учитывать свой параметр, если он не задан? | ☑ | ||
|---|---|---|---|---|
| 0
    
        ANDRU48 12.09.14✎ 09:32 | 
        Сделал свой параметр, как сделать, чтобы он не учитывался, если не задан.     | |||
| 1
    
        wms 12.09.14✎ 09:36 | 
        выбор     | |||
| 2
    
        wms 12.09.14✎ 09:37 | 
        ВЫБРАТЬ
 ВЫБОР КОГДА &параметр = 0 ТОГДА "не задан" ИНАЧЕ &параметр КОНЕЦ КАК Поле1 | |||
| 3
    
        mehfk 12.09.14✎ 09:38 | 
        Почему бы не использовать отбор?     | |||
| 4
    
        NoiseRND 12.09.14✎ 09:39 | 
        В запросе конструкция в фигурных скобках {Где Параметр =&Параметр}
 Но лучше отбор! | |||
| 5
    
        ANDRU48 12.09.14✎ 09:50 | 
        Отбор это строка, пользователям неудобно набирать строку и некоторые не знают чего набирать, проще галочки на форме.
 Сейчас стоит как отбор и передается через галочки, но есть вариант, что пользователь может удалить отбор или поставить сравнение не то, поэтому решил через параметр попробовать. | |||
| 6
    
        ANDRU48 12.09.14✎ 10:10 | 
        или отбор сделать невидимым     | |||
| 7
    
        Defender aka LINN 12.09.14✎ 10:32 | 
        "Отбор это строка" - лошто?
 "некоторые не знают чего набирать, проще галочки на форме" - а у отбора галочек нет, да... "есть вариант, что пользователь может удалить отбор или поставить сравнение не то" - пользователь может и должен ставить что хочет. | |||
| 8
    
        LionHeart_spg 12.09.14✎ 10:40 | 
        (0) В модуле отчета в процедуре ОбработкаПроверкиЗаполнения()
 Если Парам1 Тогда Для каждого ЭлементОтбора Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл Если ТипЗнч(ЭлементОтбора) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда Продолжить КонецЕсли; Если Строка(ЭлементОтбора.ЛевоеЗначение) = "Парам1" Тогда ЭлементОтбора.Использование = истина; ЭлементОтбора.ПравоеЗначение = Истина; КонецЕсли; КонецЦикла; Иначе Для каждого ЭлементОтбора Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл Если ТипЗнч(ЭлементОтбора) = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда Продолжить КонецЕсли; Если Строка(ЭлементОтбора.ЛевоеЗначение) = "Парам1" Тогда ЭлементОтбора.ПравоеЗначение = истина; ЭлементОтбора.Использование = ложь; КонецЕсли; КонецЦикла; КонецЕсли; | |||
| 9
    
        LionHeart_spg 12.09.14✎ 10:41 | 
        (8) + таким образом проверяешь все свои параметры и вкл. выкл. их     | |||
| 10
    
        LionHeart_spg 12.09.14✎ 10:43 | 
        Если вопрос именно по параметру, тогда там же
 Если ЗначениеЗаполнено(Архив) Тогда КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Архив",Архив); КонецЕсли; | |||
| 11
    
        OnCheck 12.09.14✎ 10:46 | 
        с отбором медленнее чем параметром ИМХО     | |||
| 12
    
        OnCheck 12.09.14✎ 10:48 | 
        (0) можно добавить еще один парметр "ПараметрНеУказан" и указывать его в истина перед формирвоанием отчета.
 а во всех условиях запроса эти параметры проверять через ИЛИ | |||
| 13
    
        barrgand 12.09.14✎ 10:52 | 
        (11) А вот это лучше не слущать...     | |||
| 14
    
        barrgand 12.09.14✎ 10:52 | 
        (13) слущать = слушать     | |||
| 15
    
        OnCheck 12.09.14✎ 10:54 | 
        (13) можно не слушать. но я проверял.     | |||
| 16
    
        Defender aka LINN 12.09.14✎ 11:08 | 
        (11) Бред не неси
 (15) И каким же образом? | |||
| 17
    
        OnCheck 12.09.14✎ 11:51 | 
        (16) Элементарно, сделал запрос без параметра, но с отбором, и с параметром, время работы в разы отличается. Регистр очень большой поэтому и заморачивался ускорением.     | |||
| 18
    
        Defender aka LINN 12.09.14✎ 11:53 | 
        (17) А ничего, что отбор транслируется во, ВНЕЗАПНО, параметры при запросе из базы?
 Хотя было бы желание - параметр можно в условия виртуальных таблиц вставлять, а отбор в ГДЕ выносить, а потом все рассказывать, какая 1С кривая, да. | |||
| 19
    
        OnCheck 12.09.14✎ 11:58 | 
        (18) Ни чего и не ВНЕЗАПНО ;-).
 Ну вот видишь же, ответил сам себе на свой же аргумент. Я и не говорю, что кривая. Это твои домыслы. ВЫБРАТЬ Проекты.Ссылка КАК Проект ПОМЕСТИТЬ ВТПроекты ИЗ Справочник.Проекты КАК Проекты ГДЕ (Проекты.Ссылка В (&Проект) ИЛИ &ПроектНеЗаполнен) И НЕ Проекты.ПометкаУдаления ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ХозрасчетныйОбороты.Субконто1 КАК Проект, ХозрасчетныйОбороты.СуммаОборотДт КАК СуммаОборот, ХозрасчетныйОбороты.ПериодМесяц КАК ПериодМесяц, ХозрасчетныйОбороты.Регистратор ИЗ РегистрБухгалтерии.Хозрасчетный.Обороты(НАЧАЛОПЕРИОДА(&Год, ГОД), КОНЕЦПЕРИОДА(&Год, МЕСЯЦ), Авто, Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Счет_20_04), ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.рарПроекты), НЕ Субконто1.ПометкаУдаления И (&ПроектНеЗаполнен ИЛИ Субконто1 В (ВЫБРАТЬ Проект ИЗ ВТПроекты)), , ) КАК ХозрасчетныйОбороты | |||
| 20
    
        OnCheck 12.09.14✎ 12:02 | 
        Знаю, здесь правильнее было бы Автозаполнение, чтобы от второго парметра уйти.     | |||
| 21
    
        OnCheck 12.09.14✎ 12:22 | 
        (18) "а отбор в ГДЕ выносить" а вот это не совсем понимаю, разве мы можем отбором рулить?     | |||
| 22
    
        Defender aka LINN 12.09.14✎ 12:23 | 
        (19) "ответил сам себе на свой же аргумент" - нинада вот это вот СВОИ мысли в МОИ слова вкладывать. Отбор и параметр - вещи ОДИНАКОВЫЕ по быстродейстию, т.к. по сути одно и то же. Если у тебя отбор работает медленнее - приложи линейку к рукам, должен зазор некислый остаться.     | |||
| 23
    
        Defender aka LINN 12.09.14✎ 12:24 | 
        (21) Вот об этом я и говорю.
 Одинэснеги нифига не разбираются в системе, с которой работают, но это им не мешает с умным видом бред нести. | |||
| 24
    
        OnCheck 12.09.14✎ 12:28 | 
        (23) а не вброс ли это, докажи, будь добр?     | |||
| 25
    
        OnCheck 12.09.14✎ 12:33 | 
        +(24) Хотя бы на примере моего запроса, там вроде все элементарно.     | |||
| 26
    
        LionHeart_spg 12.09.14✎ 12:36 | 
        (22) У тебя консоль СКД с отладчиком есть? Выложи сюда запрос, который сформирует СКД с отбором и без.     | |||
| 27
    
        LionHeart_spg 12.09.14✎ 12:39 | 
        Отличие отбора от параметра простое.
 У параметра мы можем поменять только значение. У отбора мы можем поменять Вид сравнения и значение | |||
| 28
    
        OnCheck 12.09.14✎ 12:41 | 
        (27) Если не сложно вышли, поажлуйста, мне на почту (в моем профиле) эту консоль?     | |||
| 29
    
        Defender aka LINN 12.09.14✎ 12:43 | 
        (24) Что доказать? Что ты в системе не разбираешься?     | |||
| 30
    
        LionHeart_spg 12.09.14✎ 12:45 | 
        http://infostart.ru/public/15036/ - Сама статья про консоль
 Там на скриншоте видно, что делает СКД с запросом http://infostart.ru/public/download.php?file=51040&pub=15036 - ссылка на скачивание консоли (бесплатно) | |||
| 31
    
        OnCheck 12.09.14✎ 12:47 | 
        (29) я не утверждаю, что в системе полностью разбираюсь.
 Ты утверждаешь, что мы можем рулить отбором, т.е. то как система сформирует в результате запрос с учетом установленного отбора. А именно допишет через ГДЕ или упакует в параметры ВТ. | |||
| 32
    
        LionHeart_spg 12.09.14✎ 12:51 | 
        (31) Кстати, на эту тему есть необязательные параметры и это забота разработчика закодить заранее такие "сомнительные" варианты (Параметр как {Параметр}) (по памяти, мог в синтаксисе ошибиться, но примерно так)     | |||
| 33
    
        OnCheck 12.09.14✎ 12:54 | 
        (30) спасибо.     | |||
| 34
    
        OnCheck 12.09.14✎ 12:56 | 
        (32) здесь все верно. Но мы немного отклонились от темы а именно в (31)     | |||
| 35
    
        Defender aka LINN 12.09.14✎ 13:07 | 
        (31) ППЦ... А ты не пробовал документацию почитать, м?
 Раз: 
Два 
А ты думал эти смешные скобочки для красоты нужны? | |||
| 36
    
        OnCheck 12.09.14✎ 13:12 | 
        (35) Ты прав, Константин, спасибо. Действительно все просто. Как там говорят посыпаю голову пеплом.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |