Имя: Пароль:
1C
1С v8
СКД. Отключить незаполненный параметр
0 Родом из детства
 
29.12.20
11:32
текущий запрос:

ВЫБРАТЬ
...
ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , {Номенклатура.ВидНоменклатуры = &ВидНоменклатуры}) КАК ТоварыНаСкладахОстаткиИОбороты
...

Условие по виду номенклатуры поставил в фигурные скобки. На форме, если пользователь не ставит галочку напротив параметра ВидНоменклатуры, то условие отбора по виду игнорируется - нурм, но, если галка стоит, а пользователь просто не ввел значение этого поля, то результат пустой - отбор работает, а мне нужно его отключить. Прошустрил несколько тем, однако, так и не нашел ответа(
1 Родом из детства
 
29.12.20
11:36
(0) Также пробовал делать иным способом - в запросе параметр убирал. Далее в СКД создавал отбор, где правым значением был этот параметр. Далее, была идея в обработчике события "ПриКомпоновкеРезультата", проверять: заполнено ли значение параметра "ВидНоменклатуры", и, если нет, то отключать отбор. Однако, не получилось получить значение параметра...
Пытался получить следующим образом:
ЗначениеПараметраДанных = КомпоновщикНастроек.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВидНоменклатуры")).Значение;
2 Ненавижу 1С
 
гуру
29.12.20
11:38
(0) на это и рассчитано, а иначе зачем?
3 Родом из детства
 
29.12.20
11:41
(2) ну типо пользователи, похоже совсем некомпетентны и не знают, что нужно включать/отключать галочку. Тупо жмут на кнопку выполнить, без заполнения параметра, а потом не понимают, почему результат пустой
4 ДенисЧ
 
29.12.20
11:41
"а пользователь просто не ввел значение этого поля, то результат пустой - отбор работает"

Это нормальное поведение. А вдруг пользователю действительно надо по пустому значению отчёт построить?
5 ДенисЧ
 
29.12.20
11:42
(3) Таких надо учить. Не научаются - наказывать. Пряником. По мягкому месту.
6 Kassern
 
29.12.20
11:48
(0) В условии пишешь, Выбор когда &ТвойПараметр<>ПустомуЗначению тогда НужноеПоле=&ТвойПараметр Иначе Истина Конец
7 Родом из детства
 
29.12.20
11:54
(5) учить - не ко мне, я всего-лишь программист. Так поставили задачу, к сожалению
8 Родом из детства
 
29.12.20
11:55
(6) Здесь? РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , Выбор когда...) КАК
9 Родом из детства
 
29.12.20
12:08
(6) Похоже, так делать нельзя, или я туплю...
ВЫБОР
    КОГДА &ВидНоменклатуры <> ЗНАЧЕНИЕ(Справочник.ВидНоменклатуры.ПустаяСсылка) Тогда
    Номенклатура.ВидНоменклатуры = &ВидНоменклатуры
    ИНАЧЕ
КОНЕЦ        

-> Неверные параметры "Справочник.ВидНоменклатуры.ПустаяСсылка)"
Также брал строку "Номенклатура.ВидНоменклатуры = &ВидНоменклатуры" в ковычки, тоже ошибка
10 Ненавижу 1С
 
гуру
29.12.20
12:09
1. Именно в этом отчете этот параметр вообще не нужен, совсем. Отборы справляются.
2. Как отобрать данные по товарам с незаполненным видом номенклатуры?
11 Ненавижу 1С
 
гуру
29.12.20
12:10
(9) "Справочник.ВидНоменклатуры" - нет такой таблицы, но вообще вы бред городите
12 Родом из детства
 
29.12.20
12:10
(10) С незаполненным - никак, но, судя по задаче, это и не нужно. Соглашусь, странная постановка
13 Родом из детства
 
29.12.20
12:12
(11) Конфигуратор -> Справочники -> ВидыНоменклатуры -> Представление объекта = "Вид номенклатуры". Разве не так?
14 Ненавижу 1С
 
гуру
29.12.20
12:13
для особо упоротых:

ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , (Номенклатура.ВидНоменклатуры = &ВидНоменклатуры) или (&ВидНоменклатуры=ЗНАЧЕНИЕ(Справочник.ВидыНоменклатуры.ПустаяСсылка)))
15 Ненавижу 1С
 
гуру
29.12.20
12:14
(13) причем здесь представление объекта и его идентификатор? Вы же сами пишите "Справочники -> ВидыНоменклатуры"
16 ДенисЧ
 
29.12.20
12:14
(7) Могу подарить компАс. Чтобы направление на юг постановщику показать.
17 Родом из детства
 
29.12.20
12:14
(15) Потому  что я тот ещё валет%)
18 Родом из детства
 
29.12.20
12:15
(14) Спасибо!
19 mistеr
 
29.12.20
12:19
(3) Значит тебе нужно делать это за них. Перед формированием проверять заполнение и включать/отключать параметр программно.
20 Родом из детства
 
29.12.20
12:24
(19) Да, я так пытался сделать. Описал во втором сообщении темы. Почему-то значение параметра всегда пустое...
21 hhhh
 
29.12.20
12:38
(7) тогда в компоновщике настроек найди этот отбор и в нем поставь Использование = Ложь;