Имя: Пароль:
1C
1С v8
Проблема с запросом
0 ЮлияКолегова
 
15.07.20
20:26
Всем добрый день. Есть запрос

ВЫБРАТЬ
    КодыСтрокДекларацииПоНДСКЗачетуСрезПоследних.Период КАК Период,
    КодыСтрокДекларацииПоНДСКЗачетуСрезПоследних.ВидОперации КАК ВидОперацииПоступления,
    КодыСтрокДекларацииПоНДСКЗачетуСрезПоследних.КодСтроки КАК КодСтроки,
    КодыСтрокДекларацииПоНДСКЗачетуСрезПоследних.ВидОборота КАК ВидОборота,
    ВЫБОР
        КОГДА КодыСтрокДекларацииПоНДСКЗачетуСрезПоследних.ВидОборота = ЗНАЧЕНИЕ(Перечисление.ВидыОборотовПоРеализации.ПустаяСсылка)
            ТОГДА 2
        ИНАЧЕ 1
    КОНЕЦ КАК Приоритет
ПОМЕСТИТЬ ВТ_Приоритет
ИЗ
    РегистрСведений.КодыСтрокДекларацииПоНДСКЗачету.СрезПоследних(&КонПериода, ) КАК КодыСтрокДекларацииПоНДСКЗачетуСрезПоследних

ИНДЕКСИРОВАТЬ ПО
    Приоритет,
    ВидОперацииПоступления
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТаблицаОпераций.ВидОперацииПоступления КАК ВидОперацииПоступления,
    МИНИМУМ(ТаблицаОпераций.Приоритет) КАК Приоритет
ПОМЕСТИТЬ вт_ТаблицаДохода
ИЗ
    ВТ_Приоритет КАК ТаблицаОпераций

СГРУППИРОВАТЬ ПО
    ТаблицаОпераций.ВидОперацииПоступления
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    вт_ТаблицаДохода.ВидОперацииПоступления КАК ВидОперацииПоступления,
    ДанныеОКодахДекларации.КодСтроки КАК КодСтроки
ПОМЕСТИТЬ ВТ_СведенияОкодахСтрокДекларации
ИЗ
    вт_ТаблицаДохода КАК вт_ТаблицаДохода
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Приоритет КАК ДанныеОКодахДекларации
        ПО вт_ТаблицаДохода.Приоритет = ДанныеОКодахДекларации.Приоритет
            И вт_ТаблицаДохода.ВидОперацииПоступления = ДанныеОКодахДекларации.ВидОперацииПоступления

ИНДЕКСИРОВАТЬ ПО
    ВидОперацииПоступления,
    КодСтроки
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    НДСКВозмещению.СуммаБезНДСОборот КАК СуммаБезНДСОборот,
    НДСКВозмещению.СуммаНДСОборот КАК СуммаНДСОборот,
    НДСКВозмещению.ВидОперацииПоступления КАК ВидОперацииПоступления,
    НДСКВозмещению.ВидОборота КАК ВидОборота,
    НДСКВозмещению.ВидНалогаНДС КАК ВидНалогаНДС,
    НДСКВозмещению.Регистратор,
    НДСКВозмещению.СчетФактура
ПОМЕСТИТЬ вт_НДСКВозмещениюОбороты
ИЗ
    РегистрНакопления.НДСКВозмещению.Обороты(&НачПериода, &КонПериода, Регистратор, Налогоплательщик = &Налогоплательщик) КАК НДСКВозмещению

ОБЪЕДИНИТЬ ВСЕ

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    КодыСтрокДекларацииПоНДСКЗачетуСрезПоследних.КодСтроки КАК КодСтроки,
    СУММА(вт_НДСКВозмещениюОбороты.СуммаБезНДСОборот) КАК СуммаБезНДСОборот,
    СУММА(вт_НДСКВозмещениюОбороты.СуммаНДСОборот) КАК СуммаНДСОборот,
    вт_НДСКВозмещениюОбороты.ВидОперацииПоступления КАК ВидОперацииПоступления,
    "Возмещение" КАК Раздел,
    вт_НДСКВозмещениюОбороты.ВидОборота,
    вт_НДСКВозмещениюОбороты.ВидНалогаНДС КАК ВидНалогаНДС,
    вт_НДСКВозмещениюОбороты.Регистратор КАК Регистратор,
    вт_НДСКВозмещениюОбороты.СчетФактура КАК СчетФактура
ПОМЕСТИТЬ ВозмещениеВТ
ИЗ
    вт_НДСКВозмещениюОбороты КАК вт_НДСКВозмещениюОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КодыСтрокДекларацииПоНДСКЗачету.СрезПоследних(&КонПериода, ) КАК КодыСтрокДекларацииПоНДСКЗачетуСрезПоследних
        ПО вт_НДСКВозмещениюОбороты.ВидОборота = КодыСтрокДекларацииПоНДСКЗачетуСрезПоследних.ВидОборота
            И вт_НДСКВозмещениюОбороты.ВидОперацииПоступления = КодыСтрокДекларацииПоНДСКЗачетуСрезПоследних.ВидОперации
ГДЕ
    (КодыСтрокДекларацииПоНДСКЗачетуСрезПоследних.КодСтроки ПОДОБНО &КодСтроки300
            ИЛИ КодыСтрокДекларацииПоНДСКЗачетуСрезПоследних.КодСтроки ЕСТЬ NULL)

СГРУППИРОВАТЬ ПО
    КодыСтрокДекларацииПоНДСКЗачетуСрезПоследних.КодСтроки,
    вт_НДСКВозмещениюОбороты.ВидОборота,
    вт_НДСКВозмещениюОбороты.ВидНалогаНДС,
    вт_НДСКВозмещениюОбороты.ВидОперацииПоступления,
    вт_НДСКВозмещениюОбороты.Регистратор,
    вт_НДСКВозмещениюОбороты.СчетФактура

ИНДЕКСИРОВАТЬ ПО
    КодСтроки,
    ВидНалогаНДС,
    Регистратор,
    СчетФактура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    СчетФактураПолученный.Ссылка,
    СчетФактураПолученный.ДокументОснование.Ссылка КАК Регистратор
ПОМЕСТИТЬ ВТ_ПодчиненныеДокументы
ИЗ
    Документ.СчетФактураПолученный.ДокументыОснования КАК СчетФактураПолученный
ГДЕ
    СчетФактураПолученный.Ссылка.Проведен = ИСТИНА
    И СчетФактураПолученный.ДокументОснование.Ссылка В
            (ВЫБРАТЬ
                вт_НДСКВозмещениюОбороты.Регистратор
            ИЗ
                вт_НДСКВозмещениюОбороты КАК вт_НДСКВозмещениюОбороты)

ИНДЕКСИРОВАТЬ ПО
    Регистратор
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПодчиненныеДокументы.Ссылка,
    ПодчиненныеДокументы.Регистратор КАК Регистратор
ПОМЕСТИТЬ вт_ДействующиеСФ
ИЗ
    ВТ_ПодчиненныеДокументы КАК ПодчиненныеДокументы
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СчетаФактурыПрекратившиеДействие.СрезПоследних(
                ,
                СчетФактура В
                    (ВЫБРАТЬ
                        ВТ_ПодчиненныеДокументы.Ссылка
                    ИЗ
                        ВТ_ПодчиненныеДокументы КАК ВТ_ПодчиненныеДокументы)) КАК СчетаФактурыПрекратившиеДействие
        ПО ПодчиненныеДокументы.Ссылка = СчетаФактурыПрекратившиеДействие.СчетФактура
ГДЕ
    СчетаФактурыПрекратившиеДействие.СчетФактура ЕСТЬ NULL

ИНДЕКСИРОВАТЬ ПО
    Регистратор
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВозмещениеВТ.КодСтроки,
    ВозмещениеВТ.ВидОперацииПоступления,
    СУММА(ВозмещениеВТ.СуммаБезНДСОборот) КАК СуммаБезНДСОборот,
    СУММА(ВозмещениеВТ.СуммаНДСОборот) КАК СуммаНДСОборот,
    СУММА(ВЫБОР
            КОГДА вт_ДействующиеСФ.Ссылка ЕСТЬ NULL
                ТОГДА ВозмещениеВТ.СуммаБезНДСОборот
            ИНАЧЕ 0
        КОНЕЦ) КАК СуммаБезНДСОборот_БезСФ,
    СУММА(ВЫБОР
            КОГДА вт_ДействующиеСФ.Ссылка ЕСТЬ NULL
                ТОГДА ВозмещениеВТ.СуммаНДСОборот
            ИНАЧЕ 0
        КОНЕЦ) КАК СуммаНДСОборот_БезСФ,
    ВозмещениеВТ.Раздел КАК Раздел,
    ВозмещениеВТ.ВидОборота,
    СУММА(ВЫБОР
            КОГДА вт_ДействующиеСФ.Ссылка ЕСТЬ NULL
                ТОГДА 0
            ИНАЧЕ ВозмещениеВТ.СуммаБезНДСОборот
        КОНЕЦ) КАК СуммаБезНДСОборот_СФ,
    СУММА(ВЫБОР
            КОГДА вт_ДействующиеСФ.Ссылка ЕСТЬ NULL
                ТОГДА 0
            ИНАЧЕ ВозмещениеВТ.СуммаНДСОборот
        КОНЕЦ) КАК СуммаНДСОборот_СФ,
    ВЫБОР
        КОГДА вт_ДействующиеСФ.Ссылка ЕСТЬ NULL
            ТОГДА ЛОЖЬ
        ИНАЧЕ ВЫБОР
                КОГДА вт_ДействующиеСФ.Ссылка.СпособПолучения = ЗНАЧЕНИЕ(Перечисление.СпособыОбменаДокументами.Электронно)
                    ТОГДА ИСТИНА
                ИНАЧЕ ЛОЖЬ
            КОНЕЦ
    КОНЕЦ КАК ЕстьЭСФ
ИЗ
    ВозмещениеВТ КАК ВозмещениеВТ
        ЛЕВОЕ СОЕДИНЕНИЕ вт_ДействующиеСФ КАК вт_ДействующиеСФ
        ПО ВозмещениеВТ.Регистратор = вт_ДействующиеСФ.Регистратор
            И (ВЫБОР
                КОГДА ВозмещениеВТ.Регистратор ССЫЛКА Документ.АвансовыйОтчет
                    ТОГДА ВозмещениеВТ.СчетФактура = вт_ДействующиеСФ.Ссылка
                ИНАЧЕ ИСТИНА
            КОНЕЦ)
ГДЕ
    ВозмещениеВТ.ВидНалогаНДС = &ВидНалогаНДСМетодомЗачета
    И ВозмещениеВТ.КодСтроки = &КодСтрокиМетодаЗачета
    И ВозмещениеВТ.СчетФактура.Дата МЕЖДУ &НачПериода И &КонПериода

СГРУППИРОВАТЬ ПО
    ВозмещениеВТ.КодСтроки,
    ВозмещениеВТ.ВидОперацииПоступления,
    ВозмещениеВТ.Раздел,
    ВозмещениеВТ.ВидОборота,
    ВЫБОР
        КОГДА вт_ДействующиеСФ.Ссылка ЕСТЬ NULL
            ТОГДА ЛОЖЬ
        ИНАЧЕ ВЫБОР
                КОГДА вт_ДействующиеСФ.Ссылка.СпособПолучения = ЗНАЧЕНИЕ(Перечисление.СпособыОбменаДокументами.Электронно)
                    ТОГДА ИСТИНА
                ИНАЧЕ ЛОЖЬ
            КОНЕЦ
    КОНЕЦ

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ВозмещениеВТ.КодСтроки,
    ВозмещениеВТ.ВидОперацииПоступления,
    СУММА(ВозмещениеВТ.СуммаБезНДСОборот),
    СУММА(ВозмещениеВТ.СуммаНДСОборот),
    СУММА(ВЫБОР
            КОГДА вт_ДействующиеСФ.Ссылка ЕСТЬ NULL
                ТОГДА ВозмещениеВТ.СуммаБезНДСОборот
            ИНАЧЕ 0
        КОНЕЦ),
    СУММА(ВЫБОР
            КОГДА вт_ДействующиеСФ.Ссылка ЕСТЬ NULL
                ТОГДА ВозмещениеВТ.СуммаНДСОборот
            ИНАЧЕ 0
        КОНЕЦ),
    ВозмещениеВТ.Раздел,
    ВозмещениеВТ.ВидОборота,
    СУММА(ВЫБОР
            КОГДА вт_ДействующиеСФ.Ссылка ЕСТЬ NULL
                ТОГДА 0
            ИНАЧЕ ВозмещениеВТ.СуммаБезНДСОборот
        КОНЕЦ),
    СУММА(ВЫБОР
            КОГДА вт_ДействующиеСФ.Ссылка ЕСТЬ NULL
                ТОГДА 0
            ИНАЧЕ ВозмещениеВТ.СуммаНДСОборот
        КОНЕЦ),
    ВЫБОР
        КОГДА вт_ДействующиеСФ.Ссылка ЕСТЬ NULL
            ТОГДА ЛОЖЬ
        ИНАЧЕ ВЫБОР
                КОГДА вт_ДействующиеСФ.Ссылка.СпособПолучения = ЗНАЧЕНИЕ(Перечисление.СпособыОбменаДокументами.Электронно)
                    ТОГДА ИСТИНА
                ИНАЧЕ ЛОЖЬ
            КОНЕЦ
    КОНЕЦ
ИЗ
    ВозмещениеВТ КАК ВозмещениеВТ
        ЛЕВОЕ СОЕДИНЕНИЕ вт_ДействующиеСФ КАК вт_ДействующиеСФ
        ПО ВозмещениеВТ.Регистратор = вт_ДействующиеСФ.Регистратор
            И (ВЫБОР
                КОГДА ВозмещениеВТ.Регистратор ССЫЛКА Документ.АвансовыйОтчет
                    ТОГДА ВозмещениеВТ.СчетФактура = вт_ДействующиеСФ.Ссылка
                ИНАЧЕ ИСТИНА
            КОНЕЦ)
ГДЕ
    НЕ ВозмещениеВТ.КодСтроки = &КодСтрокиМетодаЗачета

СГРУППИРОВАТЬ ПО
    ВозмещениеВТ.КодСтроки,
    ВозмещениеВТ.ВидОперацииПоступления,
    ВозмещениеВТ.Раздел,
    ВозмещениеВТ.ВидОборота,
    ВЫБОР
        КОГДА вт_ДействующиеСФ.Ссылка ЕСТЬ NULL
            ТОГДА ЛОЖЬ
        ИНАЧЕ ВЫБОР
                КОГДА вт_ДействующиеСФ.Ссылка.СпособПолучения = ЗНАЧЕНИЕ(Перечисление.СпособыОбменаДокументами.Электронно)
                    ТОГДА ИСТИНА
                ИНАЧЕ ЛОЖЬ
            КОНЕЦ
    КОНЕЦ

При выполнении в обработке вылетает ошибка - "{ВнешнийОтчет.РегламентированныйОтчет300Форма.Форма.Форма3002020Кв1.Форма(3162)}: Ошибка при вызове метода контекста (Выполнить)
    Результат = Запрос.Выполнить();
по причине:
{(201, 34)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
И ВозмещениеВТ.СчетФактура.Дата <<?>>МЕЖДУ &НачПериода И &КонПериода"

При проверке этого же запроса в консоле работает все нормально. Пробовала и не ко временной таблице прописывать параметры связанные с датой, а СчетФактураПолученный.Ссылка.Проведен МЕЖДУ &НачПериода И &КонПериода - ошибка не уходит.
Запрос не мой, а как видно по ошибке - переделываю рег отчетность. Мне бы понять от чего такая ошибка? Пустых дат в СчетФактуре быть не может. Или как изменить условия?
1 ЮлияКолегова
 
15.07.20
20:30
В последней строке не Проведен а Дата
2 LoneWanderer
 
15.07.20
21:00
В параметрах точно даты лежат, а не, например, строки?
3 palsergeich
 
15.07.20
21:02
Посмотри что является результатом пакета вт_НДСКВозмещениюОбороты.
Там запрос - объединение.
Во 2ой части - счет фактура забита как Null.
А Null нельзя сравнивать так как Вы хотите
4 Жан Пердежон
 
15.07.20
21:02
***
    NULL <= скорее всего вот отсюда дату выцепить не может
ИЗ
    РегистрНакопления.КорректировкаНДСКВозмещению.Обороты(&НачПериода, &КонПериода, Регистратор, Налогоплательщик = &Налогоплательщик) КАК КорректировкаНДСКВозмещению
;

***
5 palsergeich
 
15.07.20
21:02
ВЫБРАТЬ
    НДСКВозмещению.СуммаБезНДСОборот КАК СуммаБезНДСОборот,
    НДСКВозмещению.СуммаНДСОборот КАК СуммаНДСОборот,
    НДСКВозмещению.ВидОперацииПоступления КАК ВидОперацииПоступления,
    НДСКВозмещению.ВидОборота КАК ВидОборота,
    НДСКВозмещению.ВидНалогаНДС КАК ВидНалогаНДС,
    НДСКВозмещению.Регистратор,
    НДСКВозмещению.СчетФактура
ПОМЕСТИТЬ вт_НДСКВозмещениюОбороты
ИЗ
    РегистрНакопления.НДСКВозмещению.Обороты(&НачПериода, &КонПериода, Регистратор, Налогоплательщик = &Налогоплательщик) КАК НДСКВозмещению

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    КорректировкаНДСКВозмещению.СуммаКорректировкиОборотаОборот,
    КорректировкаНДСКВозмещению.СуммаНДСОборот,
    КорректировкаНДСКВозмещению.ВидОперацииКорректировки,
    КорректировкаНДСКВозмещению.ВидОборота,
    КорректировкаНДСКВозмещению.ВидНалогаНДС,
    КорректировкаНДСКВозмещению.Регистратор,
    NULL <- Проблема тут
ИЗ
    РегистрНакопления.КорректировкаНДСКВозмещению.Обороты(&НачПериода, &КонПериода, Регистратор, Налогоплательщик = &Налогоплательщик) КАК КорректировкаНДСКВозмещению
;
6 Жан Пердежон
 
15.07.20
21:02
(3) сам NULL сравнивать можно
7 palsergeich
 
15.07.20
21:02
(4) Хех, почти синхронно)
8 palsergeich
 
15.07.20
21:03
(6) Но не на интервал
9 palsergeich
 
15.07.20
21:04
(8) Туплю, чота, устал.
СчетФактура.Дата
он не может от Null получить Дату)
10 ЮлияКолегова
 
15.07.20
21:16
В общем проблема была в том, что при передаче параметра в КонПериода была изначально Граница, поменяв на просто КонецДня все заработало. Посмотрим на сколько сильно это повлияет на данные (2) (3) (4)
11 palsergeich
 
15.07.20
21:42
(10) Но на то, что мы написали тоже обрати внимание, то, что сейчас этого нет, не значит что не нарвешься
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс