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

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

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

        МенеджерВТ = Новый МенеджерВременныхТаблиц;
        Запрос.МенеджерВременныхТаблиц = МенеджерВТ;

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


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

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