|
Запрос, условие на вложенный запрос? | ☑ | ||
---|---|---|---|---|
0
pvase
01.07.19
✎
17:53
|
Надо выбрать из последовательности все документы, которые следует перепровести для восстановления последовательности. Сделал следующий запрос:
ВЫБРАТЬ ПартионныйУчет.Регистратор КАК Регистратор, ПартионныйУчет.Период КАК Период, ПартионныйУчет.Организация КАК Организация, ПартионныйУчет.ПроведенВХронологическойПоследовательности КАК ПроведенВХронологическойПоследовательности, ПартионныйУчет.МоментВремени КАК МоментВремени ИЗ Последовательность.ПартионныйУчет КАК ПартионныйУчет ГДЕ ПартионныйУчет.Регистратор >= ( ВЫБРАТЬ МАКСИМУМ(ПартионныйУчетГраницы.Регистратор) КАК Регистратор ИЗ Последовательность.ПартионныйУчет.Границы КАК ПартионныйУчетГраницы ) Но 1С-ка не хочет выполнять такой запрос, видимо ей не нравиться вложенный запрос в условии. Подскажите, что надо исправить, чтобы запрос заработал? Спасибо. |
|||
1
wowik
01.07.19
✎
18:03
|
(0) ГДЕ ПартионныйУчет.Регистратор >= - так можно? почему не по дате отбор?
|
|||
2
palsergeich
01.07.19
✎
18:03
|
(1) Можно
|
|||
3
Фрэнки
01.07.19
✎
18:53
|
а "не хочет выполнять" - это как выглядит, более подробно можешь описать?
|
|||
4
breezee
01.07.19
✎
19:03
|
(0) Сормируйте через временные таблицы
|
|||
5
vi0
01.07.19
✎
19:43
|
внутренним соединением попробуй
|
|||
6
Сияющий в темноте
02.07.19
✎
08:40
|
Вы хотите сравнить значение с результатом запроса,естественно,что вам говорят,что не могут,тае как 1с и не умеет понимать,что запрос может возвращать только одно значение(точнее,там ещн и Null может быть).
|
|||
7
pvase
02.07.19
✎
09:05
|
Вот так запрос не выдает ошибок:
ВЫБРАТЬ ПоследовРегистрация.Регистратор КАК Регистратор, ПоследовРегистрация.Период КАК Период, ПоследовРегистрация.Организация КАК Организация, ПоследовРегистрация.ПроведенВХронологическойПоследовательности КАК ПроведенВХронологическойПоследовательности, ПоследовРегистрация.МоментВремени КАК МоментВремени ИЗ Последовательность.ПартионныйУчет КАК ПоследовРегистрация ГДЕ ПоследовРегистрация.Регистратор В (ВЫБРАТЬ ПоследовГраница.Регистратор ИЗ Последовательность.ПартионныйУчет.Границы КАК ПоследовГраница) а вот так: ВЫБРАТЬ ПоследовРегистрация.Регистратор КАК Регистратор, ПоследовРегистрация.Период КАК Период, ПоследовРегистрация.Организация КАК Организация, ПоследовРегистрация.ПроведенВХронологическойПоследовательности КАК ПроведенВХронологическойПоследовательности, ПоследовРегистрация.МоментВремени КАК МоментВремени ИЗ Последовательность.ПартионныйУчет КАК ПоследовРегистрация ГДЕ ПоследовРегистрация.Регистратор = (ВЫБРАТЬ МАКСИМУМ(ПоследовГраница.Регистратор) ИЗ Последовательность.ПартионныйУчет.Границы КАК ПоследовГраница) уже выдает синтаксическую ошибку "Синтаксическая ошибка "ВЫБРАТЬ" (<<?>>ВЫБРАТЬ МАКСИМУМ(ПоследовГраница.Регистратор) ИЗ Последовательность.ПартионныйУчет.Границы КАК ПоследовГраница)" |
|||
8
Rovan
гуру
02.07.19
✎
09:15
|
||||
9
elCust
02.07.19
✎
09:22
|
(7) ВЫБРАТЬ возвращает множество. Не думаю, что множество можно сравнивать со значением. Оператор "В" как раз читает выборку.
|
|||
10
pvase
02.07.19
✎
09:45
|
(9) Все верно, но мне надо не "В" а ">=".
(8) Не то, сделать двумя запросами и передать параметр - понятно что можно, но хочется сделать одним запросом, а не как обычно бывает. |
|||
11
pvase
02.07.19
✎
09:47
|
Я так понял, что 1С не хочет работать как SQL. Сделать через Join (соединение) - не придумал еще как, надо чтобы были выбраны все документы после границы последовательности, а через соединение как это сделать - пока не понял как это сделать.
|
|||
12
Фрэнки
02.07.19
✎
09:53
|
(10) А тебе не кажется, что при выборке из существующих записей таблицы просто нельзя получить какой-то Регистратор, который будет больше, чем МАКСИМУМ ?
|
|||
13
pvase
02.07.19
✎
11:07
|
(12) Нет, таблицы разные, во второй таблице только 1 запись в выборке. К тому же на чистом SQL такой запрос работает без проблем и правильно. Думаю, что проблема в том, что 1с не может понять что подзапрос может вернуть только одну запись, даже если вернет NULL, то для этого есть ЕстьNULL.
|
|||
14
vi0
02.07.19
✎
12:20
|
(11) в чем сложность сделать соединение?
|
|||
15
wowik
02.07.19
✎
12:54
|
(9) +1. автор не понимает что делает)
|
|||
16
vi0
02.07.19
✎
19:14
|
(15) на самом деле, это не бессмысленно и зависит от языка
например, следующая конструкция является корректной в t-sql SELECT * FROM table1 WHERE column1 = (select 'b') |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |