|
Как в запросе проверить наличие реквизита у документа? | ☑ | ||
|---|---|---|---|---|
|
0
WED
07.07.08
✎
14:26
|
Есть ряд документов, у которых реквизита контрагент нет, а есть документы у которых он есть.
В запросе нужно получить выборку из регистра накопления по регистратору с контрагентом = &Контрагент и без контрагента вовсе... вобщем в выборке должны быть все расходные на Пупкина, но и все Перемещения (в которм впринципе реквизита контрагент нет) тоже..... Проблема именно в том, как узнать есть реквизит у документа или нет? |
|||
|
1
Mitriy
07.07.08
✎
14:29
|
Есть Null?
|
|||
|
2
GenV
07.07.08
✎
14:29
|
(0) Через ВЫБОР ССЫЛКА проверяй на тип документов с Контрагентом, для остальных ставь пусто. Выбор в тексте запроса можно сформировать динамически по метаданным.
|
|||
|
3
WED
07.07.08
✎
14:33
|
(1) ммм.. может быть, надо проверить
(2) не понял насчет динамического формирования выбора |
|||
|
4
WED
07.07.08
✎
14:34
|
По идее мне надо аналог такого:
Регистратор.Ссылка.Метаданные().Реквизиты.Найти("Контрагент") |
|||
|
5
Лефмихалыч
07.07.08
✎
14:35
|
(0) при помощи Метаданные строй текст запроса динамически
|
|||
|
6
GenV
07.07.08
✎
14:35
|
(3) Обходишь типы регистратора, проверяешь у них наличие реквизита Контрагент по метаданным, если есть - добавляешь условие на ВЫБОР.
Можно сделать наоборот, если регистраторов без контрагента меньше. |
|||
|
7
WED
07.07.08
✎
14:36
|
(5) Не пойдет, ибо в запросе мне надо получить ВСЕ регистраторы у которых контрагент = Пупкин и плюсом все документы вообще без контрагента...
|
|||
|
8
WED
07.07.08
✎
14:37
|
(6) Построение текста запроса отпадает по причине (7)
|
|||
|
9
acsent
07.07.08
✎
14:37
|
Контрагент ЕСТЬ NULL ИЛИ Контрагент = &Контрагент
|
|||
|
10
Mitriy
07.07.08
✎
14:38
|
(9) Где Док.Контрагент ЕСТЬ NULL ИЛИ Док.Контрагент = &Контрагент
|
|||
|
11
WED
07.07.08
✎
14:39
|
(10) Вот и я к тому же пришел только что :)
|
|||
|
12
BAGER
07.07.08
✎
14:39
|
Ставь в условие:
ВЫБРАТЬ Док.Ссылка, Док.Контрагент ИЗ Документ.<Твой документ> КАК Док ГДЕ ЕСТЬNULL(Док.Контрагент, &Контрагент) = &Контрагент |
|||
|
13
Mitriy
07.07.08
✎
14:39
|
Док = Регистратор
|
|||
|
14
kumena
07.07.08
✎
14:40
|
при чем сами документы и контрагент в них если запрос по регистру, контрагент в регистр не пишется?
|
|||
|
15
BAGER
07.07.08
✎
14:42
|
Смотри условие, а не источник данных
|
|||
|
16
GenV
07.07.08
✎
14:43
|
(11) Ну-ну :) Ну и как, не ругается на синтаксическую ошибку, если док без реквизита контрагент?
|
|||
|
17
Mitriy
07.07.08
✎
14:44
|
(16) самому попытать слабо?
|
|||
|
18
GenV
07.07.08
✎
14:53
|
(17) Мне давно уже не слабо :) Иначе и не писал бы :)
|
|||
|
19
Лефмихалыч
07.07.08
✎
14:58
|
(6) чудак человек... невозможно это, если реквзита КОнтрагент у регистратора нет, то при обращении к нему в запросе получишь куй в виде рантайм-ошибки
|
|||
|
20
Лефмихалыч
07.07.08
✎
14:58
|
(19) >> (7)
промазал |
|||
|
21
BAGER
07.07.08
✎
14:58
|
Лови обороты за период по контрагенту+без контрагента (это на 1С:Предприятие 8.1):
ВЫБРАТЬ ТоварыНаСкладахОбороты.Номенклатура, ТоварыНаСкладахОбороты.Регистратор, СУММА(ТоварыНаСкладахОбороты.КоличествоОборот) КАК КоличествоОборот, СУММА(ТоварыНаСкладахОбороты.КоличествоПриход) КАК КоличествоПриход, СУММА(ТоварыНаСкладахОбороты.КоличествоРасход) КАК КоличествоРасход ИЗ РегистрНакопления.ТоварыНаСкладах.Обороты(&НачДата, &КонДата, Регистратор, ) КАК ТоварыНаСкладахОбороты ГДЕ ЕСТЬNULL(ТоварыНаСкладахОбороты.Регистратор.Контрагент, &Контрагент) = &Контрагент СГРУППИРОВАТЬ ПО ТоварыНаСкладахОбороты.Номенклатура, ТоварыНаСкладахОбороты.Регистратор |
|||
|
22
Лефмихалыч
07.07.08
✎
15:10
|
(21) не взлетит в случае (0)
|
|||
|
23
BAGER
07.07.08
✎
15:31
|
(22) Ошибаешься, в список попадают ВСЕ документы по указанному контрагенту и ВСЕ документы без реквизита «контрагент»
|
|||
|
24
WED
07.07.08
✎
15:48
|
(19) Никаких ошибок, ибо запрос для документа без контрагента как раз NULL и подставляет
(21) Взлетело, ибо это почти аналог моего запроса :) Вопрос закрыт. Спасибо Mitriy и его (10) Где Док.Контрагент ЕСТЬ NULL ИЛИ Док.Контрагент = &Контрагент |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |