|
Как сказать СКД, чтобы она не накладывала отбор на определенную таблицу? | ☑ | ||
---|---|---|---|---|
0
Fuas4
26.02.16
✎
15:41
|
Господа, такая проблема: есть отчет на СКД для БП 2.0. Выводит он документы, контрагентов из документов, их контактных лиц и почты этих контактных лиц. Все он получает замечательно просто, пока я не делаю отбор по контрагенту. Как только установлен отбор по контрагенту у меня пропадают ящики. Что я сделал: я открыл отчет через консоль СКД и посмотрел конечный вариант запроса, который делает СКД. СКД накладывает отбор на все мои временные таблицы, отбирая элементы по контрагенту, в том числе и на регистр сведений Контактная информация. Вот такой текст запроса по интересующей меня таблице:
ВЫБРАТЬ РАЗРЕШЕННЫЕ ВЫРАЗИТЬ(КонтактнаяИнформация.Объект КАК Справочник.КонтактныеЛица) КАК КонтактноеЛицо, МАКСИМУМ(ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(100))) КАК Email ПОМЕСТИТЬ ВТ_АдресаЭлектроннойПочты ИЗ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация ГДЕ КонтактнаяИнформация.Объект ССЫЛКА Справочник.КонтактныеЛица И КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты) И КонтактнаяИнформация.Объект.Владелец = &П СГРУППИРОВАТЬ ПО ВЫРАЗИТЬ(КонтактнаяИнформация.Объект КАК Справочник.КонтактныеЛица) ИНДЕКСИРОВАТЬ ПО КонтактноеЛицо Вот эту строку: "И КонтактнаяИнформация.Объект.Владелец = &П" ставит сама СКД, но дело в том, что у справочника "Контактные лица" нет владельцев, соответственно, запрос возвращает мне пустоту. Как мне принудительно убрать это кривое условие? |
|||
1
FIXXXL
26.02.16
✎
15:45
|
> пока я не делаю отбор по контрагенту
покажи полный запрос |
|||
2
Fuas4
26.02.16
✎
15:46
|
(1) который СКД рисует или исходный?
|
|||
3
FIXXXL
26.02.16
✎
15:47
|
(2) исходный
посмотреть как параметры-отборы накладываешь |
|||
4
Fuas4
26.02.16
✎
15:48
|
(3) ВЫБРАТЬ РАЗРЕШЕННЫЕ
СчетНаОплатуПокупателю.Ссылка КАК Ссылка, ВЫРАЗИТЬ("Счет на оплату покупателю" КАК СТРОКА(50)) КАК ВидДокумента, СчетНаОплатуПокупателю.Организация КАК Организация, ВЫРАЗИТЬ(СчетНаОплатуПокупателю.Контрагент КАК Справочник.Контрагенты) КАК Контрагент, СчетНаОплатуПокупателю.Дата, СчетНаОплатуПокупателю.Ответственный КАК Ответственный ПОМЕСТИТЬ ВТ_Документы ИЗ Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю ГДЕ НЕ (ВЫРАЗИТЬ(СчетНаОплатуПокупателю.Контрагент КАК Справочник.Контрагенты)) = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) {ГДЕ (ВЫРАЗИТЬ("Счет на оплату покупателю" КАК СТРОКА(50))) КАК ВидДокумента, СчетНаОплатуПокупателю.Организация.*, (ВЫРАЗИТЬ(СчетНаОплатуПокупателю.Контрагент КАК Справочник.Контрагенты)).* КАК Контрагент, СчетНаОплатуПокупателю.Дата, СчетНаОплатуПокупателю.Ответственный.*} ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ РеализацияТоваровУслуг.Ссылка, ВЫРАЗИТЬ("Реализация товаров и услуг" КАК СТРОКА(50)), РеализацияТоваровУслуг.Организация, РеализацияТоваровУслуг.Контрагент, РеализацияТоваровУслуг.Дата, РеализацияТоваровУслуг.Ответственный ИЗ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг {ГДЕ (ВЫРАЗИТЬ("Реализация товаров и услуг" КАК СТРОКА(50))) КАК ВидДокумента, РеализацияТоваровУслуг.Организация.*, РеализацияТоваровУслуг.Контрагент.*, РеализацияТоваровУслуг.Дата, РеализацияТоваровУслуг.Ответственный.*} ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ СчетФактураВыданный.Ссылка, ВЫРАЗИТЬ("Счет-фактура выданный" КАК СТРОКА(50)), СчетФактураВыданный.Организация, СчетФактураВыданный.Контрагент, СчетФактураВыданный.Дата, СчетФактураВыданный.Ответственный ИЗ Документ.СчетФактураВыданный КАК СчетФактураВыданный {ГДЕ (ВЫРАЗИТЬ("Счет-фактура выданный" КАК СТРОКА(50))) КАК ВидДокумента, СчетФактураВыданный.Организация.*, СчетФактураВыданный.Контрагент.*, СчетФактураВыданный.Дата, СчетФактураВыданный.Ответственный.*} ИНДЕКСИРОВАТЬ ПО Контрагент ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗРЕШЕННЫЕ КонтактныеЛицаКонтрагентов.ОбъектВладелец КАК Контрагент, МАКСИМУМ(КонтактныеЛицаКонтрагентов.Ссылка) КАК КонтактноеЛицо ПОМЕСТИТЬ ВТ_КонтактныеЛица ИЗ Справочник.КонтактныеЛица КАК КонтактныеЛицаКонтрагентов {ГДЕ КонтактныеЛицаКонтрагентов.ОбъектВладелец.* КАК Контрагент} СГРУППИРОВАТЬ ПО КонтактныеЛицаКонтрагентов.ОбъектВладелец ИНДЕКСИРОВАТЬ ПО Контрагент ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗРЕШЕННЫЕ ВЫРАЗИТЬ(КонтактнаяИнформация.Объект КАК Справочник.КонтактныеЛица).ОбъектВладелец КАК Контрагент, ВЫРАЗИТЬ(КонтактнаяИнформация.Объект КАК Справочник.КонтактныеЛица) КАК КонтактноеЛицо, МАКСИМУМ(ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(100))) КАК Email ПОМЕСТИТЬ ВТ_АдресаЭлектроннойПочты ИЗ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация ГДЕ КонтактнаяИнформация.Объект ССЫЛКА Справочник.КонтактныеЛица И КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты) {ГДЕ КонтактнаяИнформация.Объект.Владелец.* КАК Контрагент} СГРУППИРОВАТЬ ПО ВЫРАЗИТЬ(КонтактнаяИнформация.Объект КАК Справочник.КонтактныеЛица).ОбъектВладелец, ВЫРАЗИТЬ(КонтактнаяИнформация.Объект КАК Справочник.КонтактныеЛица) ИНДЕКСИРОВАТЬ ПО КонтактноеЛицо ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Документы.Ссылка, ВТ_Документы.ВидДокумента, ВТ_Документы.Организация, ВТ_Документы.Контрагент, ВТ_Документы.Дата, ВТ_Документы.Ответственный, ВЫБОР КОГДА ВТ_Документы.Контрагент.ОсновноеКонтактноеЛицо = ЗНАЧЕНИЕ(Справочник.КОнтактныеЛица.ПустаяСсылка) ТОГДА ЕСТЬNULL(ВТ_КонтактныеЛица.КонтактноеЛицо, ЗНАЧЕНИЕ(справочник.КонтактныеЛица.ПустаяСсылка)) ИНАЧЕ ВТ_Документы.Контрагент.ОсновноеКонтактноеЛицо КОНЕЦ КАК КонтактноеЛицо ПОМЕСТИТЬ ВТ_Итог ИЗ ВТ_Документы КАК ВТ_Документы ЛЕВОЕ СОЕДИНЕНИЕ ВТ_КонтактныеЛица КАК ВТ_КонтактныеЛица ПО ВТ_Документы.Контрагент = ВТ_КонтактныеЛица.Контрагент ИНДЕКСИРОВАТЬ ПО КонтактноеЛицо ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Итог.Ссылка КАК Ссылка, ВТ_Итог.ВидДокумента КАК ВидДокумента, ВТ_Итог.Организация КАК Организация, ВТ_Итог.Контрагент КАК Контрагент, ВТ_Итог.Дата КАК Дата, ВТ_Итог.Ответственный КАК Ответственный, ВТ_Итог.КонтактноеЛицо КАК КонтактноеЛицо, ЕСТЬNULL(ВТ_АдресаЭлектроннойПочты.Email, ВЫРАЗИТЬ("" КАК СТРОКА(100))) КАК Email, ВЫБОР КОГДА ЕСТЬNULL(ВТ_АдресаЭлектроннойПочты.Email, ВЫРАЗИТЬ("" КАК СТРОКА(100))) = (ВЫРАЗИТЬ("" КАК СТРОКА(100))) ТОГДА ЛОЖЬ ИНАЧЕ ИСТИНА КОНЕЦ КАК НетОшибок {ВЫБРАТЬ Ссылка.*, ВидДокумента, Организация.*, Контрагент.*, Дата, Ответственный.*, КонтактноеЛицо.*, Email, НетОшибок} ИЗ ВТ_Итог КАК ВТ_Итог ЛЕВОЕ СОЕДИНЕНИЕ ВТ_АдресаЭлектроннойПочты КАК ВТ_АдресаЭлектроннойПочты ПО ВТ_Итог.КонтактноеЛицо = ВТ_АдресаЭлектроннойПочты.КонтактноеЛицо |
|||
5
portowyi
26.02.16
✎
15:48
|
(0) Иногда во временных таблицах помогает назначить полям, на которые не нужно делать отбор псевдоним, отличный от имени параметра отбора. Напр. есть поле контрагент, можно назначить ему напр "ВремКонтр". Не всегда, но помогает.
|
|||
6
Fuas4
26.02.16
✎
15:49
|
Ох, мать. ТАм же фигурные скобки. Простите меня :(
|
|||
7
FIXXXL
26.02.16
✎
15:49
|
ты фигурные вынеси в результирующий запрос
|
|||
8
Fuas4
26.02.16
✎
15:50
|
Видать, когда то был владелец, а теперь не стало, вынесли в отдельный реквизит. А я затупил
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |