|
Хелп с запросом в временной таблице. Реализация "*" - звездочки | ☑ | ||
---|---|---|---|---|
0
Кокос
18.04.13
✎
14:40
|
Хочу получить через запрос строки ТЗ в виде ТЗ по фильтру. Ну то есть из ТЗ выделить ТЗ по отбору.
НайтиСТроки грузит в массив а не в тз. Попробовал через менеджер ВТ. но почемуто на выходе получается только одна строка с одной колонкой "Количество" Запрос = Новый Запрос; МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ * |ПОМЕСТИТЬ ВТДанные |ИЗ | &Данные КАК Таб ГДЕ Таб.НомерДокументаМакономи = &ТекущийНомер"; Запрос.УстановитьПараметр("Данные",ТаблицаСтрок); Запрос.УстановитьПараметр("ТекущийНомер",СписокНомеровДокументов[СчетчикЦикла].Значение); |
|||
1
zak555
18.04.13
✎
14:41
|
тз откуда взял ?
|
|||
2
Рэйв
18.04.13
✎
14:41
|
я тож пробовал так..Не летает..Только поименно поля брать придется
|
|||
3
GROOVY
18.04.13
✎
14:42
|
ВЫБРАТЬ *
|ПОМЕСТИТЬ ВТДанные |ИЗ | &Данные КАК Таб ГДЕ Таб.НомерДокументаМакономи = &ТекущийНомер ; ВЫБРАТЬ * ИЗ ВТДанные |
|||
4
Рэйв
18.04.13
✎
14:42
|
потом уже из ВТ можно по звездочке
|
|||
5
acsent
18.04.13
✎
14:42
|
см. Скопировать()
|
|||
6
1Сергей
18.04.13
✎
14:42
|
(3) +1
|
|||
7
GROOVY
18.04.13
✎
14:42
|
Предложение ПОМЕСТИТЬ лишь создает ВТ, в результат запроса при этом выводится единственное поле содержащее количество строк помещенных в ВТ
|
|||
8
GROOVY
18.04.13
✎
14:43
|
Так что нужно вторым запросом выбрать данные из ВТ.
|
|||
9
Кокос
18.04.13
✎
14:44
|
понял. Всем спасибо. (5) тоже. чет я не посмотрел.
|
|||
10
Кокос
18.04.13
✎
14:51
|
(3) заработало :)
Вопрос! Что быстрее? (3) или (5) ? |
|||
11
Паланик
18.04.13
✎
15:00
|
(10) Замерь сам, и нам расскажешь)
|
|||
12
GROOVY
18.04.13
✎
15:01
|
(10) От ТЗ зависит. При большой ТЗ запрос быстрее будет.
|
|||
13
GANR
18.04.13
✎
15:04
|
А вот так лучше стало?
Запрос = Новый Запрос; МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | * |ПОМЕСТИТЬ ВТДанные |ИЗ | &Данные КАК Таб |; |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | * |ИЗ | ВТДанные КАК ВТДанные |ГДЕ | ВТДанные.НомерДокументаМакономи = &НомерДокументаМакономи"; Запрос.УстановитьПараметр("Данные",ТаблицаСтрок); Запрос.УстановитьПараметр("ТекущийНомер",СписокНомеровДокументов[СчетчикЦикла].Значение); |
|||
14
ДенисЧ
18.04.13
✎
15:08
|
(13)
МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Это можешь смело убрать. |
|||
15
GANR
18.04.13
✎
15:12
|
(14) (3) учтем
Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.Текст = "ВЫБРАТЬ | * |ПОМЕСТИТЬ ВТДанные |ИЗ | &Данные КАК Таб |ГДЕ | ВТДанные.НомерДокументаМакономи = &НомерДокументаМакономи |; |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | * |ИЗ | ВТДанные КАК ВТДанные"; Запрос.УстановитьПараметр("Данные",ТаблицаСтрок); Запрос.УстановитьПараметр("ТекущийНомер",СписокНомеровДокументов[СчетчикЦикла].Значение); |
|||
16
ДенисЧ
18.04.13
✎
15:14
|
(15) Повторяю. Не нужен тебе в данном случаем Менеджер временных таблиц
|
|||
17
Кокос
18.04.13
✎
15:20
|
(12) ТЗ большое.. тогда оставлю запрос.
|
|||
18
acsent
18.04.13
✎
15:21
|
(13) не уж то 1с так плохо делает тэйбл скан???
|
|||
19
acsent
18.04.13
✎
15:21
|
(17) если многократный поиск, то добавь индекс
|
|||
20
GANR
18.04.13
✎
15:34
|
(16) А ну менеджер это так - "Чтоб не думать" :).
|
|||
21
Кокос
19.04.13
✎
16:17
|
(1) по ADO из оракла
|
|||
22
Кокос
30.04.13
✎
21:05
|
Народ! А дайте кто нибудьл пример соединения в запросе по справочнику с внешней таблицей.
ну чтот типа "ВЫБРАТЬ | * |ПОМЕСТИТЬ ВТДанные |ИЗ | &Данные КАК Таб |; |/////////// |ВЫБРАТЬ | Договоры.Ссылка |ИЗ Справочник.Договоры .ДоговорыКонтрагентов КАК ДоговорыКонтрагентов | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ * ВТДанные КАК ВТДанные) ГДЕ ДоговорыКонтрагентов.Владелец.ВнешнийКод = ВТДанные.ВнешнийКод"; |
|||
23
Nikosss
30.04.13
✎
22:06
|
(22) Попробуй для ТаблицыЗначений для колонки задать Тип, хотя бы пару колонок и проверить.
ТЗ = Новый ТаблицаЗначений(); ТЗ.Колонки.Добавить("Контрагент",Новый ОписаниеТипов("СправочникСсылка.Контрагенты"); Для ВТ обязательно надо задать тип, вот только когда через ADODB получал данные, вроде описывать конкретно тип не надо было, но проверить стоит )) |
|||
24
Кокос
30.04.13
✎
22:51
|
(23) имеешь ввиду для колонки по которому я собираюсь делать объединение? ну там все строчное. единственное что можно сделать это зафиксировать ширину. а так запрос корректен?
|
|||
25
zladenuw
30.04.13
✎
22:56
|
||||
26
Кокос
04.05.13
✎
10:38
|
(25) класс. спс за ссылку. ато так и не нашелбы как мне поля временной таблицы объявить... конструктор их не видел...
|
|||
27
mistеr
04.05.13
✎
11:01
|
(26) Значит от звездочки все-таки отказался? Наконец-то.
|
|||
28
Кокос
04.05.13
✎
11:13
|
(27) еще выдает ошибки. сейчас доотлажу и выведу конечный вариант. :)
|
|||
29
Кокос
04.05.13
✎
11:38
|
&НаСервере
Процедура ЗагрузитьКодыМакономиНаСервере4(Параметры) Если Параметры = Неопределено Тогда возврат; КонецЕсли; Данные = ПолучитьИзВременногоХранилища(Параметры).ТаблицаКодовМакономи; Если Данные.Количество() = 0 Тогда Возврат; КонецЕсли; ТаблицаКодовМакономи = Новый ТаблицаЗначений; ТаблицаКодовМакономи.Колонки.Очистить(); ТаблицаКодовМакономи.Колонки.Добавить("ВнешнийКод",Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(100))); ТаблицаКодовМакономи.Колонки.Добавить("КодМакономи",Новый ОписаниеТипов("Строка")); Кол = Данные.Количество(); Для Сч = 0 По Кол - 1 Цикл НоваяСТрока = ТаблицаКодовМакономи.Добавить(); НоваяСтрока.ВнешнийКод = Данные[Сч].Значение.ВнешнийКод; НоваяСтрока.КодМакономи = Данные[Сч].Значение.КодМакономи; КонецЦикла; Запрос = Новый Запрос; МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | * |ПОМЕСТИТЬ ТаблицаКодов |ИЗ | &Данные КАК Таб |; |//////////////////////////////////////////////////////////////////////////////// |"; ЗАпрос.УстановитьПараметр("Данные",ТаблицаКодовМакономи); Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ | Договоры.Ссылка, | Договоры.Ссылка.Владелец.ВнешнийКод КАК КодВладельца, | ТаблицаКодов.ВнешнийКод КАК КодВнешний, | ТаблицаКодов.КодМакономи |ИЗ | Справочник.ДоговорыКонтрагентов КАК Договоры | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаКодов КАК ТаблицаКодов | ПО Договоры.Владелец.ВнешнийКод = ТаблицаКодов.ВнешнийКод |ГДЕ | Договоры.КодМакономи = """""; ТД = Запрос.Выполнить().Выгрузить(); НачатьТранзакцию(); Для Каждого ВыборкаДоговоры из ТД Цикл оДок = ВыборкаДоговоры.ссылка.ПолучитьОбъект(); оДок.КодМакономи = ВыборкаДоговоры.КодМакономи; оДок.Записать(); КонецЦикла; ЗафиксироватьТранзакцию(); КонецПроцедуры |
|||
30
Кокос
04.05.13
✎
11:39
|
ну и сделал в конструкторе запросов как в (25)
|
|||
31
hhhh
04.05.13
✎
11:44
|
(29) а зачем менеджер временных таблиц?
нормально напиши Запрос = Новый Запрос; ЗАпрос.УстановитьПараметр("Данные",ТаблицаКодовМакономи); Запрос.Текст = "ВЫБРАТЬ | * |ПОМЕСТИТЬ ТаблицаКодов |ИЗ | &Данные КАК Таб |; |ВЫБРАТЬ | Договоры.Ссылка, | Договоры.Ссылка.Владелец.ВнешнийКод КАК КодВладельца, | ТаблицаКодов.ВнешнийКод КАК КодВнешний, | ТаблицаКодов.КодМакономи |ИЗ | Справочник.ДоговорыКонтрагентов КАК Договоры | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаКодов КАК ТаблицаКодов | ПО Договоры.Владелец.ВнешнийКод = ТаблицаКодов.ВнешнийКод |ГДЕ | Договоры.КодМакономи = """""; ТД = Запрос.Выполнить().Выгрузить(); |
|||
32
Кокос
04.05.13
✎
11:45
|
(31) а он тогда на Договоры.Владелец.ВнешнийКод = ТаблицаКодов.ВнешнийКод будет ругаться. типа таких полей нет
|
|||
33
Кокос
04.05.13
✎
11:45
|
а вообще сейчас попробую. но вроде ругался. просто уже два часа отлаживал :)
|
|||
34
hhhh
04.05.13
✎
11:48
|
(32) не будет ругаться. И можно покороче
Договоры.Владелец.ВнешнийКод КАК КодВладельца |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |