Имя: Пароль:
1C
1С v8
Нужна помощь с запросом
,
0 katerinaUniv
 
31.01.18
12:58
Добрый день, конфигурация 1С:Финансист. Есть необходимость сформировать отчет, в котором будут все документы Заявка на расход ДС, и к ним добавить информацию о статусе согласования (регистр сведений СтатусыДокументов) и об оплате (регистр накопления План-факт движения ДДС, тип - обороты).
Почему-то выводит только оплаченные заявки (то есть те документы, по которым в обоих регистрах есть записи). Не могу понять, в чем причина. Помогите пожалуйста.

ВЫБРАТЬ
    удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка КАК Заявка,
    удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка.Номер КАК Номер,
    удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка.Дата КАК Дата,
    удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка.Аналитика1 КАК Проект,
    удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка.ЦФО КАК ЦФО,
    удсЗаявкаНаРасходДСРасшифровкаПлатежа.СтатьяОборотов КАК СтатьяОборотов,
    удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка.Контрагент КАК Контрагент,
    удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка.ДоговорКонтрагента КАК Договор,
    удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка.СчетНаОплату КАК СчетНаОплату,
    удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка.НазначениеПлатежа КАК НазначениеПлатежа,
    удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка.ВалютаДокумента КАК Валюта,
    удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка.СуммаДокумента КАК СуммаЗаявки,
    удсСтатусыДокументов.Статус КАК Статус,
    удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка.КурсВзаиморасчетов КАК Курс,
    ЕСТЬNULL(-удсПланФактПоступлениеСписаниеДСОбороты.СуммаДокументаОборот, 0) КАК СуммаОплаты,
    ЕСТЬNULL(удсПланФактПоступлениеСписаниеДСОбороты.Период, "") КАК ДатаОплаты,
    ЕСТЬNULL(удсПланФактПоступлениеСписаниеДСОбороты.Регистратор, "") КАК ДокументОплаты,
    удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка.ИдентификаторПлатежа КАК ИдентификаторПлатежа,
    удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка.СчетКонтрагента КАК СчетКонтрагента,
    удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка.Проведен КАК Проведен,
    удсЗаявкаНаРасходДСРасшифровкаПлатежа.СтатьяОборотов.Код КАК КодСтатьи
ИЗ
    Документ.удсЗаявкаНаРасходДС.РасшифровкаПлатежа КАК удсЗаявкаНаРасходДСРасшифровкаПлатежа
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.удсПланФактПоступлениеСписаниеДС.Обороты(&НачалоПериода, &ОкончаниеПериода, Запись, ) КАК удсПланФактПоступлениеСписаниеДСОбороты
        ПО (удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка = удсПланФактПоступлениеСписаниеДСОбороты.ДокументПлана)
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.удсСтатусыДокументов КАК удсСтатусыДокументов
        ПО (удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка = удсСтатусыДокументов.Документ)
ГДЕ
    удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка.ПометкаУдаления = ЛОЖЬ
    И ТИПЗНАЧЕНИЯ(удсПланФактПоступлениеСписаниеДСОбороты.Регистратор) = ТИП(Документ.удсСписаниеСРасчетногоСчета)
    И удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка.Дата МЕЖДУ &ДатаС И &ДатаПо
    И ВЫБОР
            КОГДА &ЦФО <> ЗНАЧЕНИЕ(Справочник.удсЦФО.ПустаяСсылка)
                ТОГДА удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка.ЦФО = &ЦФО
            ИНАЧЕ ИСТИНА
        КОНЕЦ
    И ВЫБОР
            КОГДА &Аналитика1 <> ЗНАЧЕНИЕ(Справочник.вэПроекты.ПустаяСсылка)
                ТОГДА удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка.Аналитика1 = &Аналитика1
            ИНАЧЕ ИСТИНА
        КОНЕЦ
    И ВЫБОР
            КОГДА &Контрагент <> ЗНАЧЕНИЕ(Справочник.удсКонтрагенты.ПустаяСсылка)
                ТОГДА удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка.Контрагент = &Контрагент
            ИНАЧЕ ИСТИНА
        КОНЕЦ
    И ВЫБОР
            КОГДА &ДоговорКонтрагента <> ЗНАЧЕНИЕ(Справочник.удсДоговорыКонтрагентов.ПустаяСсылка)
                ТОГДА удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка.ДоговорКонтрагента = &ДоговорКонтрагента
            ИНАЧЕ ИСТИНА
        КОНЕЦ
    И ВЫБОР
            КОГДА &СтатьяОборотов <> ЗНАЧЕНИЕ(Справочник.удсСтатьиОборотовПоБюджету.ПустаяСсылка)
                ТОГДА удсЗаявкаНаРасходДСРасшифровкаПлатежа.СтатьяОборотов = &СтатьяОборотов
            ИНАЧЕ ИСТИНА
        КОНЕЦ
    И ВЫБОР
            КОГДА &Статус <> ЗНАЧЕНИЕ(Перечисление.удсСтатусыДокументов.ПустаяСсылка)
                ТОГДА удсСтатусыДокументов.Статус = &Статус
            ИНАЧЕ ИСТИНА
        КОНЕЦ
1 dezss
 
31.01.18
13:00
перенеси условия из ГДЕ в соединения.
ты этими условиями левое сделал внутренним
2 dezss
 
31.01.18
13:00
(1) сделал -> сделала
3 dezss
 
31.01.18
13:02
Если хочется конкретики, то вот это условия:
удсЗаявкаНаРасходДСРасшифровкаПлатежа.Ссылка.ПометкаУдаления = ЛОЖЬ
не может быть выполнено, если удсЗаявкаНаРасходДСРасшифровкаПлатежа.ссылка = null
4 katerinaUniv
 
31.01.18
13:05
(1) немного не понимаю
5 katerinaUniv
 
31.01.18
13:06
(3) это запрос по документам (условие), так что null не может быть по определению
6 Михаил Козлов
 
31.01.18
13:09
"И ТИПЗНАЧЕНИЯ(удсПланФактПоступлениеСписаниеДСОбороты.Регистратор) = ТИП(Документ.удсСписаниеСРасчетногоСчета)".
Попробуйте (пока) закомментарить это условие
А лучше - закомментарить все в ГДЕ.
7 hhhh
 
31.01.18
13:11
(5) ТИПЗНАЧЕНИЯ(удсПланФактПоступлениеСписаниеДСОбороты.Регистратор) = ТИП(Документ.удсСписаниеСРасчетногоСчета)

какое значение у вас получится этого выражения, если неоплаченная заявка? Подумайте.
8 1Сергей
 
31.01.18
13:12
(5) null может быть в регистре. А условием ты отсеила все null-ы. А следовательно и документы без записей в регистре
9 katerinaUniv
 
31.01.18
13:14
(7) записей тогда нет, удовлетворяющих отбору
10 katerinaUniv
 
31.01.18
13:14
(7) тип значения - условие убрала, а все равно записей нет
11 Михаил Козлов
 
31.01.18
13:28
(10) Попробуйте условие ГДЕ убрать.
12 katerinaUniv
 
31.01.18
13:29
все-таки из-за условия
13 dezss
 
31.01.18
13:30
(5) тьфу, туплю...названия все такие длинные...но там и другие условия есть, которые накладываются на то, что справа от ЛЕВОЕ
14 katerinaUniv
 
31.01.18
13:30
как тогда исправить?
15 katerinaUniv
 
31.01.18
13:30
И ТИПЗНАЧЕНИЯ(удсПланФактПоступлениеСписаниеДСОбороты.Регистратор) = ТИП(Документ.удсСписаниеСРасчетногоСчета)
16 katerinaUniv
 
31.01.18
13:31
мне нужно ограничить записи из регистра накопления по типу регистратора - взять только те, что по списанию с расчетного счета выполнены. как лучше сделать это без потери записей?
17 katerinaUniv
 
31.01.18
13:33
как правильно это сделать?
18 Михаил Козлов
 
31.01.18
13:34
(15) Можно во вложенном запросе наложить условие.
Либо соединить по:
И (удсПланФактПоступлениеСписаниеДСОбороты.Регистратор ЕСТЬ NULL ИЛИ ТИПЗНАЧЕНИЯ(удсПланФактПоступлениеСписаниеДСОбороты.Регистратор) = ТИП(Документ.удсСписаниеСРасчетногоСчета))
19 dezss
 
31.01.18
13:34
вот эти 2 условия тебе мешают....перенеси их в соединения

ТИПЗНАЧЕНИЯ(удсПланФактПоступлениеСписаниеДСОбороты.Регистратор) = ТИП(Документ.удсСписаниеСРасчетногоСчета)

ВЫБОР
    КОГДА &Статус <> ЗНАЧЕНИЕ(Перечисление.удсСтатусыДокументов.ПустаяСсылка)
        ТОГДА удсСтатусыДокументов.Статус = &Статус
    ИНАЧЕ ИСТИНА
КОНЕЦ
20 dezss
 
31.01.18
13:35
(18) есть нулл не обязательно
21 katerinaUniv
 
31.01.18
13:52
(18) Спасибо большое! Не знала, что так можно.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан