Имя: Пароль:
1C
1С v8
Непонятная ошибка, которая сводит с ума)
🠗 (Волшебник 11.07.2017 22:20)
0 Alex87r
 
11.07.17
13:51
Привет всем!
В запросе прописал такую конструкцию
ВЫБОР
    КОГДА &ИспользоватьОтборВидДокумента
        ТОГДА ТИПЗНАЧЕНИЯ(РасходнаяНакладная.Ссылка) = &ВидДокумента
    ИНАЧЕ ИСТИНА
КОНЕЦ

В отладчике &ИспользоватьОтборВидДокумента = ложь (тип булево), но при этом запрос все равно сравнивает вид документа Расходная накладная с параметром &ВидДокумента.
Если в консоле выполняю запрос и устанавливаю &ИспользоватьОтборВидДокумента = ложь, то не идет сравнение с типом.
В чем может быть дело, вообще не понятно.Подскажите что нибудь)

Кэш чистил.
1 Ёпрст
 
11.07.17
13:54
прописал, в каком месте ? В условии ?
Воткни в селект, увидишь, как есть на самом деле
2 1dvd
 
11.07.17
13:56
Гуанокод
3 Alex87r
 
11.07.17
13:56
(2) Предложи лучше
(1) Да, в условии. В селект это куда?
4 1dvd
 
11.07.17
13:58
(3) весь запрос покажи
5 butterbean
 
11.07.17
13:58
(0) если ничего не поможет — закрой все окна 1С (включая конфигуратор) и по новой открой и запусти отчет
6 Ёпрст
 
11.07.17
14:03
(3) в селект, это сюда:

select
   ВЫБОР
    КОГДА &ИспользоватьОтборВидДокумента
        ТОГДА Ложь
    ИНАЧЕ ИСТИНА
КОНЕЦ,
....
from ....
where
ВЫБОР
    КОГДА &ИспользоватьОтборВидДокумента
        ТОГДА ТИПЗНАЧЕНИЯ(РасходнаяНакладная.Ссылка) = &ВидДокумента
    ИНАЧЕ ИСТИНА
КОНЕЦ
7 Alex87r
 
11.07.17
14:08
Запрос страшный)


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

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

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

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ.РасходнаяНакладная,
    ВТ.ПолученыОригиналыДокументов,
    ВТ.ПолученыКопииДокументов,
    ВТ.Дата,
    ВТ.Номер,
    ВТ.Контрагент,
    ВТ.СуммаДокумента,
    ВТ.ВидОперации,
    ВТ.СчетФактура,
    ВТ.СчетФактураСуммаДокумента,
    ВТ.СуммыДокументовНеСовпадают,
    ВТ.АдресДоставки,
    ВТ.Грузополучатель,
    ВТ.Статус,
    ВТ.ДатаСтатуса,
    ВТ.СтатусДополнительный,
    ВТ.ДатаДопСтатуса,
    ВТ.ВидДокумента
ИЗ
    ВТ КАК ВТ
ГДЕ
    ВЫБОР
            КОГДА &ИспользоватьОтборВидДокумента
                ТОГДА ТИПЗНАЧЕНИЯ(ВТ.РасходнаяНакладная.Ссылка) = &ВидДокумента
            ИНАЧЕ ИСТИНА
        КОНЕЦ
8 HEKPOH
 
11.07.17
14:25
проверка "&ИспользоватьОтборВидДокумента = Истина" - так сработает
9 Ёпрст
 
11.07.17
14:26
(7) может того, будешь хотя бы построителем отчета условия пихать ? Чем эти нелепые установитьПараметр ?
10 Alex87r
 
11.07.17
15:04
(8) Так пробовал, идет отбор по условию ТОГДА ТИПЗНАЧЕНИЯ(ВТ.РасходнаяНакладная.Ссылка) = &ВидДокумента
11 Alex87r
 
11.07.17
15:05
(9) Подскажи, как это)
12 Ёпрст
 
11.07.17
15:11
(11)
на форму кинешь Отбор от построителя отчета, в тексте запроса кинешь конструкции { где вася.* как Вася} , потом выполняй, хочешь просто запрос, с установкой значений из построителя, хочешь, сам построитель выполняй.
13 Alex87r
 
11.07.17
16:21
(12) у меня это не отчет. Это процедура в форме, которая заполняет список доков для печати.
14 Ёпрст
 
11.07.17
16:59
(13) какая разница ? Параметры ты где все берешь ?
На форме размещаешь ?
15 Ёпрст
 
11.07.17
16:59
Вот туда и поместишь стандартный Отбор.
16 aleks_default
 
11.07.17
17:42
Если учитывать твои заявления в (0)и в(10) получается при любом значении параметра "&ИспользоватьОтборВидДокумента" результат запроса не меняется? Или ты где-то врешь.
17 Alex87r
 
11.07.17
17:46
(16) Да, не меняется. зуб даю) Когда &ИспользоватьОтборВидДокумента = ложь запрос его не правильно отрабатывает, как будто там истина. Когда истина, запрос его отрабатывает правильно.
18 aleks_default
 
11.07.17
17:54
Ну значит у тебя там только расходные накладные и больше ничего нет
19 trdm
 
11.07.17
17:59
(7) > Запрос страшный)

Форумное форматирование - вот что меня больше напрягает.
20 Alex87r
 
11.07.17
18:00
у меня есть еще параметр &ВидДокумента.
ОН принимает значение ТИП только тогда, когда включен отбор, т.е.  &ИспользоватьОтборВидДокумента = истина.
Когда &ИспользоватьОтборВидДокумента = ложь, то &ВидДокумента = неопределено. И в этом случае идет сравнение ТИПЗНАЧЕНИЯ(ВТ.РасходнаяНакладная.Ссылка) = &ВидДокумента и запрос ошибку выдает, что нельзя сравнивать такие поля.
21 Alex87r
 
11.07.17
18:01
(19) Над этим запросом работали много человек) меня попросили сделать этот отбор %)
22 Ёпрст
 
11.07.17
18:05
(21) да у вас там гнездо
23 craxx
 
11.07.17
20:44
(21) найми уже нормального специалиста
конструкция ТОГДА ТИПЗНАЧЕНИЯ(РасходнаяНакладная.Ссылка) = &ВидДокумента в выборе изрядно доставляет
24 Alex87r
 
11.07.17
21:03
(23) А что не так с этой конструкцией?
25 Имитация работы
 
11.07.17
21:08
(21) А что стало с предыдущими? Их... ?
26 Alex87r
 
11.07.17
22:16
(25) Они много вопросов задавали не по делу, пришлось отстранить)

(23) А что, в выборе нельзя так делать?

В общем всем не нравится, но никто не предложил нормальное решение или замену данного условия)
27 Волшебник
 
модератор
11.07.17
22:20
Тема не отражает суть сообщения.
Если предложите нормальное название, я переименую ветку и отменю утопление.
28 Alex87r
 
11.07.17
22:27
Платформа не отрабатывает условие запроса ВЫБОР КОГДА.
29 Волшебник
 
модератор
11.07.17
22:33
(28) При чём тут миста? Опиши ошибку и доложи разработчику платформы.
30 Alex87r
 
11.07.17
22:35
(29) Потому что в запросе используются такие же конструкции, и платформа их правильно обрабатывает.
Я не думаю, что это косяк разработчиков.
На форум написал, т.к. хотел у людей с опытом спросить. Может быть что то посоветуют.
31 Alex87r
 
11.07.17
22:54
В общем при конструкции ТОГДА ТИПЗНАЧЕНИЯ(РасходнаяНакладная.Ссылка) = &ВидДокумента
не правильно отрабатывает

Переделал вот так, все работает.


ВЫБОР
    КОГДА &ВидДокумента = "1"
        ТОГДА ВТ.РасходнаяНакладная.Ссылка ССЫЛКА Документ.РасходнаяНакладная
    ИНАЧЕ ВЫБОР
            КОГДА &ВидДокумента = "2"
                ТОГДА ВТ.РасходнаяНакладная.Ссылка ССЫЛКА Справочник.ДоговорыКонтрагентов
            ИНАЧЕ ВЫБОР
                    КОГДА &ВидДокумента = "3"
                        ТОГДА ВТ.РасходнаяНакладная.Ссылка ССЫЛКА Документ.МТТ_ПриложениеКДоговору
                    ИНАЧЕ ИСТИНА
                КОНЕЦ
        КОНЕЦ
КОНЕЦ
32 Волшебник
 
модератор
11.07.17
23:05
(30) Пишется "так как" и "что-то"

(31) Молодец, что переделал свой говнокод в работающий, но это не делает тебе чести.
Независимо от того, куда вы едете — это в гору и против ветра!