Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Странное поведение платформы: запрос в консоли значение возвращает, а в обработке - нет

Странное поведение платформы: запрос в консоли значение возвращает, а в обработке - нет
Я
   vdeemer
 
15.07.21 - 14:57
Добрый день!
Делаю простой запрос к табличной части документа, выборка с итогами по ссылке документа - нужно пройтись по документам и строкам их ТЧ. Казалось бы, что может пойти не так? Однако результат запроса пуст. Выбираю этот же запрос в консоли - не пуст. Перевел базу на серверный вариант, смотрю в профайлере:

SELECT
T1._Document25_IDRRef,
T2._Fld476RRef,
T2._Date_Time
FROM dbo._Document25_VT3180 T1 WITH(NOLOCK)
LEFT OUTER JOIN dbo._Document25 T2 WITH(NOLOCK)
ON T1._Document25_IDRRef = T2._IDRRef
LEFT OUTER JOIN dbo._Reference2 T3 WITH(NOLOCK)
ON T2._Fld476RRef = T3._IDRRef
WHERE (1=0) AND (T2._Date_Time >= P1) AND (T3._Code = @P2) AND (T2._Marked = 0x00)
ORDER BY (T2._Date_Time) DESC

Условие в первых скобках после WHERE всегда ложь, поэтому ни одна запись выбрана не будет. Откуда оно взялось вообще???
   H A D G E H O G s
 
1 - 15.07.21 - 15:00
1С умнее, чем тебе кажется
   H A D G E H O G s
 
2 - 15.07.21 - 15:00
Покажи текст запроса в 1С
   vdeemer
 
3 - 15.07.21 - 15:08
ВЫБРАТЬ
    ЗаказТоваровДокументыИздательств.Ссылка КАК Ссылка,
    ЗаказТоваровДокументыИздательств.Ссылка.Контрагент КАК Контрагент,
    ЗаказТоваровДокументыИздательств.Ссылка.Дата КАК Дата
ИЗ
    Документ.ЗаказТоваров.ДокументыИздательств КАК ЗаказТоваровДокументыИздательств
ГДЕ
    ЗаказТоваровДокументыИздательств.Издательство = &Издательство
    И ЗаказТоваровДокументыИздательств.Ссылка.Дата >= &ДатаНачалаПоискаЗаказов
    И ЗаказТоваровДокументыИздательств.Ссылка.Контрагент.Код = 6791
    И НЕ ЗаказТоваровДокументыИздательств.Ссылка.ПометкаУдаления

УПОРЯДОЧИТЬ ПО
    Дата УБЫВ
ИТОГИ
    МАКСИМУМ(Ссылка)
ПО
    Контрагент
   vdeemer
 
4 - 15.07.21 - 15:09
(2) похоже, условие
ЗаказТоваровДокументыИздательств.Издательство = &Издательство
ведет себя не так, как ожидается
   vdeemer
 
5 - 15.07.21 - 15:10
Ну да, так и есть

ВЫБРАТЬ
    ЗаказТоваровДокументыИздательств.Ссылка КАК Ссылка,
    ЗаказТоваровДокументыИздательств.Ссылка.Контрагент КАК Контрагент,
    ЗаказТоваровДокументыИздательств.Ссылка.Дата КАК Дата
ИЗ
    Документ.ЗаказТоваров.ДокументыИздательств КАК ЗаказТоваровДокументыИздательств
ГДЕ
    ЗаказТоваровДокументыИздательств.Издательство = &Издательство

УПОРЯДОЧИТЬ ПО
    Дата УБЫВ
ИТОГИ
    МАКСИМУМ(Ссылка)
ПО
    Контрагент

выдает

SELECT
T1._Document25_IDRRef,
T2._Fld476RRef,
T2._Date_Time
FROM dbo._Document25_VT3180 T1 WITH(NOLOCK)
LEFT OUTER JOIN dbo._Document25 T2 WITH(NOLOCK)
ON T1._Document25_IDRRef = T2._IDRRef
WHERE (1=0)
ORDER BY (T2._Date_Time) DESC
   acht
 
6 - 15.07.21 - 15:11
Тип значения параметра какой? И какой тип у ЗаказТоваровДокументыИздательств.Издательство?
   H A D G E H O G s
 
7 - 15.07.21 - 15:11
&Издательство

Точно правильный тип параметра?
   vdeemer
 
8 - 15.07.21 - 15:11
(6) Воооот, буквально с языка снял - я лось! Там тип другой.
   1Сергей
 
9 - 15.07.21 - 15:11
(4) Конечно не так, если значения не совпадают
   vdeemer
 
10 - 15.07.21 - 15:12
Спасибо, есть такая работа - из болота тащить бегемота))
   H A D G E H O G s
 
11 - 15.07.21 - 15:40
Хороший пример, Насколько заморочились с оптимизацией 1С
   Garykom
 
12 - 15.07.21 - 15:52
Ступил с типами несовпадающими и зачем то полез в профайлер
Правильно я понял?
   Garykom
 
13 - 15.07.21 - 15:53
(0) В следующий раз ты сразу в отладчик кода C++ платформы 1С иди
   Kassern
 
14 - 15.07.21 - 15:55
(13) а давно ли исходный код платформы открытым стал?) А по теме, всякое бывает, видимо был уверен в параметрах, раз в профайлер полез, а когда увидел 0=1 в условии решил сюда написать
   ДядяМитяй
 
15 - 15.07.21 - 15:56
А как же он в консоли 1с выдавал чего-то с несовпадающими типами? Это уже никого не интересует?
   ДядяМитяй
 
16 - 15.07.21 - 15:58
(15) сам себе отвечу - консоль не давала задать значение неправильного типа.

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.