|
Вопрос по операции "ВЫБОР" в языке запросов | ☑ | ||
---|---|---|---|---|
0
булочник
24.02.15
✎
10:16
|
1С:Предприятие 8.3 (8.3.5.1460)
Встроенная справка требует заключать выражение операции ВЫБОР языка запросов в одни двойные кавычки , а в действительности надо заключать в двое двойных кавычек,иначе ошибка и конструктор ругается почему так ? | ВЫБОР | КОГДА Товары.ЭтоГруппа = ИСТИНА | ТОГДА ""Это группа"" | ИНАЧЕ ""Это элемент"" | КОНЕЦ КАК ПризнакГруппы |
|||
1
Wobland
24.02.15
✎
10:18
|
потому что кавычка внутри строкового литерала экранируется кавычкой. и язык запросов тут ни при чём
|
|||
2
Wobland
24.02.15
✎
10:19
|
а выбрать Товары.ЭтоГруппа аллах запрещает?
|
|||
3
D_E_S_131
24.02.15
✎
10:30
|
Конструктором надо запросы писать и не будет таких вопросов.
|
|||
4
булочник
24.02.15
✎
10:45
|
(1)
а вот фрагмент справки: Пример: " ВЫБРАТЬ Справочник.Номенклатура.Наименование, ВЫБОР КОГДА Справочник.Номенклатура.Этогруппа = ИСТИНА ТОГДА "Это Группа" КОГДА Справочник.Номенклатура.ЗакупочнаяЦена > 1000 ТОГДА "1000 -" " |
|||
5
Wobland
24.02.15
✎
10:45
|
(4) я в курсе
|
|||
6
булочник
24.02.15
✎
10:47
|
(3)
так не все конструктор делает, а им только по ПКМ свой г&вн0код проверяешь |
|||
7
Ненавижу 1С
гуру
24.02.15
✎
10:47
|
(4) ты заметил, что справка дана в контексте самой строки запроса?
например, там нет символов переноса строк | |
|||
8
Ненавижу 1С
гуру
24.02.15
✎
10:48
|
(6) очень, очень мало чего не делает конструктор, да и то у конструктора есть возможность непосредственного редактирования кода в отдельном окне
|
|||
9
D_E_S_131
24.02.15
✎
10:48
|
(6) Что не делает конструктор?
|
|||
10
булочник
24.02.15
✎
10:49
|
(7)
дошло |
|||
11
D_E_S_131
24.02.15
✎
10:49
|
(8) к (9)
|
|||
12
Wobland
24.02.15
✎
10:50
|
(9) имеющие только руками приходится
|
|||
13
D_E_S_131
24.02.15
✎
10:51
|
(12) Да ты что?! А если сделаю не руками?
|
|||
14
D_E_S_131
24.02.15
✎
10:52
|
Вообще нету ничего, что можно написать руками и нельзя сделать в Конструкторе.
|
|||
15
Wobland
24.02.15
✎
10:52
|
(13) откроешь для меня новость ;)
|
|||
16
Wobland
24.02.15
✎
10:54
|
(14) выбрать "да?"
|
|||
17
D_E_S_131
24.02.15
✎
10:54
|
(15) Просто ставишь условие на "ручное изменение" и там используешь любые агрегатные функции. Закроешь конструктор и "Имеющие" волшебным образом появится само собой.
|
|||
18
Ненавижу 1С
гуру
24.02.15
✎
10:55
|
(14) упорядочивание по произвольному выражению
ВЫБРАТЬ АвансовыйОтчет.Ссылка ИЗ Документ.АвансовыйОтчет КАК АвансовыйОтчет УПОРЯДОЧИТЬ ПО АвансовыйОтчет.КурсДокумента / АвансовыйОтчет.КратностьДокумента |
|||
19
Провинциальный 1сник
24.02.15
✎
10:55
|
Храните запросы в макетах!
|
|||
20
vhl
24.02.15
✎
10:57
|
(0) просто делай в конструкторе запроса, а не в тексте.
|
|||
21
D_E_S_131
24.02.15
✎
11:00
|
(18) Пфф, сделай такое поле и упорядочивай.
|
|||
22
patria0muerte
24.02.15
✎
11:00
|
(18) Да тоже можно вроде, не?
ВЫБРАТЬ АвансовыйОтчет.Ссылка, АвансовыйОтчет.КурсДокумента/АвансовыйОтчет.КратностьДокумента КАК ПолеУпорядочивания ИЗ Документ.АвансовыйОтчет КАК АвансовыйОтчет УПОРЯДОЧИТЬ ПО ПолеУпорядочивания |
|||
23
Ненавижу 1С
гуру
24.02.15
✎
11:01
|
(21)(22) а мне само поле не нужно в запросе
|
|||
24
D_E_S_131
24.02.15
✎
11:02
|
(22) Конечно можно. Мозги парят. :)
|
|||
25
D_E_S_131
24.02.15
✎
11:02
|
(23) Нужно! Ты просто об этом не знаешь. :)
|
|||
26
Ненавижу 1С
гуру
24.02.15
✎
11:03
|
(25) слив засчитан
|
|||
27
1976vas
24.02.15
✎
11:03
|
(24) Нельзя конструктором добавить вложенный запрос в виртуальных параметрах.
|
|||
28
Ненавижу 1С
гуру
24.02.15
✎
11:04
|
(27) ну там можно в конструкторе произвольно написать
|
|||
29
D_E_S_131
24.02.15
✎
11:04
|
(27) Сама по себе эта конструкция в дрожь сразу бросает. Тут скорее даже не нужно так делать чем "не можно".
|
|||
30
patria0muerte
24.02.15
✎
11:06
|
(29) Чем не нравится?
|
|||
31
patria0muerte
24.02.15
✎
11:07
|
+(29) Вполне штатная ситуация, когда данные документа кидаешь в ВТ и по ней фильтруешь виртуальную таблицу регистра.
|
|||
32
Wobland
24.02.15
✎
11:08
|
1. <Условие упорядочивания> в общем случае может представлять собой некоторое выражение.
2. http://i.imgur.com/RHtN6cN.png 3. да и Ицик ещё говорил, что order by работает по алиасам |
|||
33
Wobland
24.02.15
✎
11:08
|
+(32) меня п.1 смущает
|
|||
34
1976vas
24.02.15
✎
11:12
|
(29) http://www.youtube.com/watch?v=m0WSygat50o вот здесь автор встрял, при обучении запросам.
|
|||
35
D_E_S_131
24.02.15
✎
11:13
|
(30) Не нравится "медленностью". Не уверен, что подобное преобразуется в правильное соединение при конвертации в текст запроса. Я бы делал через выборку из реальной таблицы с соединением к этой ВТ.
|
|||
36
Timon1405
24.02.15
✎
11:14
|
(27) ой да шо вы нам рассказываете, все там можно) например
1) пишете в ВТ (номенклатура,склад) в ( ) <--(обязательно пробел оставить) 2) выделяете пробел мышкой 3) ПКМ --> (Внезапно!) конструктор запроса 4) выбираем поля из прошлый ВТ |
|||
37
ssh2006
24.02.15
✎
11:15
|
(27) можно вызвать еще один конструктор, находясь в поле условия вирт таблицы, и написать нужный запрос, причем в открывшемся конструкторе будут видны временные таблицы основного запроса
|
|||
38
Drac0
24.02.15
✎
11:15
|
(35) ИМХО, лучше через подзапрос. Например, у тебя в ВТ собран 10 товаров или документов и надо получить по ним данные из виртуальной таблицы. Рациональнее их передать как параметр через (ВЫБРАТЬ Док ИЗ ВТ), чем получать таблицу на лям доков, а потом ее фильтровать соединением.
|
|||
39
D_E_S_131
24.02.15
✎
11:18
|
(38) Хочешь сказать, что Внутреннее соединение таблицы "МлнДок" и "ВТ_10тов" будет выбирать все данные?
|
|||
40
1976vas
24.02.15
✎
11:18
|
(36) На записи у автора внезапно не получилось, но я не проверял.
|
|||
41
Ненавижу 1С
гуру
24.02.15
✎
11:19
|
вот еще код, вполне работает:
ТекстЗапроса = "ВЫБРАТЬ | ТЗ.Номенклатура |ПОМЕСТИТЬ ТЗ |ИЗ | &ТЗ КАК ТЗ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТЗ.Номенклатура, | ТЗ.Номенклатура.Артикул |ИЗ | ТЗ КАК ТЗ"; Запрос = Новый Запрос(ТекстЗапроса); Запрос.УстановитьПараметр("ТЗ",ТЗ); ТЗ = Запрос.Выполнить().Выгрузить(); ЭлементыФормы.ТЗ.СоздатьКолонки(); однако в конструктор зайти нельзя |
|||
42
D_E_S_131
24.02.15
✎
11:21
|
(41) Речь не про то, что бы можно было зайти конструктором, а про возможность создать такой же текст. Временные таблицы вполне себе создаются конструктором, ставь только в имени таблицы & в начале.
|
|||
43
ssh2006
24.02.15
✎
11:22
|
(41) да, приходится явное соединение со справочником делать, чтобы открывалось
|
|||
44
D_E_S_131
24.02.15
✎
11:23
|
(43) Чё?
|
|||
45
rsv
24.02.15
✎
11:23
|
(0) И причем здесь ВЫБОР ? Любое явное строковое значение в запросе будете заворачивать в 4 е кавычки
|
|||
46
D_E_S_131
24.02.15
✎
11:24
|
(43) "Выразить()" придумано для чего?
|
|||
47
ssh2006
24.02.15
✎
11:25
|
(44) ты просто не сталкивался с таким
|
|||
48
Ненавижу 1С
гуру
24.02.15
✎
11:26
|
(42) он уже при сохранении начинает ругаться
|
|||
49
D_E_S_131
24.02.15
✎
11:26
|
(47) Не спасет тебя (46)?
|
|||
50
ssh2006
24.02.15
✎
11:28
|
Можно сохранить, в описании таблицы указать тип поля в конструкторе, тогда сохранится.
(49) никто не говорит, что это нерешаемая проблема) |
|||
51
D_E_S_131
24.02.15
✎
11:29
|
|
|||
52
rsv
24.02.15
✎
11:30
|
Так Выбор тут причем из темы в (0) ?
|
|||
53
D_E_S_131
24.02.15
✎
11:30
|
(51) + Вот так не ругается и открывается всегда.
|
|||
54
D_E_S_131
24.02.15
✎
11:32
|
|
|||
55
Ненавижу 1С
гуру
24.02.15
✎
11:33
|
(54) как костыль пойдет
|
|||
56
ssh2006
24.02.15
✎
11:34
|
(51) мне это известно
|
|||
57
ssh2006
24.02.15
✎
11:35
|
такой же "финт" можно делать когда нужно получить реквизит от параметра запроса ссылочного типа
|
|||
58
D_E_S_131
24.02.15
✎
11:36
|
(55) Это не "костыль", а реально необходимая конструкция для получения данных из полей составного ссылочного типа, сильно влияет на производительность.
|
|||
59
Ненавижу 1С
гуру
24.02.15
✎
11:38
|
(58) я в курсе, но здесь не тот случай
|
|||
60
1976vas
24.02.15
✎
11:39
|
(58) А как быть, если текст составной? Отлавливать в отладчике и перекидывать в конструктор?
|
|||
61
D_E_S_131
24.02.15
✎
11:46
|
(60) Да обычно исходный текст все равно создается в конструкторе, а потом уже все "динамическое формирование" "допиливается".
(26) Подобный текст так же можно реализовать не закрывая форму конструктора, не особо чем будет отличаться от написания выражения в параметрах виртуальной таблицы. В итоге - создано конструктором. |
|||
62
D_E_S_131
24.02.15
✎
11:47
|
(60) + даже этот "динамизм" вроде бы в 8.3.15 хотят превратить в "божий вид".
|
|||
63
Ненавижу 1С
гуру
24.02.15
✎
11:47
|
(61) только ты им больше не откроешь
а сопровождение наше все |
|||
64
D_E_S_131
24.02.15
✎
11:51
|
(63) "Отлавливать в отладчике и перекидывать в конструктор?" - тут только так. Стараюсь вообще избегать таких текстов, если это не обусловлено универсальностью конструкции, либо же условие такое хитрое, что очень сложно его описать конструкциями языка запроса.
|
|||
65
Drac0
24.02.15
✎
12:16
|
(39) Обращение к виртуальной таблице - это подзапрос. Если ты не передашь туда параметр, то он получит таблицу из млн строк, а потом уже соединить ее. А если передашь, то получит таблицу только из десятка нужных, т.к. внутреннее соединение уже будет внутри этого подзапроса.
|
|||
66
Широкий
24.02.15
✎
12:32
|
Вообще то так:
ТекстЗапроса = "ВЫБРАТЬ | Выразить(ТЗ.Номенклатура Как Справочник.Номенклатура) Как НОменклатура |ПОМЕСТИТЬ ТЗ |ИЗ | &ТЗ КАК ТЗ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТЗ.Номенклатура, | ТЗ.Номенклатура.Артикул |ИЗ | ТЗ КАК ТЗ"; |
|||
67
ejikbeznojek
24.02.15
✎
12:39
|
(64) Я обычно пишу
"ВЫБРАТЬ ПЕРВЫЕ 1 | ШКЛистаНабора.НомерШК |ИЗ | РегистрСведений.ШКЛистаНабора КАК ШКЛистаНабора |ГДЕ |//мутим что-то если ТутЧтотоМутим тогда запрос.текст=стрзаменить(запрос.текст,"//мутим что-то",какое то условие) |
|||
68
D_E_S_131
24.02.15
✎
13:16
|
(67) Но можно же использовать в ГДЕ
Выбор Когда &ТутЧтотоМутим Тогда <текст условия> Иначе Истина Конец |
|||
69
Ненавижу 1С
гуру
24.02.15
✎
13:22
|
(67) комменты конструктор затрет
а так норм будет: "ВЫБРАТЬ ПЕРВЫЕ 1 | ШКЛистаНабора.НомерШК |ИЗ | РегистрСведений.ШКЛистаНабора КАК ШКЛистаНабора |ГДЕ |&УсловиеМутим запрос.текст=стрзаменить(запрос.текст,"&УсловиеМутим",?(УсловиеМутим,"какое то условие","ИСТИНА")); |
|||
70
1976vas
24.02.15
✎
13:26
|
(68) Круто!
|
|||
71
1976vas
24.02.15
✎
13:28
|
Интересно будет работать? Текст же разный может быть.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |