|
Запрос как условие запроса | ☑ | ||
---|---|---|---|---|
0
tilek19
20.01.23
✎
08:09
|
Доброго времени суток, имеется запрос
ВЫБРАТЬ МаршрутФактуры.Ссылка КАК Ссылка, KPIСборки.Автор КАК Автор, МаршрутФактуры.Ссылка.ТранспортноеСредство КАК ТранспортноеСредство ПОМЕСТИТЬ ВТ_1 ИЗ Документ.Маршрут.Фактуры КАК МаршрутФактуры ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.KPIСборки КАК KPIСборки ПО МаршрутФактуры.Ссылка = KPIСборки.Документ ГДЕ МаршрутФактуры.Ссылка.ВыгруженЭТТН = ЛОЖЬ И KPIСборки.Должность = ЗНАЧЕНИЕ(Справочник.Должности.Водитель) И KPIСборки.Автор = &Автор СГРУППИРОВАТЬ ПО МаршрутФактуры.Ссылка, KPIСборки.Автор, МаршрутФактуры.Ссылка.ТранспортноеСредство ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_1.Ссылка КАК Ссылка, ВТ_1.Автор КАК Автор, ВТ_1.ТранспортноеСредство КАК ТранспортноеСредство, ВЫБОР КОГДА ВТ_1.ТранспортноеСредство = ЗНАЧЕНИЕ(Справочник.ТранспортныеСредства.Пустаяссылка) ТОГДА ВТ_1.ТранспортноеСредство В (ВЫБРАТЬ ТранспортныеСредства.Ссылка КАК Ссылка ИЗ Справочник.ТранспортныеСредства КАК ТранспортныеСредства ГДЕ ТранспортныеСредства.Водитель = ВТ_1.Автор) ИНАЧЕ ВТ_1.ТранспортноеСредство КОНЕЦ КАК Транспорт ИЗ ВТ_1 КАК ВТ_1 В "КОНЕЦ КАК Транспорт" это поле возвращяется булево хотя должен вернуться справочник не пойму в чем проблема. подскажите где ошибка |
|||
1
Ryzeman
20.01.23
✎
08:14
|
>>ТОГДА ВТ_1.ТранспортноеСредство В {}
Что по-твоему это должно вернуть?... |
|||
2
tilek19
20.01.23
✎
08:15
|
(1) значение из справочника
|
|||
3
Ryzeman
20.01.23
✎
08:19
|
(2) у тебя тут аж две логических ошибки.
Во-первых, разумеется это вернёт булево. ты буквально проверяешь вхождение элемента в результат подзапроса. Во-вторых, на кой чёрт ты проверяешь входит ли пустая ссылка в выборку? Обдумай логику своего запроса, тут явно косяк. У этого куска результат ВСЕГДА будет равен ЛОЖЬ КОГДА ВТ_1.ТранспортноеСредство = ЗНАЧЕНИЕ(Справочник.ТранспортныеСредства.Пустаяссылка) ТОГДА ВТ_1.ТранспортноеСредство В (ВЫБРАТЬ ТранспортныеСредства.Ссылка КАК Ссылка ИЗ Справочник.ТранспортныеСредства КАК ТранспортныеСредства ГДЕ ТранспортныеСредства.Водитель = ВТ_1.Автор) |
|||
4
hockeyist
20.01.23
✎
08:20
|
(2) У GPT спроси. Вопрос элементарный
|
|||
5
tilek19
20.01.23
✎
08:31
|
(3) объясню по другому
есть документ с реквизитом и если этот реквизит пустой нужно взять значение из справочника |
|||
6
Ryzeman
20.01.23
✎
08:43
|
(5) Ну, я тебе ошибки указал. Своим запросом ты получаешь совсем не это.
Вот этот блок (ВЫБРАТЬ ТранспортныеСредства.Ссылка КАК Ссылка ИЗ Справочник.ТранспортныеСредства КАК ТранспортныеСредства ГДЕ ТранспортныеСредства.Водитель = ВТ_1.Автор) Тебе надо в соединение перенести, только не забудь там выбрать РАЗЛИЧНЫЕ, потому что как я понимаю у тебя там миллиард задвоений может быть. А в блоке ВЫБОР уже по условию показывать либо результат подзапроса либо ВТ_1.ТранспортноеСредство |
|||
7
Ботаник Гарден Меран
20.01.23
✎
08:45
|
Тогда ТранспортныеСредства.Ссылка
Конец .... Левое Соединение Справочник.ТранспортныеСредства КАК ТранспортныеСредства По ВТ_1.Автор = ТранспортныеСредства.Водитель |
|||
8
Ботаник Гарден Меран
20.01.23
✎
08:46
|
Если водителей много, то...
условие ПО немного усложнится. |
|||
9
hockeyist
20.01.23
✎
08:51
|
||||
10
hockeyist
20.01.23
✎
08:51
|
||||
11
Ryzeman
20.01.23
✎
08:53
|
(9) (10) Вот как только научишь 1с выполнять COALESCE, тогда можешь приходить и выёживаться со своим чат-ботом)
|
|||
12
hockeyist
20.01.23
✎
08:54
|
(11) Не придирайся. 1С умеет в COALESCE
|
|||
13
Ryzeman
20.01.23
✎
08:55
|
(12) не умеет, ЕСТЬNULL это IsNull, никак не COALESCE)
|
|||
14
hockeyist
20.01.23
✎
08:58
|
(13) В данном случае ЕСТЬNULL подходит. Языковая модель прямо об это говорит:
"Здесь, функция COALESCE используется для выбора не-NULL значения из двух полей" |
|||
15
tilek19
20.01.23
✎
08:59
|
ок сделаю соеденением,спасибо всем
|
|||
16
hockeyist
20.01.23
✎
09:00
|
(15) Было бы правильным приходить на форум после GPT
|
|||
17
hockeyist
20.01.23
✎
09:01
|
(13) Так. И что же такое COALESCE?
|
|||
18
Ryzeman
20.01.23
✎
09:04
|
(17) Тебя на MSDN забанили?) Эта функция Transact-SQL, которая поочерёдно вычисляет все аргументы и возвращает первый не NULL. В 1с этого нет, и такой код на английском если вставишь никак 1с не прожуёт.
|
|||
19
hockeyist
20.01.23
✎
09:05
|
(18) И чем это отличается от ЕСТЬNULL в контексте данного вопроса?
|
|||
20
Ryzeman
20.01.23
✎
09:06
|
(19) В контексте данного вопроса, твой бот не помогает человеку, не знающему хотя бы на твёрдую четвёрку и SQL и 1с решить свою задачу, потому что оно оперирует сущностями, которые ТС не знает. Особенно учитывая логические ошибки которые допускает и его запрос из (0).
|
|||
21
Ryzeman
20.01.23
✎
09:07
|
(20) Но это я режим душнилы включил. Сам юмор и идею отправлять с такими вопросами к боту я оценил :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |