|
Проверка типа параметра в запросе | ☑ | ||
---|---|---|---|---|
0
servs
28.08.12
✎
10:45
|
Доброе утро!
В запросе есть параметр "Контрагент"(тип СправочникСсылка.Контрагенты), в СКД на закладке параметры поставил галку "Список значений". Этот параметр учавствует в конструкции: ГДЕ Контрагент В (&Контрагент) основного запроса отчета. Как сделать так, чтобы если параметр не заполнен, то ограничение не срабатывало? Раньше я использовал конструкцию ВЫБОР КОГДА &Контрагент = Значение(Справочник.Контрагенты.ПустаяСсылка) ТОГДА Истина ИНАЧЕ Контрагент = &Контрагент КОНЕЦ Сейчас это не работает, т.к. составной тип параметра. Кто сталкивался, посоветуйте. |
|||
1
andrewks
28.08.12
✎
10:46
|
выразить
|
|||
2
Kashemir
28.08.12
✎
10:46
|
Неопределенное значение составного типа в запросе будет NULL
|
|||
3
servs
28.08.12
✎
10:47
|
(1) пробовал
(2) спс, ща попробую |
|||
4
Kashemir
28.08.12
✎
10:47
|
(1) У него список значений в параметре
|
|||
5
iceman2112
28.08.12
✎
10:48
|
а почему используешь параметр а не отбор?
|
|||
6
Kashemir
28.08.12
✎
10:49
|
(3) Тебе надо сначала отдельно список конктрагентов в подзапрос отобрать - а дальше уже строить свои проверки
|
|||
7
vmv
28.08.12
✎
10:54
|
ВЫБОР
КОГДА &Контрагент = Неопределно ИЛИ &Контрагент =(Справочник.Контрагенты.ПустаяСсылка) ТОГДА Истина ИНАЧЕ Контрагент = &Контрагент КОНЕЦ это быдет работать когда параметр НЕ коллеция(не массив, не список) Если параметр может быть как коллекцие, так и значением, то нужно использовать конструкцию вида |ГДЕ | ... | И (&БезОтораКонтрагента | ИЛИ ТабБд.Ссылка В (&Контрагент)) т.е. передавать в запрос еще один параметр, определяя "пустоту" параметра до запроса. Все попытки скрестить вычисления в запросе "пустоты" параметра, который может быть как коллекцией так и значением будут безуспешны на текущем синтаксисе запросов 1С |
|||
8
servs
28.08.12
✎
10:57
|
(5) так запрос построен, показатели считаются в запросе
(6) там не проверки, а отбор в первом запросе пакета, на основании которого потом будут рассчитываться показатели. (7) спасибо, ответ исчерпывающий. |
|||
9
Kashemir
28.08.12
✎
11:02
|
(8) Попробовал покрутить - что-то такое получилось
ВЫБРАТЬ ВЫБОР КОГДА ВложенныйЗапрос.Количество > 0 ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК ЕстьКонтрагенты ПОМЕСТИТЬ ПроверятьКонтрагентов ИЗ (ВЫБРАТЬ КОЛИЧЕСТВО(*) КАК Количество ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ Контрагенты.Ссылка В(&СпсКонтрагентов)) КАК ВложенныйЗапрос ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента, ВзаиморасчетыСКонтрагентамиОстатки.Сделка, ВзаиморасчетыСКонтрагентамиОстатки.Организация, ВзаиморасчетыСКонтрагентамиОстатки.Контрагент, ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток, ВзаиморасчетыСКонтрагентамиОстатки.СуммаУпрОстаток ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки( , Контрагент В (&СпсКонтрагентов) ИЛИ ЛОЖЬ В (ВЫБРАТЬ ПроверятьКонтрагентов.ЕстьКонтрагенты ИЗ ПроверятьКонтрагентов КАК ПроверятьКонтрагентов)) КАК ВзаиморасчетыСКонтрагентамиОстатки |
|||
10
Kashemir
28.08.12
✎
11:04
|
(7) Не то чтобы безуспешны - но далекие от совершенства, типа (9)
|
|||
11
servs
28.08.12
✎
11:08
|
(9) хорошая идея! Сейчас попробую на своем примере.
|
|||
12
Kashemir
28.08.12
✎
12:59
|
Хорошая задачка для теста соискателей :)
|
|||
13
Ненавижу 1С
гуру
28.08.12
✎
13:03
|
идиотизм пустых значений
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |