Оптимизация запроса
Добрый день.
БП 2.0.65.20, 8.3.9.1818.
Задача:
Получить все документы реализации и поступления где встречается некая номенклатурная единица за период.
Под-задача получить также документы где встречается любая номенклатурная единица с определенным артикулом (наименования от поставщиков различаются, по сущности одно и то же, поэтому указываем одинаковый артикул).
Под-под-задача - иметь возможность выбора какой тип документа получить в отчете: либо все, либо реализацию, либо поступление.
Задачу я решил, отчет создан на СКД.
Но, мне кажется (нутром чую), что запрос можно упростить/оптимизировать.
Есть идеи?
БП 2.0.65.20, 8.3.9.1818.
Задача:
Получить все документы реализации и поступления где встречается некая номенклатурная единица за период.
Под-задача получить также документы где встречается любая номенклатурная единица с определенным артикулом (наименования от поставщиков различаются, по сущности одно и то же, поэтому указываем одинаковый артикул).
Под-под-задача - иметь возможность выбора какой тип документа получить в отчете: либо все, либо реализацию, либо поступление.
Задачу я решил, отчет создан на СКД.
Но, мне кажется (нутром чую), что запрос можно упростить/оптимизировать.
ВЫБРАТЬ
ВЫРАЗИТЬ(ХозрасчетныйСубконто.Регистратор КАК Документ.РеализацияТоваровУслуг) КАК ДокРТиУ,
ВЫРАЗИТЬ(ХозрасчетныйСубконто.Регистратор КАК Документ.ПоступлениеТоваровУслуг) КАК ДокПТиУ,
ХозрасчетныйСубконто.Значение КАК Номенклатура,
КОЛИЧЕСТВО(ХозрасчетныйСубконто.Значение) КАК Количество
ПОМЕСТИТЬ СписокДокументов
ИЗ
РегистрБухгалтерии.Хозрасчетный.Субконто КАК ХозрасчетныйСубконто
ГДЕ
ВЫБОР
КОГДА &артикул
ТОГДА ХозрасчетныйСубконто.Значение В
(ВЫБРАТЬ
Номенклатура.Ссылка
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Артикул = (ВЫРАЗИТЬ(ВЫРАЗИТЬ(&Номенклатура КАК Справочник.Номенклатура).Артикул КАК СТРОКА(25))))
ИНАЧЕ ХозрасчетныйСубконто.Значение = &Номенклатура
КОНЕЦ
И ХозрасчетныйСубконто.Регистратор.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
СГРУППИРОВАТЬ ПО
ХозрасчетныйСубконто.Значение,
ВЫРАЗИТЬ(ХозрасчетныйСубконто.Регистратор КАК Документ.РеализацияТоваровУслуг),
ВЫРАЗИТЬ(ХозрасчетныйСубконто.Регистратор КАК Документ.ПоступлениеТоваровУслуг)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата,
РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
РеализацияТоваровУслугТовары.Цена КАК Цена,
РеализацияТоваровУслугТовары.Количество КАК Количество,
ВЫРАЗИТЬ("РТИУ" КАК СТРОКА(4)) КАК ТипДокумента
ПОМЕСТИТЬ Документы
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары,
СписокДокументов КАК СписокДокументов
ГДЕ
РеализацияТоваровУслугТовары.Номенклатура = СписокДокументов.Номенклатура
И РеализацияТоваровУслугТовары.Ссылка В
(ВЫБРАТЬ
СписокДокументов.ДокРТиУ
ИЗ
СписокДокументов КАК СписокДокументов)
ОБЪЕДИНИТЬ
ВЫБРАТЬ
ПоступлениеТоваровУслугТовары.Ссылка.Дата,
ПоступлениеТоваровУслугТовары.Ссылка,
ПоступлениеТоваровУслугТовары.Номенклатура,
ПоступлениеТоваровУслугТовары.Цена,
ПоступлениеТоваровУслугТовары.Количество,
ВЫРАЗИТЬ("ПТИУ" КАК СТРОКА(4))
ИЗ
Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары,
СписокДокументов КАК СписокДокументов
ГДЕ
ПоступлениеТоваровУслугТовары.Номенклатура = СписокДокументов.Номенклатура
И ПоступлениеТоваровУслугТовары.Ссылка В
(ВЫБРАТЬ
СписокДокументов.ДокПТиУ
ИЗ
СписокДокументов КАК СписокДокументов)
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
Документы.Дата,
Документы.Ссылка,
Документы.Номенклатура,
Документы.Цена,
Документы.Количество,
Документы.ТипДокумента
ИЗ
Документы КАК Документы
ГДЕ
ВЫБОР
КОГДА НЕ &ПоВсемДокументам ТОГДА
ВЫБОР
КОГДА &РТИУ
Тогда
Документы.ТипДокумента = "РТИУ"
Иначе
Документы.ТипДокумента = "ПТИУ"
КОНЕЦ
Иначе
Документы.ТипДокумента В ("ПТИУ","РТИУ")
КОНЕЦ
УПОРЯДОЧИТЬ ПО
Документы.Дата
ПоказатьЕсть идеи?
По теме из базы знаний
- Видеокурс: Разработка и оптимизация запросов 1С
- Оптимизация запросов 1С - от теории к практике
- Оптимизация запросов 1С:Предприятие – от теории к практике
- Оптимизация запроса к виртуальной таблице регистра накопления
- Планы запросов - это просто! Разбор оптимизаций запросов PostgreSQL на живых примерах
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
Громоздкость запроса объясняется тем, что вы не используете отборы СКД.
Всё остальное отборами.
ВЫБРАТЬ
Т.Ссылка.Дата КАК Дата,
Т.Ссылка,
Т.Номенклатура,
Т.Цена,
Т.Количество,
"РТИУ" КАК ТипДокумента
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК Т
ГДЕ
Т.Ссылка.Проведен
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Т.Ссылка.Дата,
Т.Ссылка,
Т.Номенклатура,
Т.Цена,
Т.Количество,
"ПТИУ"
ИЗ
Документ.ПоступлениеТоваровУслуг.Товары КАК Т
ГДЕ
Т.Ссылка.Проведен
ПоказатьВсё остальное отборами.
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)