Имя: Пароль:
1C
 
Как параметр Массив превратить в ВТ в запросе?
0 Вася Теркин
 
26.02.19
08:11
Например массивом из трех элементов в запрос я передаю номера телефонов

323244452
235324454
324545445

Теперь в запросе надо получить ВТ_Номера с одной колонкой Номер.

ВЫБРАТЬ
    МассивНомеров.ЧегоТутПисать
Поместить ВТ_Номера
ИЗ
    &МассивНомеров КАК МассивНомеров
;

Такая конструкция обречена.
Просто соединить с числом ПИ не получится тоже.
Вообще из параметра-массива можно вытащить данные в колонку таблицы запроса?
1 MyNick
 
26.02.19
08:13
Кинуть в ТЗ, из ТЗ выбрать, нет?
2 Провинциальный 1сник
 
26.02.19
08:14
Выбрать * не пойдет?
3 Вася Теркин
 
26.02.19
08:20
В ТЗ я и сам могу догадаться... Вопрос нужен ли отдельный параметр?
К тому же просто загрузить в ТЗ нельзя, там колонку надо создавать с с явным описанием типа....
Громоздко. Может в запросе как изловчиться?
4 Вася Теркин
 
26.02.19
08:28
(2)     Запрос.Текст =
        "ВЫБРАТЬ
        |    *
        |ИЗ
        |    &МассивНомеров КАК МассивНомеров";

Конструктор запроса ошибок не находить....
Но при выполнении
по причине:
Содержимое объекта данных может быть выбрано только во временную таблицу
**********************
А если в ВТ, То не ясно как потом к выбранному обратиться?

Запрос.Текст =
        "ВЫБРАТЬ
        |    *
        |ПОМЕСТИТЬ ВТ_Номера
        |ИЗ
        |    &МассивНомеров КАК МассивНомеров
        |;
        |ВЫБРАТЬ
        |Номера.ЧегоВыбратьНеИзвестно
        |ИЗ
        |ВТ_Номера КАК Номера";
5 Вася Теркин
 
26.02.19
08:29
Конструктор
"ВЫБРАТЬ
        |    *
        |ПОМЕСТИТЬ ВТ_Номера
        |ИЗ
        |    &МассивНомеров КАК МассивНомеров
        |;
проглатывает, но потом в тексте запроса удаляет
6 Вася Теркин
 
26.02.19
08:30
Придется некрасивую ТЗ рисовать...
7 catena
 
26.02.19
08:37
Массив нетипизирован по определению. А запрос жрет типизированное. Можно составить таблицу возможных вариантов и из нее выбрать по вхождению. Если категоричное неприятие типизированной ТЗ.
8 Провинциальный 1сник
 
26.02.19
08:38
(4) А попробуйте из ВТ тоже * выбрать. И выгрузить результат в ТЗ, посмотреть её потом.
9 Мыш
 
26.02.19
08:44
Для Каждого Элемент Из МассивНомеров Цикл Элемент="выбрать "+Строка(Элемент) КонецЦикла
Запрос = Новый Запрос(СтрСоединить(МассивНомеров," объединить все "));
10 Вася Теркин
 
26.02.19
08:56
(8) Нет. Мне в запросе надо левосоединять к ней.
11 Вася Теркин
 
26.02.19
08:59
(9) Хитрец...
...
Пока сделал через ТЗ.
12 Вася Теркин
 
26.02.19
08:59
(9) Но ведь оно не в ВТ...
13 Мыш
 
26.02.19
09:06
(12) И кушать за меня вы тоже будете? )

Для Каждого Элемент Из МассивНомеров Цикл Элемент="выбрать "+Строка(Элемент) КонецЦикла;
МассивНомеров[0] = МассивНомеров[0] + " поместить времянка ";
Запрос = Новый Запрос(СтрСоединить(МассивНомеров," объединить все "));
14 Вася Теркин
 
26.02.19
09:24
(13) Да. Но если в массиве будут элементы справочника или документы, то только по коду их искать или по номеру-дате...
При усложнении задачи все равно в ТЗ упираешься. Ибо через массив не передать.
(13) И это не преобразование в запросе.
15 catena
 
26.02.19
09:27
(14)Элементы справочника или документы можно выбирать из справочника или документа, где в &массив.
16 DexterMorgan
 
26.02.19
09:37
(14) Можно (13) переделать чтобы в цикле выбирать параметр и устанавливать его значение элементом из массива
17 Вася Теркин
 
26.02.19
09:43
(15) Да, точно, там проще будет.
18 Вася Теркин
 
26.02.19
09:45
(16) Но и это не преобразование параметра массив в ВТ внутри запроса.
19 Мыш
 
26.02.19
09:59
(14) При изменении условий задачи допустимо менять подход к решению. Под постановку задачи в (0) подходит. )
20 Вася Теркин
 
26.02.19
11:07
(19) Подходит отлично, спору нет.
Хотелось именно в запросе найти возможность превращать воду в вино.
21 breezee
 
26.02.19
11:22
Вам заняться не чем?
22 Rovan
 
гуру
26.02.19
12:34
Что там дальше происходит с  ВТ_Номера ?
- отбор др. запроса, соединение, объединение ?
23 Вася Теркин
 
28.02.19
07:01
Соединение к ней левое делается. Надо определить какие объекты уже есть и по каким параметрам нет совпадений запрос вернет
24 Вася Теркин
 
28.02.19
07:04
Во общем сложный групповой НайтиПоРеквизиту() со всякими там соединениями и условиями. Но потом все к основной тадлице должно левосоединяться. И где не соединилось - надо досоздать объекты в базе.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший