Оптимизация запроса

1. arshanskiyav 29 06.05.17 18:25 Сейчас в теме
Добрый день.

БП 2.0.65.20, 8.3.9.1818.

Задача:
Получить все документы реализации и поступления где встречается некая номенклатурная единица за период.
Под-задача получить также документы где встречается любая номенклатурная единица с определенным артикулом (наименования от поставщиков различаются, по сущности одно и то же, поэтому указываем одинаковый артикул).
Под-под-задача - иметь возможность выбора какой тип документа получить в отчете: либо все, либо реализацию, либо поступление.

Задачу я решил, отчет создан на СКД.
Но, мне кажется (нутром чую), что запрос можно упростить/оптимизировать.

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

СГРУППИРОВАТЬ ПО
	ХозрасчетныйСубконто.Значение,
	ВЫРАЗИТЬ(ХозрасчетныйСубконто.Регистратор КАК Документ.РеализацияТоваровУслуг),
	ВЫРАЗИТЬ(ХозрасчетныйСубконто.Регистратор КАК Документ.ПоступлениеТоваровУслуг)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата,
	РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
	РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
	РеализацияТоваровУслугТовары.Цена КАК Цена,
	РеализацияТоваровУслугТовары.Количество КАК Количество,
	ВЫРАЗИТЬ("РТИУ" КАК СТРОКА(4)) КАК ТипДокумента
ПОМЕСТИТЬ Документы
ИЗ
	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары,
	СписокДокументов КАК СписокДокументов
ГДЕ
	РеализацияТоваровУслугТовары.Номенклатура = СписокДокументов.Номенклатура
	И РеализацияТоваровУслугТовары.Ссылка В
			(ВЫБРАТЬ
				СписокДокументов.ДокРТиУ
			ИЗ
				СписокДокументов КАК СписокДокументов)

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	ПоступлениеТоваровУслугТовары.Ссылка.Дата,
	ПоступлениеТоваровУслугТовары.Ссылка,
	ПоступлениеТоваровУслугТовары.Номенклатура,
	ПоступлениеТоваровУслугТовары.Цена,
	ПоступлениеТоваровУслугТовары.Количество,
	ВЫРАЗИТЬ("ПТИУ" КАК СТРОКА(4))
ИЗ
	Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары,
	СписокДокументов КАК СписокДокументов
ГДЕ
	ПоступлениеТоваровУслугТовары.Номенклатура = СписокДокументов.Номенклатура
	И ПоступлениеТоваровУслугТовары.Ссылка В
			(ВЫБРАТЬ
				СписокДокументов.ДокПТиУ
			ИЗ
				СписокДокументов КАК СписокДокументов)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Документы.Дата,
	Документы.Ссылка,
	Документы.Номенклатура,
	Документы.Цена,
	Документы.Количество,
	Документы.ТипДокумента
ИЗ
	Документы КАК Документы
ГДЕ
	ВЫБОР
			КОГДА НЕ &ПоВсемДокументам ТОГДА
				ВЫБОР
				КОГДА &РТИУ
				Тогда
				    Документы.ТипДокумента = "РТИУ"
				Иначе
					Документы.ТипДокумента = "ПТИУ"
				КОНЕЦ
			Иначе
				Документы.ТипДокумента В ("ПТИУ","РТИУ")
		КОНЕЦ

УПОРЯДОЧИТЬ ПО
	Документы.Дата
Показать


Есть идеи?
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
3. kolya_tlt 86 10.05.17 15:46 Сейчас в теме
(1) что-то вы таблицу СписокДокументов никак не соединяете ...
alex-l19041; +1 Ответить
4. alex-l19041 8 10.05.17 18:02 Сейчас в теме
(1)
иметь возможность выбора какой тип документа получить в отчете: либо все, либо реализацию, либо поступление.
- а Возвраты игнорируете ?
5. arshanskiyav 29 10.05.17 19:16 Сейчас в теме
(4) Люди хотят видеть цену покупки/продажи, т.к. товар забугорный и цена зависит от курса и сборов.
6. alex-l19041 8 11.05.17 08:46 Сейчас в теме
(5) если такие данные нужны регулярно, то лучше завести новый регистр, чтобы не обращаться к документам.
2. SlavaKron 10.05.17 15:42 Сейчас в теме
Громоздкость запроса объясняется тем, что вы не используете отборы СКД.
ВЫБРАТЬ
	Т.Ссылка.Дата КАК Дата,
	Т.Ссылка,
	Т.Номенклатура,
	Т.Цена,
	Т.Количество,
	"РТИУ" КАК ТипДокумента
ИЗ
	Документ.РеализацияТоваровУслуг.Товары КАК Т
ГДЕ
	Т.Ссылка.Проведен

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	Т.Ссылка.Дата,
	Т.Ссылка,
	Т.Номенклатура,
	Т.Цена,
	Т.Количество,
	"ПТИУ"
ИЗ
	Документ.ПоступлениеТоваровУслуг.Товары КАК Т
ГДЕ
	Т.Ссылка.Проведен
Показать


Всё остальное отборами.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)