|   |   | 
| 
 | 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) ну ТС пишет, что использовал промежуточную таблицу специально, чтобы перевести из нижнего регистра в верхний.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |