1. user1380404 24.03.20 13:36 Сейчас в теме

Долго выполняется запрос при добавлении условия

Здравствуйте!
Создал новый внешний отчет со следующим запросом:

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

ПО
        ТоварыНаСкладахОстатки.Номенклатура.Наименование = ЦеныНоменклатурыСрезПоследних.Номенклатура.Наименование
Показать


В таком виде запрос выполняется быстро, но стоит добавить условие Остатка (не равно 0, больше 1 и т.д.) запрос выполняется очень долго.

Можете подсказать в чем тут дело?

Спасибо!
Найденные решения
7. danjer74 1 24.03.20 14:42 Сейчас в теме
(6)Делаем временную таблицу по срезу на дату, индексируем ее по номенклатуре, делаем запрос к таблице остатков РН, с условием номенклатура В (ВременнаяТаблица) и все
Остальные ответы
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
2. danjer74 1 24.03.20 13:42 Сейчас в теме
(1)Тут сразу две грубых ошибки: Не указана дата остатков, и не указана дата среза для регистра сведений. К тому же имеет смысл сделать временную таблицу из регистра и во втором условии в параметры виртуальной таблице добавить условие Номенклатура В (ВремТаблицаРС). Соединение по наименованию крайне не оптимально - соединять надо по номенклатуре (ссылка). Еще хорошо бы добавить условие по складу, если он есть. В общем наложить макисмальное количество условий, только не в ГДЕ, а в параметрах виртуальных таблиц.
4. dhurricane 24.03.20 14:34 Сейчас в теме
(2)
Тут сразу две грубых ошибки: Не указана дата остатков, и не указана дата среза для регистра сведений.
Мне кажется, указание даты в обоих случаях может лишь замедлить время выполнения. При условии, конечно, что итоги актуальны.
5. danjer74 1 24.03.20 14:38 Сейчас в теме
(4)Если создать временную таблицу по регистру, получив оттуда номенклатуру и добавить ее в условие виртуальной таблицы - толк будет. Влюбом случае наложение условий на виртуальные таблицы необходимо.
6. dhurricane 24.03.20 14:39 Сейчас в теме
(5) Безусловно. Я лишь про указание даты среза и даты остатков говорил.
7. danjer74 1 24.03.20 14:42 Сейчас в теме
(6)Делаем временную таблицу по срезу на дату, индексируем ее по номенклатуре, делаем запрос к таблице остатков РН, с условием номенклатура В (ВременнаяТаблица) и все
3. user1380404 24.03.20 13:47 Сейчас в теме
Ага, спасибо, попробую разобраться!)
Просто смутило, что без условия работает быстро, а вот при добавлении не очень.
Еще раз спасибо!
8. soft_wind 24.03.20 14:54 Сейчас в теме
а вот это что за бред?

ПО
ТоварыНаСкладахОстатки.Номенклатура.Наименование = ЦеныНоменклатурыСрезПоследних.Номенклатура.Наименование

для особо тугих По ...Наименование = ...Наименование !!!
товарищ, автор, вообще не понимает что такое объекты, элементы, ссылки ???

на этом фоне, вот это
ЦеныНоменклатурыСрезПоследних.Регистратор.Дата КАК РегистраторДата,

вообще цветочками выглядит.
вообще Регистратор.Дата ---> это Период регистра (как правило)
9. user1380404 24.03.20 15:25 Сейчас в теме
(8)
По ...Наименование = ...Наименование !!!

Это связь между двумя таблицами при объединении, должны же быть указаны столбцы сопоставления?

вообще Регистратор.Дата ---> это Период регистра (как правило)

Регистратор.Дата мне выдает дату последнего изменения цены, вроде работает как мне нужно)
10. soft_wind 24.03.20 19:24 Сейчас в теме
Гов--но код тоже работает как нужно! как это ни странно.
Однако гов--но кодеров ни где не любят.
11. user1380404 25.03.20 12:37 Сейчас в теме
(10) Я не для кого-то сделал этот отчет, лишь для себя.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Программист 1С
Новосибирск
зарплата от 30 000 руб.
Временный (на проект)

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

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

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