|
Скопировать ТЗ: структура | ☑ | ||
---|---|---|---|---|
0
Adgjj
06.07.12
✎
09:06
|
Скажите, пжл, как написать отбор по нескольким значениям колонки СменаXY?
Структура = Новый Структура; //Структура.Вставить("СменаXY", "" или "X" или "Y"); //Ключ структуры - идентификатор колонки, а значение структуры - значение отбора. Структура.Вставить("СменаXY", "X"); //Ключ структуры - идентификатор колонки, а значение структуры - значение отбора. Структура.Вставить("СменаXY", "Y"); Структура.Вставить("СменаXY", ""); //возможно при неучтенных в запросе видах путевых листов ТЗпроверка2 = ТЗ.Скопировать(Структура); |
|||
1
Ursus maritimus
06.07.12
✎
09:08
|
Запрос
|
|||
2
Adgjj
06.07.12
✎
09:10
|
а можно примерчик подобного запроса?
|
|||
3
Adgjj
06.07.12
✎
09:11
|
никогда не делала запрос из ТЗ
|
|||
4
LAAry
06.07.12
✎
09:12
|
Выбрать * поместить ТЗВиртуальная из &ТЗРесурс как ТЗ
|
|||
5
Adgjj
06.07.12
✎
09:12
|
или добавить новую колонку и по ней выбирать))
может можно написать отбор со значениями всеми, кроме одного? |
|||
6
LAAry
06.07.12
✎
09:12
|
потом из этой виртуальной выбираешь с каким хочешь отбором:
Выбрать * из ТЗВиртуальная как ТЗ где .... |
|||
7
Агент Инфостарта
06.07.12
✎
09:13
|
(2) Обычный пакетный запрос к таблице значений с использованием временной таблицы. Примеров в сети и в типовых куча.
|
|||
8
Adgjj
06.07.12
✎
09:27
|
Запрос = Новый Запрос;
//мМенеджерВрТаблиц = Новый МенеджерВременныхТаблиц; //Запрос.МенеджерВременныхТаблиц = мМенеджерВрТаблиц; Запрос.Текст = " |ВЫБРАТЬ | ДатаДок, | ВидДок, | СменаXY, | ЕО, | РабМесто, | ТаноМеханика, | НомерДок, | ОбщПробег |ПОМЕСТИТЬ | ВремТаб |ИЗ &ТЗ КАК Таб | //|ГДЕ ТЗ.СменаXY = "" или ТЗ.СменаXY = "X" или ТЗ.СменаXY = "Y" |"; Запрос.УстановитьПараметр("ТЗ", ТЗ); ТЗпроверка2 = Запрос.Выполнить().Выгрузить(); пока не очень понятно |
|||
9
ZanderZ
06.07.12
✎
09:32
|
Запрос.Текст = "
|ВЫБРАТЬ | ДатаДок, | ВидДок, | СменаXY, | ЕО, | РабМесто, | ТаноМеханика, | НомерДок, | ОбщПробег |ПОМЕСТИТЬ | ВремТаб |ИЗ &ТЗ КАК Таб | |ГДЕ ТЗ.СменаXY = "" или ТЗ.СменаXY = "X" или ТЗ.СменаXY = "Y" |; |ВЫБРАТЬ * |из ВремТаб"; |
|||
10
Adgjj
06.07.12
✎
09:34
|
(9) ругается на |ГДЕ ТЗ.СменаXY = "" или ТЗ.СменаXY = "X" или ТЗ.СменаXY = "Y"
|
|||
11
ZanderZ
06.07.12
✎
09:37
|
(10) ну фильтр то сам сделай тут к примеру к твоему
можно типа Отбор = Новый Массив; Отбор.Добавить("Х"); Отбор.Добавить("Y"); Отбор.Добавить(""); Запрос.УстановитьПараметр("Отбор ", Отбор); |ГДЕ ТЗ.СменаXY в &Отбор |
|||
12
Adgjj
06.07.12
✎
09:41
|
Запрос.Текст = "
|ВЫБРАТЬ | ДатаДок, | ВидДок, | СменаXY, | ЕО, | РабМесто, | ТаноМеханика, | НомерДок, | ОбщПробег |ПОМЕСТИТЬ | ВремТаб |ИЗ &ТЗ КАК Таб | |ГДЕ ТЗ.СменаXY в (&Отбор) |; |ВЫБРАТЬ * |из ВремТаб КАК ТЗпроверка2 //|ГДЕ ВремТаб.СменаXY в (&Отбор) |"; Запрос.УстановитьПараметр("ТЗ", ТЗ); Отбор = Новый Массив; Отбор.Добавить("Х"); Отбор.Добавить("Y"); Отбор.Добавить(""); Запрос.УстановитьПараметр("Отбор ", Отбор); ТЗпроверка2 = Запрос.Выполнить().Выгрузить(); ТЗ.СменаXY - говорит поле не найдено |
|||
13
LAAry
06.07.12
✎
09:43
|
|ВЫБРАТЬ
| Таб.ДатаДок, | Таб.ВидДок, | Таб.СменаXY, | Таб.ЕО, | Таб.РабМесто, | Таб.ТаноМеханика, | Таб.НомерДок, | Таб.ОбщПробег |ПОМЕСТИТЬ | ВремТаб |ИЗ &ТЗ КАК Таб | |ГДЕ Таб.СменаXY в (&Отбор) |; |
|||
14
Adgjj
06.07.12
✎
09:43
|
Таб.СменаXY написала
тогда (&Отбор) не нравится |
|||
15
LAAry
06.07.12
✎
09:44
|
таб. - везде написала?
|
|||
16
Adgjj
06.07.12
✎
09:47
|
|ВЫБРАТЬ
| Таб.ДатаДок, | Таб.ВидДок, | Таб.СменаXY, | Таб.ЕО, | Таб.РабМесто, | Таб.ТаноМеханика, | Таб.НомерДок, | Таб.ОбщПробег |ПОМЕСТИТЬ | ВремТаб |ИЗ &ТЗ КАК Таб | |ГДЕ Таб.СменаXY в (&Отбор) |"; Запрос.УстановитьПараметр("ТЗ", ТЗ); Отбор = Новый Массив; Отбор.Добавить("Х"); Отбор.Добавить("Y"); Отбор.Добавить(""); Запрос.УстановитьПараметр("Отбор ", Отбор); ТЗпроверка2 = Запрос.Выполнить().Выгрузить(); пишет не задано значение параметра отбор |
|||
17
Adgjj
06.07.12
✎
10:00
|
Запрос = Новый Запрос;
мМенеджерВрТаблиц = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = мМенеджерВрТаблиц; Запрос.Текст = " |ВЫБРАТЬ | Таб.ДатаДок, | Таб.ВидДок, | Таб.СменаXY, | Таб.ЕО, | Таб.РабМесто, | Таб.ТаноМеханика, | Таб.НомерДок, | Таб.ОбщПробег |ПОМЕСТИТЬ | ВремТаб |ИЗ &ТЗ КАК Таб | |ГДЕ Таб.СменаXY в (&Отбор) |"; Запрос.УстановитьПараметр("ТЗ", ТЗ); Отбор = Новый Массив; Отбор.Добавить("Х"); Отбор.Добавить("Y"); Отбор.Добавить(""); Запрос.УстановитьПараметр("Отбор", Отбор); ТЗпроверка2 = Запрос.Выполнить().Выгрузить(); ТЗпроверка2 в отладке только один столбец "количество" с числом 26(( где мои данные? |
|||
18
Adgjj
06.07.12
✎
10:04
|
апапаппап
|
|||
19
Adgjj
06.07.12
✎
10:08
|
помогите, пжл
|
|||
20
LAAry
06.07.12
✎
10:10
|
(17) так ты только во временную выбрала. Где выборка из временной?
Запрос = Новый Запрос; мМенеджерВрТаблиц = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = мМенеджерВрТаблиц; Запрос.Текст = " |ВЫБРАТЬ | Таб.ДатаДок, | Таб.ВидДок, | Таб.СменаXY, | Таб.ЕО, | Таб.РабМесто, | Таб.ТаноМеханика, | Таб.НомерДок, | Таб.ОбщПробег |ПОМЕСТИТЬ | ВремТаб |ИЗ &ТЗ КАК Таб | |ГДЕ Таб.СменаXY в (&Отбор); |Выбрать * из ВремТаб КАК ТЗ |"; Запрос.УстановитьПараметр("ТЗ", ТЗ); Отбор = Новый Массив; Отбор.Добавить("Х"); Отбор.Добавить("Y"); Отбор.Добавить(""); Запрос.УстановитьПараметр("Отбор", Отбор); ТЗпроверка2 = Запрос.Выполнить().Выгрузить(); |
|||
21
ptiz
06.07.12
✎
10:11
|
Список = Новый СписокЗначений;
Список.Добавить("X"); Список.Добавить("Y"); Список.Добавить(""); ТЗ = ОтобратьСтрокиПоКритериям(ТЗ, Новый Структура("СменаXY", Список), Новый Структура("СменаXY", ВидСравнения.ВСписке)).Выгрузить(); ОтобратьСтрокиПоКритериям - есть наверное в любой типовой |
|||
22
Adgjj
06.07.12
✎
10:12
|
(20) так пробовала
//ТЗпроверка2 = Запрос.Выполнить(); //.Выгрузить() Выборка = Запрос.Выполнить().Выбрать(); Выборка.Следующий(); |
|||
23
Adgjj
06.07.12
✎
10:13
|
(21) это нужно вместо ТЗпроверка2 = Запрос.Выполнить().Выгрузить();?
|
|||
24
Adgjj
06.07.12
✎
10:14
|
(21) наверно это способ без запроса попробую
|
|||
25
LAAry
06.07.12
✎
10:15
|
(22) Посмотри, я добавил в (20) строку с выборкой из временной таблицы. Ты ее забыла.
|
|||
26
Adgjj
06.07.12
✎
10:15
|
Процедура или функция с указанным именем не определена (ОтобратьСтрокиПоКритериям)
|
|||
27
Adgjj
06.07.12
✎
10:15
|
у меня Автохозяйство
|
|||
28
ptiz
06.07.12
✎
10:18
|
дарю
// Отбирает из переданной таблицы строки по заданным критериям. // // Параметры: // Источник - ТаблицаЗначений, РезультатЗапроса, ОбластьЯчеекТабличногоДокумента. Таблица-источник. // СтруктураКритериев - Структура. Названия отборов и значения, по которым нужно отобрать строки. // СтруктураСложныхКритериев - Структура. Если свойство передано, то значение содержит вид сравнения. // // Возвращаемое значение: // РезультатЗапроса - таблица с нужными строками. // Функция ОтобратьСтрокиПоКритериям(Источник, СтруктураКритериев, СтруктураСложныхКритериев = Неопределено) Экспорт Перем ВидСравненияСложный; Если СтруктураСложныхКритериев = Неопределено Тогда СтруктураСложныхКритериев = Новый Структура; КонецЕсли; ПостроительЗапроса = Новый ПостроительЗапроса; ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(Источник); Для Каждого Критерий Из СтруктураКритериев Цикл НовыйОтбор = ПостроительЗапроса.Отбор.Добавить(Критерий.Ключ); СтруктураСложныхКритериев.Свойство(Критерий.Ключ, ВидСравненияСложный); Если ВидСравненияСложный = Неопределено Тогда НовыйОтбор.Установить(Критерий.Значение); Иначе НовыйОтбор.Использование = Истина; НовыйОтбор.ВидСравнения = ВидСравненияСложный; НовыйОтбор.Значение = Критерий.Значение; КонецЕсли; КонецЦикла; Возврат ПостроительЗапроса.Результат; КонецФункции // ОтобратьСтрокиПоКритериям() |
|||
29
Adgjj
06.07.12
✎
10:19
|
(25) да, спасибо
но он выбрал только строки с "Y" |
|||
30
ChAlex
06.07.12
✎
10:20
|
Сначала поместите данные таблицы во временную таблицу запроса, а потом уже выборка из временной таблицы с условием.
|
|||
31
Adgjj
06.07.12
✎
10:20
|
(28) Спасибо
|
|||
32
Adgjj
06.07.12
✎
10:28
|
(30) не получается
|ВЫБРАТЬ | Таб.ДатаДок, | Таб.ВидДок, | Таб.СменаXY, | Таб.ЕО, | Таб.РабМесто, | Таб.ТаноМеханика, | Таб.НомерДок, | Таб.ОбщПробег |ПОМЕСТИТЬ | ВремТаб |ИЗ &ТЗ КАК Таб | //|ГДЕ Таб.СменаXY в (&Отбор); |; |Выбрать * из ВремТаб КАК ТЗ2 |ГДЕ ВремТаб.СменаXY в (&Отбор); |"; Запрос.УстановитьПараметр("ТЗ", ТЗ); Отбор = Новый Массив; Отбор.Добавить("Х"); Отбор.Добавить("Y"); Отбор.Добавить(""); Запрос.УстановитьПараметр("Отбор", Отбор); сообщить("1"); фыва = Запрос.Выполнить(); сообщить("2"); ТЗ2 ВремТаб не определены |
|||
33
Агент Инфостарта
06.07.12
✎
10:28
|
(31) Это не спасибо, а тупой копи-паст из типовых.
|
|||
34
IVT_2009
06.07.12
✎
10:30
|
Глупый вопрос , у меня примерно при аналогичном запросе в результате получается ТЗ с одной строчкой , где написано количество элементов. Как мне результат получить после выгрузки результата запроса в ТЗ ?
|
|||
35
Агент Инфостарта
06.07.12
✎
10:31
|
(34) >>> Сначала поместите данные таблицы во временную таблицу запроса, а потом уже выборка из временной таблицы
Смотри примеры в теме. |
|||
36
IVT_2009
06.07.12
✎
10:31
|
Код
Запрос = Новый Запрос; МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | Таб.импортер как Импортер, | Таб.Инн как ИНН, | Таб.Кпп как КПП |ПОМЕСТИТЬ ВТДанные |ИЗ | &Данные КАК Таб"; Запрос.УстановитьПараметр("Данные",Таб); Результат = Запрос.Выполнить().Выгрузить(); получается : Индекс Значение элемента Тип элемента Количество 0 СтрокаТаблицыЗначений СтрокаТаблицыЗначений 244 |
|||
37
Агент Инфостарта
06.07.12
✎
10:33
|
(36)
|; |Выбрать * из ВТДанные КАК ДанныеИзВТ |"; |
|||
38
IVT_2009
06.07.12
✎
10:34
|
(37) Спасибо! дошло
|
|||
39
Агент Инфостарта
06.07.12
✎
10:34
|
(36)
МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Это нафиг не нужно, если ты не используешь временную таблицу где-то ещё. |
|||
40
Adgjj
06.07.12
✎
10:42
|
(32) т.е. пришли к тому же результату, с которого начали: отбор по одному параметру((
|
|||
41
Adgjj
06.07.12
✎
10:47
|
(28) спасибо большое работает
|
|||
42
LAAry
06.07.12
✎
10:57
|
(32) ты все время путаешь имена:
|ВЫБРАТЬ | Таб.ДатаДок, | Таб.ВидДок, | Таб.СменаXY, | Таб.ЕО, | Таб.РабМесто, | Таб.ТаноМеханика, | Таб.НомерДок, | Таб.ОбщПробег |ПОМЕСТИТЬ | ВремТаб |ИЗ &ТЗ КАК Таб | //|ГДЕ Таб.СменаXY в (&Отбор); |; |Выбрать * из ВремТаб КАК ТЗ2 |ГДЕ ТЗ2.СменаXY в (&Отбор); //вот тут имя таблицы Т32, а не ВремТаб |"; Запрос.УстановитьПараметр("ТЗ", ТЗ); Отбор = Новый Массив; Отбор.Добавить("Х"); Отбор.Добавить("Y"); Отбор.Добавить(""); Запрос.УстановитьПараметр("Отбор", Отбор); сообщить("1"); фыва = Запрос.Выполнить(); сообщить("2"); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |