Имя: Пароль:
1C
 
Использование кросс-таблиц в языке запросов [нашли МВТ и ПОМЕСТИТЬ Реквизиты]
0 Гений 1С
 
гуру
04.12.20
12:37
Рарус-конфа на базе БП3. Модуль менеджера ПКО.

Встречаю вот такой код в языке запросов:


|ВЫБРАТЬ
|    Реквизиты.Дата КАК Период,
|    Реквизиты.Ссылка КАК Регистратор,
|    ...,
|ИЗ
|    Документ.ПриходныйКассовыйОрдер КАК Реквизиты
|ГДЕ
|    Реквизиты.Ссылка = &Ссылка
|;
|
|
|ВЫБРАТЬ
|    1 КАК НомерСтроки,
|    Реквизиты.СчетУчетаРасчетовСКонтрагентом КАК СчетКт,
|    Реквизиты.СубконтоКт1 КАК СубконтоКт1,
|    Реквизиты.СубконтоКт2 КАК СубконтоКт2,
|    Реквизиты.СубконтоКт3 КАК СубконтоКт3,
|    ...
|    Реквизиты.ПодразделениеОрганизации КАК ПодразделениеДт,
|    Реквизиты.СуммаДокумента КАК ВалютнаяСумма,
|    ВЫРАЗИТЬ(Реквизиты.СуммаДокумента * &КоэффициентРуб КАК ЧИСЛО(15, 2)) КАК СуммаРуб
|ИЗ
|    Реквизиты КАК Реквизиты



Сижу, чешу репу - это как? Реквизиты - это ж вроде не временная таблица, каким образом она становится доступна далее, в пакете запроса?
Это что за новые веяния в языке запросов, а?
1 polosov
 
04.12.20
12:41
А менеджер временных таблиц не определяется случайно нигде?
2 Гений 1С
 
гуру
04.12.20
12:50
(1) Определяется:
    Запрос = Новый Запрос;
    МенеджерВременныхТаблиц  = Новый МенеджерВременныхТаблиц;
    Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Но ведь Реквизиты - это ж не ВТ, там нет Поместить?
3 RomanYS
 
04.12.20
12:53
(2) Чудес не бывает... запускаю БП3 :)
4 trdm
 
04.12.20
12:55
(0) замены строки запроса нет нигде?
5 polosov
 
04.12.20
12:55
(2) Результат = Запрос.ВыполнитьПакетСПромежуточнымиДанными();
Сделай и проанализируй.
6 Гений 1С
 
гуру
04.12.20
12:55
(3) если че, это модуль менеджера ПКО, функция ТекстЗапросаРеквизитыДокумента и ТекстЗапросаПрочееПоступление
Правда, конфа древненькая, счас хз может уже переписали.
7 Гений 1С
 
гуру
04.12.20
12:56
(4) я финальный запрос тебе выложил, который передается на ВыполнитьПакет
8 RomanYS
 
04.12.20
12:58
(6)
    Запрос = Новый Запрос;
    МенеджерВременныхТаблиц  = Новый МенеджерВременныхТаблиц;
....    
    ПодготовитьПараметрыРеквизитыДокумента(Запрос, ПараметрыПроведения, Отказ);//вот здесь поместить
....
//а здесь вызов ТекстЗапросаПрочееПоступление()
9 Гений 1С
 
гуру
04.12.20
12:58
Может быть это в пакетных запросах происходит неявное помещение таблиц во временные?
В результате пакета три таблицы, ровно по числу запросов в пакете. (там еще есть второй запрос по другим таблицам, я его вырезал)
10 RomanYS
 
04.12.20
13:00
Помещение явное, оно сделано ранее и ВТ живут в МВТ. В финишном тексте запроса помещения уже нет, оно и не нужно
11 Гений 1С
 
гуру
04.12.20
13:00
(5) ради прикола проанализировал:
    Результат = Запрос. ВыполнитьПакетСПромежуточнымиДанными();
    Результат = Запрос.ВыполнитьПакет();

Результаты идентичны. Ничего не понимаю.
12 Гений 1С
 
гуру
04.12.20
13:01
(10) а да, сукко. Вот это чудеса извращенного мышления! Офигеть...
Они до этого вызывают в ПодготовитьПараметрыРеквизитыДокумента

    "ВЫБРАТЬ
    |    Реквизиты.Дата КАК Дата,
    |    Реквизиты.Ссылка КАК Ссылка,
    |    Реквизиты.ВидОперации КАК ВидОперации,
..
    |    КОНЕЦ КАК ЭтоВозврат
    |ПОМЕСТИТЬ Реквизиты
    |ИЗ
    |    Документ.ПриходныйКассовыйОрдер КАК Реквизиты
    |ГДЕ


Жесть.
Ну слава богу, а то я думал, у меня крыша едет.
13 polosov
 
04.12.20
13:02
(12) В следующий раз просто запускай глобальный поиск по "поместить реквизиты"
14 Гений 1С
 
гуру
04.12.20
13:08
(13) до этого еще надо было додуматься, видишь ли. Я думал, это некая магия. ;-)
15 БаксПо90
 
04.12.20
13:13
а ты говоришь 1800 .. старость дело такое, все хотят есть .. но всем нужны молодые и красивые
16 RomanYS
 
04.12.20
13:18
(14) А почему ты это кросс-таблицами назвал?
17 ADirks
 
04.12.20
13:30
Если физику в школе не учить, то весь мир вокруг будет преисполнен магии
18 Гений 1С
 
гуру
04.12.20
13:36
(16) ну как-то так в голову пришло. Типа таблица, использованная в одном месте, доступна в другом. Кросс
19 Гений 1С
 
гуру
04.12.20
13:37
(17) Ай-вэй, к нам пришел Самый Умный. А ты точно Самый Богатый?
20 ADirks
 
04.12.20
13:44
(19) А у меня комплекса неполноценности нет, шоб его богатствами компенсировать
21 PR
 
04.12.20
13:48
Гений проморгал написанное им же в (0) "Документ.ПриходныйКассовыйОрдер КАК Реквизиты" и такой "О, здесь еще и море есть!"
22 Гений 1С
 
гуру
04.12.20
13:49
(20) Понятно, Идейно Бедный. Держи Пятюню.
23 Гений 1С
 
гуру
04.12.20
13:49
(21) Перечитай плиз тему, а то у тебя сложилось поверхностное и неправильное понимание сути вопроса.
24 polosov
 
04.12.20
13:50
(21) Так наоборот он это увидел, но не увидел помещение в ВТ.
25 PR
 
04.12.20
13:52
(24) Это было очевидно, что он запикал помещение точками
26 youalex
 
04.12.20
13:57
(14) Чудо не в том, чтобы летать по воздуху или ходить по воде, но в том, чтобы ходить по земле.
27 Гений 1С
 
гуру
06.12.20
17:42
(25) нет. ты так и не въехал в тему, перекури ее еще раз, если надо, исходники в БП3 посмотри. Могу и словами объяснить.
28 Гений 1С
 
гуру
06.12.20
17:42
(24) вот-вот.
29 Гений 1С
 
гуру
06.12.20
17:43
(24) а не увидел, ибо оно было за километр от второго запроса, в лучших традициях ЗУП, хотя это и не ЗУП, а БП3
30 ДедМорроз
 
06.12.20
18:56
Менеджер временных таблиц для этого и нужен,что поместил,а потом достал.

Только вот непонятно,что с параллельным выполнением,если кто-то в другом сеансе в основную таблицу допишет или ещё лучше удалит из нее.
31 Ненавижу 1С
 
гуру
06.12.20
19:08
(30) параллельные вычисления можно будет распараллеливать только на клиенте.
Менеджер временных таблиц живет на сервере от начала вызова сервера, до окончания выполнения серверного кода
Ошибка? Это не ошибка, это системная функция.