|
Выборка движений документа запросом очень долго | ☑ | ||
---|---|---|---|---|
0
Chesnok
02.12.19
✎
17:13
|
Привет всем гуру.
Почему простой запрос к движениям документа выполняется так долго? Первый раз 60 сек., второй и последующие 21 сек. База файловая, документов с гулькин нос. Запрос (в МассивОбъектов один документ) : ВЫБРАТЬ | ХозрасчетныйДвиженияССубконто.СчетДт КАК СчетДт, | ХозрасчетныйДвиженияССубконто.Сумма КАК Сумма, | ХозрасчетныйДвиженияССубконто.СубконтоДт1 КАК Номенклатура, | ХозрасчетныйДвиженияССубконто.СубконтоДт3 КАК Сотрудник, | ХозрасчетныйДвиженияССубконто.Регистратор КАК Регистратор |ПОМЕСТИТЬ ВТДвижения |ИЗ | РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто КАК ХозрасчетныйДвиженияССубконто |ГДЕ | ХозрасчетныйДвиженияССубконто.Регистратор В(&МассивОбъектов) | И (ХозрасчетныйДвиженияССубконто.СчетДт = &Счет10_9 ИЛИ ХозрасчетныйДвиженияССубконто.СчетДт = &Счет10_11) Через чтение движений гораздо быстрее: Движения = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей(); Движения.Отбор.Регистратор.Установить(ВыборкаПоДокументам.Документ); Движения.Прочитать(); Для Каждого Движение Из Движения Цикл Если (Движение.СчетДт = ПланыСчетов.Хозрасчетный.ИнвентарьИХозяйственныеПринадлежностиВЭкспл) ИЛИ (Движение.СчетДт = ПланыСчетов.Хозрасчетный.СпецодеждаВЭксплуатации) Тогда НоваяСтрока = ТаблДвиж.Добавить(); НоваяСтрока.Сотрудник = Движение.СубконтоДт.РаботникиОрганизаций; НоваяСтрока.Номенклатура = Движение.СубконтоДт.Номенклатура; НоваяСтрока.Сумма = Движение.Сумма; КонецЕсли; КонецЦикла; |
|||
1
hhhh
02.12.19
✎
17:16
|
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто КАК ХозрасчетныйДвиженияССубконто период обозначь. А то ты выбираешь таблицу за много-много лет |
|||
2
dka80
02.12.19
✎
17:18
|
И (ХозрасчетныйДвиженияССубконто.СчетДт = &Счет10_9 ИЛИ ХозрасчетныйДвиженияССубконто.СчетДт = &Счет10_11)
Перенеси в параметры виртуальной таблицы РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(, , СчетДт В (&Счет10_9, &Счет10_11), , ) КАК ХозрасчетныйДвиженияССубконто |
|||
3
dka80
02.12.19
✎
17:19
|
И регистратор туда же: в параметры вирт табилцы
|
|||
4
dka80
02.12.19
✎
17:20
|
РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(, , СчетДт В (&Счет10_9, &Счет10_11) И Регистратор В(&Регистратор), , ) КАК ХозрасчетныйДвиженияССубконто
|
|||
5
Cyberhawk
02.12.19
✎
17:39
|
(1) Откуда он возьмет период, если ему известны только регистраторы и пара счетов?
|
|||
6
hhhh
02.12.19
✎
18:03
|
(5) дата первого регистратора из &МассивОбъектов
|
|||
7
Chesnok
02.12.19
✎
18:15
|
(1) А почему на выборку не накладывается фильтр по регистратору?
ХозрасчетныйДвиженияССубконто.Регистратор В(&МассивОбъектов) |
|||
8
Chesnok
02.12.19
✎
18:16
|
(2) Сейчас попробую
|
|||
9
Chesnok
02.12.19
✎
18:26
|
(7) Вопрос снят, почитал ИТС:
"Однако такое решение будет неоптимальным, так как сначала виртуальная таблица выберет все записи из таблицы остатков, а затем уже на полученную выборку будет наложен отбор по значению номенклатуры." |
|||
10
Cyberhawk
03.12.19
✎
09:38
|
(6) Подход ненадежный, а значит и не нужный
|
|||
11
ДенисЧ
03.12.19
✎
09:40
|
А почему бы условие на регистратор не перенести в условия вирттаблицы?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |