|
Условия в запросе
| ☑ |
0
Besometr
28.12.16
✎
15:52
|
Приветствую!
Переводим конфу на новую платформу,
Было: 8.3.5.1443 + режим совместимости Версия 8.3.3
Стало: 8.3.9.1818 без режима совместимости.
Ловлю ошибку в запросе на условии:
И ВЫБОР
КОГДА &ЕстьУсловие
ТОГДА ТИПЗНАЧЕНИЯ(ВТ.Документ) В (&Типы)
ИНАЧЕ ИСТИНА
КОНЕЦ
Параметры устанавливаются:
Запрос.УстановитьПараметр("ЕстьУсловие", ТипыДокументов <> Неопределено);
Запрос.УстановитьПараметр("Типы", ТипыДокументов);
Когда ТипыДокументов = Неопределено, Типы не заполняются и появляется ошибка:
Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
Неужели теперь проверяются все условия, хотя первого достаточно, что бы не заходить в ветку?
М.б. секрет какой кесть?)
|
|
1
HEKPOH
28.12.16
✎
16:00
|
а на 8.3.5.1443 работало?
|
|
2
Besometr
28.12.16
✎
16:02
|
146%)
|
|
3
HEKPOH
28.12.16
✎
16:29
|
запрос в консоли или в коде?
|
|
4
HEKPOH
28.12.16
✎
16:44
|
8.3.9.1818
скульный запрос на основании запроса в (1) при ЕстьУсловие = Ложь выдает "WHERE 1=1".
При Истина - конструкцию "CASE WHEN..."
Но только в том случае, когда переменная ТипыДокументов имеет тип "Тип".
Если ТипыДокументов другого типа, ругается.
Жаль 8.3.3 под рукой нету
|
|
5
Besometr
28.12.16
✎
19:00
|
Запрос
ВЫБРАТЬ ПЕРВЫЕ 10
АктОбОказанииПроизводственныхУслуг.Ссылка
ИЗ
Документ.АктОбОказанииПроизводственныхУслуг КАК АктОбОказанииПроизводственныхУслуг
ГДЕ
ВЫБОР
КОГДА &ЕстьОтбор = ИСТИНА
ТОГДА ТИПЗНАЧЕНИЯ(АктОбОказанииПроизводственныхУслуг.Ссылка) В (&Отбор)
ИНАЧЕ ИСТИНА
КОНЕЦ
Параметры
ЕстьОтбор = Ложь
Отбор = неопределено
8.3.5.1443
SELECT TOP 10
T1._IDRRef
FROM dbo._Document261 T1
WHERE 0x01 = 0x01
|
|
6
youalex
28.12.16
✎
20:44
|
(0) что мешает в параметр &Типы - передавать пустой массив/СЗ ?
|
|
7
Besometr
29.12.16
✎
09:42
|
Ничего не мешает, только таких запросов у меня сотни. Тем более что работа компилятора в версии 8.3.5.1443 мне кажется более логичной.
|
|
8
h-sp
29.12.16
✎
10:15
|
(7) ну, напиши в 1с, пусть зарегистрируют ошибку
|
|