Имя: Пароль:
1C
1С v8
Соединение с виртуальной таблицей - параметр + секция ПО
0 PiotrLoginov
 
03.12.19
13:50
Где-то читал.. то ли на ИТС, то ли еще где-то, в продолжительной статье по запросам, что в некоторых случаях мало наложить условие в параметрах виртуальной таблицы. Самый правильный запрос - в котором, дополнительно, накладываемый фильтр продублирован в секции ПО.

То есть мало указать параметр ВидЦены:

ВЫБРАТЬ
    ВременнаяТаблица.Номенклатура КАК Номенклатура,
    ВременнаяТаблица.Характеристика КАК Характеристика,
    ВременнаяТаблица.Витрина КАК Витрина, //отдел в магазине или интернет-сайт... в контексте моего вопроса это неважно
    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
ИЗ
    ВременнаяТаблица КАК ВременнаяТаблица

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

        ПО ВременнаяТаблица.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
            И ВременнаяТаблица.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика


.. желательно добавить еще одно соединение с виртуальной таблицей:

            И ВременнаяТаблица.ВидЦены = ЦеныНоменклатурыСрезПоследних.ВидЦены

В той статье об этом кратко, но доходчиво сказано..  не могу найти ту статью. Может, кто-то видел ее, или имеет мнение по данному вопросу?
2 PiotrLoginov
 
03.12.19
13:55
На самом деле далеко не факт, что там говорилось о таблице СрезПоследних. Вероятно, речь была про другие виртуальные таблицы.
3 Mort
 
03.12.19
13:59
"Самый правильный запрос - в котором, дополнительно, накладываемый фильтр продублирован в секции ПО"

Самый правильный запрос получается когда его автор представляет когда и что применяется, а не пляшет вокруг него с бубном.
4 PiotrLoginov
 
03.12.19
15:30
Жду мнений и ссылок. Ну и сам ищу...
5 D_E_S_131
 
03.12.19
15:40
"...не могу найти ту статью." - видимо кто-то по глупости написал, а потом стер, но "в умах людей" осталось.
6 PiotrLoginov
 
03.12.19
16:19
(5) дык если бы там только про это было. Там, ЕМНИП, обычные, адекватные вещи были написаны - про секцию ГДЕ, про подзапросы... И в том числе про это.

Есть впечатление, что такая рекомендация - глупость? Ну ок. Ждем, кто еще выскажется.
7 dezss
 
03.12.19
16:35
Ну дык если в ВременнаяТаблица есть ВидЦены и там могут быть разные виды цен, то такое соединение обязательно, иначе пойдут дубли строк.
8 dezss
 
03.12.19
16:36
И вообще с внутрениим надо быть очень осторожным.
9 PiotrLoginov
 
03.12.19
16:46
(7) Там могут быть разные виды цен. Но благодаря наложению параметра "И ВидЦены = &ВидЦены" мы получим только данные виртуальной таблицы только по одному виду цены.
Внутреннее тут к вопросу отношения не имеет. Фильтрация Временной таблицы нам не нужна.


Условимся, что во Временной таблице в поле ВидЦены всегда только тот вид, который нам нужен!
10 dezss
 
03.12.19
17:13
(9) >> Там могут быть разные виды цен.
Противоречит этому:
>> Условимся, что во Временной таблице в поле ВидЦены всегда только тот вид, который нам нужен!

Но если все же условимся о последнем, то это все монопенисуально.
11 PiotrLoginov
 
03.12.19
17:41
(10) >> >> Там могут быть разные виды цен
- это про содержимое регистра сведений


>> >>в поле ВидЦены всегда только тот вид, который нам нужен
- а это про Временную таблицу
12 PiotrLoginov
 
04.12.19
12:58
Up
Независимо от того, куда вы едете — это в гору и против ветра!