Имя: Пароль:
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) параллельные вычисления можно будет распараллеливать только на клиенте.
Менеджер временных таблиц живет на сервере от начала вызова сервера, до окончания выполнения серверного кода
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший