Быстро выбрать обороты по каждой карте лояльности

1. SvetaBr 08.10.20 09:47 Сейчас в теме
Подскажите пожалуйста, как можно ускорить запрос, карт порядка 100тыс. Запрос идет больше часа.
Сама суть запроса , нужно по каждой карте лояльности выбрать обороты с самого начала

версия конфигурации УТ11 (11.3.4.185)
платформа 8.3.17.1549

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	КартыЛояльности.Ссылка КАК КартаЛояльности,
	СУММА(ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот) КАК Сумма
 
ИЗ
	Справочник.КартыЛояльности КАК КартыЛояльности
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты КАК ВыручкаИСебестоимостьПродажОбороты
		ПО (КартыЛояльности.Партнер = ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам.Партнер)
			И (КартыЛояльности.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыКартЛояльности.Действует))

СГРУППИРОВАТЬ ПО
	КартыЛояльности.Ссылка
;

Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. fishenemy 92 08.10.20 09:53 Сейчас в теме
Период бы ограничить по регистру ВыручкаИСебестоимостьПродажОбороты
3. SvetaBr 08.10.20 10:09 Сейчас в теме
(2) Так просят обороты по каждой карте с самого начала
4. TODD22 19 08.10.20 10:28 Сейчас в теме
(3)Разбейте запрос на два.
В первой части выберете все карты с типом действует и партнёров которым карта принадлежит, и поместите во временную таблицу, потом вторым запросом выберете обороты из регистра в качестве отборов в виртуальной таблице можно использовать партнёров из предидущего запроса, и уже в результирующей таблице сделайте соединение.

У вас долго отрабатывает соединение виртуальной таблицы с физической скорее всего.
7. SvetaBr 08.10.20 11:59 Сейчас в теме
(4) я это уже делала, скорость не изменилась
8. TODD22 19 08.10.20 12:00 Сейчас в теме
(7)Как в 6 комментарии получился код?
5. davealone 165 08.10.20 10:32 Сейчас в теме
(1) Если нет периода, то можно из реальной таблицы брать. Хотя платформа и так скорее всего поменяет.
Карты и ключи можно попробовать заранее во временную таблицу поместить, что-бы не было обращение через точку к аналитике.
Регистр оборотный - можно еще добавить агрегат непериодический только по измерению АналитикаУчетаПоПартнерам.
6. Азбука Морзе 106 08.10.20 10:40 Сейчас в теме
Вот такой у меня получился запрос:

ВЫБРАТЬ РАЗЛИЧНЫЕ
	КартыЛояльности.Ссылка КАК КартаЛояльности,
	КартыЛояльности.Партнер КАК Партнер
ПОМЕСТИТЬ ВТ_Карты
ИЗ
	Справочник.КартыЛояльности КАК КартыЛояльности
ГДЕ
	КартыЛояльности.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыКартЛояльности.Действует)

ИНДЕКСИРОВАТЬ ПО
	КартаЛояльности,
	Партнер
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_Карты.КартаЛояльности КАК КартаЛояльности,
	СУММА(ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот) КАК Сумма
ИЗ
	ВТ_Карты КАК ВТ_Карты
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(
				,
				,
				,
				АналитикаУчетаПоПартнерам.Партнер В
					(ВЫБРАТЬ
						ВТ_Карты.Партнер
					ИЗ
						ВТ_Карты)) КАК ВыручкаИСебестоимостьПродажОбороты
		ПО ВТ_Карты.Партнер = ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаПоПартнерам.Партнер

СГРУППИРОВАТЬ ПО
	ВТ_Карты.КартаЛояльности
Показать
9. muskul 09.10.20 02:38 Сейчас в теме
Как как, да никак. Сделать ту выборку за час. засунуть её куда нить в файл, потом делать с начало текущего года, месяца, дня и объединять с тем файлом.
10. SvetaBr 15.10.20 06:14 Сейчас в теме
Тут вот еще какая тонкость, дело в том что выбираются обороты не по карте а по партнеру, что ни одно и тоже.
Регистр ВыручкаИСебестоимостьПродаж совершенно не подходит. Скорее всего правильней будет выбирать из первичных документов.
11. FatPanzer 15.10.20 08:49 Сейчас в теме
(10) За отчеты, строящиеся на первичных документах - выгоняют еще со второго класса 1С.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот