Ускорение вывода колонки остатка в форму списка номенклатуры

1. fixin 4273 08.11.24 19:41 Сейчас в теме
Конфигурация Альфа-Авто: Автосалон+Автосервис+Автозапчасти КОРП. Редакция 6 (6.1.03.17) (https://rarus.ru/1c-auto/1c8-alfa-avto-4/)

Запрос по номенклатуре:

ВЫБРАТЬ РАЗРЕШЕННЫЕ
	СправочникНоменклатура.Ссылка КАК Ссылка,
..............
	СправочникНоменклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных,
	ВЫБОР
		КОГДА СправочникНоменклатура.ТипНоменклатуры.ИспользованиеХарактеристик = 1
			ТОГДА СправочникНоменклатура.ТипНоменклатуры
		КОГДА СправочникНоменклатура.ТипНоменклатуры.ИспользованиеХарактеристик = 2
			ТОГДА СправочникНоменклатура.Ссылка
		ИНАЧЕ НЕОПРЕДЕЛЕНО
	КОНЕЦ КАК ВладелецХарактеристики,
	ВЫБОР
		КОГДА &ВыводитьОбщийОстаток
			ТОГДА ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток, 0)
		ИНАЧЕ ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток - ОстаткиТоваровКомпанииОстатки.РезервОстаток, 0)
	КОНЕЦ КАК Остаток,
	ВЫБОР
		КОГДА НаличиеФайлов.ЕстьФайлы ЕСТЬ NULL
			ТОГДА 1
		КОГДА НаличиеФайлов.ЕстьФайлы
			ТОГДА 0
		ИНАЧЕ 1
	КОНЕЦ КАК ЕстьФайлы,
	НЕОПРЕДЕЛЕНО КАК Ячейка,
	0 КАК Цена
{ВЫБРАТЬ
	Ссылка.*}
ИЗ
	Справочник.Номенклатура КАК СправочникНоменклатура
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваровКомпании.Остатки(, СкладКомпании В (&СкладыКомпании)) КАК ОстаткиТоваровКомпанииОстатки
		ПО СправочникНоменклатура.Ссылка = ОстаткиТоваровКомпанииОстатки.Номенклатура
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НаличиеФайлов КАК НаличиеФайлов
		ПО СправочникНоменклатура.Ссылка = НаличиеФайлов.ОбъектСФайлами
{ГДЕ
	СправочникНоменклатура.Ссылка.*}
Показать


Работает медленно. Почему то при поиске по вводу подстроки работает дольше чем по ALT+F.


Я пробовал заменить на такое, стало еще хуже (раза в полтора):

ВЫБРАТЬ РАЗРЕШЕННЫЕ
	СправочникНоменклатура.Ссылка КАК Ссылка
ПОМЕСТИТЬ ТНоменклатура
ИЗ
	Справочник.Номенклатура КАК СправочникНоменклатура
{ГДЕ
	СправочникНоменклатура.Ссылка.*}
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	СправочникНоменклатура.Ссылка КАК Ссылка,
..................
	ВЫБОР
		КОГДА СправочникНоменклатура.ТипНоменклатуры.ИспользованиеХарактеристик = 1
			ТОГДА СправочникНоменклатура.ТипНоменклатуры
		КОГДА СправочникНоменклатура.ТипНоменклатуры.ИспользованиеХарактеристик = 2
			ТОГДА СправочникНоменклатура.Ссылка
		ИНАЧЕ НЕОПРЕДЕЛЕНО
	КОНЕЦ КАК ВладелецХарактеристики,
	ВЫБОР
		КОГДА &ВыводитьОбщийОстаток
			ТОГДА ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток, 0)
		ИНАЧЕ ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток - ОстаткиТоваровКомпанииОстатки.РезервОстаток, 0)
	КОНЕЦ КАК Остаток,
	ВЫБОР
		КОГДА НаличиеФайлов.ЕстьФайлы ЕСТЬ NULL
			ТОГДА 1
		КОГДА НаличиеФайлов.ЕстьФайлы
			ТОГДА 0
		ИНАЧЕ 1
	КОНЕЦ КАК ЕстьФайлы,
	НЕОПРЕДЕЛЕНО КАК Ячейка,
	0 КАК Цена
{ВЫБРАТЬ
	Ссылка.*}
ИЗ
	Справочник.Номенклатура КАК СправочникНоменклатура
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваровКомпании.Остатки(
				,
				СкладКомпании В (&СкладыКомпании)
					И Номенклатура В
						(ВЫБРАТЬ
							ТНоменклатура.Ссылка
						ИЗ
							ТНоменклатура)) КАК ОстаткиТоваровКомпанииОстатки
		ПО СправочникНоменклатура.Ссылка = ОстаткиТоваровКомпанииОстатки.Номенклатура
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НаличиеФайлов КАК НаличиеФайлов
		ПО СправочникНоменклатура.Ссылка = НаличиеФайлов.ОбъектСФайлами
{ГДЕ
	СправочникНоменклатура.Ссылка.*}
Показать


У меня в голове есть только вариант только получать остатки запросов в ПриПолученииДанных списка.
Написал клиенту, хочет ли он тратить на это время.

Скажите, а условие {ГДЕ
СправочникНоменклатура.Ссылка.*} как нибудь можно впихнуть в виртуальную таблицу РегистрНакопления.ОстаткиТоваровКомпании.Остатки??

Если верить этому: https://its.1c.ru/db/metod8dev/content/2594/hdoc то такой отбор уже сам накладывается. Но как это проверить, финальный текст запроса СКД списка я не вижу.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 35 08.11.24 23:28 Сейчас в теме
Заполнять остатки в ПриПолученииДанныхНаСервере.
4. fixin 4273 09.11.24 18:26 Сейчас в теме
6. Sashares 35 11.11.24 15:24 Сейчас в теме
(4) Ну так других вариантов и нет.
Если отбор/сортировка по сумме остатка не нужна, то это самый простой и эффективный вариант.
7. fixin 4273 11.11.24 17:56 Сейчас в теме
(6) вот параллельно с вами пришел к выводу что тормоза изза поиска в колонке остаток.

Как-то можно исключить колонку из поиска?
8. Sashares 35 11.11.24 18:05 Сейчас в теме
(7) Можно
МоеПоле= Список.Поля.Найти("МоеПоле");
	Если МоеПоле<> Неопределено Тогда
		МоеПоле.ОграничениеИспользования.Группировка = Истина;
		МоеПоле.ОграничениеИспользования.Порядок = Истина;
		МоеПоле.ОграничениеИспользования.Условие = Истина;
	КонецЕсли;
9. fixin 4273 11.11.24 21:12 Сейчас в теме
(8) Ограничение полей - это же поля СКД?
У меня коллекция Поля пустая в динамическом списке почему-то.
Список.Поля - тип ПоляНабораДанныхСхемыКомпоновкиДанных
11. Sashares 35 13.11.24 12:22 Сейчас в теме
(9) В динамическом списке используется несколько урезанная СКД.
Код из 8 прописывается в ПриСозданииНаСервере.
3. пользователь 09.11.24 09:33
Сообщение было скрыто модератором.
...
5. пользователь 09.11.24 18:42
Сообщение было скрыто модератором.
...
10. muskul 12.11.24 07:37 Сейчас в теме
Посчитай все остатки при открытии. и уже при выводе показать строки выводи остаток из этой временной ТЗ в памяти.
12. Vlan 36 13.11.24 13:07 Сейчас в теме
А за что отвечает конструкция?
{ГДЕ
    СправочникНоменклатура.Ссылка.*}


Я бы для начала вывел только ту номенклатуру, для которой есть остатки. Понятно, что весь справочник номенклатуры выводить очень долго. То есть вместо левого соединения взял бы правое
13. user1863362 13.11.24 13:31 Сейчас в теме
(12)
А за что отвечает конструкция?
{ГДЕ
    СправочникНоменклатура.Ссылка.*}

Присоединяюсь к вопросу!
Геня, за что она отвечает?
Оставьте свое сообщение

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