|
Параметры запроса массив | ☑ | ||
|---|---|---|---|---|
|
0
yurii123
05.03.10
✎
15:33
|
Как правильно указать параметры в запросе, понимаю что массив сравнивать со строкой и числом нельзя, но как правильно сравнить не пойму.
НСМс = Новый Массив; НаимМс = Новый Массив; НСМс.Добавить("5"); НСМс.Добавить("10"); НСМс.Добавить("15"); НСМс.Добавить("20"); НСМс.Добавить("25"); НСМс.Добавить("30"); НСМс.Добавить("35"); НСМс.Добавить("40"); НаимМс.Добавить("Документация"); НаимМс.Добавить("Комплексы"); НаимМс.Добавить("Комплексы"); НаимМс.Добавить("Сборочные единицы"); НаимМс.Добавить("Детали"); НаимМс.Добавить("Стандартные изделия"); НаимМс.Добавить("Прочие изделия"); НаимМс.Добавить("Материалы"); НаимМс.Добавить("Комплекты"); ЗапросВыгрузки = Новый Запрос; Мен = Новый МенеджерВременныхТаблиц; ЗапросВыгрузки.МенеджерВременныхТаблиц = Мен; ЗапросВыгрузки.Текст = "ВЫБРАТЬ | * | Поместить ТабЗнач |ИЗ | &ТС КАК ТС"; ЗапросВыгрузки.УстановитьПараметр("ТС", ТС); ЗапросВыгрузки.Выполнить(); ЗапросВыгрузки.Текст = "Выбрать | ТабЗнач.НомерСекции, | ТабЗнач.Наименование |ИЗ | ТабЗнач КАК ТабЗнач |ГДЕ | (ТабЗнач.НомерСекции = &Параметр) И (ТабЗнач.Наименование <> &ПарамНаименования)"; ЗапросВыгрузки.УстановитьПараметр("ТС", ТС); ЗапросВыгрузки.УстановитьПараметр("Параметр", НСМс); ЗапросВыгрузки.УстановитьПараметр("ПарамНаименования", НаимМс); ТЗВыгрузки = ЗапросВыгрузки.Выполнить().Выгрузить(); |
|||
|
1
73
05.03.10
✎
15:35
|
В(&Параметр) ?
|
|||
|
2
Futarkh
05.03.10
✎
15:36
|
А что ты хочешь получить?
|
|||
|
3
yurii123
05.03.10
✎
15:37
|
Только нужные строки, согласно двум массивам
|
|||
|
4
Futarkh
05.03.10
✎
15:38
|
Может надо писать не "=" а "В"
|
|||
|
5
yurii123
05.03.10
✎
15:39
|
Беру то что есть в массиве, но значения в массиве есть не в каждой строке таблицы
|
|||
|
6
Futarkh
05.03.10
✎
15:39
|
И вообще, номерСекци у тебя что, строка чтоли?
|
|||
|
7
yurii123
05.03.10
✎
15:39
|
Число
|
|||
|
8
73
05.03.10
✎
15:40
|
А в массиве строки... Прикольно. И как оно работать будет?
|
|||
|
9
yurii123
05.03.10
✎
15:42
|
Не важно, переделаю на ТЗ. Вопрос остается открытым и после этого.
|
|||
|
10
73
05.03.10
✎
15:42
|
|ГДЕ
| (ТабЗнач.НомерСекции В(&Параметр() И (ТабЗнач.Наименование НЕ В(&ПарамНаименования))"; ЗЫ. Я так понял. И с типами в массиве разберись. |
|||
|
11
73
05.03.10
✎
15:43
|
(9) Что неважно? В запросе 5 <> "5". И никто там преобразовывать не будет.
|
|||
|
12
yurii123
05.03.10
✎
15:44
|
Если условием это выглядит так
Если НаимМс = "Документация" ИЛИ НаимМс = "Комплексы" ... Тогда |
|||
|
13
73
05.03.10
✎
15:47
|
В конфигураторе:
-Содержание справки -1С Предприятие -Встроенный язык -Работа с запросами -Язык запросов -Условия в языке запросов -Логические выражения в языке запросов |
|||
|
14
Futarkh
05.03.10
✎
15:47
|
(12) Тогда почему в запросе пишешь "<>" ????
|
|||
|
15
Futarkh
05.03.10
✎
15:50
|
Короче
НСМс = Новый Массив; НаимМс = Новый Массив; НСМс.Добавить(5); НСМс.Добавить(10); НСМс.Добавить(15); НСМс.Добавить(20); НСМс.Добавить(25); НСМс.Добавить(30); НСМс.Добавить(35); НСМс.Добавить(40); НаимМс.Добавить("Документация"); НаимМс.Добавить("Комплексы"); НаимМс.Добавить("Комплексы"); НаимМс.Добавить("Сборочные единицы"); НаимМс.Добавить("Детали"); НаимМс.Добавить("Стандартные изделия"); НаимМс.Добавить("Прочие изделия"); НаимМс.Добавить("Материалы"); НаимМс.Добавить("Комплекты"); ЗапросВыгрузки = Новый Запрос; Мен = Новый МенеджерВременныхТаблиц; ЗапросВыгрузки.МенеджерВременныхТаблиц = Мен; ЗапросВыгрузки.Текст = "ВЫБРАТЬ | * | Поместить ТабЗнач |ИЗ | &ТС КАК ТС"; ЗапросВыгрузки.УстановитьПараметр("ТС", ТС); ЗапросВыгрузки.Выполнить(); ЗапросВыгрузки.Текст = "Выбрать | ТабЗнач.НомерСекции, | ТабЗнач.Наименование |ИЗ | ТабЗнач КАК ТабЗнач |ГДЕ | (ТабЗнач.НомерСекции В (&Параметр)) И (ТабЗнач.Наименование В (&ПарамНаименования))"; ЗапросВыгрузки.УстановитьПараметр("ТС", ТС); ЗапросВыгрузки.УстановитьПараметр("Параметр", НСМс); ЗапросВыгрузки.УстановитьПараметр("ПарамНаименования", НаимМс); ТЗВыгрузки = ЗапросВыгрузки.Выполнить().Выгрузить(); |
|||
|
16
yurii123
05.03.10
✎
15:51
|
Понял спасибо
|
|||
|
17
yurii123
30.03.10
✎
13:10
|
Теперь пишит это
{Форма.ФормаЗПСИ.Форма(688)}: Ошибка при вызове метода контекста (Выполнить): {(7, 62)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля неограниченной длины и поля несовместимых типов. (ТабЗнач.НомерСекции В(&Параметр)) И (ТабЗнач.Наименование <<?>>НЕ В(&ПарамНаименования)) ТЗВыгрузки = ЗапросВыгрузки.Выполнить().Выгрузить(); ТабЗнач.Наименование Тип Строка ПарамНаименования массив, а значения в массиве строка, че ему надо? Есть правда ТабЗнач.Наименование пустые значения, может из-за этого. Куда смотреть в запрос или в таблицу? |
|||
|
18
hhhh
30.03.10
✎
13:18
|
(17) наверно, поленился типизировать колонки в таблице значений.
|
|||
|
19
73
30.03.10
✎
13:19
|
<ТабЗнач.Наименование Тип Строка > - строка ограниченной или неограниченной длины?
|
|||
|
20
Невский Александр
30.03.10
✎
13:20
|
(17) И (НЕ ТабЗнач.Наименование В (&ПарамНаименования))
|
|||
|
21
yurii123
30.03.10
✎
13:21
|
Не ограниченной
|
|||
|
22
73
30.03.10
✎
13:23
|
(21) Ну вот и <нельзя сравнивать поля неограниченной длины> .
ТС - это что? (ТЧ, ТЗ...?) |
|||
|
23
yurii123
30.03.10
✎
13:25
|
ТЗ, при создании, колонку ограничил до 50, такая же фигня
|
|||
|
24
73
30.03.10
✎
13:30
|
Покажи, как колонку создаешь.
|
|||
|
25
yurii123
30.03.10
✎
13:31
|
ТС.Колонки.Добавить("Наименование",ОписаниеТиповСтрока,,50);
|
|||
|
26
73
30.03.10
✎
13:32
|
(25) Ну и ОписаниеТиповСтрока...
Что ж по ложечке-то? |
|||
|
27
73
30.03.10
✎
13:33
|
(26)+ Ты ограничил ширину, но никак не тип значения.
|
|||
|
28
yurii123
30.03.10
✎
13:33
|
ОписаниеТиповСтрока = Новый ОписаниеТипов("Строка");
|
|||
|
29
73
30.03.10
✎
13:34
|
Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(50))
|
|||
|
30
yurii123
30.03.10
✎
13:37
|
к стати поменял НЕ местами
(НЕ ТабЗнач.Наименование В(&ПарамНаименования)) и ПарамНаименования стало значение "Массив" тип строка а было значение Массив тип Массив |
|||
|
31
yurii123
30.03.10
✎
13:39
|
Запрос заработал, спасибо, как быть с этим (30)
|
|||
|
32
73
30.03.10
✎
13:43
|
Имхо, пофиг где ты НЕ поставишь.
|
|||
|
33
yurii123
30.03.10
✎
13:44
|
спасибо
|
|||
|
34
73
30.03.10
✎
13:44
|
(32)+
Справка 1С: Логические выражения в языке запросов В языке запросов в операциях выбора и в условиях отборов используются логические выражения: <Логическое выражение> <Выражение> | <Выражение> <Операция сравнения> <Выражение> | <Выражение> [НЕ] В [ИЕРАРХИИ] ( <Список значений> | <Массив значений> ) | ............ |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |