|
2 ТЗ в запросе | ☑ | ||
---|---|---|---|---|
0
Дебет
20.10.15
✎
05:41
|
день добрый товарищи! Начинающий и подающий надежды программист 1с, нуждается в помощи. Я получил 2 ТЗ и что бы быстрее их сравнить закидываю обе ТЗ в запрос.
Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.Текст = "ВЫБРАТЬ | ТЗ.Наименование |ИЗ | &ТЗ КАК ТЗ | ЛЕВОЕ СОЕДИНЕНИЕ &ТЗ2 КАК ТЗ2 | ПО ТЗ.Наименование = ТЗ2.НаименованиеПоиск"; Запрос.УстановитьПараметр("ТЗ",ТабНоменклатура); Запрос.УстановитьПараметр("ТЗ2",Табл); если указываю |ЛЕВОЕ СОЕДИНЕНИЕ &ТЗ2 как ТЗ2 выдает ошибку что Ожидается имя таблицы ЛЕВОЕ СОЕДИНЕНИЕ <<?>>&ТЗ2 КАК ТЗ2 как решить ? |
|||
1
mehfk
20.10.15
✎
05:44
|
Выборка из параметра - Таблицы значений возможна только во временную таблицу
|
|||
2
Горогуля
20.10.15
✎
05:49
|
выбрать поместить ТЗ1 из &ТЗ1; выбрать поместить ТЗ2 из &ТЗ2; выбрать из ТЗ1 соединение ТЗ2
|
|||
3
Дебет
20.10.15
✎
06:13
|
(2) "выбрать
|* ПОМЕСТИТЬ ТЗ ИЗ &ТЗ КАК ТЗ"; |ВЫБРАТЬ * ПОМЕСТИТЬ ТЗ2 из &ТЗ2"; |ВЫБРАТЬ * из | ТЗ1 КАК ТЗ1 | ЛЕВОЕ СОЕДИНЕНИЕ ТЗ2 КАК ТЗ2 | ПО ТЗ1.Наименование = ТЗ2.НаименованиеПоиск"; не проходит такой запрос |
|||
4
Дебет
20.10.15
✎
06:16
|
(3) втупил
|
|||
5
Дебет
20.10.15
✎
06:16
|
без кавычек надо
|
|||
6
Дебет
20.10.15
✎
06:21
|
в итоге Запрос.Текст = "выбрать
|ТЗ1.Наименование ПОМЕСТИТЬ ТЗ1 ИЗ &ТЗ1 КАК ТЗ1; |ВЫБРАТЬ ТЗ2.НаименованиеПоиск ПОМЕСТИТЬ ТЗ2 из &ТЗ2 как ТЗ2; |ВЫБРАТЬ Наименование из | ТЗ1 КАК ТЗ1 | ЛЕВОЕ СОЕДИНЕНИЕ ТЗ2 КАК ТЗ2 | ПО ТЗ1.Наименование = ТЗ2.НаименованиеПоиск"; |
|||
7
Дебет
20.10.15
✎
06:22
|
но теперь выдает Тип не может быть выбран в запросе
ВЫБРАТЬ <<?>>ТЗ2.НаименованиеПоиск ПОМЕСТИТЬ ТЗ2 из &ТЗ2 как ТЗ2; |
|||
8
Дебет
20.10.15
✎
06:22
|
тип строка
|
|||
9
Горогуля
20.10.15
✎
06:24
|
это от того, что ТЗ не типизирована
|
|||
10
el-gamberro
20.10.15
✎
06:41
|
(7) Типизируй колонки для тз, которая уйдет в запрос.
|
|||
11
patria0muerte
20.10.15
✎
06:44
|
(7) Либо так:
Запрос.Текст = |ВЫБРАТЬ ВЫРАЗИТЬ(ТЗ1.Наименование КАК СТРОКА(300)) КАК Наименование ПОМЕСТИТЬ ТЗ1 ИЗ &ТЗ1 КАК ТЗ1; |ВЫБРАТЬ ВЫРАЗИТЬ(ТЗ2.НаименованиеПоиск КАК СТРОКА(300)) КАК НаименованиеПоиск ПОМЕСТИТЬ ТЗ2 из &ТЗ2 как ТЗ2; |ВЫБРАТЬ Наименование из | ТЗ1 КАК ТЗ1 | ЛЕВОЕ СОЕДИНЕНИЕ ТЗ2 КАК ТЗ2 | ПО ТЗ1.Наименование = ТЗ2.НаименованиеПоиск"; |
|||
12
Дебет
20.10.15
✎
06:48
|
(9) все сделал как ты сказал
|
|||
13
kosts
20.10.15
✎
06:50
|
(0) > что бы быстрее их сравнить закидываю обе ТЗ в запрос
Вполне возможно, что быстрее то и не будет. Т.к. запрос выполняется на сервере БД (ну кроме небольшой файловой базы конечно). Т.е. будут дополнительные расходы. Откуда у тебя взялись ТЗ? Если получил из других запросов, то правильнее было обработать данные сразу в запросах, не получая промежуточные ТЗ. |
|||
14
kosts
20.10.15
✎
06:53
|
(0) В данном случае МенеджерВременныхТаблиц скорее всего не нужен.
|
|||
15
Горогуля
20.10.15
✎
07:03
|
(12) угу. только не типизировал ТЗ, о чём я злобно умолчал ;)
|
|||
16
Дебет
20.10.15
✎
07:07
|
(14) действительно не нужен
(13) 1 ТЗ уже была, 2 из запроса, но там по другому нельзя (в запросе получаем данные потом убираем пробелы и ставим верхний регситр) |
|||
17
kosts
20.10.15
✎
07:10
|
(16) Если что, то в запросе регистр не важен (большие и маленькие буквы равны).
|
|||
18
Дебет
20.10.15
✎
07:12
|
(17) а вот это очень интересная информация, считай день прожил не зря
|
|||
19
kosts
20.10.15
✎
07:16
|
(18) Ну и до кучи конечные пробелы игнорируются. Т.е.
Вернет Истину |
|||
20
Дебет
20.10.15
✎
07:17
|
(19) спс
|
|||
21
Ildarovich
20.10.15
✎
08:38
|
Об эффективных методах сравнении ТЗ можно почитать здесь:
http://catalog.mista.ru/public/326983/ . Из статьи, в частности, следует, что сравнение ТХ запросом - плохая идея. |
|||
22
Ildarovich
20.10.15
✎
08:39
|
+(21) поправка:
что сравнение ТЗ запросом - плохая идея. |
|||
23
Горогуля
20.10.15
✎
08:40
|
(21) а можно мне в двух словах рассказать, почему то запросом плохо? скорость выполнения мне побоку
|
|||
24
Ildarovich
20.10.15
✎
09:03
|
(23)
1) Букв больше придется писать; 2) Универсальность гораздо меньше, потому что запрос под структуру таблиц делается. Если она меняется - запрос переписывать придется или строить динамически. Впрочем, если скорость выполнения - побоку, то и на все это можно забить. |
|||
25
kosts
20.10.15
✎
09:09
|
(24) Эти аргументы как раз наоборот, в пользу запросов.
>1) Букв больше придется писать; С ТЗ обычно больше кода. >2) Универсальность гораздо меньше, потому что запрос под структуру таблиц делается. Если она меняется - запрос переписывать придется или строить динамически. >Впрочем, если скорость выполнения - побоку, то и на все это можно забить. С ТЗ обычно больше мороки. |
|||
26
hhhh
20.10.15
✎
10:18
|
(25) а зачем обсуждать мифические преимущества, если ты сам убил интригу в (17) ??
|
|||
27
kosts
20.10.15
✎
10:33
|
(26) Не совсем понял о чем речь. Но я за то, что бы использовать запросы там, где лучше запросы и ТЗ там, где лучше ТЗ.
|
|||
28
hhhh
20.10.15
✎
10:59
|
(27) ну ТС пишет, что использовал промежуточную таблицу специально, чтобы перевести из нижнего регистра в верхний.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |