Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Закладка "Индекс" в Конструкторе запросов  (Прочитано 18184 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Sulik
Помогающий

ru
Offline Offline
Пол: Мужской

« : 14-11-2011 18:41 » 

Подскажите пожалуйста, где можно прочитать про индексы в Конструкторе запросов ?
Для чего он и нужны ?

Спасибо!
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 15-11-2011 06:48 » 

Индексы нужны в пакетных запросах (с использованием менеджера временных таблиц) для более быстрой работой с промежуточными данными.
Пример использования:
есть таблица значений с некоторыми данными (например - номенклатурой)
нужно получить детальные продажи по группе товаров A (ABC анализ продаж) из этой таблицы.
Решение:
1. Таблица загружается в запрос (ВЫБРАТЬ * ИЗ &Таблица КАК Таблица), возможно - с индексированием
2. Формируется сводная таблица продаж (с индексированием по номенклатуре) для выделения группы А из общих продаж таблицы 1
3. По таблице из п.2 выбираются уже детальные продажи

P.S. пример немного надуман, но суть, надеюсь, понятна
Записан
Sulik
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 15-11-2011 09:08 » 

Не совсем понял.
А в каком пункте временная таблица.
А можно на конкретном примере, пожалуйста.
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 15-11-2011 13:47 » 

Полный пример писать нет времени.
Суть в том, что выполняется это одной коммандой одного объекта Запрос:
Код: (1C v8)
ТекстЗапроса =
  "ВЫБРАТЬ
  |     Таблица.Номенклатура КАК Номенклатура
  |ПОМЕСТИТЬ ТаблицаНоменклатуры
  |ИЗ
  |     &Таблица КАК Таблица
  |
  |ИНДЕКСИРОВАТЬ ПО
  |     Номенклатура
  |;
  |
  |////////////////////////////////////////////////////////////////////////////////
  |ВЫБРАТЬ
  |     ПродажиОбороты.Номенклатура КАК Номенклатура,
  |     ЕСТЬNULL(ПродажиОбороты.СтоимостьОборот, 0) КАК Сумма
  |ПОМЕСТИТЬ ПродажиНоменклатуры
  |ИЗ
  |     ТаблицаНоменклатуры КАК ТаблицаНоменклатуры
  |             ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
  |             ПО ТаблицаНоменклатуры.Номенклатура = ПродажиОбороты.Номенклатура
  |
  |ИНДЕКСИРОВАТЬ ПО
  |     Номенклатура
  |;
  |
  |////////////////////////////////////////////////////////////////////////////////
  |ВЫБРАТЬ
  |     СУММА(ПродажиНоменклатуры.Сумма) КАК Сумма
  |ПОМЕСТИТЬ ИтогСумма
  |ИЗ
  |     ПродажиНоменклатуры КАК ПродажиНоменклатуры
  |;
  |
  |////////////////////////////////////////////////////////////////////////////////
  |ВЫБРАТЬ
  |     ПродажиНоменклатуры.Номенклатура КАК Номенклатура,
  |     ПродажиНоменклатуры.Сумма
  |ПОМЕСТИТЬ ПродажиГруппыА
  |ИЗ
  |     ПродажиНоменклатуры КАК ПродажиНоменклатуры
  |             ЛЕВОЕ СОЕДИНЕНИЕ ИтогСумма КАК ИтогСумма
  |             ПО (ПродажиНоменклатуры.Сумма >= 0.2 * ИтогСумма.Сумма)
  |
  |ИНДЕКСИРОВАТЬ ПО
  |     Номенклатура
  |;
  |
  |////////////////////////////////////////////////////////////////////////////////
  |ВЫБРАТЬ
  |     ПродажиНоменклатуры.*
  |ИЗ
  |     ПродажиГруппыА КАК ПродажиГруппыА
  |             ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи КАК ПродажиНоменклатуры
  |             ПО ПродажиГруппыА.Номенклатура = ПродажиНоменклатуры.Номенклатура"
;
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Параметры.Вставить("Таблица", Таблица);

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл
        // ...
КонецЦикла;

Внимание! Запрос ПродажиГруппыА абсолютно неверный! Ни в коем случае не используйте его в таком виде!
Записан
Sulik
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 19-12-2011 06:26 » 

Спасибо!!!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines