Имя: Пароль:
1C
1С v8
Помогите с запросом к временым таблицам
Ø (GROOVY 30.11.2011 07:50)
,
0 Max1986
 
29.11.11
13:36
в продолжении
https://1cers.ru/topic.php?upd&id=581996
решил немного переписать запрос. Сделал так:

МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст ="
|ВЫБРАТЬ
|    РегистрСведений.СписанныеТовары.Номенклатура КАК Номенклатура,
|    РегистрСведений.СписанныеТовары.Склад КАК Склад
|ПОМЕСТИТЬ ВременнаяТабл
|ИЗ
|    РегистрСведений.СписанныеТовары
|ГДЕ
|РегистрСведений.СписанныеТовары.Регистратор = &Ссылка
|;
|ВЫБРАТЬ
|    СписанныеТовары.НомерСтрокиДокумента КАК НомерСтрокиДокумента,
|    ПартииТоваровНаСкладах.ДокументОприходования КАК ДокументОприходования,
........
|ИЗ
|    РегистрСведений.СписанныеТовары КАК СписанныеТовары
|        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.Остатки(
|        &Дат,
|        Организация = &Организация
|            И Номенклатура В
|                (ВременнаяТабл.Номенклатура)
|        И (Склад В
|            (ВременнаяТабл.Склад) ИЛИ Склад = &ПустойСклад)) КАК ПартииТоваровНаСкладах

Но не работает пишет - Ошибка.Поле не найдено "ВременнаяТабл.Номенклатура" (<<?>>ВременнаяТабл.Номенклатура)

Подскажите, что я делаю не так?
1 Ненавижу 1С
 
гуру
29.11.11
13:37
И Номенклатура В
               (ВЫБРАТЬ ВременнаяТабл.Номенклатура ИЗ ВременнаяТабл КАК ВременнаяТабл)
2 Staffa
 
29.11.11
13:38
(ВременнаяТабл.Номенклатура)

заменить на

(Выбрать ВТ.Номенклатура Из ВременнаяТабл КАК ВТ)

и со складом тоже самое
3 Max1986
 
29.11.11
13:38
Спасибо!
4 Buster007
 
29.11.11
13:42
ВЫБРАТЬ ВременнаяТабл.Номенклатура ИЗ ВременнаяТабл
))
5 Max1986
 
29.11.11
13:43
А еще 2 вопроса:
1. После выполнения как удалить менеджер Временных таблиц ?
Я написал
Запрос.МенеджерВременныхТаблиц = Неопределено;

2.Как происходит блокировка таблиц в SQL при выполнении данного запроса? Т.е. когда первый запрос из пакета выполнился, но второй еще нет - будут ли освобождены таблицы которые в нем используются.
Это важно для параллельной работы
6 Max1986
 
29.11.11
13:46
+(5)Запрос заработал. Но несмотря на то что использую теперь временную таблицу, скорость выполнения не уменьшилась. Визуально на 1 сек увеличилось даже.
Что разве не влияют они на скорость?
7 Ненавижу 1С
 
гуру
29.11.11
13:50
(5)
1. в пакетном удалять и создавать менеджера не надо совсем
2. никак, у тебя нет ДЛЯ ИЗМЕНЕНИЯ, если будет - то блокируется до конца транзакции
8 Ненавижу 1С
 
гуру
29.11.11
13:51
(6) попробуй его еще раз выполнить, когда он закешировался
9 Max1986
 
29.11.11
13:54
(7)>> в пакетном удалять и создавать менеджера не надо совсем
т.е. вообще в пакетном мнеджер временных таблиц не нужен? Блин, а я его всегда создавал!
Точно можно не пользоваться? Получается он нужен когда использую внешнюю таблицу?

(8)скорость не изменилась. Но мне кажется меньше стало блокировок
10 Staffa
 
29.11.11
13:55
(9) менеджер нужен, когдна одну ВТ ты будешь использовать в нескольких различных запросах
11 Max1986
 
29.11.11
13:57
(10)т.е. если есть пакет и там несколько запросов к временной таблице - то надо?
Тогда правильно использовал
12 Staffa
 
29.11.11
14:01
(11) нет, если у тебя несколько объектов "Запрос" и тебе надо из одного в другой передать, например, список номенклатуры, то здесь нужно использовать МВТ. Если объект "Запрос" один (любой сложности), то МВТ не нужно.
13 Staffa
 
29.11.11
14:02
+(12) "список номенклатуры" в виде ВТ, конечно.
14 Max1986
 
29.11.11
14:04
(12)независимо от количества временных таблиц в одном запросе?
15 Staffa
 
29.11.11
14:04
(14) да
16 Max1986
 
29.11.11
14:10
(15)спасибо.
Неясно осталось - как влияет разложение одного запроса с подзапросами в СОЕДИНЕНИИ на пакетные запросы.
В книгах по оптимизации сказано - влияет.
реально - не видно
17 Staffa
 
29.11.11
14:12
(16) возьми запрос по формированию расчетного листа из ЗУПа и убери оттуда временные таблицы - увидишь, насколько(!) влияет.

да и просто по логике вещей запрос в ВТ выполняется один раз и выдает готовый рекордсет, который ты вертишь в дальнейшем как хочешь.
18 Ненавижу 1С
 
гуру
29.11.11
14:15
1c придумало TOTALS, хот был уже ROLLUP
19 Max1986
 
29.11.11
14:20
(18)не понял. Поясни плиз.
20 Vitally Programmer
 
29.11.11
14:35
(18)А что такое пакетный запрос и чем он отличается от непакетноко,и что понимается под словом пакет?
21 rs_trade
 
29.11.11
14:37
(20) несколько запросов
22 Vitally Programmer
 
29.11.11
14:58
(21) Несколько запросов-это один пакет? или каждое обращение к таблице это пакет?
23 Max1986
 
29.11.11
15:14
(22)несколько запросов в одном.
Неужели не пользовался?
24 Max1986
 
29.11.11
15:15
+(23)Типа
ВЫБРАТЬ * ИЗ Таблицы А
Поместить АА
;
ВЫБРАТЬ * ИЗ Таблицы Б
Поместить ББ


ну и т.д.
25 Vitally Programmer
 
29.11.11
15:19
(24) это создание временных таблиц использовано,а если я просто пишу

  Выбрать
  Из Регистр1
   
  ЛевоеСоединение( выбрать
                   из Регистр2)

это два пакета или один?
26 Ненавижу 1С
 
гуру
29.11.11
15:19
(25) и там и там пакет один ))
27 andrewks
 
29.11.11
15:19
(25) ЖКК почитать не предлагать?
28 Vitally Programmer
 
29.11.11
15:21
(26) А как написать два пакета? И ,как я понял-пакет-это просто выполняемый текст запроса?
29 andrewks
 
29.11.11
15:22
(28)

Запрос1

;

Запрос2

;

Запрос3

и т.д.
30 Vitally Programmer
 
29.11.11
15:25
(29)А,понятно вроде
31 Vitally Programmer
 
30.11.11
07:49
(29)Васили Петрович,в конструкторе вот как показано:


ВЫБРАТЬ
   ТиповойОбороты.Регистратор,
   ТиповойОбороты.КорСубконто1,
   ТиповойОбороты.КорСубконто2,
   ТиповойОбороты.Субконто1,
   ТиповойОбороты.Субконто2
ПОМЕСТИТЬ ТЧВрем
ИЗ
   РегистрБухгалтерии.Типовой.Обороты(&НачДата, &КонДата, Регистратор, счет В ИЕРАРХИИ (&СписокСчетовВыручки), , организация В (&СписокОрганизаций), , ) КАК ТиповойОбороты
;

////////////////////////////////////////////////////////////////////////////////


ВЫБРАТЬ
   ТЧВрем.Регистратор,
   ТЧВрем.Субконто1,
   ТЧВрем.Субконто2,
   ТЧВрем.КорСубконто1,
   ТЧВрем.КорСубконто2

ИЗ
   ТЧВрем как ТЧВрем
   
   ОБЪЕДИНИТЬ ВСЕ
   
   Выбрать
   
   ТиповойОборотыСебестоимость.Счет,
   ТиповойОборотыСебестоимость.Субконто1,
   ТиповойОборотыСебестоимость.Субконто2,
   ТиповойОборотыСебестоимость.КорСубконто1,
   ТиповойОборотыСебестоимость.КорСубконто2
   
   ИЗ
   
    РегистрБухгалтерии.Типовой.Обороты(&НачДата, &КонДата, Регистратор, счет В ИЕРАРХИИ (&СписокСчетовСебестоимости), , Организация В (&СписокОрганизаций), , ) КАК ТиповойОборотыСебестоимость
   
   Где ТиповойОборотыСебестоимость.Регистратор В(Выбрать ТчВрем.Регистратор из ТЧВрем)


(Создание временной таблицы-это один пакет,а все остальное -это другой пакет)
2 + 2 = 3.9999999999999999999999999999999...