Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Запрос срез последних - внутреннее соединение

Запрос срез последних - внутреннее соединение
Я
   dk
 
21.06.18 - 13:23
есть запрос в 8 к регистру сведений - довольно небыстрый
хочу добавить фильтр по остаткам
можно как-то внутреннее соединение внутри виртуальной таблицы сделать а не снаружи? типа как в 1с++
или как в условии задать фильтр по паре товар-магазин?
 
 
   Sammo
 
1 - 21.06.18 - 13:26
В параметрах запроса Номенклатура в (Выбрать...)
Но может и не дать ускорения.
   dk
 
2 - 21.06.18 - 13:26
просто внутреннее соединение работает, но уже после получения среза последних, а надо чтобы сам срез тоже по фильтру работал
   dk
 
3 - 21.06.18 - 13:27
надо по товар / магазин  а не просто по товар
   catena
 
4 - 21.06.18 - 13:32
(товар,магазин) в (выбрать товар, магазин...)
   xXeNoNx
 
5 - 21.06.18 - 13:32
(3) скинь сам запрос
   dk
 
6 - 21.06.18 - 13:36
ВЫБРАТЬ
    КатегорииНоменклатуры.Ссылка КАК Категория
ПОМЕСТИТЬ Категории
ИЗ
    Справочник.КатегорииНоменклатуры КАК КатегорииНоменклатуры
ГДЕ
    КатегорииНоменклатуры.Действует
    И КатегорииНоменклатуры.ВидКатегории <> ЗНАЧЕНИЕ(Перечисление.ВидыКатегориийНоменклатуры.ОбщесетевойПризнак)
;    
ВЫБРАТЬ РАЗЛИЧНЫЕ 
    ТоварыНаСкладахОстатки.Склад.Магазин    Магазин
    , ТоварыНаСкладахОстатки.Номенклатура    Номенклатура
ПОМЕСТИТЬ ВремОстатки
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ), ) КАК ТоварыНаСкладахОстатки
ГДЕ    
    ТоварыНаСкладахОстатки.КоличествоОстаток > 0
ИНДЕКСИРОВАТЬ ПО
    Магазин, Номенклатура 
;
ВЫБРАТЬ 
    КатегорииФакт.Номенклатура
ИЗ
     РегистрСведений.КатегорииНоменклатуры.СрезПоследних(КОНЕЦПЕРИОДА(&Дата, ДЕНЬ), ((Магазин, Номенклатура) в (Выбрать Магазин, Номенклатура ИЗ ВремОстатки)) И(КатегорияНоменклатуры В (ВЫБРАТЬ * ИЗ Категории))) КАК КатегорииФакт
        //ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВремОстатки

        //ПО КатегорииФакт.Магазин = ВремОстатки.Магазин

        //    И КатегорииФакт.Номенклатура = ВремОстатки.Номенклатура

        //    И (КатегорииФакт.Актуальность)

   dk
 
7 - 21.06.18 - 13:40
(4) спасибо, вроде то что нужно
   Мандалай
 
8 - 21.06.18 - 13:48
Внутреннее соединение тебя спасет.
   Мандалай
 
9 - 21.06.18 - 13:49
(4)Отрабатывает неоптимально на клиент серверной схеме, на файловой не знаю.
   dk
 
10 - 21.06.18 - 13:56
(8) внутреннее отрабатывает уже ПОСЛЕ получения среза - это медленно
 
 Рекламное место пустует
   Мандалай
 
11 - 21.06.18 - 14:10
(10)Почитай изменения в 13 платформе.
   youalex
 
12 - 21.06.18 - 14:13
(10)
Что значит "после" ? Срез - это вложенный запрос. У тебя идет соединение с вложенным запросом, а там как оптимизатор угадает.  
Можешь сам сделать запрос среза, хоть через вт. Тогда, если у тебя соединение с полями среза, можешь сразу ненужное отсечь, и оптимизатору будет проще..

+
Если Срез чаще используется без параметра Период, есть смысл добавить итоги по срезу последних.
   dk
 
13 - 21.06.18 - 14:22
(11) 8.3.10.2580
------------
(12) срез последних это не обычная таблица, а вложенный запрос и джойн делается похожу уже после выполнения вложенного, а хочется джойн внутри вложенного
по крайней мере время выполнения сильно разнится
   Сти
 
14 - 21.06.18 - 14:35
(13) Да, это вложенный запрос, но оптимизатор запроса SQL-сервера может отследить эти соединения и перенести их вовнутрь. Только недавно отслеживал такое поведение MS SQL на примере запроса к ВТ оборотов регистра накопления c внешними условиями и связями с другой таблицей.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует