Вход | Регистрация



Передать значение ТЗ в параметры запроса!

Передать значение ТЗ в параметры запроса!
Я
   yyyuuu
 
20.08.18 - 11:06
Здравствуйте, есть массив. Заполняю. Передаю значения массива в Таблицу значений. Дальше хочу использовать эти значения в запросе. Но только у меня немного не получается. Уже не много запотался, хочу попросить помощи и немного разобраться со всем.

НашМассив = Новый Массив;
        Для Каждого Элемент Из ЭлементыФормы.ТабличноеПоле1.Значение Цикл
            НашМассив.Добавить(Элемент);
        КонецЦикла;    
        //    

        парамРодитель = ПолеВвода3;
        //

        ТЗ = Новый ТаблицаЗначений;
        ТЗ.Колонки.Добавить("Элемент",Новый ОписаниеТипов("Строка"));
        
        Для Каждого Строка ИЗ НашМассив Цикл
            НоваяСтрока = ТЗ.Добавить();
            НоваяСтрока.Элемент = Строка;
        КонецЦикла;
        //

        
        Запрос = Новый Запрос;
        МенеджерВТ = Новый МенеджерВременныхТаблиц;
        Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
        Запрос.Текст = 
            "ВЫБРАТЬ
            |    ТЗ.Элемент КАК Элемент
            |ПОМЕСТИТЬ ТЗ
            |ИЗ
            |    &ТЗ КАК ТЗ
            |;
            |
            ////////////////////////////////////////////////////////////////////////////////

            |ВЫБРАТЬ
            |    ТЗ.Элемент КАК Элемент,
            |    МТР.Наименование КАК Наименование
            |ИЗ
            |    Справочник.МТР КАК МТР
            |        ЛЕВОЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ
            |        ПО (МТР.Наименование ПОДОБНО ТЗ.Элемент)
            |ГДЕ
            |    ТЗ.Элемент ПОДОБНО &Элемент";
        
        Запрос.УстановитьПараметр("Родитель", ПарамРодитель);
        Запрос.УстановитьПараметр("ТЗ", ТЗ);
        Запрос.УстановитьПараметр("Элемент", "%" + ТЗ + "%");
        РезультатЗапроса = Запрос.Выполнить();
        
        Выборка = РезультатЗапроса.Выбрать();
        
        Пока Выборка.Следующий() Цикл
             Сообщить(Выборка.Элемент);
        КонецЦикла;
 
 
   hhhh
 
1 - 20.08.18 - 11:10
(0) зачем так городить? передавай исходный массив в запрос. без таблицы
   catena
 
2 - 20.08.18 - 11:14
Что это?
"Запрос.УстановитьПараметр("Элемент", "%" + ТЗ + "%");"

Элемент подобен таблице значений?
   yyyuuu
 
3 - 20.08.18 - 11:18
(1), (2) Смотрите ребята, да знаю где то на мракобесил в коде. Просто не могу разобраться, у меня на форме есть какие то элементы которые ввел с руки. Записываю из В ТЗ,  а дальше хочу использовать в запросе с функцией ПОДОБНО.
Запутался уже, где то может быть прям бордак
   RomaH
 
4 - 20.08.18 - 11:21
(0) где конкретно немного  не получается?
   Deon
 
5 - 20.08.18 - 11:21
(3) соединение сделай внутренним, а не левым.
ПО (МТР.Наименование ПОДОБНО "%"+ТЗ.Элемент+"%")
раздел Где убери
В параметрах тебе кроме ТЗ ничего не надо
   yyyuuu
 
6 - 20.08.18 - 11:26
(4) Мне кажется в параметрах что то не то
   yyyuuu
 
7 - 20.08.18 - 11:28
"Преобразование значения к типу Число не может быть выполнено
        Запрос.Текст = "
   yyyuuu
 
8 - 20.08.18 - 11:30
Запрос = Новый Запрос;
        МенеджерВТ = Новый МенеджерВременныхТаблиц;
        Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
        Запрос.Текст = 
            "ВЫБРАТЬ
            |    ТЗ.Элемент КАК Элемент
            |ПОМЕСТИТЬ ТЗ
            |ИЗ
            |    &ТЗ КАК ТЗ
            |;
            |
            ////////////////////////////////////////////////////////////////////////////////

            |ВЫБРАТЬ
            |    ТЗ.Элемент КАК Элемент,
            |    МТР.Наименование КАК Наименование
            |ИЗ
            |    Справочник.МТР КАК МТР
            |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ
            |        ПО (МТР.Наименование ПОДОБНО "%"+ТЗ.Элемент+"%")";
        
        //Запрос.УстановитьПараметр("Родитель", ПарамРодитель);

        Запрос.УстановитьПараметр("ТЗ", ТЗ);
        //Запрос.УстановитьПараметр("Элемент", "%" + ТЗ + "%");

        РезультатЗапроса = Запрос.Выполнить();
        
        Выборка = РезультатЗапроса.Выбрать();
        
        Пока Выборка.Следующий() Цикл
             Сообщить(Выборка.Наименование);
        КонецЦикла;
   Deon
 
9 - 20.08.18 - 11:33
(8) Добавь кавычков """"""""""
   hhhh
 
10 - 20.08.18 - 11:35
(8) ну вот это сразу выбросьте
        МенеджерВТ = Новый МенеджерВременныхТаблиц;
        Запрос.МенеджерВременныхТаблиц = МенеджерВТ;

это мусор, для красоты что ли прилепили? А остально вроде должно работать.
 
 Рекламное место пустует
   yyyuuu
 
11 - 20.08.18 - 11:40
(9) а куда добавить если по точнее?
   Deon
 
12 - 20.08.18 - 11:43
ПОДОБНО ""%""+ТЗ.Элемент+""%"" )";
   catena
 
13 - 20.08.18 - 11:44
|        ПО (МТР.Наименование ПОДОБНО "%"+ТЗ.Элемент+"%")";


Какой именно .Элемент? Из какой строки ТЗ? Зачем ты ее путаешь? Убирай кавычки внутри текста.
   yyyuuu
 
14 - 20.08.18 - 11:44
МТР.Наименование ПОДОБНО ""%"" + ТЗ.Элемент + ""%"" именно так у меня и стоит и ошибка все ровно.
Неверные параметры "+"
   catena
 
15 - 20.08.18 - 11:44
(12)Человеку и так стремно, вы его окончательно сейчас запутаете, ага.
   yyyuuu
 
16 - 20.08.18 - 11:45
(13) В ТЗ сейчас две строки, хочу их две и использовать в запросе.
   Deon
 
17 - 20.08.18 - 11:45
(14) Это потому что строка должна быть с длиной
Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(100))
   Deon
 
18 - 20.08.18 - 11:46
(15) Не надо бояться. 1С добрая
   yyyuuu
 
19 - 20.08.18 - 11:46
Если 
 "%" + ТЗ.Элемент + "%")"
Тогда 
Преобразование значения к типу Число не может быть выполнено
        Запрос.Текст =
   catena
 
20 - 20.08.18 - 11:48
(19)Сотри все, напиши заново)))
   hhhh
 
21 - 20.08.18 - 11:48
(15) нормально всё, каждая строка соединение с каждой, он проверит МТР.Наименование на подобие с каждой строкой тз.
   catena
 
22 - 20.08.18 - 11:49
(21)(18) да, увидела, пардон :)
   yyyuuu
 
23 - 20.08.18 - 12:00
Ребята, спасибо. То как вы сказали работает. Но вот есть такая проблема. Я ведь на форме выбираю еще группу справочника из какого делать отбор.
парамРодитель = ПолеВвода3;
В этом поле получаю группу в которой находятся элементы Ну и совпадение элементов.
Получиться ли сделать так 
        Запрос.Текст = 
            "ВЫБРАТЬ
            |    ТЗ.Элемент КАК Элемент
            |ПОМЕСТИТЬ ТЗ
            |ИЗ
            |    &ТЗ КАК ТЗ
            |;
            |
            ////////////////////////////////////////////////////////////////////////////////

            |ВЫБРАТЬ
            |    ТЗ.Элемент КАК Элемент,
            |    МТР.Наименование КАК Наименование
            |ИЗ
            |    Справочник.МТР КАК МТР
            |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ
            |        ПО (МТР.Наименование ПОДОБНО ""%"" + ТЗ.Элемент + ""%"")
            |ГДЕ
            |    МТР.Родитель.Наименование = &Родитель";

Где Я указал условие
Запрос.УстановитьПараметр("Родитель", ПарамРодитель);
   yyyuuu
 
24 - 20.08.18 - 12:01
Если сделал как в (23) То находит всего 2 совпадения вместо 7
   FIXXXL
 
25 - 20.08.18 - 12:02
(23) убирай родителя в связь
   Deon
 
26 - 20.08.18 - 12:06
(24) ПарамРодитель у тебя Строка или Ссылка?
   yyyuuu
 
27 - 20.08.18 - 12:07
(25) Я верно понимаю? Мне в мою таблицу знаечения, нужно добавить еще поле где будет хранится "Родитель"
   yyyuuu
 
28 - 20.08.18 - 12:07
(24) Строка
   Deon
 
29 - 20.08.18 - 12:07
(27) Не, не нужно
   FIXXXL
 
30 - 20.08.18 - 12:07
(27) нет
просто условие из ГДЕ переноси в связи таблиц
   Deon
 
31 - 20.08.18 - 12:08
(30) Суть от этого не поменяется
   Deon
 
32 - 20.08.18 - 12:09
(24) Значит у остальных 5 родитель другой
   yyyuuu
 
33 - 20.08.18 - 12:11
(32) Родитель сто процентов один, глянул по справочнику
 
 
   Deon
 
34 - 20.08.18 - 12:12
(33) А если условие ГДЕ из запроса убрать, то потерявшиеся элементы выдаются?
   yyyuuu
 
35 - 20.08.18 - 12:14
(34) Вот, как получается смотрите ребята. Выходит так, что если убираю условие родителя то поиск идет обсолютно по всем родителям, не важно в какой группе состоит элемент
   Deon
 
36 - 20.08.18 - 12:16
(35) Так и получается, да.
   yyyuuu
 
37 - 20.08.18 - 12:17
(36) А Я то хочу чтобы в опредленной группе искалось). Если делаю по условию, то получается фигня какая то. А по связи Я не понял как честно сделать, что с чем связать.
   Deon
 
38 - 20.08.18 - 12:19
(37) А на 34 ты не ответил
   yyyuuu
 
39 - 20.08.18 - 12:23
(34) Да выдаются).Извини пожалуйста, проглядел
   Deon
 
40 - 20.08.18 - 12:24
(39) Тогда ответ в (32) ))))
   yyyuuu
 
41 - 20.08.18 - 12:28
(40) Я захожу в группу, ставлю отбор ровно по этому наименованию нахожу в этой группе точно 7 элементов за ПОДОБНО в наименовании "Лоток". Если в консоле просто выбираю по параметрам, результат тоже такой же 7 элементов
   yyyuuu
 
42 - 20.08.18 - 12:34
(41) А вот и нет, обманул. В консоле тот же результат.
Тогда понять не могу, почему в группе Я их вижу, а в запросе всего 2 элемента относятса к этой группе. Если по расширенному отбору они там все 7
   yyyuuu
 
43 - 20.08.18 - 12:40
Так же Я вижу все эти элеметы только в одной группе
   yyyuuu
 
44 - 20.08.18 - 12:47
Ребята, вы были правы родитель и в правду другой. Тогда вопрос, другой. Как делать поиск по именно в группе какой элемент состоит, Я ведь выбираю группу где этот элемент находится. По наименованию может быть сравнить?
   catena
 
45 - 20.08.18 - 12:53
(44)Ась?
Возможно, вам требуется "В ИЕРАРХИИ", но тогда нужно напрячься и передать в параметры ссылку, а не строку.
   yyyuuu
 
46 - 20.08.18 - 12:53
Друзья извините меня пожалуйста, да все правильно получается. Это Я не верно отбор стандартный понял.
Так рад что все получилось).
Спасибо все за помощь. Все получилось)
   yyyuuu
 
47 - 20.08.18 - 12:54
всем *


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует