Поиск в табличной части

1. user1816391 08.01.24 17:02 Сейчас в теме
Привет!
Подскажите, стандартный механизм поиска стал плохо отрабатывать, когда в ДС добавили ещё один док. Это как-то фиксится?
ВЫБРАТЬ
	ПриобретениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
	ПриобретениеТоваровУслугТовары.Характеристика КАК Характеристика,
	ПриобретениеТоваровУслугТовары.Серия КАК Серия,
	ПриобретениеТоваровУслугТовары.Склад КАК Склад,
	ПриобретениеТоваровУслугТовары.Назначение КАК Назначение,
	ЗНАЧЕНИЕ(Справочник.СкладскиеПомещения.ПустаяСсылка) КАК Помещение,
	ПриобретениеТоваровУслугТовары.Ссылка КАК Ссылка,
	ПриобретениеТоваровУслугТовары.Количество КАК Количество,
	ПриобретениеТоваровУслугТовары.Сумма КАК Сумма
ПОМЕСТИТЬ Товары
ИЗ
	Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслугТовары
ГДЕ
	(НЕ &ОтборПоСериям
			ИЛИ (НЕ &СерииЗаполнены
				ИЛИ ПриобретениеТоваровУслугТовары.Серия В (&Серии)))
	И ПриобретениеТоваровУслугТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)
	И (НЕ &ОтборПоКурице
			ИЛИ ПриобретениеТоваровУслугТовары.Номенклатура.ВидНоменклатуры.Наименование = "Курица")
	И (НЕ &ОтборПоГовядине
			ИЛИ ПриобретениеТоваровУслугТовары.Номенклатура.ВидНоменклатуры.Наименование = "Говядина")

ИНДЕКСИРОВАТЬ ПО
	Серия
;

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

СГРУППИРОВАТЬ ПО
	Товары.Ссылка

ИНДЕКСИРОВАТЬ ПО
	Ссылка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ВР.ВНаличииОстаток КАК Остаток,
	ВР.Количество КАК Количество,
	ВР.Сумма КАК Сумма,
	ПриобретениеТоваровУслуг.Ссылка КАК Ссылка,
	ВЫБОР
		КОГДА ПриобретениеТоваровУслуг.Проведен
			ТОГДА 0
		КОГДА ПриобретениеТоваровУслуг.ПометкаУдаления
			ТОГДА 1
		ИНАЧЕ 2
	КОНЕЦ КАК НестандартнаяКартинка,
	ПриобретениеТоваровУслуг.Контрагент.СтранаРегистрации <> ЗНАЧЕНИЕ(Справочник.СтраныМира.Беларусь)
		И ЕСТЬNULL(ТаможеннаяДекларацияИмпорт.Ссылка, ЛОЖЬ) = ЛОЖЬ КАК ДекларацияОтсутствует,
	РасчетыСПоставщикамиОстатки.СуммаОстаток КАК СуммаОстаток,
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РасчетыСПоставщикамиОстатки.ЗаказПоставщику) КАК ЗаказПоставщику,
	ПриобретениеТоваровУслуг.Проведен КАК Проведен,
	2 КАК КартинкаДокумента
ИЗ
	ВРОстатков КАК ВР
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриобретениеТоваровУслуг КАК ПриобретениеТоваровУслуг
			ЛЕВОЕ СОЕДИНЕНИЕ Документ.ТаможеннаяДекларацияИмпорт КАК ТаможеннаяДекларацияИмпорт
			ПО ПриобретениеТоваровУслуг.Ссылка = ТаможеннаяДекларацияИмпорт.АналитикаРасходовСбор
				И (ТаможеннаяДекларацияИмпорт.Проведен)
				И (ТаможеннаяДекларацияИмпорт.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыТаможенныхДеклараций.ВыпущеноСТаможни))
			ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСПоставщиками.Остатки КАК РасчетыСПоставщикамиОстатки
			ПО ПриобретениеТоваровУслуг.Ссылка = РасчетыСПоставщикамиОстатки.ЗаказПоставщику
		ПО ВР.Ссылка = ПриобретениеТоваровУслуг.Ссылка

СГРУППИРОВАТЬ ПО
	ВР.ВНаличииОстаток,
	ВР.Количество,
	ВР.Сумма,
	ПриобретениеТоваровУслуг.Ссылка,
	РасчетыСПоставщикамиОстатки.СуммаОстаток,
	ВЫБОР
		КОГДА ПриобретениеТоваровУслуг.Проведен
			ТОГДА 0
		КОГДА ПриобретениеТоваровУслуг.ПометкаУдаления
			ТОГДА 1
		ИНАЧЕ 2
	КОНЕЦ,
	ПриобретениеТоваровУслуг.Контрагент.СтранаРегистрации <> ЗНАЧЕНИЕ(Справочник.СтраныМира.Беларусь)
		И ЕСТЬNULL(ТаможеннаяДекларацияИмпорт.Ссылка, ЛОЖЬ) = ЛОЖЬ,
	ПриобретениеТоваровУслуг.Проведен

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

ВЫБРАТЬ РАЗЛИЧНЫЕ
	0,
	СУММА(ВнутреннееПотреблениеТоваровТовары.Количество),
	СУММА(ВнутреннееПотреблениеТоваровТовары.Количество),
	ВнутреннееПотреблениеТоваровТовары.Ссылка,
	ВЫБОР
		КОГДА ВнутреннееПотреблениеТоваровТовары.Ссылка.Проведен
			ТОГДА 0
		КОГДА ВнутреннееПотреблениеТоваровТовары.Ссылка.ПометкаУдаления
			ТОГДА 1
		ИНАЧЕ 2
	КОНЕЦ,
	0,
	0,
	0,
	ВнутреннееПотреблениеТоваровТовары.Ссылка.Проведен,
	3
ИЗ
	Документ.ВнутреннееПотреблениеТоваров.Товары КАК ВнутреннееПотреблениеТоваровТовары
ГДЕ
	(НЕ &ОтборПоСериям
			ИЛИ (НЕ &СерииЗаполнены
				ИЛИ ВнутреннееПотреблениеТоваровТовары.Серия В (&Серии)))
	И ВнутреннееПотреблениеТоваровТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар)
	И (НЕ &ОтборПоКурице
			ИЛИ ВнутреннееПотреблениеТоваровТовары.Номенклатура.ВидНоменклатуры.Наименование = "Курица")
	И (НЕ &ОтборПоГовядине
			ИЛИ ВнутреннееПотреблениеТоваровТовары.Номенклатура.ВидНоменклатуры.Наименование = "Говядина")

СГРУППИРОВАТЬ ПО
	ВнутреннееПотреблениеТоваровТовары.Ссылка,
	ВЫБОР
		КОГДА ВнутреннееПотреблениеТоваровТовары.Ссылка.Проведен
			ТОГДА 0
		КОГДА ВнутреннееПотреблениеТоваровТовары.Ссылка.ПометкаУдаления
			ТОГДА 1
		ИНАЧЕ 2
	КОНЕЦ,
	ВнутреннееПотреблениеТоваровТовары.Ссылка.Проведен
Показать
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. RustamZz 09.01.24 09:41 Сейчас в теме
(1) С таким ужасным запросом странно, что только поиск тормозит. Должно все тормозить.
6. Sashares 33 09.01.24 14:26 Сейчас в теме
(1)Убрать получение остатков из регистра накопления из запроса ДС, заполнять их в ПриПолученииДанныхНаСервере.
Будет один запрос, без временных таблиц.
2. -AI- 09.01.24 03:26 Сейчас в теме
4. user1824445 09.01.24 11:28 Сейчас в теме
5. truba 09.01.24 11:39 Сейчас в теме
сразу сходу: убрать все ИЛИ из запроса, убрать все сравнения со строками из запроса.
7. VmvLer 09.01.24 15:48 Сейчас в теме
(1) оптимизацию отбора по сериям я пропускаю.
А вот отбор по товарам обязательно выносить в ВТ, примерно так:

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

ИНДЕКСИРОВАТЬ ПО
	ТоварОтбора
;

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

ИНДЕКСИРОВАТЬ ПО
	Серия
Показать
8. Sashares 33 09.01.24 15:52 Сейчас в теме
(7)Или вне запроса ДС получить нужную номенклатуру и устанавливать отбор сразу по ней.
Оставьте свое сообщение

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