Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Розница 2.3. От чего зависит скорость выполнения запроса по остаткам номенклатуры

Розница 2.3. От чего зависит скорость выполнения запроса по остаткам номенклатуры
Я
   slafor
 
22.05.21 - 21:38
В Рознице 2.3 есть самописный отчет по количеству позиций номенклатуры в разрезе групп. То есть, допустим, в группе "Стройматериалы" - столько-то позиций (элементов) в справочнике, в группе "Электрика" - столько-то, ну и т.д.
Делается запрос по справочнику Номенклатуры, а потом - другой запрос, по остаткам различных элементов номенклатуры на определенную дату, причем тоже в разрезе групп. Это - две временных таблицы, потом берем данные одной из них - из справочника, и делаем левое соединение с временной таблицы по остаткам. И все.
Так вот, почему-то получается так, что запрос выполняется очень долго при получении данных за Январь 2021 г., где-то порядка 15 минут. Зато за Декабрь 2020 г. - всего 1 минуту. И что самое интересно, если сначала выполнить запрос за Декабрь 2020 г. - то и за Январь 2021 г. он тоже будет выполняться порядка минуты. Прямо чудеса какие-то.
Итоги в РН Товары на складах (из которого берутся остатки) рассчитаны правильно, на апрель 2021 г.. Все условия в самом запросе - в условиях виртуальной таблицы, а не в "ГДЕ", как и положено. Индексацию в ВТ не делаю, да и, как я понял, от этого не сильно зависит - за Декабрь 2020 г. и без нее запрос "летает".

Сейчас перезапустил базу - за Январь 2021 г. опять меньше минуты. Но проблема возникла не сегодня, и уверен, что завтра опять повторится "долгое ожидание" результата.

Почему такое возможно?
 
 Партнерская программа EFSOL Oblako
   piter3
 
1 - 22.05.21 - 22:11
Итоги, обслуживания может треба база
   slafor
 
2 - 22.05.21 - 22:15
(1) Итоги установлены и рассчитаны на конец апреля 2021 г. А что еще нужно сделать?

Да, база файловая, но все манипуляции я провожу на копии - она тоже, соответственно, файловая
   slafor
 
3 - 22.05.21 - 22:16
(2) + Больше меня никто в эту копию не заходит. Никогда.
   piter3
 
4 - 22.05.21 - 22:16
(2) текст запроса секретен?
   slafor
 
5 - 22.05.21 - 22:24
Да нет...

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

СГРУППИРОВАТЬ ПО
    Номенклатура.Родитель,
    Номенклатура.Ссылка
;
                      ////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура.Ссылка КАК НоменклатураСсылка,
    ТоварыНаСкладахОстатки.Номенклатура.Родитель КАК НоменклатураРодитель,
    СУММА(1) КАК ВНаличии
ПОМЕСТИТЬ Ост
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, Номенклатура.Родитель <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) КАК ТоварыНаСкладахОстатки

СГРУППИРОВАТЬ ПО
    ТоварыНаСкладахОстатки.Номенклатура.Родитель,
    ТоварыНаСкладахОстатки.Номенклатура.Ссылка
;
                      ////////////////////////////////////////////////////////////////////////////////

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

СГРУППИРОВАТЬ ПО
    Ном.Родитель
   slafor
 
6 - 22.05.21 - 22:26
В ВТ Ном немного не дописал:
после ГДЕ там следует Номенклатура.Родитель <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
   slafor
 
7 - 22.05.21 - 22:27
Это значит, что я не беру элементы первого уровня )
   piter3
 
8 - 22.05.21 - 22:32
По файловой не подскажу, а что мешает выбрать остатки, а уж потом по родителю играться
   piter3
 
9 - 22.05.21 - 22:34
По иерархии что-то было, не могу вспомнить, в ней дело скорее всего
   acanta
 
10 - 22.05.21 - 22:43
А зачем выбирать то, что не требуется для итогового запроса?
   piter3
 
11 - 22.05.21 - 22:58
Ладно, а какая задача?
   slafor
 
12 - 22.05.21 - 23:06
(8) Мне нужно, чтобы в результат попали ВСЕ элементы из справочника Номенклатуры, за исключением элементов первого уровня. Есть они в остатках или нет - не важно.
   hhhh
 
13 - 22.05.21 - 23:12
(7) там важен параметр Дата, если начало месяца, например 1 декабря или 1 января, причем на 0ч, 0мин и 0сек, то остатки берутся из таблицы итогов - это быстро. А если например дата в середине месяца, то остаток рассчитывается по реальной таблице регистра - это очень долго.
   slafor
 
14 - 23.05.21 - 00:10
(13) То есть если я буду ставить не конец месяца, как обычно, а начало следующего 0:00:00, то остатки будут браться очень быстро?
Спасибо, попробую. Хотя... за декабрь я ведь тоже ставлю концом месяца, а расчеты идут быстро )
   МаленькийВопросик
 
15 - 23.05.21 - 09:20
(0) от ДНК )))))
   Garykom
 
16 - 23.05.21 - 10:59
(0) например антивирус тупо шерстит если в исключения не добавил
   slafor
 
17 - 23.05.21 - 13:09
(16) Может быть, и антивирус. Но как узнать, есть он или нет...

Дело в том, что я работаю в этой копии удаленно, через VPN - RDP. А сегодня запустил базу у себя на компе - вообще задержек нет.
   slafor
 
18 - 23.05.21 - 19:26
(17) Вот написал и как себе назло )
Теперь долго грузится везде, и на моем компе, и по удаленному доступу... Причем вне зависимости от даты.

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.